From ba689997defb7be6c912934fe81d97465603415e Mon Sep 17 00:00:00 2001 From: Nick White Date: Wed, 3 Nov 2021 13:23:35 +0000 Subject: Update windows build config and add a basic guide to get it working --- BUILDING | 21 +++++++++++++++++++++ Makefile | 3 +-- config.mk | 8 ++++---- 3 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 BUILDING diff --git a/BUILDING b/BUILDING new file mode 100644 index 0000000..95019d9 --- /dev/null +++ b/BUILDING @@ -0,0 +1,21 @@ +To cross compile for Windows, the following needs to be done: + +1) Uncomment the lines under "mingw" in config.mk, and comment any earlier CC & LDFLAGS lines. + +2) Compile a copy of openssl for mingw. + Download OpenSSL from openssl.org, then run: + ./Configure mingw --cross-compile-prefix=i686-w64-mingw32- + make + +3) Set the OPENSSLDIR variable in config.mk to match where you compiled openssl + +4: Set up tcl Starkit prerequisites: + Download tclkit from http://tclkits.rkeene.org/fossil/wiki/Downloads + Download sdx from https://chiselapp.com/user/aspect/repository/sdx/index + Create a shell script called sdx and put it in your path, containing something like this: + #!/bin/sh + d="$HOME/src/getxbook" + "$d/tclkit-8.6.3-rhel5-x86_64" "$d/sdx-20110317.kit" "$@" + Download a windows tclkit including tk from http://tclkits.rkeene.org/fossil/wiki/Downloads and ensure the adjust W32TCLKIT to the appropriate filename in config.mk if needed + +Then 'make' and 'make dist-win' should all work as expected diff --git a/Makefile b/Makefile index b697fd2..90d1241 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,7 @@ getxbookgui.exe: getxbookgui.tcl dist-win: $(BIN) $(GUI:.tcl=.exe) mkdir -p $(NAME)-win/tools cp $(GUI:.tcl=.exe) $(NAME)-win - for f in $(BIN); do cp $$f $(NAME)-win/tools/$$f.exe; done + for f in $(BIN); do cp $$f.exe $(NAME)-win/tools/$$f.exe; done mkdir -p $(NAME)-win/icons cp icons/* $(NAME)-win/icons/ for f in LEGAL README COPYING; do \ @@ -110,7 +110,6 @@ dist-win: $(BIN) $(GUI:.tcl=.exe) groff -m man -T utf8 < $$f | col -bx | sed 's/$$/\r/g' > $(NAME)-win/tools/$$b.txt; done mv $(NAME)-win/tools/getxbookgui.txt $(NAME)-win/ cd $(NAME)-win; zip -r ../$(NAME)-$(VERSION)-win.zip .;cd .. - gpg -b < $(NAME)-$(VERSION)-win.zip > $(NAME)-$(VERSION)-win.zip.sig rm -rf $(NAME)-win echo $(NAME)-$(VERSION)-win.zip $(NAME)-$(VERSION)-win.zip.sig diff --git a/config.mk b/config.mk index f763235..e9505e9 100644 --- a/config.mk +++ b/config.mk @@ -11,8 +11,6 @@ LIBS = -lssl -lcrypto CFLAGS = -std=c99 -pedantic -Wall -Wextra -Werror -g -D_POSIX_C_SOURCE=200112L \ -DVERSION=\"$(VERSION)\" -W32TCLKIT = tclkit-8.5.9-win32.upx.exe - # glibc dynamic CC = cc LDFLAGS = $(LIBS) @@ -22,9 +20,11 @@ LDFLAGS = $(LIBS) #LDFLAGS = $(LIBS) -static #-s # mingw +#W32TCLKIT = tclkit-gui-8_6_11-twapi-4_5_2-x86-max.exe +#OPENSSLDIR = $(HOME)/tmp/openssl-1.1.1l #CC = i686-w64-mingw32-gcc #AR = i686-w64-mingw32-ar -#CFLAGS = -ansi -Wall -DVERSION=\"$(VERSION)\" -DWINVER=0x0501 -#LDFLAGS = $(LIBS) -lws2_32 +#CFLAGS = -ansi -Wall -DVERSION=\"$(VERSION)\" -DWINVER=0x0501 -I$(OPENSSLDIR)/include +#LDFLAGS = -L$(OPENSSLDIR) $(LIBS) -lws2_32 -static LD = $(CC) -- cgit v1.2.3 From 16e4a02c794d61137b2f175e958d274eb464656b Mon Sep 17 00:00:00 2001 From: Nick White Date: Wed, 3 Nov 2021 13:42:37 +0000 Subject: Simplify windows build instructions and package up all windows dependencies into a tarball --- BUILDING | 29 +++++++++++++++-------------- Makefile | 6 +++--- config.mk | 5 +++-- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/BUILDING b/BUILDING index 95019d9..9932d30 100644 --- a/BUILDING +++ b/BUILDING @@ -1,21 +1,22 @@ To cross compile for Windows, the following needs to be done: -1) Uncomment the lines under "mingw" in config.mk, and comment any earlier CC & LDFLAGS lines. +1) Download the needed build dependencies from + https://njw.name/getxbook/win-build-deps.20211103.tar.xz + and unpack them into the getxbook directory -2) Compile a copy of openssl for mingw. - Download OpenSSL from openssl.org, then run: +2) Uncomment all lines under 'mingw' in config.mk + +Then 'make' and 'make dist-win' should all work as expected + +--- + +# More information about the necessary files for Windows builds + +OpenSSL is needed to link the windows builds to, as mingw doesn't include it. This needs to be cross compiled with mingw by running the following from an OpenSSL source directory: ./Configure mingw --cross-compile-prefix=i686-w64-mingw32- make -3) Set the OPENSSLDIR variable in config.mk to match where you compiled openssl - -4: Set up tcl Starkit prerequisites: - Download tclkit from http://tclkits.rkeene.org/fossil/wiki/Downloads - Download sdx from https://chiselapp.com/user/aspect/repository/sdx/index - Create a shell script called sdx and put it in your path, containing something like this: - #!/bin/sh - d="$HOME/src/getxbook" - "$d/tclkit-8.6.3-rhel5-x86_64" "$d/sdx-20110317.kit" "$@" - Download a windows tclkit including tk from http://tclkits.rkeene.org/fossil/wiki/Downloads and ensure the adjust W32TCLKIT to the appropriate filename in config.mk if needed +Tclkit and SDX are used to create a self contained executable with the GUI and all needed tools. Unfortunately these days working builds are difficult to find. Two different versions of Tclkit are required: a native one, to get the SDX packer to work, and a Windows version including Tk, to package into the final executable. + Both Tclkits can be downloaded from: http://tclkits.rkeene.org/fossil/wiki/Downloads + sdx can be downloaded from: https://chiselapp.com/user/aspect/repository/sdx/index -Then 'make' and 'make dist-win' should all work as expected diff --git a/Makefile b/Makefile index 90d1241..c659ba6 100644 --- a/Makefile +++ b/Makefile @@ -89,11 +89,11 @@ getxbookgui.exe: getxbookgui.tcl echo STARPACK $@ sed 's/ icons/ .. icons/' < getxbookgui.tcl > getxbookgui-win.tcl sed -i '/^\tset cmd / i set cmdbin [file join tools $$cmdbin]' getxbookgui-win.tcl - sdx qwrap getxbookgui-win.tcl getxbookgui - sdx unwrap getxbookgui.kit + $(SDX) qwrap getxbookgui-win.tcl getxbookgui + $(SDX) unwrap getxbookgui.kit cp -f getxbook.ico getxbookgui.vfs/tclkit.ico echo 'FileDescription "Book downloader"' > getxbookgui.vfs/tclkit.inf - sdx wrap $@ -runtime $(W32TCLKIT) + $(SDX) wrap $@ -runtime $(W32TCLKIT) rm -r getxbookgui-win.tcl getxbookgui.kit getxbookgui.vfs # needs config.mk set up to use mingw diff --git a/config.mk b/config.mk index e9505e9..3012d1f 100644 --- a/config.mk +++ b/config.mk @@ -20,8 +20,9 @@ LDFLAGS = $(LIBS) #LDFLAGS = $(LIBS) -static #-s # mingw -#W32TCLKIT = tclkit-gui-8_6_11-twapi-4_5_2-x86-max.exe -#OPENSSLDIR = $(HOME)/tmp/openssl-1.1.1l +#W32TCLKIT = win-build-deps/tclkit-gui-8_6_11-twapi-4_5_2-x86-max.exe +#OPENSSLDIR = win-build-deps/openssl-1.1.1l +#SDX = ./win-build-deps/sdx #CC = i686-w64-mingw32-gcc #AR = i686-w64-mingw32-ar #CFLAGS = -ansi -Wall -DVERSION=\"$(VERSION)\" -DWINVER=0x0501 -I$(OPENSSLDIR)/include -- cgit v1.2.3