build: reduce printf() calls in generated build_options.c master
authorDavid Disseldorp <ddiss@samba.org>
Fri, 14 Jan 2022 09:38:40 +0000 (10:38 +0100)
committerDavid Disseldorp <ddiss@samba.org>
Mon, 17 Jan 2022 12:22:10 +0000 (13:22 +0100)
build_options.c is inefficient in multiple ways:
1) it's generated via one python fp.write() call per line
2) the generated code calls output() for each and every build option

This commit addresses (2), modifying write_build_options_header() and
write_build_options_footer(). write_build_options_section() could also
be collapsed into a single output() call, but this may lead to oversize
string literals, so has been left as is.

I observe no change in smbd --build-options output.

Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
buildtools/wafsamba/samba_patterns.py

index c4e7be05865bb51a26e55a19c2671c2add357e3d..a9c5fcc4b4cbbb2d87cb1806a91b5f05ee58123a 100644 (file)
@@ -95,24 +95,41 @@ def write_build_options_header(fp):
              "\n"
              "\n"
              "       /* Output various paths to files and directories */\n"
-             "       output(screen,\"\\nPaths:\\n\");\n"
-             "       output(screen,\"   SBINDIR: %s\\n\", get_dyn_SBINDIR());\n"
-             "       output(screen,\"   BINDIR: %s\\n\", get_dyn_BINDIR());\n"
-             "       output(screen,\"   CONFIGFILE: %s\\n\", get_dyn_CONFIGFILE());\n"
-             "       output(screen,\"   LOGFILEBASE: %s\\n\", get_dyn_LOGFILEBASE());\n"
-             "       output(screen,\"   LMHOSTSFILE: %s\\n\",get_dyn_LMHOSTSFILE());\n"
-             "       output(screen,\"   LIBDIR: %s\\n\",get_dyn_LIBDIR());\n"
-             "       output(screen,\"   DATADIR: %s\\n\",get_dyn_DATADIR());\n"
-             "       output(screen,\"   SAMBA_DATADIR: %s\\n\",get_dyn_SAMBA_DATADIR());\n"
-             "       output(screen,\"   MODULESDIR: %s\\n\",get_dyn_MODULESDIR());\n"
-             "       output(screen,\"   SHLIBEXT: %s\\n\",get_dyn_SHLIBEXT());\n"
-             "       output(screen,\"   LOCKDIR: %s\\n\",get_dyn_LOCKDIR());\n"
-             "       output(screen,\"   STATEDIR: %s\\n\",get_dyn_STATEDIR());\n"
-             "       output(screen,\"   CACHEDIR: %s\\n\",get_dyn_CACHEDIR());\n"
-             "       output(screen,\"   PIDDIR: %s\\n\", get_dyn_PIDDIR());\n"
-             "       output(screen,\"   SMB_PASSWD_FILE: %s\\n\",get_dyn_SMB_PASSWD_FILE());\n"
-             "       output(screen,\"   PRIVATE_DIR: %s\\n\",get_dyn_PRIVATE_DIR());\n"
-             "       output(screen,\"   BINDDNS_DIR: %s\\n\",get_dyn_BINDDNS_DIR());\n"
+             "       output(screen,\"\\nPaths:\\n\"\n"
+             "                     \"   SBINDIR: %s\\n\"\n"
+             "                     \"   BINDIR: %s\\n\"\n"
+             "                     \"   CONFIGFILE: %s\\n\"\n"
+             "                     \"   LOGFILEBASE: %s\\n\"\n"
+             "                     \"   LMHOSTSFILE: %s\\n\"\n"
+             "                     \"   LIBDIR: %s\\n\"\n"
+             "                     \"   DATADIR: %s\\n\"\n"
+             "                     \"   SAMBA_DATADIR: %s\\n\"\n"
+             "                     \"   MODULESDIR: %s\\n\"\n"
+             "                     \"   SHLIBEXT: %s\\n\"\n"
+             "                     \"   LOCKDIR: %s\\n\"\n"
+             "                     \"   STATEDIR: %s\\n\"\n"
+             "                     \"   CACHEDIR: %s\\n\"\n"
+             "                     \"   PIDDIR: %s\\n\"\n"
+             "                     \"   SMB_PASSWD_FILE: %s\\n\"\n"
+             "                     \"   PRIVATE_DIR: %s\\n\"\n"
+             "                     \"   BINDDNS_DIR: %s\\n\",\n"
+             "                     get_dyn_SBINDIR(),\n"
+             "                     get_dyn_BINDIR(),\n"
+             "                     get_dyn_CONFIGFILE(),\n"
+             "                     get_dyn_LOGFILEBASE(),\n"
+             "                     get_dyn_LMHOSTSFILE(),\n"
+             "                     get_dyn_LIBDIR(),\n"
+             "                     get_dyn_DATADIR(),\n"
+             "                     get_dyn_SAMBA_DATADIR(),\n"
+             "                     get_dyn_MODULESDIR(),\n"
+             "                     get_dyn_SHLIBEXT(),\n"
+             "                     get_dyn_LOCKDIR(),\n"
+             "                     get_dyn_STATEDIR(),\n"
+             "                     get_dyn_CACHEDIR(),\n"
+             "                     get_dyn_PIDDIR(),\n"
+             "                     get_dyn_SMB_PASSWD_FILE(),\n"
+             "                     get_dyn_PRIVATE_DIR(),\n"
+             "                     get_dyn_BINDDNS_DIR());\n"
              "\n")
 
 def write_build_options_footer(fp):
