aboutsummaryrefslogtreecommitdiff
path: root/src/makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-x[-rw-r--r--]src/makefile174
1 files changed, 112 insertions, 62 deletions
diff --git a/src/makefile b/src/makefile
index 2704a92..06f4d19 100644..100755
--- a/src/makefile
+++ b/src/makefile
@@ -12,34 +12,31 @@
12# 12#
13# make PLAT=linux DEBUG=DEBUG LUAV=5.2 prefix=/sw 13# make PLAT=linux DEBUG=DEBUG LUAV=5.2 prefix=/sw
14 14
15# PLAT: linux macosx win32 mingw 15# PLAT: linux macosx win32 win64 mingw
16# platform to build for 16# platform to build for
17PLAT?=linux 17PLAT?=linux
18 18
19# LUAV: 5.1 5.2 19# LUAV: 5.1 5.2 5.3 5.4
20# lua version to build against 20# lua version to build against
21LUAV?=5.1 21LUAV?=5.1
22 22
23# MYCFLAGS: to be set by user if needed 23# MYCFLAGS: to be set by user if needed
24MYCFLAGS= 24MYCFLAGS?=
25 25
26# MYLDFLAGS: to be set by user if needed 26# MYLDFLAGS: to be set by user if needed
27MYLDFLAGS= 27MYLDFLAGS?=
28 28
29# DEBUG: NODEBUG DEBUG 29# DEBUG: NODEBUG DEBUG
30# debug mode causes luasocket to collect and returns timing information useful 30# debug mode causes luasocket to collect and returns timing information useful
31# for testing and debugging luasocket itself 31# for testing and debugging luasocket itself
32DEBUG?=NODEBUG 32DEBUG?=NODEBUG
33 33
34# COMPAT: COMPAT NOCOMPAT
35# when compiling for 5.2, use LUA_COMPAT_MODULE
36COMPAT?=NOCOMPAT
37
38# where lua headers are found for macosx builds 34# where lua headers are found for macosx builds
39# LUAINC_macosx: 35# LUAINC_macosx:
40# /opt/local/include 36# /opt/local/include
41LUAINC_macosx_base?=/opt/local/include 37LUAINC_macosx_base?=/opt/local/include
42LUAINC_macosx?=$(LUAINC_macosx_base)/lua/$(LUAV) 38LUAINC_macosx?=$(LUAINC_macosx_base)/lua/$(LUAV) $(LUAINC_macosx_base)/lua$(LUAV) $(LUAINC_macosx_base)/lua-$(LUAV)
39
43# FIXME default should this default to fink or to macports? 40# FIXME default should this default to fink or to macports?
44# What happens when more than one Lua version is installed? 41# What happens when more than one Lua version is installed?
45LUAPREFIX_macosx?=/opt/local 42LUAPREFIX_macosx?=/opt/local
@@ -52,16 +49,16 @@ LDIR_macosx?=share/lua/$(LUAV)
52# /usr/local/include/lua$(LUAV) 49# /usr/local/include/lua$(LUAV)
53# where lua headers are found for linux builds 50# where lua headers are found for linux builds
54LUAINC_linux_base?=/usr/include 51LUAINC_linux_base?=/usr/include
55LUAINC_linux?=$(LUAINC_linux_base)/lua/$(LUAV) 52LUAINC_linux?=$(LUAINC_linux_base)/lua/$(LUAV) $(LUAINC_linux_base)/lua$(LUAV)
56LUAPREFIX_linux?=/usr/local 53LUAPREFIX_linux?=/usr/local
57CDIR_linux?=lib/lua/$(LUAV) 54CDIR_linux?=lib/lua/$(LUAV)
58LDIR_linux?=share/lua/$(LUAV) 55LDIR_linux?=share/lua/$(LUAV)
59 56
60# LUAINC_freebsd: 57# LUAINC_freebsd:
61# /usr/local/include/lua$(LUAV) 58# /usr/local/include/lua$(LUAV)
62# where lua headers are found for linux builds 59# where lua headers are found for freebsd builds
63LUAINC_freebsd_base?=/usr/local/include/ 60LUAINC_freebsd_base?=/usr/local/include/
64LUAINC_freebsd?=$(LUAINC_freebsd_base)/lua$(LUAV) 61LUAINC_freebsd?=$(LUAINC_freebsd_base)/lua/$(LUAV) $(LUAINC_freebsd_base)/lua$(LUAV)
65LUAPREFIX_freebsd?=/usr/local/ 62LUAPREFIX_freebsd?=/usr/local/
66CDIR_freebsd?=lib/lua/$(LUAV) 63CDIR_freebsd?=lib/lua/$(LUAV)
67LDIR_freebsd?=share/lua/$(LUAV) 64LDIR_freebsd?=share/lua/$(LUAV)
@@ -70,7 +67,7 @@ LDIR_freebsd?=share/lua/$(LUAV)
70# LUAINC_mingw: 67# LUAINC_mingw:
71# /opt/local/include 68# /opt/local/include
72LUAINC_mingw_base?=/usr/include 69LUAINC_mingw_base?=/usr/include
73LUAINC_mingw?=$(LUAINC_mingw_base)/lua/$(LUAV) 70LUAINC_mingw?=$(LUAINC_mingw_base)/lua/$(LUAV) $(LUAINC_mingw_base)/lua$(LUAV)
74LUALIB_mingw_base?=/usr/bin 71LUALIB_mingw_base?=/usr/bin
75LUALIB_mingw?=$(LUALIB_mingw_base)/lua/$(LUAV)/lua$(subst .,,$(LUAV)).dll 72LUALIB_mingw?=$(LUALIB_mingw_base)/lua/$(LUAV)/lua$(subst .,,$(LUAV)).dll
76LUAPREFIX_mingw?=/usr 73LUAPREFIX_mingw?=/usr
@@ -81,13 +78,32 @@ LDIR_mingw?=lua/$(LUAV)/lua
81# LUAINC_win32: 78# LUAINC_win32:
82# LUALIB_win32: 79# LUALIB_win32:
83# where lua headers and libraries are found for win32 builds 80# where lua headers and libraries are found for win32 builds
84LUAINC_win32_base?=
85LUAINC_win32?=$(LUAINC_win32_base)/lua/$(LUAV)
86PLATFORM_win32?=Release
87LUAPREFIX_win32?= 81LUAPREFIX_win32?=
88CDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32) 82LUAINC_win32?=$(LUAPREFIX_win32)/include/lua/$(LUAV) $(LUAPREFIX_win32)/include/lua$(LUAV)
89LDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32)/lua 83PLATFORM_win32?=Release
90LUALIB_win32?=$(LUAPREFIX_win32)/lua/$(LUAV)/$(PLATFORM_win32) 84CDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)
85LDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)/lua
86LUALIB_win32?=$(LUAPREFIX_win32)/lib/lua/$(LUAV)/$(PLATFORM_win32)
87LUALIBNAME_win32?=lua$(subst .,,$(LUAV)).lib
88
89# LUAINC_win64:
90# LUALIB_win64:
91# where lua headers and libraries are found for win64 builds
92LUAPREFIX_win64?=
93LUAINC_win64?=$(LUAPREFIX_win64)/include/lua/$(LUAV) $(LUAPREFIX_win64)/include/lua$(LUAV)
94PLATFORM_win64?=x64/Release
95CDIR_win64?=bin/lua/$(LUAV)/$(PLATFORM_win64)
96LDIR_win64?=bin/lua/$(LUAV)/$(PLATFORM_win64)/lua
97LUALIB_win64?=$(LUAPREFIX_win64)/lib/lua/$(LUAV)/$(PLATFORM_win64)
98LUALIBNAME_win64?=lua$(subst .,,$(LUAV)).lib
99
100
101# LUAINC_solaris:
102LUAINC_solaris_base?=/usr/include
103LUAINC_solaris?=$(LUAINC_solaris_base)/lua/$(LUAV) $(LUAINC_solaris_base)/lua$(LUAV)
104LUAPREFIX_solaris?=/usr/local
105CDIR_solaris?=lib/lua/$(LUAV)
106LDIR_solaris?=share/lua/$(LUAV)
91 107
92# prefix: /usr/local /usr /opt/local /sw 108# prefix: /usr/local /usr /opt/local /sw
93# the top of the default install tree 109# the top of the default install tree
@@ -98,7 +114,7 @@ LDIR?=$(LDIR_$(PLAT))
98 114
99# DESTDIR: (no default) 115# DESTDIR: (no default)
100# used by package managers to install into a temporary destination 116# used by package managers to install into a temporary destination
101DESTDIR= 117DESTDIR?=
102 118
103#------ 119#------
104# Definitions below can be overridden on the make command line, but 120# Definitions below can be overridden on the make command line, but
@@ -131,11 +147,13 @@ print:
131 @echo LUALIB_$(PLAT)=$(LUALIB_$(PLAT)) 147 @echo LUALIB_$(PLAT)=$(LUALIB_$(PLAT))
132 @echo INSTALL_TOP_CDIR=$(INSTALL_TOP_CDIR) 148 @echo INSTALL_TOP_CDIR=$(INSTALL_TOP_CDIR)
133 @echo INSTALL_TOP_LDIR=$(INSTALL_TOP_LDIR) 149 @echo INSTALL_TOP_LDIR=$(INSTALL_TOP_LDIR)
150 @echo CFLAGS=$(CFLAGS)
151 @echo LDFLAGS=$(LDFLAGS)
134 152
135#------ 153#------
136# Supported platforms 154# Supported platforms
137# 155#
138PLATS= macosx linux win32 mingw 156PLATS= macosx linux win32 win64 mingw solaris
139 157
140#------ 158#------
141# Compiler and linker settings 159# Compiler and linker settings
@@ -143,14 +161,10 @@ PLATS= macosx linux win32 mingw
143SO_macosx=so 161SO_macosx=so
144O_macosx=o 162O_macosx=o
145CC_macosx=gcc 163CC_macosx=gcc
146DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN -DLUA_$(COMPAT)_MODULE \ 164DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
147 -DLUASOCKET_API='__attribute__((visibility("default")))' \ 165CFLAGS_macosx=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
148 -DUNIX_API='__attribute__((visibility("default")))' \ 166LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
149 -DMIME_API='__attribute__((visibility("default")))' 167LD_macosx=gcc
150CFLAGS_macosx= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \
151 -fvisibility=hidden
152LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
153LD_macosx= export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc
154SOCKET_macosx=usocket.o 168SOCKET_macosx=usocket.o
155 169
156#------ 170#------
@@ -159,13 +173,10 @@ SOCKET_macosx=usocket.o
159SO_linux=so 173SO_linux=so
160O_linux=o 174O_linux=o
161CC_linux=gcc 175CC_linux=gcc
162DEF_linux=-DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \ 176DEF_linux=-DLUASOCKET_$(DEBUG)
163 -DLUASOCKET_API='__attribute__((visibility("default")))' \ 177CFLAGS_linux=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
164 -DUNIX_API='__attribute__((visibility("default")))' \ 178 -Wimplicit -O2 -ggdb3 -fpic
165 -DMIME_API='__attribute__((visibility("default")))' 179LDFLAGS_linux=-O -shared -fpic -o
166CFLAGS_linux= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
167 -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
168LDFLAGS_linux=-O -shared -fpic -o
169LD_linux=gcc 180LD_linux=gcc
170SOCKET_linux=usocket.o 181SOCKET_linux=usocket.o
171 182
@@ -175,28 +186,36 @@ SOCKET_linux=usocket.o
175SO_freebsd=so 186SO_freebsd=so
176O_freebsd=o 187O_freebsd=o
177CC_freebsd=gcc 188CC_freebsd=gcc
178DEF_freebsd=-DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \ 189DEF_freebsd=-DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN
179 -DLUASOCKET_API='__attribute__((visibility("default")))' \ 190CFLAGS_freebsd=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
180 -DUNIX_API='__attribute__((visibility("default")))' \ 191 -Wimplicit -O2 -ggdb3 -fpic
181 -DMIME_API='__attribute__((visibility("default")))' 192LDFLAGS_freebsd=-O -shared -fpic -o
182CFLAGS_freebsd= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
183 -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
184LDFLAGS_freebsd=-O -shared -fpic -o
185LD_freebsd=gcc 193LD_freebsd=gcc
186SOCKET_freebsd=usocket.o 194SOCKET_freebsd=usocket.o
187 195
188#------ 196#------
189# Compiler and linker settings 197# Compiler and linker settings
198# for Solaris
199SO_solaris=so
200O_solaris=o
201CC_solaris=gcc
202DEF_solaris=-DLUASOCKET_$(DEBUG)
203CFLAGS_solaris=$(LUAINC:%=-I%) $(DEF) -Wall -Wshadow -Wextra \
204 -Wimplicit -O2 -ggdb3 -fpic
205LDFLAGS_solaris=-lnsl -lsocket -lresolv -O -shared -fpic -o
206LD_solaris=gcc
207SOCKET_solaris=usocket.o
208
209#------
210# Compiler and linker settings
190# for MingW 211# for MingW
191SO_mingw=dll 212SO_mingw=dll
192O_mingw=o 213O_mingw=o
193CC_mingw=gcc 214CC_mingw=gcc
194DEF_mingw= -DLUASOCKET_INET_PTON -DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \ 215DEF_mingw= -DLUASOCKET_$(DEBUG) \
195 -DWINVER=0x0501 -DLUASOCKET_API='__declspec(dllexport)' \ 216 -DWINVER=0x0501
196 -DMIME_API='__declspec(dllexport)' 217CFLAGS_mingw=$(LUAINC:%=-I%) $(DEF) -Wall -O2 -fno-common
197CFLAGS_mingw= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \ 218LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
198 -fvisibility=hidden
199LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
200LD_mingw=gcc 219LD_mingw=gcc
201SOCKET_mingw=wsocket.o 220SOCKET_mingw=wsocket.o
202 221
@@ -208,34 +227,55 @@ SO_win32=dll
208O_win32=obj 227O_win32=obj
209CC_win32=cl 228CC_win32=cl
210DEF_win32= //D "WIN32" //D "NDEBUG" //D "_WINDOWS" //D "_USRDLL" \ 229DEF_win32= //D "WIN32" //D "NDEBUG" //D "_WINDOWS" //D "_USRDLL" \
211 //D "LUASOCKET_API=__declspec(dllexport)" //D "_CRT_SECURE_NO_WARNINGS" \ 230 //D "_CRT_SECURE_NO_WARNINGS" \
212 //D "_WINDLL" //D "LUA_$(COMPAT)_MODULE" \ 231 //D "_WINDLL" \
213 //D "MIME_API=__declspec(dllexport)" \ 232 //D "LUASOCKET_$(DEBUG)"
214 //D "LUASOCKET_$(DEBUG)" 233CFLAGS_win32=$(LUAINC:%=//I "%") $(DEF) //O2 //Ot //MD //W3 //nologo
215CFLAGS_win32=//I "$(LUAINC)" $(DEF) //O2 //Ot //MD //W3 //nologo
216LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \ 234LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
217 //MANIFEST //MANIFESTFILE:"intermediate.manifest" \ 235 //MANIFEST //MANIFESTFILE:"intermediate.manifest" \
218 //MANIFESTUAC:"level='asInvoker' uiAccess='false'" \ 236 /MANIFESTUAC:"level='asInvoker' uiAccess='false'" \
219 //SUBSYSTEM:WINDOWS //OPT:REF //OPT:ICF //DYNAMICBASE:NO \ 237 //SUBSYSTEM:WINDOWS //OPT:REF //OPT:ICF //DYNAMICBASE:NO \
220 //MACHINE:X86 /LIBPATH:"$(shell cmd //c echo $(LUALIB))" \ 238 //MACHINE:X86 /LIBPATH:"$(LUALIB)" \
221 lua$(subst .,,$(LUAV)).lib ws2_32.lib //OUT: 239 $(LUALIBNAME_win32) ws2_32.lib //OUT:
240
222LD_win32=cl 241LD_win32=cl
223SOCKET_win32=wsocket.obj 242SOCKET_win32=wsocket.obj
224 243
244#------
245# Compiler and linker settings
246# for Win64
247SO_win64=dll
248O_win64=obj
249CC_win64=cl
250DEF_win64= //D "WIN32" //D "NDEBUG" //D "_WINDOWS" //D "_USRDLL" \
251 //D "_CRT_SECURE_NO_WARNINGS" \
252 //D "_WINDLL" \
253 //D "LUASOCKET_$(DEBUG)"
254CFLAGS_win64=$(LUAINC:%=//I "%") $(DEF) //O2 //Ot //MD //W3 //nologo
255LDFLAGS_win64= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
256 //MANIFEST //MANIFESTFILE:"intermediate.manifest" \
257 /MANIFESTUAC:"level='asInvoker' uiAccess='false'" \
258 //SUBSYSTEM:WINDOWS //OPT:REF //OPT:ICF //DYNAMICBASE:NO \
259 /LIBPATH:"$(LUALIB)" \
260 $(LUALIBNAME_win64) ws2_32.lib //OUT:
261
262LD_win64=cl
263SOCKET_win64=wsocket.obj
264
225.SUFFIXES: .obj 265.SUFFIXES: .obj
226 266
227.c.obj: 267.c.obj:
228 $(CC) $(LUASOCKET_CFLAGS) //Fo"$@" //c $< 268 $(CC) $(CFLAGS) //Fo"$@" //c $<
229 269
230#------ 270#------
231# Output file names 271# Output file names
232# 272#
233SO=$(SO_$(PLAT)) 273SO=$(SO_$(PLAT))
234O=$(O_$(PLAT)) 274O=$(O_$(PLAT))
235SOCKET_V=3.0-rc1 275SOCKET_V=3.0.0
236MIME_V=1.0.3 276MIME_V=1.0.3
237SOCKET_SO=socket.$(SO).$(SOCKET_V) 277SOCKET_SO=socket-$(SOCKET_V).$(SO)
238MIME_SO=mime.$(SO).$(MIME_V) 278MIME_SO=mime-$(MIME_V).$(SO)
239UNIX_SO=unix.$(SO) 279UNIX_SO=unix.$(SO)
240SERIAL_SO=serial.$(SO) 280SERIAL_SO=serial.$(SO)
241SOCKET=$(SOCKET_$(PLAT)) 281SOCKET=$(SOCKET_$(PLAT))
@@ -286,6 +326,9 @@ UNIX_OBJS=\
286 timeout.$(O) \ 326 timeout.$(O) \
287 io.$(O) \ 327 io.$(O) \
288 usocket.$(O) \ 328 usocket.$(O) \
329 unixstream.$(O) \
330 unixdgram.$(O) \
331 compat.$(O) \
289 unix.$(O) 332 unix.$(O)
290 333
291#------ 334#------
@@ -293,6 +336,7 @@ UNIX_OBJS=\
293# 336#
294SERIAL_OBJS=\ 337SERIAL_OBJS=\
295 buffer.$(O) \ 338 buffer.$(O) \
339 compat.$(O) \
296 auxiliar.$(O) \ 340 auxiliar.$(O) \
297 options.$(O) \ 341 options.$(O) \
298 timeout.$(O) \ 342 timeout.$(O) \
@@ -331,12 +375,18 @@ macosx:
331win32: 375win32:
332 $(MAKE) all PLAT=win32 376 $(MAKE) all PLAT=win32
333 377
378win64:
379 $(MAKE) all PLAT=win64
380
334linux: 381linux:
335 $(MAKE) all-unix PLAT=linux 382 $(MAKE) all-unix PLAT=linux
336 383
337mingw: 384mingw:
338 $(MAKE) all PLAT=mingw 385 $(MAKE) all PLAT=mingw
339 386
387solaris:
388 $(MAKE) all-unix PLAT=solaris
389
340none: 390none:
341 @echo "Please run" 391 @echo "Please run"
342 @echo " make PLATFORM" 392 @echo " make PLATFORM"
@@ -359,7 +409,7 @@ $(UNIX_SO): $(UNIX_OBJS)
359$(SERIAL_SO): $(SERIAL_OBJS) 409$(SERIAL_SO): $(SERIAL_OBJS)
360 $(LD) $(SERIAL_OBJS) $(LDFLAGS)$@ 410 $(LD) $(SERIAL_OBJS) $(LDFLAGS)$@
361 411
362install: 412install:
363 $(INSTALL_DIR) $(INSTALL_TOP_LDIR) 413 $(INSTALL_DIR) $(INSTALL_TOP_LDIR)
364 $(INSTALL_DATA) $(TO_TOP_LDIR) $(INSTALL_TOP_LDIR) 414 $(INSTALL_DATA) $(TO_TOP_LDIR) $(INSTALL_TOP_LDIR)
365 $(INSTALL_DIR) $(INSTALL_SOCKET_LDIR) 415 $(INSTALL_DIR) $(INSTALL_SOCKET_LDIR)