summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-06-17 15:52:43 +0800
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2020-06-18 11:07:13 +0200
commitace4489cbda424e6e831dc27f507bdb0a10266a4 (patch)
tree559853b550e109ca5d32b2fdc4fcaedc78bd9b4f
parent9941045fca570c62cf6117967281b1328d5901fe (diff)
downloadsigc++-ace4489cbda424e6e831dc27f507bdb0a10266a4.tar.gz
NMake Makefiles: Add rules to generate sigc.rc and sigc++config.h
This adds a 'prep-git-build' target which is run before building any of the other targets so that this paves the first steps in making the libsigc++-2-10 branch buildable directly from a GIT checkout with the NMake Makefiles. Note that unlike the master (3.x) branch, we still need to use m4 to generate some sources and headers, which will be covered in the following commit.
-rw-r--r--MSVC_NMake/Makefile.vc4
-rw-r--r--MSVC_NMake/generate-msvc.mak38
2 files changed, 42 insertions, 0 deletions
diff --git a/MSVC_NMake/Makefile.vc b/MSVC_NMake/Makefile.vc
index cb82ebb..3802dab 100644
--- a/MSVC_NMake/Makefile.vc
+++ b/MSVC_NMake/Makefile.vc
@@ -30,6 +30,10 @@ VALID_MSC = TRUE
# into the lists we need for compilation and introspection
!include create-lists-msvc.mak
+!ifdef GENERATE_VERSIONED_FILES
+!include pkg-ver.mak
+!endif
+
all: $(LIBSIGC_LIB) $(libsigc_ex) all-build-info
tests: $(libsigc_tests) all-build-info
diff --git a/MSVC_NMake/generate-msvc.mak b/MSVC_NMake/generate-msvc.mak
index 2569fb2..8084e0a 100644
--- a/MSVC_NMake/generate-msvc.mak
+++ b/MSVC_NMake/generate-msvc.mak
@@ -8,3 +8,41 @@ vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp \
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex \
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests:
@-md $@
+
+# Create the versioned files
+
+prep-git-build: pkg-ver.mak
+
+sigc.rc: pkg-ver.mak sigc.rc.in
+ @echo Generating $@...
+ @copy $@.in $@
+ @$(PERL) -pi.bak -e "s/\@SIGCXX_MAJOR_VERSION\@/$(PKG_MAJOR_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\@SIGCXX_MINOR_VERSION\@/$(PKG_MINOR_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\@SIGCXX_MICRO_VERSION\@/$(PKG_MICRO_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\@PACKAGE_VERSION\@/$(PKG_MAJOR_VERSION).$(PKG_MINOR_VERSION).$(PKG_MICRO_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\@SIGCXX_API_VERSION\@/$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)/g" $@
+ @del $@.bak
+
+# You may change SIGCXX_DISABLE_DEPRECATED if you know what you are doing
+sigc++config.h: pkg-ver.mak ..\sigc++config.h.in
+ @echo Generating $@...
+ @copy "..\$(@F).in" "$@"
+ @$(PERL) -pi.bak -e "s/\#undef SIGCXX_DISABLE_DEPRECATED/\/\* \#undef SIGCXX_DISABLE_DEPRECATED \*\//g" $@
+ @$(PERL) -pi.bak -e "s/\#undef SIGCXX_MAJOR_VERSION/\#define SIGCXX_MAJOR_VERSION $(PKG_MAJOR_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\#undef SIGCXX_MINOR_VERSION/\#define SIGCXX_MINOR_VERSION $(PKG_MINOR_VERSION)/g" $@
+ @$(PERL) -pi.bak -e "s/\#undef SIGCXX_MICRO_VERSION/\#define SIGCXX_MICRO_VERSION $(PKG_MICRO_VERSION)/g" $@
+ @del $@.bak
+
+pkg-ver.mak: ..\configure.ac
+ @echo Generating version info Makefile Snippet...
+ @$(PERL) -00 -ne "print if /AC_INIT\(/" $** | \
+ $(PERL) -pe "tr/, /\n/s" | \
+ $(PERL) -ne "print if 2 .. 2" | \
+ $(PERL) -ne "print /\[(.*)\]/" > ver.txt
+ @echo @echo off>pkg-ver.bat
+ @echo.>>pkg-ver.bat
+ @echo set /p sigc_ver=^<ver.txt>>pkg-ver.bat
+ @echo for /f "tokens=1,2,3 delims=." %%%%a IN ("%%sigc_ver%%") do (echo PKG_MAJOR_VERSION=%%%%a^& echo PKG_MINOR_VERSION=%%%%b^& echo PKG_MICRO_VERSION=%%%%c)^>$@>>pkg-ver.bat
+ @pkg-ver.bat
+ @del ver.txt pkg-ver.bat
+ $(MAKE) /f Makefile.vc CFG=$(CFG) GENERATE_VERSIONED_FILES=1 sigc.rc sigc++config.h