diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-02 19:27:48 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-02 19:27:48 -0300 |
| commit | 8dd1e1460282f5fc992d838ec2411f4d1bc7b2b7 (patch) | |
| tree | 5b6e88d37869bad4a23cfd52424e91fa34d34176 /binary/Makefile.windows | |
| parent | 672b4f191ac5723ee460e469d58fff2ca2cb386b (diff) | |
| download | luarocks-8dd1e1460282f5fc992d838ec2411f4d1bc7b2b7.tar.gz luarocks-8dd1e1460282f5fc992d838ec2411f4d1bc7b2b7.tar.bz2 luarocks-8dd1e1460282f5fc992d838ec2411f4d1bc7b2b7.zip | |
Experimental Windows cross-compiled binary build
This commit consolidates the work that has been ongoing over the
last few weeks in producing the single-binary builds of LuaRocks
based on the new distribution model described in
https://github.com/luarocks/luarocks/wiki/Project:-LuaRocks-new-distribution-model
The single-binary build is in a good shape for Linux,
it's a work-in-progress for Windows (binaries do build,
but some work on the dependencies is still necessary),
and is untested in macOS.
Diffstat (limited to 'binary/Makefile.windows')
| -rw-r--r-- | binary/Makefile.windows | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/binary/Makefile.windows b/binary/Makefile.windows new file mode 100644 index 00000000..ea8f0a60 --- /dev/null +++ b/binary/Makefile.windows | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | |||
| 2 | # "i686-w64-mingw32" or "x86_64-w64-mingw32" | ||
| 3 | MINGW_PREFIX=i686-w64-mingw32 | ||
| 4 | # sysroot of your mingw-w64 installation | ||
| 5 | MINGW_SYSROOT=/usr/lib/mingw-w64-sysroot/$(MINGW_PREFIX) | ||
| 6 | # "mingw" or "mingw64" | ||
| 7 | OPENSSL_PLATFORM=mingw | ||
| 8 | # Versions of dependencies | ||
| 9 | LIBLUA_VERSION=5.3.4 | ||
| 10 | OPENSSL_VERSION=1.0.2o | ||
| 11 | ZLIB_VERSION=1.2.11 | ||
| 12 | |||
| 13 | windows-binary: windows-deps/lib/liblua.a windows-deps/lib/libssl.a windows-deps/lib/libz.a | ||
| 14 | STATIC_GCC_AR=$(MINGW_PREFIX)-ar \ | ||
| 15 | STATIC_GCC_RANLIB=$(MINGW_PREFIX)-ranlib \ | ||
| 16 | STATIC_GCC_CC=$(MINGW_PREFIX)-gcc \ | ||
| 17 | STATIC_GCC_LIBDIR=$(MINGW_SYSROOT)/lib \ | ||
| 18 | LUAROCKS_CROSS_COMPILING=1 \ | ||
| 19 | make binary LUA_DIR=$(PWD)/windows-deps BINARY_CC=$(MINGW_PREFIX)-gcc BINARY_NM=$(MINGW_PREFIX)-nm BINARY_PLATFORM=windows BINARY_TARGET=build-windows-binary BINARY_SYSROOT=$(MINGW_SYSROOT) | ||
| 20 | |||
| 21 | build-windows-deps/lua-$(LIBLUA_VERSION).tar.gz: | ||
| 22 | mkdir -p build-windows-deps | ||
| 23 | cd build-windows-deps && curl -OL https://www.lua.org/ftp/lua-$(LIBLUA_VERSION).tar.gz | ||
| 24 | build-windows-deps/lua-$(LIBLUA_VERSION): build-windows-deps/lua-$(LIBLUA_VERSION).tar.gz | ||
| 25 | cd build-windows-deps && tar zxvpf lua-$(LIBLUA_VERSION).tar.gz | ||
| 26 | windows-deps/lib/liblua.a: build-windows-deps/lua-$(LIBLUA_VERSION) | ||
| 27 | cd build-windows-deps/lua-$(LIBLUA_VERSION)/src && make LUA_A=liblua.a CC=$(MINGW_PREFIX)-gcc AR="$(MINGW_PREFIX)-ar rcu" RANLIB=$(MINGW_PREFIX)-ranlib SYSCFLAGS= SYSLIBS= SYSLDFLAGS= liblua.a | ||
| 28 | mkdir -p windows-deps/include | ||
| 29 | cd build-windows-deps/lua-$(LIBLUA_VERSION)/src && cp lauxlib.h lua.h lua.hpp luaconf.h lualib.h ../../../windows-deps/include | ||
| 30 | mkdir -p windows-deps/lib | ||
| 31 | cd build-windows-deps/lua-$(LIBLUA_VERSION)/src && cp liblua.a ../../../windows-deps/lib | ||
| 32 | |||
| 33 | build-windows-deps/openssl-$(OPENSSL_VERSION).tar.gz: | ||
| 34 | mkdir -p build-windows-deps | ||
| 35 | cd build-windows-deps && curl -OL https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz | ||
| 36 | build-windows-deps/openssl-$(OPENSSL_VERSION): build-windows-deps/openssl-$(OPENSSL_VERSION).tar.gz | ||
| 37 | cd build-windows-deps && tar zxvpf openssl-$(OPENSSL_VERSION).tar.gz | ||
| 38 | windows-deps/lib/libssl.a: build-windows-deps/openssl-$(OPENSSL_VERSION) | ||
| 39 | cd build-windows-deps/openssl-$(OPENSSL_VERSION) && ./Configure --prefix=$(PWD)/windows-deps --cross-compile-prefix=$(MINGW_PREFIX)- $(OPENSSL_PLATFORM) | ||
| 40 | cd build-windows-deps/openssl-$(OPENSSL_VERSION) && make install_sw | ||
| 41 | |||
| 42 | build-windows-deps/zlib-$(ZLIB_VERSION).tar.gz: | ||
| 43 | mkdir -p build-windows-deps | ||
| 44 | cd build-windows-deps && curl -OL https://www.zlib.net/zlib-$(ZLIB_VERSION).tar.gz | ||
| 45 | build-windows-deps/zlib-$(ZLIB_VERSION): build-windows-deps/zlib-$(ZLIB_VERSION).tar.gz | ||
| 46 | cd build-windows-deps && tar zxvpf zlib-$(ZLIB_VERSION).tar.gz | ||
| 47 | windows-deps/lib/libz.a: build-windows-deps/zlib-$(ZLIB_VERSION) | ||
| 48 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && sed -ie "s,dllwrap,$(MINGW_PREFIX)-dllwrap," win32/Makefile.gcc | ||
| 49 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && ./configure --prefix=$(PWD)/windows-deps --static | ||
| 50 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && make -f win32/Makefile.gcc CC=$(MINGW_PREFIX)-gcc AR=$(MINGW_PREFIX)-ar RC=$(MINGW_PREFIX)-windres STRIP=$(MINGW_PREFIX)-strip IMPLIB=libz.dll.a | ||
| 51 | mkdir -p windows-deps/include | ||
| 52 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && cp zlib.h zconf.h ../../windows-deps/include | ||
| 53 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && $(MINGW_PREFIX)-strip -g libz.a | ||
| 54 | mkdir -p windows-deps/lib | ||
| 55 | cd build-windows-deps/zlib-$(ZLIB_VERSION) && cp libz.a ../../windows-deps/lib | ||
| 56 | |||
| 57 | windows-clean: | ||
| 58 | rm -rf windows-deps | ||
| 59 | rm -rf build-windows-binary | ||
