1*088332b5SXin Li# Makefile for building Lua 2*088332b5SXin Li# See ../doc/readme.html for installation and customization instructions. 3*088332b5SXin Li 4*088332b5SXin Li# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= 5*088332b5SXin Li 6*088332b5SXin Li# Your platform. See PLATS for possible values. 7*088332b5SXin LiPLAT= guess 8*088332b5SXin Li 9*088332b5SXin LiCC= gcc -std=gnu99 10*088332b5SXin LiCFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS) 11*088332b5SXin LiLDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS) 12*088332b5SXin LiLIBS= -lm $(SYSLIBS) $(MYLIBS) 13*088332b5SXin Li 14*088332b5SXin LiAR= ar rcu 15*088332b5SXin LiRANLIB= ranlib 16*088332b5SXin LiRM= rm -f 17*088332b5SXin LiUNAME= uname 18*088332b5SXin Li 19*088332b5SXin LiSYSCFLAGS= 20*088332b5SXin LiSYSLDFLAGS= 21*088332b5SXin LiSYSLIBS= 22*088332b5SXin Li 23*088332b5SXin LiMYCFLAGS= 24*088332b5SXin LiMYLDFLAGS= 25*088332b5SXin LiMYLIBS= 26*088332b5SXin LiMYOBJS= 27*088332b5SXin Li 28*088332b5SXin Li# Special flags for compiler modules; -Os reduces code size. 29*088332b5SXin LiCMCFLAGS= -Os 30*088332b5SXin Li 31*088332b5SXin Li# == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE ======= 32*088332b5SXin Li 33*088332b5SXin LiPLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris 34*088332b5SXin Li 35*088332b5SXin LiLUA_A= liblua.a 36*088332b5SXin LiCORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o 37*088332b5SXin LiLIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o 38*088332b5SXin LiBASE_O= $(CORE_O) $(LIB_O) $(MYOBJS) 39*088332b5SXin Li 40*088332b5SXin LiLUA_T= lua 41*088332b5SXin LiLUA_O= lua.o 42*088332b5SXin Li 43*088332b5SXin LiLUAC_T= luac 44*088332b5SXin LiLUAC_O= luac.o 45*088332b5SXin Li 46*088332b5SXin LiALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) 47*088332b5SXin LiALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) 48*088332b5SXin LiALL_A= $(LUA_A) 49*088332b5SXin Li 50*088332b5SXin Li# Targets start here. 51*088332b5SXin Lidefault: $(PLAT) 52*088332b5SXin Li 53*088332b5SXin Liall: $(ALL_T) 54*088332b5SXin Li 55*088332b5SXin Lio: $(ALL_O) 56*088332b5SXin Li 57*088332b5SXin Lia: $(ALL_A) 58*088332b5SXin Li 59*088332b5SXin Li$(LUA_A): $(BASE_O) 60*088332b5SXin Li $(AR) $@ $(BASE_O) 61*088332b5SXin Li $(RANLIB) $@ 62*088332b5SXin Li 63*088332b5SXin Li$(LUA_T): $(LUA_O) $(LUA_A) 64*088332b5SXin Li $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) 65*088332b5SXin Li 66*088332b5SXin Li$(LUAC_T): $(LUAC_O) $(LUA_A) 67*088332b5SXin Li $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) 68*088332b5SXin Li 69*088332b5SXin Litest: 70*088332b5SXin Li ./lua -v 71*088332b5SXin Li 72*088332b5SXin Liclean: 73*088332b5SXin Li $(RM) $(ALL_T) $(ALL_O) 74*088332b5SXin Li 75*088332b5SXin Lidepend: 76*088332b5SXin Li @$(CC) $(CFLAGS) -MM l*.c 77*088332b5SXin Li 78*088332b5SXin Liecho: 79*088332b5SXin Li @echo "PLAT= $(PLAT)" 80*088332b5SXin Li @echo "CC= $(CC)" 81*088332b5SXin Li @echo "CFLAGS= $(CFLAGS)" 82*088332b5SXin Li @echo "LDFLAGS= $(SYSLDFLAGS)" 83*088332b5SXin Li @echo "LIBS= $(LIBS)" 84*088332b5SXin Li @echo "AR= $(AR)" 85*088332b5SXin Li @echo "RANLIB= $(RANLIB)" 86*088332b5SXin Li @echo "RM= $(RM)" 87*088332b5SXin Li @echo "UNAME= $(UNAME)" 88*088332b5SXin Li 89*088332b5SXin Li# Convenience targets for popular platforms. 90*088332b5SXin LiALL= all 91*088332b5SXin Li 92*088332b5SXin Lihelp: 93*088332b5SXin Li @echo "Do 'make PLATFORM' where PLATFORM is one of these:" 94*088332b5SXin Li @echo " $(PLATS)" 95*088332b5SXin Li @echo "See doc/readme.html for complete instructions." 96*088332b5SXin Li 97*088332b5SXin Liguess: 98*088332b5SXin Li @echo Guessing `$(UNAME)` 99*088332b5SXin Li @$(MAKE) `$(UNAME)` 100*088332b5SXin Li 101*088332b5SXin LiAIX aix: 102*088332b5SXin Li $(MAKE) $(ALL) CC="xlc" CFLAGS="-O2 -DLUA_USE_POSIX -DLUA_USE_DLOPEN" SYSLIBS="-ldl" SYSLDFLAGS="-brtl -bexpall" 103*088332b5SXin Li 104*088332b5SXin Libsd: 105*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" SYSLIBS="-Wl,-E" 106*088332b5SXin Li 107*088332b5SXin Lic89: 108*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_C89" CC="gcc -std=c89" 109*088332b5SXin Li @echo '' 110*088332b5SXin Li @echo '*** C89 does not guarantee 64-bit integers for Lua.' 111*088332b5SXin Li @echo '' 112*088332b5SXin Li 113*088332b5SXin LiFreeBSD NetBSD OpenBSD freebsd: 114*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_READLINE -I/usr/include/edit" SYSLIBS="-Wl,-E -ledit" CC="cc" 115*088332b5SXin Li 116*088332b5SXin Ligeneric: $(ALL) 117*088332b5SXin Li 118*088332b5SXin LiLinux linux: linux-noreadline 119*088332b5SXin Li 120*088332b5SXin Lilinux-noreadline: 121*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl" 122*088332b5SXin Li 123*088332b5SXin Lilinux-readline: 124*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_READLINE" SYSLIBS="-Wl,-E -ldl -lreadline" 125*088332b5SXin Li 126*088332b5SXin LiDarwin macos macosx: 127*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX -DLUA_USE_READLINE" SYSLIBS="-lreadline" 128*088332b5SXin Li 129*088332b5SXin Limingw: 130*088332b5SXin Li $(MAKE) "LUA_A=lua54.dll" "LUA_T=lua.exe" \ 131*088332b5SXin Li "AR=$(CC) -shared -o" "RANLIB=strip --strip-unneeded" \ 132*088332b5SXin Li "SYSCFLAGS=-DLUA_BUILD_AS_DLL" "SYSLIBS=" "SYSLDFLAGS=-s" lua.exe 133*088332b5SXin Li $(MAKE) "LUAC_T=luac.exe" luac.exe 134*088332b5SXin Li 135*088332b5SXin Liposix: 136*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_POSIX" 137*088332b5SXin Li 138*088332b5SXin LiSunOS solaris: 139*088332b5SXin Li $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN -D_REENTRANT" SYSLIBS="-ldl" 140*088332b5SXin Li 141*088332b5SXin Li# Targets that do not create files (not all makes understand .PHONY). 142*088332b5SXin Li.PHONY: all $(PLATS) help test clean default o a depend echo 143*088332b5SXin Li 144*088332b5SXin Li# Compiler modules may use special flags. 145*088332b5SXin Lillex.o: 146*088332b5SXin Li $(CC) $(CFLAGS) $(CMCFLAGS) -c llex.c 147*088332b5SXin Li 148*088332b5SXin Lilparser.o: 149*088332b5SXin Li $(CC) $(CFLAGS) $(CMCFLAGS) -c lparser.c 150*088332b5SXin Li 151*088332b5SXin Lilcode.o: 152*088332b5SXin Li $(CC) $(CFLAGS) $(CMCFLAGS) -c lcode.c 153*088332b5SXin Li 154*088332b5SXin Li# DO NOT DELETE 155*088332b5SXin Li 156*088332b5SXin Lilapi.o: lapi.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \ 157*088332b5SXin Li lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lstring.h \ 158*088332b5SXin Li ltable.h lundump.h lvm.h 159*088332b5SXin Lilauxlib.o: lauxlib.c lprefix.h lua.h luaconf.h lauxlib.h 160*088332b5SXin Lilbaselib.o: lbaselib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 161*088332b5SXin Lilcode.o: lcode.c lprefix.h lua.h luaconf.h lcode.h llex.h lobject.h \ 162*088332b5SXin Li llimits.h lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h \ 163*088332b5SXin Li ldo.h lgc.h lstring.h ltable.h lvm.h 164*088332b5SXin Lilcorolib.o: lcorolib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 165*088332b5SXin Lilctype.o: lctype.c lprefix.h lctype.h lua.h luaconf.h llimits.h 166*088332b5SXin Lildblib.o: ldblib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 167*088332b5SXin Lildebug.o: ldebug.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \ 168*088332b5SXin Li lobject.h ltm.h lzio.h lmem.h lcode.h llex.h lopcodes.h lparser.h \ 169*088332b5SXin Li ldebug.h ldo.h lfunc.h lstring.h lgc.h ltable.h lvm.h 170*088332b5SXin Lildo.o: ldo.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \ 171*088332b5SXin Li lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h \ 172*088332b5SXin Li lparser.h lstring.h ltable.h lundump.h lvm.h 173*088332b5SXin Lildump.o: ldump.c lprefix.h lua.h luaconf.h lobject.h llimits.h lstate.h \ 174*088332b5SXin Li ltm.h lzio.h lmem.h lundump.h 175*088332b5SXin Lilfunc.o: lfunc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 176*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h 177*088332b5SXin Lilgc.o: lgc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 178*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h 179*088332b5SXin Lilinit.o: linit.c lprefix.h lua.h luaconf.h lualib.h lauxlib.h 180*088332b5SXin Liliolib.o: liolib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 181*088332b5SXin Lillex.o: llex.c lprefix.h lua.h luaconf.h lctype.h llimits.h ldebug.h \ 182*088332b5SXin Li lstate.h lobject.h ltm.h lzio.h lmem.h ldo.h lgc.h llex.h lparser.h \ 183*088332b5SXin Li lstring.h ltable.h 184*088332b5SXin Lilmathlib.o: lmathlib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 185*088332b5SXin Lilmem.o: lmem.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 186*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lgc.h 187*088332b5SXin Liloadlib.o: loadlib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 188*088332b5SXin Lilobject.o: lobject.c lprefix.h lua.h luaconf.h lctype.h llimits.h \ 189*088332b5SXin Li ldebug.h lstate.h lobject.h ltm.h lzio.h lmem.h ldo.h lstring.h lgc.h \ 190*088332b5SXin Li lvm.h 191*088332b5SXin Lilopcodes.o: lopcodes.c lprefix.h lopcodes.h llimits.h lua.h luaconf.h 192*088332b5SXin Liloslib.o: loslib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 193*088332b5SXin Lilparser.o: lparser.c lprefix.h lua.h luaconf.h lcode.h llex.h lobject.h \ 194*088332b5SXin Li llimits.h lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h \ 195*088332b5SXin Li ldo.h lfunc.h lstring.h lgc.h ltable.h 196*088332b5SXin Lilstate.o: lstate.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \ 197*088332b5SXin Li lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h llex.h \ 198*088332b5SXin Li lstring.h ltable.h 199*088332b5SXin Lilstring.o: lstring.c lprefix.h lua.h luaconf.h ldebug.h lstate.h \ 200*088332b5SXin Li lobject.h llimits.h ltm.h lzio.h lmem.h ldo.h lstring.h lgc.h 201*088332b5SXin Lilstrlib.o: lstrlib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 202*088332b5SXin Liltable.o: ltable.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 203*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lgc.h lstring.h ltable.h lvm.h 204*088332b5SXin Liltablib.o: ltablib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 205*088332b5SXin Liltm.o: ltm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 206*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lgc.h lstring.h ltable.h lvm.h 207*088332b5SXin Lilua.o: lua.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 208*088332b5SXin Liluac.o: luac.c lprefix.h lua.h luaconf.h lauxlib.h ldebug.h lstate.h \ 209*088332b5SXin Li lobject.h llimits.h ltm.h lzio.h lmem.h lopcodes.h lopnames.h lundump.h 210*088332b5SXin Lilundump.o: lundump.c lprefix.h lua.h luaconf.h ldebug.h lstate.h \ 211*088332b5SXin Li lobject.h llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h \ 212*088332b5SXin Li lundump.h 213*088332b5SXin Lilutf8lib.o: lutf8lib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 214*088332b5SXin Lilvm.o: lvm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 215*088332b5SXin Li llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h \ 216*088332b5SXin Li ltable.h lvm.h ljumptab.h 217*088332b5SXin Lilzio.o: lzio.c lprefix.h lua.h luaconf.h llimits.h lmem.h lstate.h \ 218*088332b5SXin Li lobject.h ltm.h lzio.h 219*088332b5SXin Li 220*088332b5SXin Li# (end of Makefile) 221