From a68d8735e0a2804fa13e07738b0c63bd153179dd Mon Sep 17 00:00:00 2001 From: GreatEmerald Date: Sun, 16 Nov 2014 15:51:24 +0200 Subject: [PATCH 1/2] Allow building LuaD as a shared library Off by default, enable with LIB=shared --- Makefile | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 9266866..10c9503 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ MODEL ?= $(shell getconf LONG_BIT) BUILD ?= debug LUA ?= lua +LIB ?= static ifneq ($(MODEL), 32) ifneq ($(MODEL), 64) @@ -20,6 +21,12 @@ ifeq ($(LUA), ) $(error No Lua library set) endif +ifneq ($(LIB), static) + ifneq ($(LIB), shared) + $(error Unknown library type: $(LIB)) + endif +endif + DFLAGS = -w -wi -ignore -m$(MODEL) ifeq ($(BUILD), release) @@ -41,7 +48,11 @@ else else LUAD_NAME = libluad endif - LUAD_OUTPUT = lib/$(LUAD_NAME).a + ifeq ($(LIB), static) + LUAD_OUTPUT = lib/$(LUAD_NAME).a + else + LUAD_OUTPUT = lib/$(LUAD_NAME).so + endif endif all: $(LUAD_OUTPUT) @@ -49,8 +60,9 @@ all: $(LUAD_OUTPUT) clean: -rm -f lib/$(LUAD_NAME).o -rm -f lib/$(LUAD_NAME).a - -rm -f lib/$(LUAD_NAME).deps - -rm -f lib/$(LUAD_NAME).json + -rm -f lib/$(LUAD_NAME).so + -rm -f $(wildcard lib/libluad*.deps) + -rm -f $(wildcard lib/libluad*.json) -rm -f $(wildcard lib/luad.*.lst) -rm -f test/luad_unittest -rm -f test/luad_unittest.o @@ -59,7 +71,11 @@ clean: LUAD_DFLAGS = $(DFLAGS) -L-l$(LUA) ifneq ($(BUILD), test) - LUAD_DFLAGS += -lib -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" + ifeq ($(LIB), static) + LUAD_DFLAGS += -lib -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" + else + LUAD_DFLAGS += -shared -fPIC -defaultlib=libphobos2.so -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" + endif else LUAD_DFLAGS += -version=luad_unittest_main endif @@ -72,6 +88,14 @@ lib/libluad-d.a: $(LUAD_SOURCES) if ! test -d lib; then mkdir lib; fi dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); +lib/libluad.so: $(LUAD_SOURCES) + if ! test -d lib; then mkdir lib; fi + dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); + +lib/libluad-d.so: $(LUAD_SOURCES) + if ! test -d lib; then mkdir lib; fi + dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); + test/luad_unittest: $(LUAD_SOURCES) if ! test -d test; then mkdir test; fi dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); From 613e2224bab4ef9616bb50f20ca4a71e519b41be Mon Sep 17 00:00:00 2001 From: GreatEmerald Date: Mon, 24 Nov 2014 22:47:50 +0200 Subject: [PATCH 2/2] Add support for SONAME in the shared library build Set to .0, and the real name set to .0.0.0 due to the lack of actual releases. --- Makefile | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 10c9503..168b9a9 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ all: $(LUAD_OUTPUT) clean: -rm -f lib/$(LUAD_NAME).o -rm -f lib/$(LUAD_NAME).a - -rm -f lib/$(LUAD_NAME).so + -rm -f $(wildcard lib/$(LUAD_NAME).so*) -rm -f $(wildcard lib/libluad*.deps) -rm -f $(wildcard lib/libluad*.json) -rm -f $(wildcard lib/luad.*.lst) @@ -74,7 +74,7 @@ ifneq ($(BUILD), test) ifeq ($(LIB), static) LUAD_DFLAGS += -lib -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" else - LUAD_DFLAGS += -shared -fPIC -defaultlib=libphobos2.so -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" + LUAD_DFLAGS += -shared -fPIC -defaultlib=libphobos2.so -L-soname=$(LUAD_NAME).so.0 -X -Xf"lib/libluad.json" -deps="lib/libluad.deps" endif else LUAD_DFLAGS += -version=luad_unittest_main @@ -88,11 +88,13 @@ lib/libluad-d.a: $(LUAD_SOURCES) if ! test -d lib; then mkdir lib; fi dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); -lib/libluad.so: $(LUAD_SOURCES) - if ! test -d lib; then mkdir lib; fi - dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES); +lib/libluad.so lib/libluad-d.so: lib/$(LUAD_NAME).so.0 + ln -sf $(LUAD_NAME).so.0 $@ + +lib/libluad.so.0 lib/libluad-d.so.0: lib/$(LUAD_NAME).so.0.0.0 + ln -sf $(LUAD_NAME).so.0.0.0 $@ -lib/libluad-d.so: $(LUAD_SOURCES) +lib/libluad.so.0.0.0 lib/libluad-d.so.0.0.0: $(LUAD_SOURCES) if ! test -d lib; then mkdir lib; fi dmd $(LUAD_DFLAGS) -of$@ $(LUAD_SOURCES);