diff --git a/Makefile b/Makefile index f8c8f8b..e95219e 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,47 @@ # 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 = $(HOME)/harfbuzz +HARFBUZZ_DIR = $(TEXLIVE_SRC)/Work/libs/harfbuzz # Graphite also should be compiled static, position independent in a build subdirectory -GRAPHITE_DIR = $(HOME)/graphite +GRAPHITE_DIR = $(TEXLIVE_SRC)/Work/libs/graphite2 -HB_INCLUDE_DIRS = $(HARFBUZZ_DIR)/src +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) LUAHARFBUZZ_OBJS = $(patsubst %.c,%.o,$(LUAHARFBUZZ_SRCS)) + override CFLAGS += -fpic -DHAVE_DECL_ISASCII=1 $(patsubst %,-I%,$(INCLUDE_DIRS)) -override LDFLAGS += -Wl,linkscript.ld +override LDFLAGS += -static-libgcc -static-libstdc++ -Wl,--gc-sections +# For Linux +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 +# SO_EXT = dylib 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: luametalatex-kpse/lkpselib.o $(LUAHARFBUZZ_OBJS) $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a $(HARFBUZZ_DIR)/build_meson/src/libharfbuzz.a $(GRAPHITE_DIR)/build/src/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: +%.$(SO_EXT): $(LINK.so) $^ $(LOADLIBES) $(LDLIBS) -o $@ .PHONY: clean clean: - rm $(LUAHARFBUZZ_OBJS) luametalatex-kpse/lkpselib.o luametalatex.so + rm $(LUAHARFBUZZ_OBJS) luametalatex-kpse/lkpselib.o luametalatex.$(SO_EXT) # lkpselib.o: lkpselib.c 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