@@ -120,23 +137,36 @@ def write_build_options_footer(fp):
              "       output(screen, \"\\n%s\", cluster_support_features());\n"
              "\n"
              "       /* Output the sizes of the various types */\n"
-             "       output(screen, \"\\nType sizes:\\n\");\n"
-             "       output(screen, \"   sizeof(char):         %lu\\n\",(unsigned long)sizeof(char));\n"
-             "       output(screen, \"   sizeof(int):          %lu\\n\",(unsigned long)sizeof(int));\n"
-             "       output(screen, \"   sizeof(long):         %lu\\n\",(unsigned long)sizeof(long));\n"
-             "       output(screen, \"   sizeof(long long):    %lu\\n\",(unsigned long)sizeof(long long));\n"
-             "       output(screen, \"   sizeof(uint8_t):      %lu\\n\",(unsigned long)sizeof(uint8_t));\n"
-             "       output(screen, \"   sizeof(uint16_t):     %lu\\n\",(unsigned long)sizeof(uint16_t));\n"
-             "       output(screen, \"   sizeof(uint32_t):     %lu\\n\",(unsigned long)sizeof(uint32_t));\n"
-             "       output(screen, \"   sizeof(short):        %lu\\n\",(unsigned long)sizeof(short));\n"
-             "       output(screen, \"   sizeof(void*):        %lu\\n\",(unsigned long)sizeof(void*));\n"
-             "       output(screen, \"   sizeof(size_t):       %lu\\n\",(unsigned long)sizeof(size_t));\n"
-             "       output(screen, \"   sizeof(off_t):        %lu\\n\",(unsigned long)sizeof(off_t));\n"
-             "       output(screen, \"   sizeof(ino_t):        %lu\\n\",(unsigned long)sizeof(ino_t));\n"
-             "       output(screen, \"   sizeof(dev_t):        %lu\\n\",(unsigned long)sizeof(dev_t));\n"
+             "       output(screen, \"\\nType sizes:\\n\"\n"
+             "                      \"   sizeof(char):         %lu\\n\"\n"
+             "                      \"   sizeof(int):          %lu\\n\"\n"
+             "                      \"   sizeof(long):         %lu\\n\"\n"
+             "                      \"   sizeof(long long):    %lu\\n\"\n"
+             "                      \"   sizeof(uint8_t):      %lu\\n\"\n"
+             "                      \"   sizeof(uint16_t):     %lu\\n\"\n"
+             "                      \"   sizeof(uint32_t):     %lu\\n\"\n"
+             "                      \"   sizeof(short):        %lu\\n\"\n"
+             "                      \"   sizeof(void*):        %lu\\n\"\n"
+             "                      \"   sizeof(size_t):       %lu\\n\"\n"
+             "                      \"   sizeof(off_t):        %lu\\n\"\n"
+             "                      \"   sizeof(ino_t):        %lu\\n\"\n"
+             "                      \"   sizeof(dev_t):        %lu\\n\",\n"
+             "                      (unsigned long)sizeof(char),\n"
+             "                      (unsigned long)sizeof(int),\n"
+             "                      (unsigned long)sizeof(long),\n"
+             "                      (unsigned long)sizeof(long long),\n"
+             "                      (unsigned long)sizeof(uint8_t),\n"
+             "                      (unsigned long)sizeof(uint16_t),\n"
+             "                      (unsigned long)sizeof(uint32_t),\n"
+             "                      (unsigned long)sizeof(short),\n"
+             "                      (unsigned long)sizeof(void*),\n"
+             "                      (unsigned long)sizeof(size_t),\n"
+             "                      (unsigned long)sizeof(off_t),\n"
+             "                      (unsigned long)sizeof(ino_t),\n"
+             "                      (unsigned long)sizeof(dev_t));\n"
              "\n"
-             "       output(screen, \"\\nBuiltin modules:\\n\");\n"
-             "       output(screen, \"   %s\\n\", STRING_STATIC_MODULES);\n"
+             "       output(screen, \"\\nBuiltin modules:\\n\"\n"
+             "                      \"   %s\\n\", STRING_STATIC_MODULES);\n"
              "}\n")
 
 def write_build_options_section(fp, keys, section):