1*4882a593SmuzhiyunAdd the compilation of a shared library. 2*4882a593SmuzhiyunCompile the lua binary with the shared library. 3*4882a593SmuzhiyunAnd install the shared library. 4*4882a593SmuzhiyunThe variable BUILDMODE allows to switch between static and dynamic mode. 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunSigned-off-by: Francois Perrad <francois.perrad@gadz.org> 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunIndex: b/Makefile 9*4882a593Smuzhiyun=================================================================== 10*4882a593Smuzhiyun--- a/Makefile 11*4882a593Smuzhiyun+++ b/Makefile 12*4882a593Smuzhiyun@@ -44,6 +44,7 @@ 13*4882a593Smuzhiyun TO_BIN= lua luac 14*4882a593Smuzhiyun TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp 15*4882a593Smuzhiyun TO_LIB= liblua.a 16*4882a593Smuzhiyun+TO_SOLIB = liblua.so.$(R) 17*4882a593Smuzhiyun TO_MAN= lua.1 luac.1 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun # Lua version and release. 20*4882a593Smuzhiyun@@ -61,6 +62,8 @@ 21*4882a593Smuzhiyun install: dummy 22*4882a593Smuzhiyun cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) 23*4882a593Smuzhiyun cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) 24*4882a593Smuzhiyun+ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : 25*4882a593Smuzhiyun+ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : 26*4882a593Smuzhiyun cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) 27*4882a593Smuzhiyun cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) 28*4882a593Smuzhiyun cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) 29*4882a593SmuzhiyunIndex: b/src/Makefile 30*4882a593Smuzhiyun=================================================================== 31*4882a593Smuzhiyun--- a/src/Makefile 32*4882a593Smuzhiyun+++ b/src/Makefile 33*4882a593Smuzhiyun@@ -23,6 +23,7 @@ 34*4882a593Smuzhiyun PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun LUA_A= liblua.a 37*4882a593Smuzhiyun+LUA_SO= liblua.so 38*4882a593Smuzhiyun CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ 39*4882a593Smuzhiyun lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \ 40*4882a593Smuzhiyun lundump.o lvm.o lzio.o 41*4882a593Smuzhiyun@@ -36,8 +37,13 @@ 42*4882a593Smuzhiyun LUAC_O= luac.o print.o 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O) 45*4882a593Smuzhiyun+ifneq (dynamic,$(BUILDMODE)) 46*4882a593Smuzhiyun ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) 47*4882a593Smuzhiyun+else 48*4882a593Smuzhiyun+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) 49*4882a593Smuzhiyun+endif 50*4882a593Smuzhiyun ALL_A= $(LUA_A) 51*4882a593Smuzhiyun+ALL_SO= $(LUA_SO) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun default: $(PLAT) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun@@ -47,12 +53,23 @@ 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun a: $(ALL_A) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun+so: $(ALL_SO) 60*4882a593Smuzhiyun+ 61*4882a593Smuzhiyun $(LUA_A): $(CORE_O) $(LIB_O) 62*4882a593Smuzhiyun $(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files 63*4882a593Smuzhiyun $(RANLIB) $@ 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun+$(LUA_SO): $(CORE_O) $(LIB_O) 66*4882a593Smuzhiyun+ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? 67*4882a593Smuzhiyun+ ln -fs $@.$(PKG_VERSION) $@ 68*4882a593Smuzhiyun+ 69*4882a593Smuzhiyun+ifneq (dynamic,$(BUILDMODE)) 70*4882a593Smuzhiyun $(LUA_T): $(LUA_O) $(LUA_A) 71*4882a593Smuzhiyun $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) 72*4882a593Smuzhiyun+else 73*4882a593Smuzhiyun+$(LUA_T): $(LUA_O) $(LUA_SO) 74*4882a593Smuzhiyun+ $(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS) 75*4882a593Smuzhiyun+endif 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun $(LUAC_T): $(LUAC_O) $(LUA_A) 78*4882a593Smuzhiyun $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) 79