dynconfig: Have only one dynconfig.o in the common code.
[sfrench/samba-autobuild/.git] / source3 / script / mkbuildoptions.awk
index cdc5bd98813544c88f156b3dadde4b1c4486d5a8..3cd0dace213d02553b42d7e4de3e263b0f9784e5 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
        print "   ";
        print "   This program is free software; you can redistribute it and/or modify";
        print "   it under the terms of the GNU General Public License as published by";
-       print "   the Free Software Foundation; either version 2 of the License, or";
+       print "   the Free Software Foundation; either version 3 of the License, or";
        print "   (at your option) any later version.";
        print "   ";
        print "   This program is distributed in the hope that it will be useful,";
@@ -16,42 +16,44 @@ BEGIN {
        print "   GNU General Public License for more details.";
        print "   ";
        print "   You should have received a copy of the GNU General Public License";
-       print "   along with this program; if not, write to the Free Software";
-       print "   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.";
+       print "   along with this program; if not, see <http://www.gnu.org/licenses/>."
        print "*/";
        print "";
        print "#include \"includes.h\"";
        print "#include \"build_env.h\"";
-       print "#include \"dynconfig.h\"";
+       print "#include \"dynconfig/dynconfig.h\"";
        print "";
-       print "static void output(BOOL screen, const char *format, ...) PRINTF_ATTRIBUTE(2,3);";
+       print "static int output(bool screen, const char *format, ...) PRINTF_ATTRIBUTE(2,3);";
+       print "void build_options(bool screen);";
        print "";
        print "";
        print "/****************************************************************************";
        print "helper function for build_options";
        print "****************************************************************************/";
-       print "static void output(BOOL screen, const char *format, ...)";
+       print "static int output(bool screen, const char *format, ...)";
        print "{";
-       print "       char *ptr;";
+       print "       char *ptr = NULL;";
+       print "       int ret = 0;";
        print "       va_list ap;";
        print "       ";
        print "       va_start(ap, format);";
-       print "       vasprintf(&ptr,format,ap);";
+       print "       ret = vasprintf(&ptr,format,ap);";
        print "       va_end(ap);";
        print "";
        print "       if (screen) {";
-       print "              d_printf(\"%s\", ptr);";
+       print "              d_printf(\"%s\", ptr ? ptr : \"\");";
        print "       } else {";
-       print "        DEBUG(4,(\"%s\", ptr));";
+       print "        DEBUG(4,(\"%s\", ptr ? ptr : \"\"));";
        print "       }";
        print "       ";
        print "       SAFE_FREE(ptr);";
+       print "       return ret;";
        print "}";
        print "";
        print "/****************************************************************************";
        print "options set at build time for the samba suite";
        print "****************************************************************************/";
-       print "void build_options(BOOL screen)";
+       print "void build_options(bool screen)";
        print "{";
        print "       if ((DEBUGLEVEL < 4) && (!screen)) {";
        print "        return;";
@@ -75,22 +77,25 @@ BEGIN {
        print "       /* Output various paths to files and directories */";
        print "       output(screen,\"\\nPaths:\\n\");";
 
-       print "       output(screen,\"   SBINDIR: %s\\n\", dyn_SBINDIR);";
-       print "       output(screen,\"   BINDIR: %s\\n\", dyn_BINDIR);";
-       print "       output(screen,\"   SWATDIR: %s\\n\", dyn_SWATDIR);";
+       print "       output(screen,\"   SBINDIR: %s\\n\", get_dyn_SBINDIR());";
+       print "       output(screen,\"   BINDIR: %s\\n\", get_dyn_BINDIR());";
+       print "       output(screen,\"   SWATDIR: %s\\n\", get_dyn_SWATDIR());";
 
-       print "       output(screen,\"   CONFIGFILE: %s\\n\", dyn_CONFIGFILE);";
-       print "       output(screen,\"   LOGFILEBASE: %s\\n\", dyn_LOGFILEBASE);";
-       print "       output(screen,\"   LMHOSTSFILE: %s\\n\",dyn_LMHOSTSFILE);";
+       print "       output(screen,\"   CONFIGFILE: %s\\n\", get_dyn_CONFIGFILE());";
+       print "       output(screen,\"   LOGFILEBASE: %s\\n\", get_dyn_LOGFILEBASE());";
+       print "       output(screen,\"   LMHOSTSFILE: %s\\n\",get_dyn_LMHOSTSFILE());";
 
-       print "       output(screen,\"   LIBDIR: %s\\n\",dyn_LIBDIR);";
-       print "       output(screen,\"   SHLIBEXT: %s\\n\",dyn_SHLIBEXT);";
+       print "       output(screen,\"   LIBDIR: %s\\n\",get_dyn_LIBDIR());";
+       print "       output(screen,\"   MODULESDIR: %s\\n\",get_dyn_MODULESDIR());";
+       print "       output(screen,\"   SHLIBEXT: %s\\n\",get_dyn_SHLIBEXT());";
 
-       print "       output(screen,\"   LOCKDIR: %s\\n\",dyn_LOCKDIR);";
-       print "       output(screen,\"   PIDDIR: %s\\n\", dyn_PIDDIR);";
+       print "       output(screen,\"   LOCKDIR: %s\\n\",get_dyn_LOCKDIR());";
+       print "       output(screen,\"   STATEDIR: %s\\n\",get_dyn_STATEDIR());";
+       print "       output(screen,\"   CACHEDIR: %s\\n\",get_dyn_CACHEDIR());";
+       print "       output(screen,\"   PIDDIR: %s\\n\", get_dyn_PIDDIR());";
 
-       print "       output(screen,\"   SMB_PASSWD_FILE: %s\\n\",dyn_SMB_PASSWD_FILE);";
-       print "       output(screen,\"   PRIVATE_DIR: %s\\n\",dyn_PRIVATE_DIR);";
+       print "       output(screen,\"   SMB_PASSWD_FILE: %s\\n\",get_dyn_SMB_PASSWD_FILE());";
+       print "       output(screen,\"   PRIVATE_DIR: %s\\n\",get_dyn_PRIVATE_DIR());";
        print "";
 
 
@@ -242,14 +247,21 @@ END {
        # add code to display the various type sizes
        print "       /* Output the sizes of the various types */";
        print "       output(screen, \"\\nType sizes:\\n\");";
-       print "       output(screen, \"   sizeof(char):    %u\\n\",sizeof(char));";
-       print "       output(screen, \"   sizeof(int):     %u\\n\",sizeof(int));";
-       print "       output(screen, \"   sizeof(long):    %u\\n\",sizeof(long));";
-       print "       output(screen, \"   sizeof(uint8):   %u\\n\",sizeof(uint8));";
-       print "       output(screen, \"   sizeof(uint16):  %u\\n\",sizeof(uint16));";
-       print "       output(screen, \"   sizeof(uint32):  %u\\n\",sizeof(uint32));";
-       print "       output(screen, \"   sizeof(short):   %u\\n\",sizeof(short));";
-       print "       output(screen, \"   sizeof(void*):   %u\\n\",sizeof(void*));";
+       print "       output(screen, \"   sizeof(char):         %lu\\n\",(unsigned long)sizeof(char));";
+       print "       output(screen, \"   sizeof(int):          %lu\\n\",(unsigned long)sizeof(int));";
+       print "       output(screen, \"   sizeof(long):         %lu\\n\",(unsigned long)sizeof(long));";
+       print "#if HAVE_LONGLONG"
+       print "       output(screen, \"   sizeof(long long):    %lu\\n\",(unsigned long)sizeof(long long));";
+       print "#endif"
+       print "       output(screen, \"   sizeof(uint8):        %lu\\n\",(unsigned long)sizeof(uint8));";
+       print "       output(screen, \"   sizeof(uint16):       %lu\\n\",(unsigned long)sizeof(uint16));";
+       print "       output(screen, \"   sizeof(uint32):       %lu\\n\",(unsigned long)sizeof(uint32));";
+       print "       output(screen, \"   sizeof(short):        %lu\\n\",(unsigned long)sizeof(short));";
+       print "       output(screen, \"   sizeof(void*):        %lu\\n\",(unsigned long)sizeof(void*));";
+       print "       output(screen, \"   sizeof(size_t):       %lu\\n\",(unsigned long)sizeof(size_t));";
+       print "       output(screen, \"   sizeof(off_t):        %lu\\n\",(unsigned long)sizeof(off_t));";
+       print "       output(screen, \"   sizeof(ino_t):        %lu\\n\",(unsigned long)sizeof(ino_t));";
+       print "       output(screen, \"   sizeof(dev_t):        %lu\\n\",(unsigned long)sizeof(dev_t));";
 
        ##################################################
        # add code to give information about modules