Skip to content

Commit 711f6d8

Browse files
committed
Refactor for Windows
1 parent 40c6f65 commit 711f6d8

File tree

7 files changed

+56
-46
lines changed

7 files changed

+56
-46
lines changed

.github/workflows/R-CMD-check.yaml

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ jobs:
1010
R-CMD-check:
1111
runs-on: ${{ matrix.config.os }}
1212

13-
name: ${{ matrix.config.os }} (${{ matrix.config.r }}${{ matrix.config.static }})
13+
name: ${{ matrix.config.os }} (${{ matrix.config.r }}${{ matrix.config.FORCE_STATIC_GIFSKI }})
1414

1515
strategy:
1616
fail-fast: false
1717
matrix:
1818
config:
19-
- {os: windows-latest, r: '4.1', static: '-rwinlib'}
20-
- {os: windows-latest, r: 'release', static: '-rwinlib'}
2119
- {os: windows-latest, r: '4.1'}
2220
- {os: windows-latest, r: 'release'}
21+
- {os: windows-latest, r: 'release', FORCE_STATIC_GIFSKI: 'static'}
2322
- {os: macOS-latest, r: 'release'}
2423
- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'}
2524
- {os: ubuntu-latest, r: 'release'}
@@ -50,3 +49,5 @@ jobs:
5049
needs: check
5150

5251
- uses: r-lib/actions/check-r-package@v2
52+
env:
53+
FORCE_STATIC_GIFSKI: ${{ matrix.config.FORCE_STATIC_GIFSKI }}

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: gifski
22
Type: Package
33
Title: Highest Quality GIF Encoder
4-
Version: 1.6.6-1
4+
Version: 1.12.0
55
Authors@R: c(
66
person("Jeroen", "Ooms", ,"[email protected]", role = c("aut", "cre"),
77
comment = c(ORCID = "0000-0002-4035-0289")),

NEWS

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
1.12.0
22
- Update embedded libgifski to upstream 1.12.0
3-
- Windows: if rust is available, default to source build of libgifski.
3+
- Windows: if Cargo is available, default to source build of libgifski
44

55
1.6.6-1
66
- Fix for legacy Windows Vista/2008 (for the old winbuilder)

configure.ucrt

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/sh
2+
export PATH="$HOME/.cargo/bin:$PATH"
3+
CARGO=$(which cargo)
4+
if [ $? -eq 0 ] && [ -z "${FORCE_STATIC_GIFSKI}" ]; then
5+
echo "Building from source using ${CARGO} $(cargo --version)"
6+
cp -f src/Makevars.win.build src/Makevars.win
7+
exit 0
8+
fi
9+
exit 0

src/Makevars.win

+11-26
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,15 @@
1-
TARGET = $(subst 64,x86_64,$(subst 32,i686,$(WIN)))-pc-windows-gnu
2-
LIBDIR = myrustlib/target/$(TARGET)/release
3-
STATLIB = $(LIBDIR)/libmyrustlib.a
4-
PKG_LIBS = -L$(LIBDIR) -lmyrustlib -lws2_32 -ladvapi32 -luserenv -ldbghelp -lbcrypt
1+
VERSION = 1.12.0
2+
RWINLIB = ../windows/gifski-winlibs
3+
PKG_CPPFLAGS = -I$(RWINLIB)/include
4+
GCC_VERSION = ${subst gcc,,${COMPILED_BY}}
5+
PKG_LIBS = -L$(RWINLIB)/lib$(GCC_VERSION)$(R_ARCH) \
6+
-L$(RWINLIB)/lib$(R_ARCH) \
7+
-lgifski -lws2_32 -ladvapi32 -luserenv -ldbghelp -lbcrypt
58

6-
# These can also be set in ~/.cargo/config
7-
ifeq ($(R_COMPILED_BY),gcc 8.3.0)
8-
GCCPATH=$(subst C:\,/c/,$(RTOOLS40_HOME))/mingw$(WIN)/bin
9-
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=$(RTOOLS40_HOME)\\mingw64\\bin\\gcc
10-
export CARGO_TARGET_I686_PC_WINDOWS_GNU_LINKER=$(RTOOLS40_HOME)\\\mingw32\\bin\\gcc
11-
else
12-
GCCPATH=$(subst C:\,/c/,$(RTOOLS43_HOME))/x86_64-w64-mingw32.static.posix/bin
13-
endif
9+
all: clean winlibs
1410

15-
all: clean rustup
16-
17-
$(SHLIB): $(STATLIB)
18-
19-
$(STATLIB):
20-
ifeq ($(WIN),64) #hack for mxe-rtools42 missing -lgcc_eh
21-
mkdir -p myrustlib/target/release/deps; echo '!<arch>' > myrustlib/target/release/deps/libgcc_eh.a
22-
endif
23-
PATH="$(GCCPATH):$(USERPROFILE)\.cargo:$(PATH)" cargo build --target=$(TARGET) --release --manifest-path=myrustlib/Cargo.toml
24-
rm -Rf $(LIBDIR)/build
11+
winlibs:
12+
"${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" "../tools/winlibs.R" $(VERSION)
2513

2614
clean:
27-
rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) myrustlib/target
28-
29-
rustup:
30-
rustup target add $(TARGET) || true
15+
rm -f $(SHLIB) $(OBJECTS)

src/Makevars.win.build

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
TARGET = $(subst 64,x86_64,$(subst 32,i686,$(WIN)))-pc-windows-gnu
2+
LIBDIR = myrustlib/target/$(TARGET)/release
3+
STATLIB = $(LIBDIR)/libmyrustlib.a
4+
PKG_LIBS = -L$(LIBDIR) -lmyrustlib -lws2_32 -ladvapi32 -luserenv -ldbghelp -lbcrypt
5+
6+
# These can also be set in ~/.cargo/config
7+
ifeq ($(R_COMPILED_BY),gcc 8.3.0)
8+
GCCPATH=$(subst C:\,/c/,$(RTOOLS40_HOME))/mingw$(WIN)/bin
9+
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=$(RTOOLS40_HOME)\\mingw64\\bin\\gcc
10+
export CARGO_TARGET_I686_PC_WINDOWS_GNU_LINKER=$(RTOOLS40_HOME)\\\mingw32\\bin\\gcc
11+
else
12+
GCCPATH=$(subst C:\,/c/,$(RTOOLS43_HOME))/x86_64-w64-mingw32.static.posix/bin
13+
endif
14+
15+
all: clean rustup
16+
17+
$(SHLIB): $(STATLIB)
18+
19+
$(STATLIB):
20+
ifeq ($(WIN),64) #hack for mxe-rtools42 missing -lgcc_eh
21+
mkdir -p myrustlib/target/release/deps; echo '!<arch>' > myrustlib/target/release/deps/libgcc_eh.a
22+
endif
23+
PATH="$(GCCPATH):$(USERPROFILE)\.cargo:$(PATH)" cargo build --target=$(TARGET) --release --manifest-path=myrustlib/Cargo.toml
24+
rm -Rf $(LIBDIR)/build
25+
26+
clean:
27+
rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) myrustlib/target
28+
29+
rustup:
30+
rustup target add $(TARGET) || true

src/Makevars.win.static

-15
This file was deleted.

0 commit comments

Comments
 (0)