From a697763b5a4e894398e216b901b1eb94e9078a72 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 15:51:06 +0800 Subject: Visual Studio: Further updates after separating crates Make sure that we are building the correct target with Cargo when building the internal Rust library for librsvg-c and update the intermediate target as appropriate, so that we can properly link to it when building the final librsvg DLL. Also, reduce repetition in the NMake Makefiles by using Makefile variables more. Follow-up commit after changes in MR !822. Part-of: --- win32/build-rules-msvc.mak | 2 +- win32/config-msvc.mak.in | 2 +- win32/rsvg-rust.mak | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/win32/build-rules-msvc.mak b/win32/build-rules-msvc.mak index cbc33507..2a66774a 100644 --- a/win32/build-rules-msvc.mak +++ b/win32/build-rules-msvc.mak @@ -134,6 +134,6 @@ clean: @-rmdir /s /q $(OUTDIR)\rsvg-tests @-rmdir /s /q $(OUTDIR)\rsvg-gdk-pixbuf-loader @-rmdir /s /q $(OUTDIR)\librsvg - $(MAKE) /f rsvg-rust.mak CFG=$(CFG) cargo-clean + $(MAKE) /f rsvg-rust.mak CFG=$(CFG) RSVG_INTERNAL_LIB=$(RSVG_INTERNAL_LIB) cargo-clean @-rmdir /s /q $(OUTDIR)\obj @-del build-$(PLAT)-$(CFG)*.bat diff --git a/win32/config-msvc.mak.in b/win32/config-msvc.mak.in index ce6cebd0..0d8b0c8b 100644 --- a/win32/config-msvc.mak.in +++ b/win32/config-msvc.mak.in @@ -106,7 +106,7 @@ TEST_DEP_LIBS = \ fontconfig.lib !endif -RSVG_INTERNAL_LIB = $(CARGO_TARGET_OUTPUT_DIR)\rsvg.lib +RSVG_INTERNAL_LIB = $(CARGO_TARGET_OUTPUT_DIR)\librsvg_c.lib LIBRSVG_DEP_LIBS = \ $(RSVG_INTERNAL_LIB) \ diff --git a/win32/rsvg-rust.mak b/win32/rsvg-rust.mak index 01e8e31b..ff8ef255 100644 --- a/win32/rsvg-rust.mak +++ b/win32/rsvg-rust.mak @@ -120,16 +120,16 @@ build-$(PLAT)-$(CFG).pre.bat: build-$(PLAT)-$(CFG)-lib.bat: build-$(PLAT)-$(CFG).pre.bat @type $**>$@ - @echo $(CARGO_CMD) $(RUST_VERBOSE_FLAG) --lib>>$@ + @echo $(CARGO_CMD) $(RUST_VERBOSE_FLAG) --package librsvg-c>>$@ build-$(PLAT)-$(CFG)-bin.bat: build-$(PLAT)-$(CFG).pre.bat @type $**>$@ @echo $(CARGO_CMD) $(RUST_VERBOSE_FLAG) --bin rsvg-convert>>$@ -$(CARGO_TARGET_OUTPUT_DIR)\rsvg.lib: build-$(PLAT)-$(CFG)-lib.bat +$(RSVG_INTERNAL_LIB): build-$(PLAT)-$(CFG)-lib.bat $(CARGO_TARGET_OUTPUT_DIR)\rsvg-convert.exe: build-$(PLAT)-$(CFG)-bin.bat -$(CARGO_TARGET_OUTPUT_DIR)\rsvg.lib \ +$(RSVG_INTERNAL_LIB) \ $(CARGO_TARGET_OUTPUT_DIR)\rsvg-convert.exe: @echo Please do not manually close the command window that pops up... @echo. @@ -140,13 +140,13 @@ $(CARGO_TARGET_OUTPUT_DIR)\rsvg-convert.exe: @start "Building the Rust bits for $(PLAT) Windows MSVC Build, please do not close this console window..." /wait /i cmd /c $** !else -$(CARGO_TARGET_OUTPUT_DIR)\rsvg.lib: +$(RSVG_INTERNAL_LIB): @set PATH=%PATH%;%HOMEPATH%\.cargo\bin @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) @if not "$(PKG_CONFIG)" == "" set PKG_CONFIG=$(PKG_CONFIG) - $(CARGO_CMD) $(RUST_VERBOSE_FLAG) --lib + $(CARGO_CMD) $(RUST_VERBOSE_FLAG) --package librsvg-c @set GTK_LIB_DIR= $(CARGO_TARGET_OUTPUT_DIR)\rsvg-convert.exe: -- cgit v1.2.1 From 7cc5ca1e92ed6961b62710c7341e455ac24c0dd1 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 16:17:26 +0800 Subject: Visual Studio: Fix building/running C tests Update the test source directories in the rules and the envvar that we set so that the C tests will build and run properly Part-of: --- win32/Makefile.vc | 2 +- win32/build-rules-msvc.mak | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/win32/Makefile.vc b/win32/Makefile.vc index 18cac2b7..44af22e7 100644 --- a/win32/Makefile.vc +++ b/win32/Makefile.vc @@ -41,7 +41,7 @@ all: $(RSVG_TOOLS) $(EXTRA_TARGETS) build-info-librsvg tests: all $(rsvg_tests) @set PATH=$(BINDIR);$(PATH) - set G_TEST_SRCDIR=$(MAKEDIR)\..\tests + set G_TEST_SRCDIR=$(MAKEDIR)\..\librsvg-c\tests-c @for %%x in ($(rsvg_tests)) do %%x rsvg_rust_tests: diff --git a/win32/build-rules-msvc.mak b/win32/build-rules-msvc.mak index 2a66774a..910e385e 100644 --- a/win32/build-rules-msvc.mak +++ b/win32/build-rules-msvc.mak @@ -25,7 +25,7 @@ $< $< << -{..\tests\}.c{$(OUTDIR)\rsvg-tests\}.obj: +{..\librsvg-c\tests-c\}.c{$(OUTDIR)\rsvg-tests\}.obj: @if not exist $(@D)\ mkdir $(@D) @if not exist $(@D)\..\librsvg\config.h copy .\config.h.win32 $(@D)\..\librsvg\config.h $(CC) $(TEST_CFLAGS) $(LIBRSVG_LOG_DOMAIN) $(TOOLS_DEP_INCLUDES) /Fo$(@D)\ /Fd$(@D)\ /c @<< -- cgit v1.2.1 From 7e712794a9baeceed8477b05472086a288e7a43f Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 16:27:14 +0800 Subject: Visual Studio: Fix running Rust tests We did not update the NMake Makefiles for running the Rust tests previously, so update things here so that things will run. Make sure the Rust tests can find the dependent DLLs (GIO, GObject, libxml2 and so on) by including $(BINDIR). Part-of: --- win32/Makefile.vc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/win32/Makefile.vc b/win32/Makefile.vc index 44af22e7..4c47f2a9 100644 --- a/win32/Makefile.vc +++ b/win32/Makefile.vc @@ -45,15 +45,13 @@ tests: all $(rsvg_tests) @for %%x in ($(rsvg_tests)) do %%x rsvg_rust_tests: - @set PATH=%PATH%;%HOMEPATH%\.cargo\bin - @set CARGO_TARGET_DIR=..\win32\vs$(VSVER)\$(CFG)\$(PLAT)\obj\rsvg_c_api + @set PATH=$(BINDIR);%PATH%;%HOMEPATH%\.cargo\bin @set GTK_LIB_DIR=$(LIBDIR);$(LIB) - $(RUSTUP_CMD) - @cd .. - $(CARGO_CMD:build=test) --verbose - @cd win32 + @set SYSTEM_DEPS_LIBXML2_LIB=$(LIBXML2_LIB:.lib=) + @if not "$(PKG_CONFIG_PATH)" == "" set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) + @if not "$(PKG_CONFIG)" == "" set PKG_CONFIG=$(PKG_CONFIG) + $(CARGO_CMD:build=test) $(RUST_VERBOSE_FLAG) @set GTK_LIB_DIR= - @set CARGO_TARGET_DIR= # Include the rules for build directory creation and code generation !include generate-msvc.mak -- cgit v1.2.1 From fb463df315ea1e9dba2be962c86884500f3c198e Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 16:36:31 +0800 Subject: generate-msvc.mak: Have a default value for $(PYTHON) ...when generating the full NMake Makefiles and auxiliary build files from a GIT checkout, so that one can just use the Python executable that is found in %PATH%. Add a message to tell people to check whether they need to pass in PYTHON=... when things fail. Part-of: --- win32/generate-msvc.mak | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/win32/generate-msvc.mak b/win32/generate-msvc.mak index 4a93afb8..cf5c30ed 100644 --- a/win32/generate-msvc.mak +++ b/win32/generate-msvc.mak @@ -33,13 +33,19 @@ generate-docs: # Generate NMake Makefiles (for git checkouts only) !ifndef IS_NOT_GIT +# Either having python.exe your PATH will work or passing in +# PYTHON= will do +!ifndef PYTHON +PYTHON=python +!endif + config.h.win32: ..\.git ..\configure.ac prebuild.py config.h.win32.in config-msvc.mak: ..\.git ..\configure.ac prebuild.py config-msvc.mak.in ..\include\librsvg\rsvg-version.h: ..\.git ..\configure.ac prebuild.py ..\include\librsvg\rsvg-version.h.in generate-nmake-files: config.h.win32 config-msvc.mak ..\include\librsvg\rsvg-version.h - @if not "$(PYTHON)" == "" $(PYTHON) prebuild.py - @if "$(PYTHON)" == "" echo You need to specify your Python interpreter PATH by passing in PYTHON^=^ + @echo If error meesages appear here you will need to pass in PYTHON=^... + @$(PYTHON) prebuild.py remove-generated-nmake-files: ..\.git @-del /f/q config-msvc.mak -- cgit v1.2.1 From 05788629adf3bd28f95c69e331e65d1f1e9d42cf Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 16:39:44 +0800 Subject: config-msvc.mak.in: Add CFLAG for Cairo The Cairo headers may be in $(INCLUDEDIR) or $(INCLUDEDIR)\cairo, so look into $(INCLUDEDIR)\cairo also. Fixes issue #954. Part-of: --- win32/config-msvc.mak.in | 1 + 1 file changed, 1 insertion(+) diff --git a/win32/config-msvc.mak.in b/win32/config-msvc.mak.in index 0d8b0c8b..8529f3c9 100644 --- a/win32/config-msvc.mak.in +++ b/win32/config-msvc.mak.in @@ -63,6 +63,7 @@ BASE_DEP_INCLUDES = \ /I$(INCLUDEDIR)\glib-2.0 \ /I$(LIBDIR)\glib-2.0\include \ /I$(INCLUDEDIR)\harfbuzz \ + /I$(INCLUDEDIR)\cairo \ /I$(INCLUDEDIR) BASE_DEP_LIBS = \ -- cgit v1.2.1 From e062aaa93c45290d1a812e8a29657badbd0899e5 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 26 Apr 2023 16:41:33 +0800 Subject: win32/MSVC-Builds.md: Fix Typo Part-of: --- win32/MSVC-Builds.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win32/MSVC-Builds.md b/win32/MSVC-Builds.md index af994afb..6f85741d 100644 --- a/win32/MSVC-Builds.md +++ b/win32/MSVC-Builds.md @@ -110,7 +110,7 @@ Where: will also create and copy the `librsvg-2.0.pc` pkg-config file if Python can be found. -* `` is as follows (plase note that paths with spaces +* `` is as follows (please note that paths with spaces should be quoted): * `PREFIX`: Root directory where built files will be copied to with the `install` target. This also determines the root directory from -- cgit v1.2.1