diff --git a/acinclude.m4 b/acinclude.m4 index 08486d3e61..a91268b5b8 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -394,6 +394,16 @@ AC_DEFUN([WX_ARG_WITH], dnl same as WX_ARG_WITH but makes it clear that the option is enabled by default AC_DEFUN([WX_ARG_WITHOUT], [WX_ARG_WITH($1, [$2], $3, without)]) +dnl variant of AC_ARG_WITH which doesn't accept --without-xxx varient +AC_DEFUN([WX_ARG_ONLY_WITH], [ + AC_ARG_WITH($1, [$2], [ + if test "$withval" != yes; then + AC_MSG_ERROR([Option --with-$1 doesn't accept any arguments]) + fi + $3 + ]) + ]) + dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH dnl usage: WX_ARG_ENABLE(option, helpmessage, var, [enablestring], [default]) dnl diff --git a/configure b/configure index 39ab736cda..c175e2c527 100755 --- a/configure +++ b/configure @@ -623,6 +623,7 @@ ac_includes_default="\ #endif" enable_option_checking=no +enable_option_checking=fatal ac_subst_vars='LTLIBOBJS LIBOBJS CPPUNIT_CONFIG @@ -1130,7 +1131,6 @@ enable_profile enable_no_rtti enable_no_exceptions enable_permissive -enable_no_deps enable_vararg_macros enable_universal_binary enable_macosx_arch @@ -1140,6 +1140,7 @@ enable_rpath enable_objc_uniquifying enable_visibility enable_tls +enable_repro_build enable_intl enable_xlocale enable_config @@ -2071,7 +2072,6 @@ Optional Features: --enable-no_rtti create code without RTTI information --enable-no_exceptions create code without C++ exceptions handling --enable-permissive compile code disregarding strict ANSI - --enable-no_deps create code without dependency information --disable-vararg_macros don't use vararg macros, even if they are supported --enable-universal_binary=archs create universal binary for the specified (or all supported) architectures --enable-macosx_arch=ARCH build for just the specified architecture @@ -2081,6 +2081,7 @@ Optional Features: --enable-objc_uniquifying enable Objective-C class name uniquifying --disable-visibility disable use of ELF symbols visibility even if supported --disable-tls disable use of compiler TLS support + --enable-repro-build enable reproducible build mode --enable-intl use internationalization system --enable-xlocale use x-locale support (requires wxLocale) --enable-config use wxConfig (and derived) classes @@ -4248,78 +4249,162 @@ if test "${with_gtk+set}" = set; then : fi + # Check whether --with-motif was given. if test "${with_motif+set}" = set; then : - withval=$with_motif; wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1 + withval=$with_motif; + if test "$withval" != yes; then + as_fn_error $? "Option --with-motif doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-osx_cocoa was given. if test "${with_osx_cocoa+set}" = set; then : - withval=$with_osx_cocoa; wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + withval=$with_osx_cocoa; + if test "$withval" != yes; then + as_fn_error $? "Option --with-osx_cocoa doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-osx_iphone was given. if test "${with_osx_iphone+set}" = set; then : - withval=$with_osx_iphone; wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1 + withval=$with_osx_iphone; + if test "$withval" != yes; then + as_fn_error $? "Option --with-osx_iphone doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-osx was given. if test "${with_osx+set}" = set; then : - withval=$with_osx; wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + withval=$with_osx; + if test "$withval" != yes; then + as_fn_error $? "Option --with-osx doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-cocoa was given. if test "${with_cocoa+set}" = set; then : - withval=$with_cocoa; wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + withval=$with_cocoa; + if test "$withval" != yes; then + as_fn_error $? "Option --with-cocoa doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-iphone was given. if test "${with_iphone+set}" = set; then : - withval=$with_iphone; wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1 + withval=$with_iphone; + if test "$withval" != yes; then + as_fn_error $? "Option --with-iphone doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-mac was given. if test "${with_mac+set}" = set; then : - withval=$with_mac; wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + withval=$with_mac; + if test "$withval" != yes; then + as_fn_error $? "Option --with-mac doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-wine was given. if test "${with_wine+set}" = set; then : - withval=$with_wine; wxUSE_WINE="$withval" CACHE_WINE=1 + withval=$with_wine; + if test "$withval" != yes; then + as_fn_error $? "Option --with-wine doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_WINE="$withval" CACHE_WINE=1 + fi + + # Check whether --with-msw was given. if test "${with_msw+set}" = set; then : - withval=$with_msw; wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1 + withval=$with_msw; + if test "$withval" != yes; then + as_fn_error $? "Option --with-msw doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-directfb was given. if test "${with_directfb+set}" = set; then : - withval=$with_directfb; wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1 + withval=$with_directfb; + if test "$withval" != yes; then + as_fn_error $? "Option --with-directfb doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-x11 was given. if test "${with_x11+set}" = set; then : - withval=$with_x11; wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1 + withval=$with_x11; + if test "$withval" != yes; then + as_fn_error $? "Option --with-x11 doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1 + fi + + # Check whether --with-qt was given. if test "${with_qt+set}" = set; then : - withval=$with_qt; wxUSE_QT="$withval" CACHE_QT=1 TOOLKIT_GIVEN=1 + withval=$with_qt; + if test "$withval" != yes; then + as_fn_error $? "Option --with-qt doesn't accept any arguments" "$LINENO" 5 + fi + wxUSE_QT="$withval" CACHE_QT=1 TOOLKIT_GIVEN=1 + fi + enablestring= defaultval= if test -z "$defaultval"; then @@ -5755,35 +5840,6 @@ fi eval "$wx_cv_use_permissive" - enablestring= - defaultval= - if test -z "$defaultval"; then - if test x"$enablestring" = xdisable; then - defaultval=yes - else - defaultval=no - fi - fi - - # Check whether --enable-no_deps was given. -if test "${enable_no_deps+set}" = set; then : - enableval=$enable_no_deps; - if test "$enableval" = yes; then - wx_cv_use_no_deps='wxUSE_NO_DEPS=yes' - else - wx_cv_use_no_deps='wxUSE_NO_DEPS=no' - fi - -else - - wx_cv_use_no_deps='wxUSE_NO_DEPS=${'DEFAULT_wxUSE_NO_DEPS":-$defaultval}" - -fi - - - eval "$wx_cv_use_no_deps" - - enablestring=disable defaultval= if test -z "$defaultval"; then @@ -6025,6 +6081,36 @@ fi + enablestring= + defaultval= + if test -z "$defaultval"; then + if test x"$enablestring" = xdisable; then + defaultval=yes + else + defaultval=no + fi + fi + + # Check whether --enable-repro_build was given. +if test "${enable_repro_build+set}" = set; then : + enableval=$enable_repro_build; + if test "$enableval" = yes; then + wx_cv_use_repro_build='wxUSE_REPRODUCIBLE_BUILD=yes' + else + wx_cv_use_repro_build='wxUSE_REPRODUCIBLE_BUILD=no' + fi + +else + + wx_cv_use_repro_build='wxUSE_REPRODUCIBLE_BUILD=${'DEFAULT_wxUSE_REPRODUCIBLE_BUILD":-$defaultval}" + +fi + + + eval "$wx_cv_use_repro_build" + + + enablestring= defaultval=$wxUSE_ALL_FEATURES @@ -30623,6 +30709,11 @@ else fi fi +if test "x$wxUSE_REPRODUCIBLE_BUILD" = "xyes"; then + $as_echo "#define wxUSE_REPRODUCIBLE_BUILD 1" >>confdefs.h + +fi + if test "x$WXWIN_COMPATIBILITY_2_8" = "xyes"; then $as_echo "#define WXWIN_COMPATIBILITY_2_8 1" >>confdefs.h @@ -40312,6 +40403,8 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + + echo echo "Configured wxWidgets ${WX_VERSION} for \`${host}'" echo "" diff --git a/configure.in b/configure.in index 3ee19c7d96..b148aca6d9 100644 --- a/configure.in +++ b/configure.in @@ -415,18 +415,18 @@ fi dnl we use AC_ARG_WITH and not WX_ARG_WITH for the toolkit options as they dnl shouldn't default to wxUSE_ALL_FEATURES AC_ARG_WITH(gtk, [[ --with-gtk[=VERSION] use GTK+, VERSION can be 3, 2 (default), 1 or "any"]], [wxUSE_GTK="$withval" CACHE_GTK=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(motif, [ --with-motif use Motif/Lesstif], [wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(osx_cocoa, [ --with-osx_cocoa use Mac OS X (Cocoa)], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(osx_iphone, [ --with-osx_iphone use iPhone OS X port], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(osx, [ --with-osx use Mac OS X (default port, Cocoa)], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(cocoa, [ --with-cocoa same as --with-osx_cocoa], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(iphone, [ --with-iphone same as --with-osx_iphone], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(mac, [ --with-mac same as --with-osx], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(wine, [ --with-wine use Wine], [wxUSE_WINE="$withval" CACHE_WINE=1]) -AC_ARG_WITH(msw, [ --with-msw use MS-Windows], [wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(directfb, [ --with-directfb use DirectFB], [wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(x11, [ --with-x11 use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1]) -AC_ARG_WITH(qt, [ --with-qt use Qt], [wxUSE_QT="$withval" CACHE_QT=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(motif, [ --with-motif use Motif/Lesstif], [wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(osx_cocoa, [ --with-osx_cocoa use Mac OS X (Cocoa)], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(osx_iphone, [ --with-osx_iphone use iPhone OS X port], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(osx, [ --with-osx use Mac OS X (default port, Cocoa)], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(cocoa, [ --with-cocoa same as --with-osx_cocoa], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(iphone, [ --with-iphone same as --with-osx_iphone], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(mac, [ --with-mac same as --with-osx], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(wine, [ --with-wine use Wine], [wxUSE_WINE="$withval" CACHE_WINE=1]) +WX_ARG_ONLY_WITH(msw, [ --with-msw use MS-Windows], [wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(directfb, [ --with-directfb use DirectFB], [wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(x11, [ --with-x11 use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1]) +WX_ARG_ONLY_WITH(qt, [ --with-qt use Qt], [wxUSE_QT="$withval" CACHE_QT=1 TOOLKIT_GIVEN=1]) WX_ARG_ENABLE(nanox, [ --enable-nanox use NanoX], wxUSE_NANOX) WX_ARG_ENABLE(gpe, [ --enable-gpe use GNOME PDA Environment features if possible], wxUSE_GPE) @@ -654,7 +654,6 @@ WX_ARG_ENABLE(profile, [ --enable-profile create code with profili WX_ARG_ENABLE(no_rtti, [ --enable-no_rtti create code without RTTI information], wxUSE_NO_RTTI) WX_ARG_ENABLE(no_exceptions, [ --enable-no_exceptions create code without C++ exceptions handling], wxUSE_NO_EXCEPTIONS) WX_ARG_ENABLE(permissive, [ --enable-permissive compile code disregarding strict ANSI], wxUSE_PERMISSIVE) -WX_ARG_ENABLE(no_deps, [ --enable-no_deps create code without dependency information], wxUSE_NO_DEPS) WX_ARG_DISABLE(vararg_macros,[ --disable-vararg_macros don't use vararg macros, even if they are supported], wxUSE_VARARG_MACROS) WX_ARG_ENABLE_PARAM(universal_binary, [[ --enable-universal_binary=archs create universal binary for the specified (or all supported) architectures]], wxUSE_UNIVERSAL_BINARY) @@ -670,6 +669,8 @@ WX_ARG_ENABLE(objc_uniquifying,[ --enable-objc_uniquifying enable Objective-C c WX_ARG_DISABLE(visibility, [ --disable-visibility disable use of ELF symbols visibility even if supported], wxUSE_VISIBILITY) WX_ARG_DISABLE(tls, [ --disable-tls disable use of compiler TLS support], wxUSE_COMPILER_TLS) +WX_ARG_ENABLE(repro_build, [ --enable-repro-build enable reproducible build mode], wxUSE_REPRODUCIBLE_BUILD) + dnl --------------------------------------------------------------------------- dnl optional non GUI features dnl --------------------------------------------------------------------------- @@ -5135,6 +5136,10 @@ else fi fi +if test "x$wxUSE_REPRODUCIBLE_BUILD" = "xyes"; then + AC_DEFINE(wxUSE_REPRODUCIBLE_BUILD) +fi + dnl --------------------------------------------------------------------------- dnl compatibility level dnl --------------------------------------------------------------------------- @@ -8301,6 +8306,19 @@ fi dnl wxWITH_SUBDIRS AC_OUTPUT +dnl Enable strict option checking by default because typos in --enable-xxx is +dnl a much more common case than wanting to explicitly pass an option unknown +dnl to the main configure script (this one) to a configure scripts in a +dnl subdirectory (e.g. src/tiff or src/expat). If someone really needs to do +dnl the latter, --disable-option-checking would need to be explicitly used. +dnl +dnl Notice that we need to do this at the very end of configure script as +dnl otherwise this would be overridden by AC_CONFIG_SUBDIRS() which disables +dnl option checking. And we need to use m4_divert_text() because we want this +dnl to appear in the beginning of the generated file, before the code parsing +dnl the options. +m4_divert_text([DEFAULTS],[enable_option_checking=fatal]) + dnl report how we have been configured echo echo "Configured wxWidgets ${WX_VERSION} for \`${host}'" diff --git a/docs/doxygen/mainpages/const_wxusedef.h b/docs/doxygen/mainpages/const_wxusedef.h index 1e474318c9..d414884997 100644 --- a/docs/doxygen/mainpages/const_wxusedef.h +++ b/docs/doxygen/mainpages/const_wxusedef.h @@ -194,6 +194,7 @@ library: @itemdef{wxUSE_PROTOCOL_HTTP, Use wxHTTP class. (requireswxProtocol)} @itemdef{wxUSE_RADIOBOX, Use wxRadioBox class.} @itemdef{wxUSE_RADIOBTN, Use wxRadioButton class.} +@itemdef{wxUSE_REPRODUCIBLE_BUILD, Make library builds reproducible.} @itemdef{wxUSE_REGEX, Use wxRegEx class.} @itemdef{wxUSE_RICHTEXT, Use wxRichTextCtrl class.} @itemdef{wxUSE_RICHTEXT_XML_HANDLER, See src/xrc/xh_richtext.cpp file.} diff --git a/docs/gtk/install.txt b/docs/gtk/install.txt index e71c71b0ff..965822c89a 100644 --- a/docs/gtk/install.txt +++ b/docs/gtk/install.txt @@ -231,9 +231,6 @@ The following options handle the kind of library you want to build. binary size. Also fewer crashes during the actual compilation... - --enable-no_deps Enable compilation without creation of - dependency information. - --enable-permissive Enable compilation without checking for strict ANSI conformance. Useful to prevent the build dying with errors as soon as you compile with diff --git a/docs/motif/install.txt b/docs/motif/install.txt index fb9eecce77..1b937c304a 100644 --- a/docs/motif/install.txt +++ b/docs/motif/install.txt @@ -264,9 +264,6 @@ The following options handle the kind of library you want to build. binary size. Also fewer crashes during the actual compilation... - --enable-no_deps Enable compilation without creation of - dependency information. - --enable-permissive Enable compilation without checking for strict ANSI conformance. Useful to prevent the build dying with errors as soon as you compile with diff --git a/docs/x11/install.txt b/docs/x11/install.txt index c60ee8c74d..61d252b010 100644 --- a/docs/x11/install.txt +++ b/docs/x11/install.txt @@ -246,9 +246,6 @@ The following options handle the kind of library you want to build. binary size. Also fewer crashes during the actual compilation... - --enable-no_deps Enable compilation without creation of - dependency information. - --enable-permissive Enable compilation without checking for strict ANSI conformance. Useful to prevent the build dying with errors as soon as you compile with diff --git a/include/wx/android/setup.h b/include/wx/android/setup.h index 8fb509c9fa..d125af0798 100644 --- a/include/wx/android/setup.h +++ b/include/wx/android/setup.h @@ -66,6 +66,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/gtk/setup0.h b/include/wx/gtk/setup0.h index 8d1d714403..944260554e 100644 --- a/include/wx/gtk/setup0.h +++ b/include/wx/gtk/setup0.h @@ -67,6 +67,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h index da3d1629a2..dafcdaab77 100644 --- a/include/wx/motif/setup0.h +++ b/include/wx/motif/setup0.h @@ -67,6 +67,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h index 35d6db3f75..9ac46699d6 100644 --- a/include/wx/msw/setup0.h +++ b/include/wx/msw/setup0.h @@ -67,6 +67,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/osx/setup0.h b/include/wx/osx/setup0.h index afe5a4b87f..7a4f799e0b 100644 --- a/include/wx/osx/setup0.h +++ b/include/wx/osx/setup0.h @@ -68,6 +68,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h index e0e678a69a..ba4c3bd184 100644 --- a/include/wx/setup_inc.h +++ b/include/wx/setup_inc.h @@ -63,6 +63,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h index fe32b1163f..9d8bed8509 100644 --- a/include/wx/univ/setup0.h +++ b/include/wx/univ/setup0.h @@ -66,6 +66,16 @@ // Recommended setting: 0 #define wxUSE_UNSAFE_WXSTRING_CONV 1 +// If set to 1, enables "reproducible builds", i.e. build output should be +// exactly the same if the same build is redone again. As using __DATE__ and +// __TIME__ macros clearly makes the build irreproducible, setting this option +// to 1 disables their use in the library code. +// +// Default is 0 +// +// Recommended setting: 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + // ---------------------------------------------------------------------------- // debugging settings // ---------------------------------------------------------------------------- diff --git a/setup.h.in b/setup.h.in index 2e4748c796..01cf34efbe 100644 --- a/setup.h.in +++ b/setup.h.in @@ -153,6 +153,8 @@ #define wxUSE_UNSAFE_WXSTRING_CONV 0 +#define wxUSE_REPRODUCIBLE_BUILD 0 + #define wxUSE_ON_FATAL_EXCEPTION 0 diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index d1f2bc18be..8b31568fa5 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -1374,7 +1374,9 @@ wxVersionInfo wxGetLibraryVersionInfo() wxString msg; msg.Printf(wxS("wxWidgets Library (%s port)\n") wxS("Version %d.%d.%d (Unicode: %s, debug level: %d),\n") +#if !wxUSE_REPRODUCIBLE_BUILD wxS("compiled at %s %s\n\n") +#endif wxS("Runtime version of toolkit used is %d.%d.\n"), wxPlatformInfo::Get().GetPortIdName(), wxMAJOR_VERSION, @@ -1388,8 +1390,10 @@ wxVersionInfo wxGetLibraryVersionInfo() "none", #endif wxDEBUG_LEVEL, +#if !wxUSE_REPRODUCIBLE_BUILD __TDATE__, __TTIME__, +#endif wxPlatformInfo::Get().GetToolkitMajorVersion(), wxPlatformInfo::Get().GetToolkitMinorVersion() );