diff --git a/src/Makevars.in b/src/Makevars.in index 3019395..31bf858 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -23,26 +23,32 @@ VENDOR_DIR = $(CURDIR)/vendor # If a vendor directory exists, it is used for offline compilation. Otherwise if # vendor.tar.xz exists, it is unzipped and used for offline compilation. $(STATLIB): - + @echo; if [ -d ./vendor ]; then \ - echo "=== Using offline vendor directory ==="; \ mkdir -p "$(CARGOTMP)" && \ - cp rust/vendor-config.toml "$(CARGOTMP)/config.toml"; \ + cp rust/vendor-config.toml "$(CARGOTMP)/config.toml" && \ + echo "* used offline vendor directory"; \ elif [ -f ./rust/vendor.tar.xz ]; then \ - echo "=== Using offline vendor tarball ==="; \ tar xf rust/vendor.tar.xz && \ mkdir -p "$(CARGOTMP)" && \ - cp rust/vendor-config.toml "$(CARGOTMP)/config.toml"; \ + cp rust/vendor-config.toml "$(CARGOTMP)/config.toml" && \ + echo "* unpacked offline vendor tarball"; \ fi + @echo; export CARGO_HOME="$(CARGOTMP)" && \ export PATH="$(PATH):$(HOME)/.cargo/bin" && \ @PANIC_EXPORTS@RUSTFLAGS="$(RUSTFLAGS) --print=native-static-libs" cargo build @CRAN_FLAGS@ --lib @PROFILE@ --manifest-path=./rust/Cargo.toml --target-dir="$(TARGET_DIR)" @TARGET@ - $(CC) -o $(DOCUMENT) rust/document.c $(PKG_LIBS) -L"$(R_HOME)/lib$(R_ARCH)" -lR - ./$(DOCUMENT) $(R_PACKAGE_NAME) ../R/extendr-wrappers.R - rm -f $(DOCUMENT) + @echo; + if [ -n "$$ROXYGEN_PKG" ]; then \ + $(CC) -o $(DOCUMENT) rust/document.c $(PKG_LIBS) -L"$(R_HOME)/lib$(R_ARCH)" -lR && \ + ./$(DOCUMENT) $(R_PACKAGE_NAME) ../R/extendr-wrappers.R && \ + rm -f $(DOCUMENT) && \ + echo "* generated extendr wrappers"; \ + fi + @echo; # Always clean up CARGOTMP rm -Rf "$(CARGOTMP)"; @@ -50,4 +56,4 @@ rust_clean: $(SHLIB) rm -Rf "$(CARGOTMP)" "$(VENDOR_DIR)" @CLEAN_TARGET@ clean: - rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) "$(TARGET_DIR)" "$(VENDOR_DIR)" $(DOCUMENT) \ No newline at end of file + rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) "$(TARGET_DIR)" "$(VENDOR_DIR)" $(DOCUMENT) diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt deleted file mode 100644 index 17b153e..0000000 --- a/src/Makevars.ucrt +++ /dev/null @@ -1,5 +0,0 @@ -# Rtools42 doesn't have the linker in the location that cargo expects, so we -# need to overwrite it via configuration. -CARGO_LINKER = x86_64-w64-mingw32.static.posix-gcc.exe - -include Makevars.win diff --git a/src/Makevars.win.in b/src/Makevars.win.in index 1f590b5..5c7e6db 100644 --- a/src/Makevars.win.in +++ b/src/Makevars.win.in @@ -16,32 +16,40 @@ CARGOTMP = $(CURDIR)/.cargo VENDOR_DIR = vendor $(STATLIB): + @echo; mkdir -p "$(CARGOTMP)/libgcc_mock" touch "$(CARGOTMP)/libgcc_mock/libgcc_eh.a" # If a vendor directory exists, it is used for offline compilation. Otherwise if # vendor.tar.xz exists, it is unzipped and used for offline compilation. + @echo; if [ -d ./vendor ]; then \ - echo "=== Using offline vendor directory ==="; \ mkdir -p "$(CARGOTMP)" && \ - cp rust/vendor-config.toml "$(CARGOTMP)/config.toml"; \ + cp rust/vendor-config.toml "$(CARGOTMP)/config.toml" && \ + echo "* used offline vendor directory"; \ elif [ -f ./rust/vendor.tar.xz ]; then \ - echo "=== Using offline vendor tarball ==="; \ tar xf rust/vendor.tar.xz && \ mkdir -p "$(CARGOTMP)" && \ - cp rust/vendor-config.toml "$(CARGOTMP)/config.toml"; \ + cp rust/vendor-config.toml "$(CARGOTMP)/config.toml" && \ + echo "* unpacked offline vendor tarball"; \ fi - # Build the project using Cargo with additional flags + # Build the project using Cargo with additional flags + @echo; export CARGO_HOME="$(CARGOTMP)" && \ export LIBRARY_PATH="$(LIBRARY_PATH);$(CARGOTMP)/libgcc_mock" && \ RUSTFLAGS="$(RUSTFLAGS) --print=native-static-libs" cargo build @CRAN_FLAGS@ --target=$(TARGET) --lib @PROFILE@ --manifest-path=rust/Cargo.toml --target-dir="$(TARGET_DIR)" - # Generate wrappers using linked C executable - $(CC) -o $(DOCUMENT) rust/document.c $(PKG_LIBS) -L"$(R_HOME)/bin$(R_ARCH)" -lR - ./$(DOCUMENT) $(R_PACKAGE_NAME) ../R/extendr-wrappers.R - rm -f $(DOCUMENT) + # Generate wrappers using linked C executable (dev only) + @echo; + if [ -n "$$ROXYGEN_PKG" ]; then \ + $(CC) -o $(DOCUMENT) rust/document.c $(PKG_LIBS) -L"$(R_HOME)/bin$(R_ARCH)" -lR && \ + ./$(DOCUMENT) $(R_PACKAGE_NAME) ../R/extendr-wrappers.R && \ + rm -f $(DOCUMENT) && \ + echo "* generated extendr wrappers"; \ + fi + @echo; # Always clean up CARGOTMP rm -Rf "$(CARGOTMP)"; @@ -49,4 +57,4 @@ rust_clean: $(SHLIB) rm -Rf "$(CARGOTMP)" "$(VENDOR_DIR)" @CLEAN_TARGET@ clean: - rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) "$(TARGET_DIR)" "$(VENDOR_DIR)" $(DOCUMENT) \ No newline at end of file + rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) "$(TARGET_DIR)" "$(VENDOR_DIR)" $(DOCUMENT)