From b58ba13a9e4c3572bbe46f2480108312f43e215b Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Thu, 26 May 2022 17:45:15 +0800 Subject: [PATCH] win32/generate-msvc.mak: Split up rule to regenerate demos.h.win32 This way, we can re-use items when we want to support generating project files from the templates, such as building with project files directly from a GIT checkout, or when we add sources and want to quickly add them into the project files. --- win32/generate-msvc.mak | 169 ++++++++++++++++++++++++++++++++-------- 1 file changed, 138 insertions(+), 31 deletions(-) diff --git a/win32/generate-msvc.mak b/win32/generate-msvc.mak index 4c6eb8d217..3212227db5 100644 --- a/win32/generate-msvc.mak +++ b/win32/generate-msvc.mak @@ -58,6 +58,28 @@ GTK_GENERATED_SOURCES = \ .\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gtk-3\gtk\gtkresources.c \ $(GTK_VERSION_H) +GTK3_DEMO_VC1X_PROJS = \ + vs10\$(DEMO_VS1X_PROJ) \ + vs11\$(DEMO_VS1X_PROJ) \ + vs12\$(DEMO_VS1X_PROJ) \ + vs14\$(DEMO_VS1X_PROJ) \ + vs15\$(DEMO_VS1X_PROJ) \ + vs16\$(DEMO_VS1X_PROJ) \ + vs17\$(DEMO_VS1X_PROJ) + +GTK3_DEMO_VC1X_PROJ_FILTERS = \ + vs11\$(DEMO_VS1X_PROJ_FILTERS) \ + vs12\$(DEMO_VS1X_PROJ_FILTERS) \ + vs14\$(DEMO_VS1X_PROJ_FILTERS) \ + vs15\$(DEMO_VS1X_PROJ_FILTERS) \ + vs16\$(DEMO_VS1X_PROJ_FILTERS) \ + vs17\$(DEMO_VS1X_PROJ_FILTERS) + +GTK3_DEMO_VCPROJS = \ + vs9\$(DEMO_VS9_PROJ) \ + $(GTK3_DEMO_VC1X_PROJS) \ + $(GTK3_DEMO_VC1X_PROJ_FILTERS) + generate-base-sources: \ .\vs$(VSVER)\$(CFG)\$(PLAT)\obj\gdk-3\config.h \ $(GDK_GENERATED_SOURCES) \ @@ -264,41 +286,126 @@ generate-base-sources: \ @echo Generating $@... @$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(@D) --generate-source $(@D)\iconbrowser.gresource.xml -regenerate-demos-h-win32: ..\demos\gtk-demo\geninclude.py $(demo_actual_sources) - @echo Regenerating demos.h.win32... +gtk3-demo.sourcefiles: $(demo_actual_sources) + @-del vs9\$(DEMO_VS9_PROJ) + @for %%s in ($**) do @echo. ^>>$@ + @for %%s in (gtkfishbowl.c main.c) do @echo. ^>>$@ + +gtk3-demo.vs10.sourcefiles: $(demo_actual_sources) + @-del vs10\$(DEMO_VS1X_PROJ) + @for %%s in ($**) do @echo. ^>>$@ + @for %%s in (gtkfishbowl.c main.c) do @echo. ^>>$@ + +gtk3-demo.vs10.sourcefiles.filters: $(demo_actual_sources) + @-del vs10\$(DEMO_VS1X_PROJ_FILTERS) + @for %%s in ($**) do @echo. ^^Source Files^^>>$@ + @for %%s in (gtkfishbowl.c main.c) do @echo. ^^Source Files^^>>$@ + +vs9\$(DEMO_VS9_PROJ).pre: gtk3-demo.sourcefiles vs9\$(DEMO_VS9_PROJ)in +vs10\$(DEMO_VS1X_PROJ).pre: gtk3-demo.vs10.sourcefiles vs10\$(DEMO_VS1X_PROJ)in +vs10\$(DEMO_VS1X_PROJ_FILTERS): gtk3-demo.vs10.sourcefiles.filters vs10\$(DEMO_VS1X_PROJ_FILTERS)in + +vs9\$(DEMO_VS9_PROJ).pre vs10\$(DEMO_VS1X_PROJ).pre vs10\$(DEMO_VS1X_PROJ_FILTERS): + @$(CPP) /nologo /EP /I. $(@:.pre=)in>$(@F:.pre=).tmp + @for /f "usebackq tokens=* delims=" %%l in ($(@F:.pre=).tmp) do @echo %%l>>$@ + @-del $(@F:.pre=).tmp + @-if "$@" == "vs9\$(DEMO_VS9_PROJ).pre" del gtk3-demo.sourcefiles + @-if "$@" == "vs10\$(DEMO_VS1X_PROJ).pre" del gtk3-demo.vs10.sourcefiles + @-if "$@" == "vs10\$(DEMO_VS1X_PROJ_FILTERS)" del gtk3-demo.vs10.sourcefiles.filters + +!ifdef FONT_FEATURES_DEMO +!ifdef FONT_FEATURES_USE_PANGOFT2 +vs9\$(DEMO_VS9_PROJ): vs9\$(DEMO_VS9_PROJ).pre + @echo Generating $@... + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ \ + --instring="AdditionalDependencies=\"\"" \ + --outstring="AdditionalDependencies=\"$(DEMO_DEP_LIBS_PANGOFT2_VS9)\"" + @-del $** + +vs10\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ).pre + @echo Generating $@... + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ \ + --instring=">%(AdditionalDependencies)<" \ + --outstring=">$(DEMO_DEP_LIBS_PANGOFT2_VS1X);%(AdditionalDependencies)<" + @-del $** +!else +vs9\$(DEMO_VS9_PROJ): vs9\$(DEMO_VS9_PROJ).pre + @echo Generating $@... + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ \ + --instring="AdditionalDependencies=\"\"" \ + --outstring="AdditionalDependencies=\"$(DEMO_DEP_LIBS_NEW_PANGO)\"" + @-del $** + +vs10\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ).pre + @echo Generating $@... + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ \ + --instring=">%(AdditionalDependencies)<" \ + --outstring=">$(DEMO_DEP_LIBS_NEW_PANGO);%(AdditionalDependencies)<" + @-del $** +!endif +!else +vs9\$(DEMO_VS9_PROJ): vs9\$(DEMO_VS9_PROJ).pre +vs10\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ).pre + +vs9\$(DEMO_VS9_PROJ) vs10\$(DEMO_VS1X_PROJ): + @echo Renaming $** to $@... + @move $** $@ +!endif + +vs11\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) +vs12\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) +vs14\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) +vs15\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) +vs16\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) +vs17\$(DEMO_VS1X_PROJ): vs10\$(DEMO_VS1X_PROJ) + +vs11\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) +vs12\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) +vs14\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) +vs15\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) +vs16\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) +vs17\$(DEMO_VS1X_PROJ_FILTERS): vs10\$(DEMO_VS1X_PROJ_FILTERS) + +vs11\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2012 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v110<" + +vs12\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2013 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v120<" + +vs14\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2015 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v140<" + +vs15\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2017 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v141<" + +vs16\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2019 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v142<" + +vs17\$(DEMO_VS1X_PROJ): + @echo Copying and updating $** for VS2022 + @$(PYTHON) replace.py -a=replace-str -i=$** -o=$@ --instring=">v100<" --outstring=">v143<" + +# VS2012+ .vcxproj.filters: We simply copy the VS2010 ones +vs11\$(DEMO_VS1X_PROJ_FILTERS) \ +vs12\$(DEMO_VS1X_PROJ_FILTERS) \ +vs14\$(DEMO_VS1X_PROJ_FILTERS) \ +vs15\$(DEMO_VS1X_PROJ_FILTERS) \ +vs16\$(DEMO_VS1X_PROJ_FILTERS) \ +vs17\$(DEMO_VS1X_PROJ_FILTERS): + @echo Copying $** to $@... + @copy $** $@ + +regenerate-demos-h-win32: ..\demos\gtk-demo\geninclude.py $(demo_actual_sources) $(GTK3_DEMO_VCPROJS) + @echo Regenerating demos.h.win32 and gtk3-demo VS project files... @-del ..\demos\gtk-demo\demos.h.win32 @cd ..\demos\gtk-demo @$(PYTHON) geninclude.py demos.h.win32 $(demo_sources) @cd ..\..\win32 - @echo Regenerating gtk3-demo VS project files... - @-del vs9\$(DEMO_VS9_PROJ) vs10\$(DEMO_VS1X_PROJ) vs10\$(DEMO_VS1X_PROJ_FILTERS) - @for %%s in ($(demo_sources) gtkfishbowl.c main.c) do \ - @echo. ^>>gtk3-demo.sourcefiles & \ - @echo. ^>>gtk3-demo.vs10.sourcefiles & \ - @echo. ^^Source Files^^>>gtk3-demo.vs10.sourcefiles.filters - @$(CPP) /nologo /EP /I. vs9\$(DEMO_VS9_PROJ)in>$(DEMO_VS9_PROJ).tmp - @for /f "usebackq tokens=* delims=" %%l in ($(DEMO_VS9_PROJ).tmp) do @echo %%l>>$(DEMO_VS9_PROJ).tmp1 - @$(CPP) /nologo /EP /I. vs10\$(DEMO_VS1X_PROJ)in>$(DEMO_VS1X_PROJ).tmp - @for /f "usebackq tokens=* delims=" %%l in ($(DEMO_VS1X_PROJ).tmp) do @echo %%l>>$(DEMO_VS1X_PROJ).tmp1 - @$(CPP) /nologo /EP /I. vs10\$(DEMO_VS1X_PROJ_FILTERS)in> $(DEMO_VS1X_PROJ_FILTERS).tmp - @for /f "usebackq tokens=* delims=" %%l in ($(DEMO_VS1X_PROJ_FILTERS).tmp) do @ echo %%l>>vs10\$(DEMO_VS1X_PROJ_FILTERS) - @if not "$(FONT_FEATURES_DEMO)" == "" \ - if not "$(FONT_FEATURES_USE_PANGOFT2)" == "" \ - ($(PYTHON) replace.py -a=replace-str -i=$(DEMO_VS9_PROJ).tmp1 -o=vs9\$(DEMO_VS9_PROJ) --instring="AdditionalDependencies=\"\"" --outstring="AdditionalDependencies=\"$(DEMO_DEP_LIBS_PANGOFT2_VS9)\"") & \ - ($(PYTHON) replace.py -a=replace-str -i=$(DEMO_VS1X_PROJ).tmp1 -o=vs10\$(DEMO_VS1X_PROJ) --instring=">%(AdditionalDependencies)<" --outstring=">$(DEMO_DEP_LIBS_PANGOFT2_VS1X);%(AdditionalDependencies)<") - @if not "$(FONT_FEATURES_DEMO)" == "" \ - if "$(FONT_FEATURES_USE_PANGOFT2)" == "" \ - ($(PYTHON) replace.py -a=replace-str -i=$(DEMO_VS9_PROJ).tmp1 -o=vs9\$(DEMO_VS9_PROJ) --instring="AdditionalDependencies=\"\"" --outstring="AdditionalDependencies=\"$(DEMO_DEP_LIBS_NEW_PANGO)\"") & \ - ($(PYTHON) replace.py -a=replace-str -i=$(DEMO_VS1X_PROJ).tmp1 -o=vs10\$(DEMO_VS1X_PROJ) --instring=">%(AdditionalDependencies)<" --outstring=">$(DEMO_DEP_LIBS_NEW_PANGO);%(AdditionalDependencies)<") - @if "$(FONT_FEATURES_DEMO)" == "" copy $(DEMO_VS9_PROJ).tmp1 vs9\$(DEMO_VS9_PROJ) & copy $(DEMO_VS1X_PROJ).tmp1 vs10\$(DEMO_VS1X_PROJ) - @del *vc*proj*.tmp* gtk3-demo.*sourcefiles* - @for %%v in (11 12 14 15 16 17) do @(copy /y vs10\$(DEMO_VS1X_PROJ_FILTERS) vs%v\ & del vs%v\gtk3-demo.vcxproj) - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs11\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v110<" - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs12\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v120<" - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs14\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v140<" - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs15\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v141<" - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs16\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v142<" - @$(PYTHON) replace.py -a=replace-str -i=vs10\$(DEMO_VS1X_PROJ) -o=vs17\$(DEMO_VS1X_PROJ) --instring=">v100<" --outstring=">v143<" # Remove the generated files clean: