[atkmm] NMake Makefiles: Add rules to generate sources



commit 0e81c54bcfabc7f9b37297f44b22c006b4eaea79
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed Apr 1 15:36:28 2020 +0800

    NMake Makefiles: Add rules to generate sources
    
    This allows one to be able to build directly from a GIT checkout, after
    first running the prep-git-build target, by running gmmproc from an
    installation of glibmm master.
    
    Note that in order to perform such a build, one will need *nix/GNU tools
    such as common *nix commands 'cp' and 'rm' etc, along with PERL (with
    XML::Parser) and the GNU m4 tool.

 MSVC_NMake/build-rules-msvc.mak  | 19 ++++++++++++++++++-
 MSVC_NMake/config-msvc.mak       |  7 ++++++-
 MSVC_NMake/create-lists-msvc.mak |  9 +++++++++
 MSVC_NMake/generate-msvc.mak     |  9 +++++++--
 4 files changed, 40 insertions(+), 4 deletions(-)
---
diff --git a/MSVC_NMake/build-rules-msvc.mak b/MSVC_NMake/build-rules-msvc.mak
index 44959b3..7a9276e 100644
--- a/MSVC_NMake/build-rules-msvc.mak
+++ b/MSVC_NMake/build-rules-msvc.mak
@@ -13,11 +13,22 @@
 #      $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
 # $<
 # <<
+{vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\}.obj::
+       $(CXX) $(ATKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ /c @<<
+$<
+<<
+
 {..\atk\atkmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\}.obj::
-       $(CXX) $(LIBATKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ /c @<<
+       $(CXX) $(ATKMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\atkmm\ /c @<<
 $<
 <<
 
+{..\atk\src\}.ccg{vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\}.obj:
+       @if not exist $(@D)\private\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)\private
+       @for %%s in ($(<D)\*.ccg) do @if not exist ..\atk\atkmm\%%~ns.cc if not exist $(@D)\%%~ns.cc $(PERL) 
-- $(GMMPROC_DIR)/gmmproc -I ../codegen/m4 --defs $(<D:\=/) %%~ns $(<D:\=/) $(@D)
+       @if exist $(@D)\$(<B).cc $(CXX) $(ATKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c $(@D)\$(<B).cc
+       @if exist ..\atk\atkmm\$(<B).cc $(CXX) $(ATKMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c 
..\atk\atkmm\$(<B).cc
+
 {.\atkmm\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\}.res:
        rc /fo$@ $<
 
@@ -62,7 +73,13 @@ clean:
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.res
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.pdb
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.obj
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\private\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.h
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.cc
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gendef\*.pdb
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gendef\*.obj
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\private
        @-rd vs$(VSVER)\$(CFG)\$(PLAT)\atkmm
        @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gendef
+
+.SUFFIXES: .cc .h .ccg .hg .obj
diff --git a/MSVC_NMake/config-msvc.mak b/MSVC_NMake/config-msvc.mak
index 96cb71e..5018cca 100644
--- a/MSVC_NMake/config-msvc.mak
+++ b/MSVC_NMake/config-msvc.mak
@@ -22,7 +22,12 @@ DEBUG_SUFFIX = -d
 DEBUG_SUFFIX =
 !endif
 
+!ifndef GMMPROC_DIR
+GMMPROC_DIR=$(PREFIX)\share\glibmm-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION)\proc
+!endif
+
 ATKMM_BASE_CFLAGS =            \
+       /Ivs$(VSVER)\$(CFG)\$(PLAT)     \
        /I..\atk /I.\atkmm      \
        /wd4530 /wd4251 \
        /wd4275 /std:c++17      \
@@ -38,7 +43,7 @@ ATKMM_EXTRA_INCLUDES =        \
        /I$(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)    \
        /I$(PREFIX)\lib\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\include
 
-LIBATKMM_CFLAGS = /DATKMM_BUILD $(ATKMM_BASE_CFLAGS) $(ATKMM_EXTRA_INCLUDES)
+ATKMM_CFLAGS = /DATKMM_BUILD $(ATKMM_BASE_CFLAGS) $(ATKMM_EXTRA_INCLUDES)
 
 # We build atkmm-vc$(VSVER)0-$(ATKMM_MAJOR_VERSION)_$(ATKMM_MINOR_VERSION).dll or
 #          atkmm-vc$(VSVER)0-d-$(ATKMM_MAJOR_VERSION)_$(ATKMM_MINOR_VERSION).dll at least
diff --git a/MSVC_NMake/create-lists-msvc.mak b/MSVC_NMake/create-lists-msvc.mak
index 8f4634b..24cb9dc 100644
--- a/MSVC_NMake/create-lists-msvc.mak
+++ b/MSVC_NMake/create-lists-msvc.mak
@@ -52,6 +52,15 @@ atkmm_generated_private_headers = $(atkmm_files_hg:.hg=_p.h)
 !if [call create-lists.bat footer atkmm.mak]
 !endif
 
+!if [call create-lists.bat header atkmm.mak atkmm_real_hg]
+!endif
+
+!if [for %c in ($(atkmm_files_hg)) do @call create-lists.bat file atkmm.mak ..\atk\src\%c]
+!endif
+
+!if [call create-lists.bat footer atkmm.mak]
+!endif
+
 !include atkmm.mak
 
 !if [del /f /q atkmm.mak]
diff --git a/MSVC_NMake/generate-msvc.mak b/MSVC_NMake/generate-msvc.mak
index 9f459f2..7c239ad 100644
--- a/MSVC_NMake/generate-msvc.mak
+++ b/MSVC_NMake/generate-msvc.mak
@@ -5,13 +5,18 @@
 
 # Create the build directories
 vs$(VSVER)\$(CFG)\$(PLAT)\gendef       \
-vs$(VSVER)\$(CFG)\$(PLAT)\atkmm:
-       @-mkdir $@
+vs$(VSVER)\$(CFG)\$(PLAT)\atkmm                \
+vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\private:
+       @-md $@
 
 # Generate .def files
 vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\atkmm.def: $(GENDEF) vs$(VSVER)\$(CFG)\$(PLAT)\atkmm $(atkmm_OBJS)
        vs$(VSVER)\$(CFG)\$(PLAT)\gendef.exe $@ $(ATKMM_LIBNAME) vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\*.obj
 
+# Generate wrap_init.cc files
+vs$(VSVER)\$(CFG)\$(PLAT)\atkmm\wrap_init.cc: $(atkmm_real_hg)
+       @if not exist ..\atk\atkmm\wrap_init.cc $(PERL) -- "$(GMMPROC_DIR)/generate_wrap_init.pl" 
--namespace=Atk --parent_dir=atkmm $(atkmm_real_hg:\=/)>$@
+
 # Generate pre-generated resources and configuration headers (builds from GIT)
 prep-git-build: pkg-ver.mak
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]