diff options
Diffstat (limited to 'GNUmakefile')
| -rw-r--r-- | GNUmakefile | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..dade806 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,187 @@ +MAKEFLAGS += --jobs=1 + +-include config.unix + +datarootdir = $(prefix)/share +bindir = $(prefix)/bin +INSTALL = install +INSTALL_DATA = $(INSTALL) -m 644 +BINARY_PLATFORM = unix + +SHEBANG = \#!$(LUA) +luarocksconfdir = $(sysconfdir)/luarocks +luadir = $(datarootdir)/lua/$(LUA_VERSION) +builddir = ./build +buildbinarydir = ./build-binary + +LUAROCKS_FILES = $(shell find src/luarocks/ -type f -name '*.lua') + +LUA_ENV_VARS = LUA_PATH LUA_PATH_5_2 LUA_PATH_5_3 LUA_PATH_5_4 LUA_CPATH LUA_CPATH_5_2 LUA_CPATH_5_3 LUA_CPATH_5_4 + +all: build + +# ---------------------------------------- +# Base build +# ---------------------------------------- + +build: config.unix $(builddir)/config-$(LUA_VERSION).lua $(builddir)/luarocks $(builddir)/luarocks-admin + +config.unix: + @echo Please run the "./configure" script before building. + @echo + @exit 1 + +$(builddir)/config-$(LUA_VERSION).lua: config.unix + mkdir -p "$(@D)" + @printf -- '-- LuaRocks configuration\n\n'\ + 'rocks_trees = {\n'\ + ' { name = "user", root = home .. "/.luarocks" };\n'\ + "$$([ "$(rocks_tree)" != "$(HOME)/.luarocks" ] && printf ' { name = "system", root = "'"$(rocks_tree)"'" };\\n')"\ + '}\n'\ + 'variables = {\n'\ + "$$([ -n "$(LUA_DIR)" ] && printf ' LUA_DIR = "%s";\\n' "$(LUA_DIR)")"\ + "$$([ -n "$(LUA_INCDIR)" ] && printf ' LUA_INCDIR = "%s";\\n' "$(LUA_INCDIR)")"\ + "$$([ -n "$(LUA_BINDIR)" ] && printf ' LUA_BINDIR = "%s";\\n' "$(LUA_BINDIR)")"\ + "$$([ -n "$(LUA_LIBDIR)" ] && printf ' LUA_LIBDIR = "%s";\\n' "$(LUA_LIBDIR)")"\ + "$$([ -n "$(LUA_VERSION)" ] && printf ' LUA_VERSION = "%s";\\n' "$(LUA_VERSION)")"\ + "$$([ -n "$(LUA)" ] && printf ' LUA = "%s";\\n' "$(LUA)")"\ + '}\n'\ + > $@ + +luarocks: config.unix $(builddir)/config-$(LUA_VERSION).lua + mkdir -p .luarocks + cp $(builddir)/config-$(LUA_VERSION).lua .luarocks/config-$(LUA_VERSION).lua + rm -f src/luarocks/core/hardcoded.lua + echo "#!/bin/sh" > luarocks + echo "unset $(LUA_ENV_VARS)" >> luarocks + echo 'LUAROCKS_SYSCONFDIR="$(luarocksconfdir)" LUA_PATH="$(CURDIR)/src/?.lua;;" exec "$(LUA)" "$(CURDIR)/src/bin/luarocks" --project-tree="$(CURDIR)/lua_modules" "$$@"' >> luarocks + chmod +rx ./luarocks + ./luarocks init + +luarocks-admin: config.unix + rm -f src/luarocks/core/hardcoded.lua + echo "#!/bin/sh" > luarocks-admin + echo "unset $(LUA_ENV_VARS)" >> luarocks-admin + echo 'LUAROCKS_SYSCONFDIR="$(luarocksconfdir)" LUA_PATH="$(CURDIR)/src/?.lua;;" exec "$(LUA)" "$(CURDIR)/src/bin/luarocks-admin" --project-tree="$(CURDIR)/lua_modules" "$$@"' >> luarocks-admin + chmod +rx ./luarocks-admin + +$(builddir)/luarocks: src/bin/luarocks config.unix + mkdir -p "$(@D)" + (printf '$(SHEBANG)\n'\ + 'package.loaded["luarocks.core.hardcoded"] = { '\ + "$$([ -n "$(FORCE_CONFIG)" ] && printf 'FORCE_CONFIG = true, ')"\ + 'SYSCONFDIR = [[$(luarocksconfdir)]] }\n'\ + 'package.path=[[$(luadir)/?.lua;]] .. package.path\n'\ + 'local list = package.searchers or package.loaders; table.insert(list, 1, function(name) if name:match("^luarocks%%.") then return loadfile([[$(luadir)/]] .. name:gsub([[%%.]], [[/]]) .. [[.lua]]) end end)\n'; \ + tail -n +2 src/bin/luarocks \ + )> "$@" + +$(builddir)/luarocks-admin: src/bin/luarocks-admin config.unix + mkdir -p "$(@D)" + (printf '$(SHEBANG)\n'\ + 'package.loaded["luarocks.core.hardcoded"] = { '\ + "$$([ -n "$(FORCE_CONFIG)" ] && printf 'FORCE_CONFIG = true, ')"\ + 'SYSCONFDIR = [[$(luarocksconfdir)]] }\n'\ + 'package.path=[[$(luadir)/?.lua;]] .. package.path\n'\ + 'local list = package.searchers or package.loaders; table.insert(list, 1, function(name) if name:match("^luarocks%%.") then return loadfile([[$(luadir)/]] .. name:gsub([[%%.]], [[/]]) .. [[.lua]]) end end)\n'; \ + tail -n +2 src/bin/luarocks-admin \ + )> "$@" + +# ---------------------------------------- +# Base build +# ---------------------------------------- + +binary: luarocks $(buildbinarydir)/luarocks.exe $(buildbinarydir)/luarocks-admin.exe + +$(buildbinarydir)/luarocks.exe: src/bin/luarocks $(LUAROCKS_FILES) + (unset $(LUA_ENV_VARS); \ + "$(LUA)" binary/all_in_one "$<" "$(LUA_DIR)" "^src/luarocks/admin/" "$(luarocksconfdir)" "$(@D)" "$(FORCE_CONFIG)" $(BINARY_PLATFORM) $(CC) $(NM) $(BINARY_SYSROOT)) + +$(buildbinarydir)/luarocks-admin.exe: src/bin/luarocks-admin $(LUAROCKS_FILES) + (unset $(LUA_ENV_VARS); \ + "$(LUA)" binary/all_in_one "$<" "$(LUA_DIR)" "^src/luarocks/cmd/" "$(luarocksconfdir)" "$(@D)" "$(FORCE_CONFIG)" $(BINARY_PLATFORM) $(CC) $(NM) $(BINARY_SYSROOT)) + +# ---------------------------------------- +# Regular install +# ---------------------------------------- + +INSTALL_FILES = + +install: all install-config + mkdir -p '$(DESTDIR)$(bindir)/' + $(INSTALL) '$(builddir)/luarocks' '$(DESTDIR)$(bindir)/luarocks' + $(INSTALL) '$(builddir)/luarocks-admin' '$(DESTDIR)$(bindir)/luarocks-admin' + find src/luarocks/ -type d | while read f; \ + do \ + mkdir -p '$(DESTDIR)$(luadir)'/`echo $$f | sed 's,^src/,,'`; \ + done + find src/luarocks/ -type f -name '*.lua' | while read f; \ + do \ + $(INSTALL_DATA) "$$f" '$(DESTDIR)$(luadir)'/`echo $$f | sed 's,^src/,,'`; \ + done + +install-config: + mkdir -p '$(DESTDIR)$(luarocksconfdir)/' + $(INSTALL_DATA) '$(builddir)/config-$(LUA_VERSION).lua' '$(DESTDIR)$(luarocksconfdir)/config-$(LUA_VERSION).lua' + +uninstall: + rm -rf $(DESTDIR)$(bindir)/luarocks \ + $(DESTDIR)$(bindir)/luarocks-admin \ + $(DESTDIR)$(luarocksconfdir)/config-$(LUA_VERSION).lua \ + $(patsubst src/%, $(DESTDIR)$(luadir)/%, $(LUAROCKS_FILES)) + +# ---------------------------------------- +# Binary install +# ---------------------------------------- + +install-binary: binary install-config + mkdir -p '$(DESTDIR)$(bindir)/' + $(INSTALL) "$(buildbinarydir)/luarocks.exe" "$(DESTDIR)$(bindir)/luarocks" + $(INSTALL) "$(buildbinarydir)/luarocks-admin.exe" "$(DESTDIR)$(bindir)/luarocks-admin" + mkdir -p '$(DESTDIR)$(luadir)/luarocks/core' + for f in src/luarocks/core/*.lua src/luarocks/loader.lua; \ + do \ + $(INSTALL_DATA) "$$f" '$(DESTDIR)$(luadir)'/`echo $$f | sed 's,^src/,,'`; \ + done + +# ---------------------------------------- +# Bootstrap install +# ---------------------------------------- + +bootstrap: luarocks install-config + ./luarocks make --tree="$(DESTDIR)$(rocks_tree)" + +# ---------------------------------------- +# Windows binary build +# ---------------------------------------- + +windows-binary: windows-binary-32 windows-binary-64 + +windows-clean: windows-clean-32 windows-clean-64 + +windows-binary-32: luarocks + $(MAKE) -f binary/Makefile.windows windows-binary MINGW_PREFIX=i686-w64-mingw32 OPENSSL_PLATFORM=mingw + +windows-clean-32: + $(MAKE) -f binary/Makefile.windows windows-clean MINGW_PREFIX=i686-w64-mingw32 OPENSSL_PLATFORM=mingw + +windows-binary-64: luarocks + $(MAKE) -f binary/Makefile.windows windows-binary MINGW_PREFIX=x86_64-w64-mingw32 OPENSSL_PLATFORM=mingw64 + +windows-clean-64: + $(MAKE) -f binary/Makefile.windows windows-clean MINGW_PREFIX=x86_64-w64-mingw32 OPENSSL_PLATFORM=mingw64 + +# ---------------------------------------- +# Clean +# ---------------------------------------- + +clean: windows-clean + rm -rf ./config.unix \ + ./luarocks \ + ./luarocks-admin \ + $(builddir)/ \ + $(buildbinarydir)/ \ + ./.luarocks \ + ./lua_modules + +.PHONY: all build install install-config binary install-binary bootstrap clean windows-binary windows-clean |
