Add support to build with static or dynamic linking to Lua - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.abbate@gmail.com>2013年08月24日 19:08:12 +0200
committerFrancesco Abbate <francesco.abbate@gmail.com>2013年08月24日 19:08:12 +0200
commit71359b2215ea6943e3e7d4d4065b5568d8a853ce (patch)
tree0ae6bba062f23770fec6578807def456ab73c980
parentf10ae615a68d4e217de77a9ac55b4e07baa78335 (diff)
downloadgsl-shell-71359b2215ea6943e3e7d4d4065b5568d8a853ce.tar.gz
Add support to build with static or dynamic linking to Lua
Diffstat
-rw-r--r--Makefile 29
-rw-r--r--luajit2/src/Makefile 7
-rw-r--r--makeconfig 3
-rw-r--r--makedefs 13
4 files changed, 43 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 53321e47..ba871587 100644
--- a/Makefile
+++ b/Makefile
@@ -84,10 +84,17 @@ INCLUDES += $(PTHREADS_CFLAGS) -Iagg-plot
LUAGSL_LIBS += $(GSH_LIBDIR)/libaggplot.a
LIBS += $(AGG_LIBS) $(FREETYPE_LIBS) $(PTHREADS_LIBS)
-LUAGSL_LIBS += $(GSH_LIBDIR)/libluajit.a $(GSH_LIBDIR)/libluagsl.a $(GSH_LIBDIR)/libgdt.a
+ifneq ($(BUILDMODE),dynamic)
+ LUAGSL_LIBS += $(GSH_LIBDIR)/libluajit.a
+endif
+ifeq ($(BUILDMODE),dynamic)
+ GSL_SHELL_DEP = $(LUAJIT_SO) libluajit-$(ABIVER).so.$(MAJVER)
+ LIBS += -L$(GSH_DLL_LIBDIR) -l$(LUAJIT_DLL)
+endif
-LUAGSL_OBJ_FILES = $(C_SRC_FILES:%.c=%.o)
+LUAGSL_LIBS += $(GSH_LIBDIR)/libluagsl.a $(GSH_LIBDIR)/libgdt.a
+LUAGSL_OBJ_FILES = $(C_SRC_FILES:%.c=%.o)
DEP_FILES := $(C_SRC_FILES:%.c=.deps/%.P)
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
@@ -96,9 +103,11 @@ LIBS_MAGIC := $(shell mkdir .libs > /dev/null 2>&1 || :)
ifeq ($(HOST_SYS),Windows)
INSTALL_BIN_DIR = $(DESTDIR)$(PREFIX)
INSTALL_LIB_DIR = $(DESTDIR)$(PREFIX)/$(PACKAGE_NAME)
+ INSTALL_SYS_LIB_DIR = $(INSTALL_BIN_DIR)
else
INSTALL_BIN_DIR = $(DESTDIR)$(PREFIX)/bin
INSTALL_LIB_DIR = $(DESTDIR)$(PREFIX)/share/$(PACKAGE_NAME)/$(PACKAGE_VERSION)
+ INSTALL_SYS_LIB_DIR = $(DESTDIR)$(PREFIX)/lib
endif
LIBS += $(GSL_LIBS) -lm
@@ -123,12 +132,13 @@ $(GSH_LIBDIR)/libluagsl.a: lua-gsl
$(GSH_LIBDIR)/libgdt.a: gdt
$(GSH_LIBDIR)/libaggplot.a: agg-plot
$(FOXGUI_LIB): $(FOXGUI_DIR)
+$(LUAJIT_SO): $(LUADIR)
-$(GSL_SHELL): $(LUAGSL_OBJ_FILES) $(LUAGSL_LIBS) $(SUBDIRS)
+$(GSL_SHELL): $(LUAGSL_OBJ_FILES) $(LUAGSL_LIBS) $(GSL_SHELL_DEP) $(SUBDIRS)
@echo Linking $@
$(LINK_EXE) -o $@ $(LUAGSL_OBJ_FILES) $(LUAGSL_LIBS) $(LIBS)
-$(GSL_SHELL_GUI): $(FOXGUI_LIB) $(LUAGSL_LIBS) $(SUBDIRS) $(FOXGUI_DIR)
+$(GSL_SHELL_GUI): $(FOXGUI_LIB) $(LUAGSL_LIBS) $(GSL_SHELL_DEP) $(SUBDIRS) $(FOXGUI_DIR)
@echo Linking $@
$(LINK_EXE) -o $@ $(FOXGUI_LIB) $(LUAGSL_LIBS) $(LIBS) $(FOX_LIBS) $(FOXGUI_LDFLAGS)
@@ -136,6 +146,12 @@ install: $(GSL_SHELL) $(GSL_SHELL_GUI)
mkdir -p $(INSTALL_BIN_DIR)
cp $(GSL_SHELL) $(INSTALL_BIN_DIR)
cp $(GSL_SHELL_GUI) $(INSTALL_BIN_DIR)
+ test -f $(LUAJIT_SO) && \
+ mkdir -p $(INSTALL_SYS_LIB_DIR) && \
+ cp $(LUAJIT_SO) $(INSTALL_SYS_LIB_DIR) && \
+ cd $(INSTALL_SYS_LIB_DIR) && \
+ ln -s libluajit.so libluajit-$(ABIVER).so && \
+ ln -s libluajit-$(ABIVER).so libluajit-$(ABIVER).so.$(MAJVER) || :
strip $(INSTALL_BIN_DIR)/$(GSL_SHELL)
strip $(INSTALL_BIN_DIR)/$(GSL_SHELL_GUI)
mkdir -p $(INSTALL_LIB_DIR)
@@ -146,6 +162,11 @@ install: $(GSL_SHELL) $(GSL_SHELL_GUI)
include makerules
+libluajit-$(ABIVER).so.$(MAJVER): $(LUAJIT_SO)
+ $(HOST_RM) libluajit-$(ABIVER).so.$(MAJVER) libluajit-$(ABIVER).so
+ ln -s libluajit.so libluajit-$(ABIVER).so
+ ln -s libluajit-$(ABIVER).so libluajit-$(ABIVER).so.$(MAJVER)
+
clean:
for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir clean; \
diff --git a/luajit2/src/Makefile b/luajit2/src/Makefile
index bc760073..b3a92341 100644
--- a/luajit2/src/Makefile
+++ b/luajit2/src/Makefile
@@ -75,7 +75,7 @@ CCWARN= -Wall
#BUILDMODE= mixed
#
# Static mode creates a static library and a statically linked luajit.
-BUILDMODE= static
+#BUILDMODE= static
#
# Dynamic mode creates a dynamic library and a dynamically linked luajit.
# Note: this executable will only run when the library is installed!
@@ -151,6 +151,7 @@ XCFLAGS=
include ../../makeconfig
GSH_LIBDIR = ../../.libs
+GSH_DLL_LIBDIR = ../..
ifeq ($(strip $(LUA_BUILD)), no)
XCFLAGS += -DGSH_SHORT_FSYNTAX -DGSL_SHELL -D_REENTRANT -DPACKAGE_NAME=gsl-shell -DPACKAGE_VERSION=2.3
@@ -573,8 +574,8 @@ E= @echo
##############################################################################
default all: $(TARGET_T)
- $(E) "Copying luajit $(LUAJIT_A)"
- $(Q)$(TARGET_COPY) $(LUAJIT_A) $(GSH_LIBDIR)
+ test -f $(LUAJIT_SO) && $(TARGET_COPY) $(LUAJIT_SO) $(GSH_DLL_LIBDIR) || :
+ test -f $(LUAJIT_A) && $(TARGET_COPY) $(LUAJIT_A) $(GSH_LIBDIR) || :
amalg:
@grep "^[+|]" ljamalg.c
diff --git a/makeconfig b/makeconfig
index 645c6c82..fcfdd91d 100644
--- a/makeconfig
+++ b/makeconfig
@@ -19,5 +19,8 @@ DEBUG = no
USE_READLINE = yes
+# can be: static, mixed or dynamic
+BUILDMODE = static
+
PREFIX= /usr/local
DESTDIR=
diff --git a/makedefs b/makedefs
index ae2b8f74..b3a3b83a 100644
--- a/makedefs
+++ b/makedefs
@@ -9,6 +9,12 @@
# Copyright (C) 2009-2010 Francesco Abbate. See Copyright Notice in gsl-shell.c
##############################################################################
+MAJVER= 2
+MINVER= 0
+RELVER= 0
+ABIVER= 5.1
+NODOTABIVER= 51
+
AR= ar rcu
RANLIB= ranlib
CP_REL = cp --parents
@@ -43,7 +49,7 @@ endif
ifeq ($(strip $(LUA_BUILD)), yes)
PACKAGE_NAME = lua
- PACKAGE_VERSION = 5.1
+ PACKAGE_VERSION = $(ABIVER)
else
PACKAGE_NAME = gsl-shell
PACKAGE_VERSION = 2.3
@@ -67,13 +73,16 @@ ifeq ($(HOST_SYS),Windows)
GSL_SHELL = gsl-shell.exe
GSL_SHELL_GUI = gsl-shell-gui.exe
+ LUAJIT_DLL = lua$(NODOTABIVER)
+ LUAJIT_SO = $(GSH_DLL_LIBDIR)/$(LUAJIT_DLL).dll
else
DEFS += -pthread
LIBS += -pthread
- LDFLAGS += -Wl,-E
GSL_SHELL = gsl-shell
GSL_SHELL_GUI = gsl-shell-gui
+ LUAJIT_DLL = luajit
+ LUAJIT_SO = $(GSH_DLL_LIBDIR)/lib$(LUAJIT_DLL).so
endif
ifeq ($(strip $(DEBUG)), yes)
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月19日 15:07:23 +0000

AltStyle によって変換されたページ (->オリジナル) /