Repository navigation
Expand file tree
/
Copy pathMakefile.mingw
More file actions
181 lines (153 loc) · 7.58 KB
/
Copy pathMakefile.mingw
File metadata and controls
181 lines (153 loc) · 7.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# Build lua-xz on Windows
# through GNU Make (mingw32-make) from
# usual `cmd' prompt for
# the MinGw / MinGW-w64 toolchain.
#################################
# Usage #
#################################
# From `cmd':
# 1. Standalone
# mingw32-make -f Makefile.mingw LIBLZMA_DIR=C:\path\to\liblmza LUA_DIR=C:\path\to\lua LUA_MAJOR_VERSION=5 LUA_MINOR_VERSION=4
# mingw32-make -f Makefile.mingw LIBLZMA_DIR=C:\path\to\liblmza LUA_DIR=C:\path\to\lua LUA_MAJOR_VERSION=5 LUA_MINOR_VERSION=4 install
# 2. Module (like LuaRocks)
# mingw32-make -f Makefile.mingw LIBLZMA_DIR=C:\path\to\liblmza LUA_DIR=C:\path\to\lua LUA_MAJOR_VERSION=5 LUA_MINOR_VERSION=4
# mingw32-make -f Makefile.mingw LIBLZMA_DIR=C:\path\to\liblmza LUA_DIR=C:\path\to\lua LUA_MAJOR_VERSION=5 LUA_MINOR_VERSION=4 install-module
#################################
# Editable settings #
#################################
# Build settings
# for a standalone build.
# This means you want
# to embeded lua-xz
# on your app out of
# LuaRocks.
SystemDrive = C:
prefix = $(SystemDrive)/lua-xz
bindir = $(prefix)/bin
incdir = $(prefix)/include
libdir = $(prefix)/lib
# liblzma settings
# Note: all variables
# beginning with LIBLZMA_*
# can be edited
# to suit your liblzma
# installation
LIBLZMA_DIR = $(SystemDrive)/external
LIBLZMA_INCDIR = $(LIBLZMA_DIR)/include
LIBLZMA_LIBDIR = $(LIBLZMA_DIR)/lib
LIBLZMA_LIB = lzma
# Lua settings
# Note: all variables
# beginning with LUA_*
# can be edited
# to suit your Lua
# installation
LUA_MAJOR_VERSION = 5
LUA_MINOR_VERSION = 4
LUA_SHORT_VERSION = $(LUA_MAJOR_VERSION)$(LUA_MINOR_VERSION)
LUA_VERSION = $(LUA_MAJOR_VERSION).$(LUA_MINOR_VERSION)
LUA_DIR = $(SystemDrive)/Lua
LUA_BINDIR = $(LUA_DIR)/bin
LUA_INCDIR = $(LUA_DIR)/include
LUA_LIBDIR = $(LUA_DIR)/lib
LUA_SHARE = $(LUA_DIR)/share
LUA_LIB_SUFFIX = $(LUA_SHORT_VERSION)
LUA_LIB = lua$(LUA_LIB_SUFFIX)
ifneq ($(filter $(LUA_MAJOR_VERSION),1 2 3 4),)
$(error Unsupported major version of Lua)
endif
ifeq ($(LUA_MAJOR_VERSION),5)
LUA_LMOD = $(LUA_SHARE)/lua/$(LUA_VERSION)
LUA_CMOD = $(LUA_LIBDIR)/lua/$(LUA_VERSION)
ifneq ($(filter $(LUA_MINOR_VERSION),1 2),)
LUA_LMOD = $(LUA_BINDIR)/lua
LUA_CMOD = $(LUA_BINDIR)
endif
endif
#################################
# DO NOT edit below #
#################################
# generic settings
SHELL = $(WINDIR)/System32/cmd.exe
OBJ_EXTENSION = o
SHARED_LIB_EXTENSION = dll
STATIC_LIB_EXTENSION = a
IMPLIB_EXTENSION = dll.a
LUA_XZ_NAME = lua-xz
LUA_XZ_OUTPUT_SHARED_LIB = $(LUA_XZ_NAME).$(SHARED_LIB_EXTENSION)
LUA_XZ_OUTPUT_SHARED_IMPLIB = $(LUA_XZ_NAME).$(IMPLIB_EXTENSION)
LUA_XZ_OUTPUT_STATIC_LIB = $(LUA_XZ_NAME)-static.$(STATIC_LIB_EXTENSION)
LUA_XZ_SRC_DIR = src
LUA_XZ_DEF = $(LUA_XZ_NAME).def
LUA_XZ_SRC_FILES = $(LUA_XZ_SRC_DIR)/$(LUA_XZ_NAME).c
LUA_XZ_HEADER_NAME = $(LUA_XZ_NAME).h
LUA_XZ_HEADER_FILES = $(LUA_XZ_SRC_DIR)/$(LUA_XZ_HEADER_NAME)
LUA_XZ_SHARED_OBJ_FILES = $(LUA_XZ_SRC_DIR)/$(LUA_XZ_NAME)-shared.$(OBJ_EXTENSION)
LUA_XZ_STATIC_OBJ_FILES = $(LUA_XZ_SRC_DIR)/$(LUA_XZ_NAME)-static.$(OBJ_EXTENSION)
MINGW_TRIPLET_PREFIX =
CC = $(MINGW_TRIPLET_PREFIX)gcc
SHARED_CFLAGS = -g -c -fPIC -O2 -Wall
STATIC_CFLAGS = -g -c -O2 -Wall
INCLUDES = -I$(LUA_XZ_SRC_DIR) "-I$(LUA_INCDIR)" "-I$(LIBLZMA_INCDIR)"
SHARED_DEFINES = -DNDEBUG -D_NDEBUG -DLUA_XZ_BUILD_SHARED
STATIC_DEFINES = -DNDEBUG -D_NDEBUG -DLUA_XZ_BUILD_STATIC
LD = $(CC)
LDFLAGS = -shared
LIBS = "-L$(LUA_LIBDIR)" "-L$(LIBLZMA_LIBDIR)" -l$(LIBLZMA_LIB) -l$(LUA_LIB)
AR = $(MINGW_TRIPLET_PREFIX)ar
ARFLAGS = cru
RANLIB = $(MINGW_TRIPLET_PREFIX)ranlib
RM_F = DEL
RM_RF = RMDIR
INSTALL = COPY
MKDIR = MKDIR
# targets
.PHONY: all install install-standalone install-module uninstall uninstall-standalone uninstall-module clean clean-shared clean-static
all: clean-shared $(LUA_XZ_OUTPUT_SHARED_LIB) clean-static $(LUA_XZ_OUTPUT_STATIC_LIB)
$(LUA_XZ_OUTPUT_SHARED_LIB): $(LUA_XZ_SHARED_OBJ_FILES) $(LUA_XZ_DEF)
$(LD) $(LDFLAGS) -Wl,--out-implib,$(LUA_XZ_OUTPUT_SHARED_IMPLIB) -o $@ $^ $(LIBS)
$(LUA_XZ_OUTPUT_STATIC_LIB): $(LUA_XZ_STATIC_OBJ_FILES)
$(AR) $(ARFLAGS) $@ $<
$(RANLIB) $@
$(LUA_XZ_SHARED_OBJ_FILES): $(LUA_XZ_SRC_FILES)
$(CC) $(SHARED_CFLAGS) $(SHARED_DEFINES) $(INCLUDES) -o $@ $<
$(LUA_XZ_STATIC_OBJ_FILES): $(LUA_XZ_SRC_FILES)
$(CC) $(STATIC_CFLAGS) $(STATIC_DEFINES) $(INCLUDES) -o $@ $<
install: install-standalone
install-standalone: $(LUA_XZ_OUTPUT_SHARED_LIB) $(LUA_XZ_OUTPUT_STATIC_LIB)
@cmd /C IF NOT EXIST "$(subst /,\,$(prefix)/)" $(MKDIR) "$(subst /,\,$(prefix))"
@cmd /C IF NOT EXIST "$(subst /,\,$(bindir)/)" $(MKDIR) "$(subst /,\,$(bindir))"
@cmd /C IF NOT EXIST "$(subst /,\,$(incdir)/)" $(MKDIR) "$(subst /,\,$(incdir))"
@cmd /C IF NOT EXIST "$(subst /,\,$(libdir)/)" $(MKDIR) "$(subst /,\,$(libdir))"
@cmd /C IF EXIST "$(subst /,\,$(bindir)/$(LUA_XZ_OUTPUT_SHARED_LIB))" $(RM_F) "$(subst /,\,$(bindir)/$(LUA_XZ_OUTPUT_SHARED_LIB))"
@cmd /C FOR %%I IN ($(subst /,\,$(LUA_XZ_HEADER_FILES))) DO @IF EXIST "$(subst /,\,$(incdir)/%%I)" $(RM_F) "$(subst /,\,$(incdir)/%%I)"
@cmd /C IF EXIST "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_SHARED_IMPLIB))" $(RM_F) "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_SHARED_IMPLIB))"
@cmd /C IF EXIST "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_STATIC_LIB))" $(RM_F) "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_STATIC_LIB))"
@cmd /C ECHO Installing $(LUA_XZ_NAME) at $(subst /,\,$(prefix))
@cmd /C $(INSTALL) $(subst /,\,$(LUA_XZ_OUTPUT_SHARED_LIB)) "$(subst /,\,$(bindir)/)"
@cmd /C FOR %%I IN ($(subst /,\,$(LUA_XZ_HEADER_FILES))) DO @$(INSTALL) "%%I" "$(subst /,\,$(incdir)/)"
@cmd /C $(INSTALL) $(subst /,\,$(LUA_XZ_OUTPUT_SHARED_IMPLIB)) "$(subst /,\,$(libdir)/)"
@cmd /C $(INSTALL) $(subst /,\,$(LUA_XZ_OUTPUT_STATIC_LIB)) "$(subst /,\,$(libdir)/)"
@cmd /C ECHO Installation finished successfully.
install-module: $(LUA_XZ_OUTPUT_SHARED_LIB) $(LUA_XZ_OUTPUT_STATIC_LIB)
@cmd /C IF NOT EXIST "$(subst /,\,$(LUA_DIR)/)" $(MKDIR) "$(subst /,\,$(LUA_DIR))"
@cmd /C IF NOT EXIST "$(subst /,\,$(LUA_BINDIR)/)" $(MKDIR) "$(subst /,\,$(LUA_BINDIR))"
@cmd /C IF NOT EXIST "$(subst /,\,$(LUA_LIBDIR)/)" $(MKDIR) "$(subst /,\,$(LUA_LIBDIR))"
@cmd /C IF NOT EXIST "$(subst /,\,$(LUA_CMOD)/)" $(MKDIR) "$(subst /,\,$(LUA_CMOD))"
@cmd /C IF EXIST "$(subst /,\,$(LUA_CMOD)/$(LUA_XZ_OUTPUT_SHARED_LIB))" $(RM_F) "$(subst /,\,$(LUA_CMOD)/$(LUA_XZ_OUTPUT_SHARED_LIB))"
@cmd /C ECHO Installing $(subst /,\,$(LUA_XZ_NAME)) at $(subst /,\,$(LUA_CMOD))
@cmd /C $(INSTALL) $(subst /,\,$(LUA_XZ_OUTPUT_SHARED_LIB)) "$(subst /,\,$(LUA_CMOD)/)"
@cmd /C ECHO Installation finished successfully.
uninstall: uninstall-standalone
uninstall-standalone:
@cmd /C IF EXIST "$(subst /,\,$(bindir)/$(LUA_XZ_OUTPUT_SHARED_LIB))" $(RM_F) "$(subst /,\,$(bindir)/$(LUA_XZ_OUTPUT_SHARED_LIB))"
@cmd /C FOR %%I IN ($(subst /,\,$(LUA_XZ_HEADER_FILES))) DO @IF EXIST "$(subst /,\,$(incdir)/%%I)" $(RM_F) "$(subst /,\,$(incdir)/%%I)"
@cmd /C IF EXIST "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_SHARED_IMPLIB))" $(RM_F) "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_SHARED_IMPLIB))"
@cmd /C IF EXIST "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_STATIC_LIB))" $(RM_F) "$(subst /,\,$(libdir)/$(LUA_XZ_OUTPUT_STATIC_LIB))"
uninstall-module:
@cmd /C IF EXIST "$(subst /,\,$(LUA_CMOD)/$(LUA_XZ_OUTPUT_SHARED_LIB))" $(RM_F) "$(subst /,\,$(LUA_CMOD)/$(LUA_XZ_OUTPUT_SHARED_LIB))"
clean: clean-shared clean-static
clean-shared:
@cmd /C FOR %%I IN ($(subst /,\,$(LUA_XZ_SHARED_OBJ_FILES)) $(subst /,\,$(LUA_XZ_OUTPUT_SHARED_LIB)) $(subst /,\,$(LUA_XZ_OUTPUT_SHARED_IMPLIB))) DO @IF EXIST "%%I" $(RM_F) "%%I"
clean-static:
@cmd /C FOR %%I IN ($(subst /,\,$(LUA_XZ_STATIC_OBJ_FILES)) $(subst /,\,$(LUA_XZ_OUTPUT_STATIC_LIB))) DO @IF EXIST "%%I" $(RM_F) "%%I"