[librsvg/cargo-c] NMake Makefiles: Streamline build process
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg/cargo-c] NMake Makefiles: Streamline build process
- Date: Fri, 9 Jul 2021 23:50:36 +0000 (UTC)
commit 62738e530d6899ec74ac938476b4a665edfd9a20
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Fri Jul 9 16:58:37 2021 +0800
NMake Makefiles: Streamline build process
Use separate build directories for librsvg and rsvg_convert, so that
building one of it does no require rebuilding the other. Also make the
cross-build batch generation done on the fly, so that they will be
removed once the Rust cross build work is completed (or failed--they can
be generated quite quickly if needed).
.gitignore | 4 ++--
win32/build-rules-msvc.mak | 4 ++--
win32/info-msvc.mak | 4 ++--
win32/install-msvc.mak | 2 +-
win32/rsvg-rust.mak | 23 +++++++++++++++--------
5 files changed, 22 insertions(+), 15 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index fcdd8e61..9060fa72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -76,7 +76,7 @@ tests/rsvg-test
tests/*.log
tests/*.trs
win32/config-msvc.mak
-win32/*.bat
+win32/build-*.bat
win32/vs12
win32/vs14
win32/__pycache__
@@ -92,4 +92,4 @@ tools/docker/debian/librsvg.tar.gz
tools/docker/opensuse/build-librsvg.sh
tools/docker/opensuse/librsvg.tar.gz
tools/docker/fedora/build-librsvg.sh
-tools/docker/fedora/librsvg.tar.gz
\ No newline at end of file
+tools/docker/fedora/librsvg.tar.gz
diff --git a/win32/build-rules-msvc.mak b/win32/build-rules-msvc.mak
index 7af562df..8c1454ed 100644
--- a/win32/build-rules-msvc.mak
+++ b/win32/build-rules-msvc.mak
@@ -61,7 +61,7 @@ $(OUTDIR)\rsvg-gdk-pixbuf-loader\io-svg.obj
# <<
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
$(OUTDIR)\rsvg-convert.exe: \
-vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe
+vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe
@copy /b $** $@
@if exist $(**D)\rsvg_convert.pdb copy /b $(**D)\rsvg_convert.pdb $(@D)
@@ -110,6 +110,7 @@ $(OUTDIR)\Rsvg-2.0.typelib: $(OUTDIR)\Rsvg-2.0.gir
clean:
@if exist $(OUTDIR)\Rsvg-$(RSVG_API_VER).typelib del /f /q $(OUTDIR)\Rsvg-$(RSVG_API_VER).typelib
@if exist $(OUTDIR)\Rsvg-$(RSVG_API_VER).gir del /f /q $(OUTDIR)\Rsvg-$(RSVG_API_VER).gir
+ @-del /f /q $(OUTDIR)\librsvg-2.0.pc
@-del /f /q $(OUTDIR)\*.dll
@-del /f /q $(OUTDIR)\*.exe
@-del /f /q $(OUTDIR)\*.pdb
@@ -129,4 +130,3 @@ clean:
@-rmdir /s /q $(OUTDIR)\librsvg
$(MAKE) /f rsvg-rust.mak CFG=$(CFG) cargo-clean
@-rmdir /s /q $(OUTDIR)\obj
- @-del build-$(PLAT)-$(CFG)*.bat
diff --git a/win32/info-msvc.mak b/win32/info-msvc.mak
index 631b3d9f..7966007e 100644
--- a/win32/info-msvc.mak
+++ b/win32/info-msvc.mak
@@ -56,9 +56,9 @@ help:
@echo will be searched for in ^$(INCLUDEDIR)\glib-2.0 and
@echo ^$(LIBDIR)\glib-2.0\include.
@echo.
- @echo PKG_CONFIG_PATH: Full path to pkg-config.exe. Required if building
- @echo introspection files and if pkg-config.exe is not in your PATH or it
+ @echo PKG_CONFIG: Full path to pkg-config.exe. Required if pkg-config.exe is not in your PATH or it
@echo is called something other than pkg-config.
+ @echo PKG_CONFIG_PATH: Other paths to search for pkg-config outside of paths search by default;
separate paths by ';'.
@echo.
@echo PYTHON: Full path to your Python interpreter executable. Required
@echo if building introspection files and if python.exe is not in your PATH.
diff --git a/win32/install-msvc.mak b/win32/install-msvc.mak
index 09416830..f649c040 100644
--- a/win32/install-msvc.mak
+++ b/win32/install-msvc.mak
@@ -26,7 +26,7 @@ install: all
@-$(PYTHON) rsvgpc.py --version=$(RSVG_PKG_VERSION) --prefix=$(PREFIX)
--source=$(OUTDIR)\librsvg-2.0.pc -o $(OUTDIR)\librsvg-2.0.pc.real
@if not exist $(OUTDIR)\librsvg-2.0.pc.real echo *** librsvg-2.0.pc may not contain a ^$prefix that
matches your build config. Please check it.
@if not exist $(PREFIX)\lib\pkgconfig mkdir $(PREFIX)\lib\pkgconfig
- @if exist $(OUTDIR)\librsvg-2.0.pc.real copy $(OUTDIR)\librsvg-2.0.pc.real
$(PREFIX)\lib\pkgconfig\librsvg-2.0.pc
+ @if exist $(OUTDIR)\librsvg-2.0.pc.real move $(OUTDIR)\librsvg-2.0.pc.real
$(PREFIX)\lib\pkgconfig\librsvg-2.0.pc
@if not exist $(OUTDIR)\librsvg-2.0.pc.real copy $(OUTDIR)\librsvg-2.0.pc $(PREFIX)\lib\pkgconfig
@echo.
@echo ******* WARNING *******
diff --git a/win32/rsvg-rust.mak b/win32/rsvg-rust.mak
index e38afb94..266d8617 100644
--- a/win32/rsvg-rust.mak
+++ b/win32/rsvg-rust.mak
@@ -91,26 +91,28 @@ build-$(PLAT)-$(CFG).pre.bat:
@echo set __VSCMD_script_err_count=>>$@
@echo if not "$(__VSCMD_PREINIT_PATH)" == "" set
PATH=$(__VSCMD_PREINIT_PATH);%HOMEPATH%\.cargo\bin>>$@
@echo if "$(__VSCMD_PREINIT_PATH)" == "" set
PATH=c:\Windows\system;c:\Windows;c:\Windows\system32\wbem;%HOMEPATH%\.cargo\bin>>$@
- @echo set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api>>$@
@echo set GTK_LIB_DIR=$(LIBDIR)>>$@
@echo set SYSTEM_DEPS_LIBXML2_LIB=$(LIBXML2_LIB:.lib=)>>$@
@if not "$(PKG_CONFIG_PATH)" == "" echo set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)>>$@
@if not "$(PKG_CONFIG)" == "" echo set PKG_CONFIG=$(PKG_CONFIG)>>$@
@echo cd ..>>$@
-build-$(PLAT)-$(CFG)-lib.bat: build-$(PLAT)-$(CFG).pre.bat
- @type $**>$@
+build-$(PLAT)-$(CFG)-lib.bat: build-$(PLAT)-$(CFG).pre.bat build-$(PLAT)-$(CFG)-bin.bat
+ @type build-$(PLAT)-$(CFG).pre.bat>$@
+ @echo set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api>>$@
@echo $(CARGO_CMD: build = cbuild )>>$@
+ @del /f/q build-$(PLAT)-$(CFG).pre.bat
build-$(PLAT)-$(CFG)-bin.bat: build-$(PLAT)-$(CFG).pre.bat
@type $**>$@
+ @echo set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\convert>>$@
@echo $(CARGO_CMD) --bin rsvg-convert>>$@
vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-2.dll.lib:
build-$(PLAT)-$(CFG)-lib.bat
-vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
build-$(PLAT)-$(CFG)-bin.bat
+vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
build-$(PLAT)-$(CFG)-bin.bat
vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-2.dll.lib \
-vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
+vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
@echo Please do not manually close the command window that pops up...
@echo.
@echo If this fails due to LNK1112 or a linker executable cannot be found, run
@@ -118,6 +120,8 @@ vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\r
@echo and then run 'start /i /wait cmd /c $**', and then continue
@echo the build with your original NMake command line.
@start "Building the Rust bits for $(PLAT) Windows MSVC Build, please do not close this console
window..." /wait /i cmd /c $**
+ @if "$(@F)" == "rsvg-2.dll.lib" del /f/q build-$(PLAT)-$(CFG)-lib.bat
+ @if "$(@F)" == "rsvg-convert.exe" del /f/q build-$(PLAT)-$(CFG)-bin.bat
!else
vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-2.dll.lib:
@@ -134,9 +138,9 @@ vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\r
@set GTK_LIB_DIR=
@set CARGO_TARGET_DIR=
-vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
+vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\rsvg-convert.exe:
@set PATH=%PATH%;%HOMEPATH%\.cargo\bin
- @set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api
+ @set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert
@set GTK_LIB_DIR=$(LIBDIR);$(LIB)
@set SYSTEM_DEPS_LIBXML2_LIB=$(LIBXML2_LIB:.lib=)
@if not "$(PKG_CONFIG_PATH)" == "" set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH)
@@ -151,8 +155,11 @@ vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api\$(RUST_TARGET)-pc-windows-msvc\$(CFG)\r
cargo-clean:
@set PATH=%PATH%;%HOMEPATH%\.cargo\bin
+ @set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg-convert
+ @cd ..
+ @$(CARGO) clean
+ @cd win32
@set CARGO_TARGET_DIR=win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api
- @if exist build-$(PLAT)-$(CFG).bat del /f/q build-$(PLAT)-$(CFG).bat
@cd ..
@$(CARGO) clean
@cd win32
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]