diff --git a/Makefile b/Makefile index ca0c2df..e95219e 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ # TEXLIVE_SRC must be a precompiled TEXLIVE build with dynamic libraries TEXLIVE_SRC = $(HOME)/texlive-source +LUAMETATEX_SRC = $(HOME)/luametatex # We expect to find a precompiled static library compiled with -fpic here -LUA_DIR = $(HOME)/lua/ +LUA_DIR = $(LUAMETATEX_SRC)/source/luacore/lua54/src # HarfBuzz also should be compiled static, position independent in a build_meson subdirectory HARFBUZZ_DIR = $(TEXLIVE_SRC)/Work/libs/harfbuzz # Graphite also should be compiled static, position independent in a build subdirectory @@ -10,6 +11,7 @@ GRAPHITE_DIR = $(TEXLIVE_SRC)/Work/libs/graphite2 HB_INCLUDE_DIRS = $(HARFBUZZ_DIR)/include TL_INCLUDE_DIRS = $(TEXLIVE_SRC)/Work/texk $(TEXLIVE_SRC)/texk LUA_INCLUDE_DIRS = $(LUA_DIR) +LINK.o = $(CXX) $(LDFLAGS) $(TARGET_ARCH) LINK.so = $(LINK.o) -shared LUAHARFBUZZ_SRCS = $(wildcard luaharfbuzz/src/luaharfbuzz/*.c) @@ -17,11 +19,12 @@ LUAHARFBUZZ_OBJS = $(patsubst %.c,%.o,$(LUAHARFBUZZ_SRCS)) override CFLAGS += -fpic -DHAVE_DECL_ISASCII=1 $(patsubst %,-I%,$(INCLUDE_DIRS)) +override LDFLAGS += -static-libgcc -static-libstdc++ -Wl,--gc-sections # For Linux -override LDFLAGS += -Wl,linkscript.ld +override LDFLAGS += -Wl,linkscript.ld -Wl,--gc-sections SO_EXT = so # For Windows instead: -# override LDFLAGS += -Wl,-version-script=versionscript +# override LDFLAGS += -Wl,-version-script=versionscript -Wl,--gc-sections # SO_EXT = dll # For MacOS instead: # override LDFLAGS += -Wl,-exported_symbols_list,symbols_list,-alias_list,alias_list -lc++abi @@ -30,7 +33,9 @@ SO_EXT = so luaharfbuzz/src/luaharfbuzz/%.o: INCLUDE_DIRS = $(HB_INCLUDE_DIRS) $(LUA_INCLUDE_DIRS) luametalatex-kpse/lkpselib.o: INCLUDE_DIRS = $(TL_INCLUDE_DIRS) $(LUA_INCLUDE_DIRS) -luametalatex.$(SO_EXT): luametalatex-kpse/lkpselib.o $(LUAHARFBUZZ_OBJS) $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a $(HARFBUZZ_DIR)/libharfbuzz.a $(GRAPHITE_DIR)/libgraphite2.a $(LUA_DIR)/liblua.a +# luametalatex.$(SO_EXT): luametalatex-kpse/lkpselib.o $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a # $(LUA_DIR)/liblua.a +luametalatex.$(SO_EXT): luametalatex-kpse/lkpselib.o $(LUAHARFBUZZ_OBJS) $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a $(HARFBUZZ_DIR)/libharfbuzz.a $(GRAPHITE_DIR)/libgraphite2.a # $(LUA_DIR)/liblua.a +# luametalatex.$(SO_EXT): luametalatex-kpse/lkpselib.o $(LUAHARFBUZZ_OBJS) $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a $(HARFBUZZ_DIR)/libharfbuzz.a $(GRAPHITE_DIR)/libgraphite2.a ../luametatex/build/mingw-64/libluametatex.dll.a # $(LUA_DIR)/liblua.a %.$(SO_EXT): $(LINK.so) $^ $(LOADLIBES) $(LDLIBS) -o $@ diff --git a/alias_list b/alias_list new file mode 100644 index 0000000..b793621 --- /dev/null +++ b/alias_list @@ -0,0 +1,2 @@ +_luaopen_kpse _luaopen_luametalatex_kpse +_luaopen_luaharfbuzz _luaopen_luametalatex_harfbuzz diff --git a/luaharfbuzz/src/luaharfbuzz/luaharfbuzz.c b/luaharfbuzz/src/luaharfbuzz/luaharfbuzz.c index fcafc77..0def550 100644 --- a/luaharfbuzz/src/luaharfbuzz/luaharfbuzz.c +++ b/luaharfbuzz/src/luaharfbuzz/luaharfbuzz.c @@ -59,6 +59,11 @@ static const struct luaL_Reg lib_table [] = { {NULL, NULL} }; +#ifdef _WIN32 +__declspec(dllexport) +#else +__attribute__ ((visibility ("default"))) +#endif int luaopen_luaharfbuzz (lua_State *L) { lua_newtable(L); diff --git a/luametalatex-kpse/lkpselib.c b/luametalatex-kpse/lkpselib.c index 1b71632..e6d47a9 100644 --- a/luametalatex-kpse/lkpselib.c +++ b/luametalatex-kpse/lkpselib.c @@ -863,6 +863,11 @@ static const struct luaL_Reg kpselib_l[] = { {NULL, NULL} /* sentinel */ }; +#ifdef _WIN32 +__declspec(dllexport) +#else +__attribute__ ((visibility ("default"))) +#endif int luaopen_kpse(lua_State * L) { luaL_newmetatable(L, KPATHSEA_METATABLE); diff --git a/symbols_list b/symbols_list new file mode 100644 index 0000000..894328d --- /dev/null +++ b/symbols_list @@ -0,0 +1,2 @@ +_luaopen_luametalatex_kpse +_luaopen_luametalatex_harfbuzz diff --git a/luametalatex-kpse/versionscript b/versionscript similarity index 100% rename from luametalatex-kpse/versionscript rename to versionscript