aboutsummaryrefslogtreecommitdiff
path: root/binary
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2020-01-06 17:47:37 -0300
committerHisham Muhammad <hisham@gobolinux.org>2020-01-14 21:56:55 -0300
commit613b66c271e8b6d4c060668bfe3ca055fc35b166 (patch)
tree525fc6e8df94704671262a3a205c83e3b0de87c0 /binary
parent525c41f2024422808a72ca832f41ab1c6e32b6b3 (diff)
downloadluarocks-613b66c271e8b6d4c060668bfe3ca055fc35b166.tar.gz
luarocks-613b66c271e8b6d4c060668bfe3ca055fc35b166.tar.bz2
luarocks-613b66c271e8b6d4c060668bfe3ca055fc35b166.zip
support for building 64-bit Windows all-in-one binary
Diffstat (limited to 'binary')
-rw-r--r--binary/Makefile.windows94
-rwxr-xr-xbinary/all_in_one19
2 files changed, 61 insertions, 52 deletions
diff --git a/binary/Makefile.windows b/binary/Makefile.windows
index e7bcca27..e6ec26bf 100644
--- a/binary/Makefile.windows
+++ b/binary/Makefile.windows
@@ -1,6 +1,6 @@
1 1
2# "i686-w64-mingw32" or "x86_64-w64-mingw32" 2# "i686-w64-mingw32" or "x86_64-w64-mingw32"
3MINGW_PREFIX=i686-w64-mingw32 3MINGW_PREFIX?=i686-w64-mingw32
4# sysroot of your mingw-w64 installation 4# sysroot of your mingw-w64 installation
5MINGW_SYSROOT=/usr/lib/mingw-w64-sysroot/$(MINGW_PREFIX) 5MINGW_SYSROOT=/usr/lib/mingw-w64-sysroot/$(MINGW_PREFIX)
6# "mingw" or "mingw64" 6# "mingw" or "mingw64"
@@ -11,62 +11,66 @@ OPENSSL_VERSION=1.0.2o
11ZLIB_VERSION=1.2.11 11ZLIB_VERSION=1.2.11
12BZIP2_VERSION=1.0.6 12BZIP2_VERSION=1.0.6
13 13
14windows-binary: windows-deps/lib/liblua.a windows-deps/lib/libssl.a windows-deps/lib/libz.a windows-deps/lib/libbz2.a 14WINDOWS_DEPS_DIR=windows-deps-$(MINGW_PREFIX)
15BUILD_WINDOWS_DEPS_DIR=build-windows-deps-$(MINGW_PREFIX)
16BUILD_WINDOWS_BINARY_DIR=build-windows-binary-$(MINGW_PREFIX)
17
18windows-binary: $(WINDOWS_DEPS_DIR)/lib/liblua.a $(WINDOWS_DEPS_DIR)/lib/libssl.a $(WINDOWS_DEPS_DIR)/lib/libz.a $(WINDOWS_DEPS_DIR)/lib/libbz2.a
15 STATIC_GCC_AR=$(MINGW_PREFIX)-ar \ 19 STATIC_GCC_AR=$(MINGW_PREFIX)-ar \
16 STATIC_GCC_RANLIB=$(MINGW_PREFIX)-ranlib \ 20 STATIC_GCC_RANLIB=$(MINGW_PREFIX)-ranlib \
17 STATIC_GCC_CC=$(MINGW_PREFIX)-gcc \ 21 STATIC_GCC_CC=$(MINGW_PREFIX)-gcc \
18 LUAROCKS_CROSS_COMPILING=1 \ 22 LUAROCKS_CROSS_COMPILING=1 \
19 $(MAKE) binary LUA_DIR=$(CURDIR)/windows-deps CC=$(MINGW_PREFIX)-gcc NM=$(MINGW_PREFIX)-nm BINARY_PLATFORM=windows buildbinarydir=build-windows-binary BINARY_SYSROOT=$(MINGW_SYSROOT) 23 $(MAKE) binary LUA_DIR=$(CURDIR)/$(WINDOWS_DEPS_DIR) CC=$(MINGW_PREFIX)-gcc NM=$(MINGW_PREFIX)-nm BINARY_PLATFORM=windows buildbinarydir=$(BUILD_WINDOWS_BINARY_DIR) BINARY_SYSROOT=$(MINGW_SYSROOT)
20 24
21build-windows-deps/lua-$(LIBLUA_VERSION).tar.gz: 25$(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION).tar.gz:
22 mkdir -p $(@D) 26 mkdir -p $(@D)
23 cd build-windows-deps && curl -OL https://www.lua.org/ftp/lua-$(LIBLUA_VERSION).tar.gz 27 cd $(BUILD_WINDOWS_DEPS_DIR) && curl -OL https://www.lua.org/ftp/lua-$(LIBLUA_VERSION).tar.gz
24build-windows-deps/lua-$(LIBLUA_VERSION): build-windows-deps/lua-$(LIBLUA_VERSION).tar.gz 28$(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION): $(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION).tar.gz
25 cd build-windows-deps && tar zxvpf lua-$(LIBLUA_VERSION).tar.gz 29 cd $(BUILD_WINDOWS_DEPS_DIR) && tar zxvpf lua-$(LIBLUA_VERSION).tar.gz
26windows-deps/lib/liblua.a: build-windows-deps/lua-$(LIBLUA_VERSION) 30$(WINDOWS_DEPS_DIR)/lib/liblua.a: $(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION)
27 $(MAKE) -C "build-windows-deps/lua-$(LIBLUA_VERSION)/src" LUA_A=liblua.a CC=$(MINGW_PREFIX)-gcc AR="$(MINGW_PREFIX)-ar rcu" RANLIB=$(MINGW_PREFIX)-ranlib SYSCFLAGS= SYSLIBS= SYSLDFLAGS= liblua.a 31 $(MAKE) -C "$(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION)/src" 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 32 mkdir -p $(WINDOWS_DEPS_DIR)/include
29 cd build-windows-deps/lua-$(LIBLUA_VERSION)/src && cp lauxlib.h lua.h lua.hpp luaconf.h lualib.h ../../../windows-deps/include 33 cd $(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION)/src && cp lauxlib.h lua.h lua.hpp luaconf.h lualib.h ../../../$(WINDOWS_DEPS_DIR)/include
30 mkdir -p windows-deps/lib 34 mkdir -p $(WINDOWS_DEPS_DIR)/lib
31 cd build-windows-deps/lua-$(LIBLUA_VERSION)/src && cp liblua.a ../../../windows-deps/lib 35 cd $(BUILD_WINDOWS_DEPS_DIR)/lua-$(LIBLUA_VERSION)/src && cp liblua.a ../../../$(WINDOWS_DEPS_DIR)/lib
32 36
33build-windows-deps/openssl-$(OPENSSL_VERSION).tar.gz: 37$(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION).tar.gz:
34 mkdir -p $(@D) 38 mkdir -p $(@D)
35 cd build-windows-deps && curl -OL https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz 39 cd $(BUILD_WINDOWS_DEPS_DIR) && curl -OL https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz
36build-windows-deps/openssl-$(OPENSSL_VERSION): build-windows-deps/openssl-$(OPENSSL_VERSION).tar.gz 40$(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION): $(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION).tar.gz
37 cd build-windows-deps && tar zxvpf openssl-$(OPENSSL_VERSION).tar.gz 41 cd $(BUILD_WINDOWS_DEPS_DIR) && tar zxvpf openssl-$(OPENSSL_VERSION).tar.gz
38windows-deps/lib/libssl.a: build-windows-deps/openssl-$(OPENSSL_VERSION) 42$(WINDOWS_DEPS_DIR)/lib/libssl.a: $(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION)
39 cd build-windows-deps/openssl-$(OPENSSL_VERSION) && ./Configure --prefix=$(CURDIR)/windows-deps --cross-compile-prefix=$(MINGW_PREFIX)- $(OPENSSL_PLATFORM) 43 cd $(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION) && ./Configure --prefix=$(CURDIR)/$(WINDOWS_DEPS_DIR) --cross-compile-prefix=$(MINGW_PREFIX)- $(OPENSSL_PLATFORM)
40 $(MAKE) -C "build-windows-deps/openssl-$(OPENSSL_VERSION)" 44 $(MAKE) -C "$(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION)"
41 $(MAKE) -C "build-windows-deps/openssl-$(OPENSSL_VERSION)" install_sw 45 $(MAKE) -C "$(BUILD_WINDOWS_DEPS_DIR)/openssl-$(OPENSSL_VERSION)" install_sw
42 46
43build-windows-deps/zlib-$(ZLIB_VERSION).tar.gz: 47$(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION).tar.gz:
44 mkdir -p $(@D) 48 mkdir -p $(@D)
45 cd build-windows-deps && curl -OL https://www.zlib.net/zlib-$(ZLIB_VERSION).tar.gz 49 cd $(BUILD_WINDOWS_DEPS_DIR) && curl -OL https://www.zlib.net/zlib-$(ZLIB_VERSION).tar.gz
46build-windows-deps/zlib-$(ZLIB_VERSION): build-windows-deps/zlib-$(ZLIB_VERSION).tar.gz 50$(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION): $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION).tar.gz
47 cd build-windows-deps && tar zxvpf zlib-$(ZLIB_VERSION).tar.gz 51 cd $(BUILD_WINDOWS_DEPS_DIR) && tar zxvpf zlib-$(ZLIB_VERSION).tar.gz
48windows-deps/lib/libz.a: build-windows-deps/zlib-$(ZLIB_VERSION) 52$(WINDOWS_DEPS_DIR)/lib/libz.a: $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION)
49 cd build-windows-deps/zlib-$(ZLIB_VERSION) && sed -ie "s,dllwrap,$(MINGW_PREFIX)-dllwrap," win32/Makefile.gcc 53 cd $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION) && sed -ie "s,dllwrap,$(MINGW_PREFIX)-dllwrap," win32/Makefile.gcc
50 cd build-windows-deps/zlib-$(ZLIB_VERSION) && ./configure --prefix=$(CURDIR)/windows-deps --static 54 cd $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION) && ./configure --prefix=$(CURDIR)/$(WINDOWS_DEPS_DIR) --static
51 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 55 cd $(BUILD_WINDOWS_DEPS_DIR)/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
52 mkdir -p windows-deps/include 56 mkdir -p $(WINDOWS_DEPS_DIR)/include
53 cd build-windows-deps/zlib-$(ZLIB_VERSION) && cp zlib.h zconf.h ../../windows-deps/include 57 cd $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION) && cp zlib.h zconf.h ../../$(WINDOWS_DEPS_DIR)/include
54 cd build-windows-deps/zlib-$(ZLIB_VERSION) && $(MINGW_PREFIX)-strip -g libz.a 58 cd $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION) && $(MINGW_PREFIX)-strip -g libz.a
55 mkdir -p $(@D) 59 mkdir -p $(@D)
56 cd build-windows-deps/zlib-$(ZLIB_VERSION) && cp libz.a ../../windows-deps/lib 60 cd $(BUILD_WINDOWS_DEPS_DIR)/zlib-$(ZLIB_VERSION) && cp libz.a ../../$(WINDOWS_DEPS_DIR)/lib
57 61
58build-windows-deps/bzip2-$(BZIP2_VERSION).tar.gz: 62$(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION).tar.gz:
59 mkdir -p $(@D) 63 mkdir -p $(@D)
60 cd build-windows-deps && curl -OL http://www.bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz 64 cd $(BUILD_WINDOWS_DEPS_DIR) && curl -OL http://downloads.sourceforge.net/project/bzip2/bzip2-$(BZIP2_VERSION).tar.gz
61build-windows-deps/bzip2-$(BZIP2_VERSION): build-windows-deps/bzip2-$(BZIP2_VERSION).tar.gz 65$(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION): $(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION).tar.gz
62 cd build-windows-deps && tar zxvpf bzip2-$(BZIP2_VERSION).tar.gz 66 cd $(BUILD_WINDOWS_DEPS_DIR) && tar zxvpf bzip2-$(BZIP2_VERSION).tar.gz
63windows-deps/lib/libbz2.a: build-windows-deps/bzip2-$(BZIP2_VERSION) 67$(WINDOWS_DEPS_DIR)/lib/libbz2.a: $(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION)
64 $(MAKE) -C "build-windows-deps/bzip2-$(BZIP2_VERSION)" libbz2.a CC=$(MINGW_PREFIX)-gcc AR=$(MINGW_PREFIX)-ar RANLIB=$(MINGW_PREFIX)-ranlib 68 $(MAKE) -C "$(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION)" libbz2.a CC=$(MINGW_PREFIX)-gcc AR=$(MINGW_PREFIX)-ar RANLIB=$(MINGW_PREFIX)-ranlib
65 mkdir -p windows-deps/include 69 mkdir -p $(WINDOWS_DEPS_DIR)/include
66 cd build-windows-deps/bzip2-$(BZIP2_VERSION) && cp bzlib.h ../../windows-deps/include 70 cd $(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION) && cp bzlib.h ../../$(WINDOWS_DEPS_DIR)/include
67 cd build-windows-deps/bzip2-$(BZIP2_VERSION) && $(MINGW_PREFIX)-strip -g libbz2.a 71 cd $(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION) && $(MINGW_PREFIX)-strip -g libbz2.a
68 mkdir -p windows-deps/lib 72 mkdir -p $(WINDOWS_DEPS_DIR)/lib
69 cd build-windows-deps/bzip2-$(BZIP2_VERSION) && cp libbz2.a ../../windows-deps/lib 73 cd $(BUILD_WINDOWS_DEPS_DIR)/bzip2-$(BZIP2_VERSION) && cp libbz2.a ../../$(WINDOWS_DEPS_DIR)/lib
70 74
71windows-clean: 75windows-clean:
72 rm -rf windows-deps build-windows-binary 76 rm -rf $(WINDOWS_DEPS_DIR) $(BUILD_WINDOWS_BINARY_DIR)
diff --git a/binary/all_in_one b/binary/all_in_one
index 4fa0ba76..82ea578c 100755
--- a/binary/all_in_one
+++ b/binary/all_in_one
@@ -29,15 +29,20 @@ local MAIN_PROGRAM = arg[1] or "src/bin/luarocks"
29local LUA_DIR = arg[2] or "/usr" 29local LUA_DIR = arg[2] or "/usr"
30local EXCLUDE = arg[3] or "^src/luarocks/admin/" 30local EXCLUDE = arg[3] or "^src/luarocks/admin/"
31local SYSCONFDIR = arg[4] or "/etc/luarocks" 31local SYSCONFDIR = arg[4] or "/etc/luarocks"
32local TARGET = arg[5] or "build-binary" 32local TARGET_DIR = arg[5] or "build-binary"
33local FORCE_CONFIG = (arg[6] == "yes") 33local FORCE_CONFIG = (arg[6] == "yes")
34local MY_PLATFORM = arg[7] or "unix" 34local MY_PLATFORM = arg[7] or "unix"
35local CC = arg[8] or "gcc" 35local CC = arg[8] or "gcc"
36local NM = arg[9] or "nm" 36local NM = arg[9] or "nm"
37local CROSSCOMPILER_SYSROOT = arg[10] or "/usr/lib/mingw-w64-sysroot/i686-w64-mingw32" 37local CROSSCOMPILER_SYSROOT = arg[10] or "/usr/lib/mingw-w64-sysroot/i686-w64-mingw32"
38local TRIPLET = arg[11] or CROSSCOMPILER_SYSROOT:gsub(".*/", "")
39local PROCESSOR = arg[12] or TRIPLET:gsub("%-.*", "")
40if PROCESSOR == "i686" then
41 PROCESSOR = "x86"
42end
38 43
39local LUA_MODULES = TARGET .. "/lua_modules" 44local LUA_MODULES = TARGET_DIR .. "/lua_modules"
40local CONFIG_DIR = TARGET .. "/.luarocks" 45local CONFIG_DIR = TARGET_DIR .. "/.luarocks"
41 46
42package.path = "./src/?.lua;" .. package.path 47package.path = "./src/?.lua;" .. package.path
43 48
@@ -144,7 +149,7 @@ local function write_hardcoded_module(dir)
144 if if_platform("unix", true) then 149 if if_platform("unix", true) then
145 system, processor = sysdetect.detect() 150 system, processor = sysdetect.detect()
146 else 151 else
147 system, processor = "windows", "x86" 152 system, processor = "windows", PROCESSOR
148 end 153 end
149 154
150 local hardcoded = { 155 local hardcoded = {
@@ -400,7 +405,7 @@ local function generate(main_program, dir, skip)
400 405
401 os.remove(hardcoded) 406 os.remove(hardcoded)
402 407
403 local c_filename = TARGET .. "/" .. program_name .. ".exe.c" 408 local c_filename = TARGET_DIR .. "/" .. program_name .. ".exe.c"
404 local fd = io.open(c_filename, "w") 409 local fd = io.open(c_filename, "w")
405 fd:write(reindent_c(table.concat(out, "\n"))) 410 fd:write(reindent_c(table.concat(out, "\n")))
406 fd:close() 411 fd:close()
@@ -409,7 +414,7 @@ local function generate(main_program, dir, skip)
409 deps.check_lua_libdir(cfg.variables) 414 deps.check_lua_libdir(cfg.variables)
410 415
411 cmd = table.concat(filter_in(nonnull, { 416 cmd = table.concat(filter_in(nonnull, {
412 CC, "-o", TARGET .. "/" .. program_name .. ".exe", 417 CC, "-o", TARGET_DIR .. "/" .. program_name .. ".exe",
413 "-I", cfg.variables.LUA_INCDIR, 418 "-I", cfg.variables.LUA_INCDIR,
414 if_platform("unix", "-rdynamic"), 419 if_platform("unix", "-rdynamic"),
415 "-Os", 420 "-Os",
@@ -453,7 +458,7 @@ local function main()
453 LIBFLAG = "-static", 458 LIBFLAG = "-static",
454 }, 459 },
455 platforms = if_platform("windows", { "windows", "win32", "mingw32" }), 460 platforms = if_platform("windows", { "windows", "win32", "mingw32" }),
456 external_deps_dirs = if_platform("windows", { CROSSCOMPILER_SYSROOT, fs.current_dir().."/windows-deps" }), 461 external_deps_dirs = if_platform("windows", { CROSSCOMPILER_SYSROOT, fs.current_dir() .. "/windows-deps-" .. TRIPLET }),
457 }) 462 })
458 463
459 local dependencies = { 464 local dependencies = {