From 9a8574e788cdecb0228ce3d6ef71128145c578ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Sun, 2 Jan 2022 11:01:00 +0100 Subject: [PATCH 1/4] Use TeXLive supplied graphite2 and HarfBuzz build --- Makefile | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index f8c8f8b..ca0c2df 100644 --- a/Makefile +++ b/Makefile @@ -3,11 +3,11 @@ TEXLIVE_SRC = $(HOME)/texlive-source # We expect to find a precompiled static library compiled with -fpic here LUA_DIR = $(HOME)/lua/ # 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.so = $(LINK.o) -shared @@ -15,21 +15,28 @@ 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)) +# For Linux override LDFLAGS += -Wl,linkscript.ld +SO_EXT = so # For Windows instead: # override LDFLAGS += -Wl,-version-script=versionscript +# 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 $(LUAHARFBUZZ_OBJS) $(TEXLIVE_SRC)/Work/texk/kpathsea/.libs/libkpathsea.a $(HARFBUZZ_DIR)/libharfbuzz.a $(GRAPHITE_DIR)/libgraphite2.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 From e82610344cae9faa4b984a2bcd8b52a5379bfd1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Fri, 7 Oct 2022 23:30:11 +0200 Subject: [PATCH 2/4] Commit missing files --- alias_list | 2 ++ symbols_list | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 alias_list create mode 100644 symbols_list 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/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 From 477287957583076079c9bf4bf3e3a243780e78b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Sun, 9 Oct 2022 01:09:01 +0200 Subject: [PATCH 3/4] Adjustments mostly for Windows --- Makefile | 14 ++++++++------ luametalatex-kpse/lkpselib.c | 5 +++++ luametalatex-kpse/versionscript => versionscript | 0 3 files changed, 13 insertions(+), 6 deletions(-) rename luametalatex-kpse/versionscript => versionscript (100%) diff --git a/Makefile b/Makefile index ca0c2df..ed83d82 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 +TEXLIVE_SRC = $(HOME)/texlive-mingw +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) @@ -18,11 +20,11 @@ LUAHARFBUZZ_OBJS = $(patsubst %.c,%.o,$(LUAHARFBUZZ_SRCS)) override CFLAGS += -fpic -DHAVE_DECL_ISASCII=1 $(patsubst %,-I%,$(INCLUDE_DIRS)) # For Linux -override LDFLAGS += -Wl,linkscript.ld -SO_EXT = so +# override LDFLAGS += -Wl,linkscript.ld -Wl,--gc-sections +# SO_EXT = so # For Windows instead: -# override LDFLAGS += -Wl,-version-script=versionscript -# SO_EXT = dll +# 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 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/luametalatex-kpse/versionscript b/versionscript similarity index 100% rename from luametalatex-kpse/versionscript rename to versionscript From 38076b1e7e91d3e51fbacfd72de04afbf95c1846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Sun, 16 Oct 2022 15:17:31 +0200 Subject: [PATCH 4/4] Build for Linux --- Makefile | 13 ++++++++----- luaharfbuzz/src/luaharfbuzz/luaharfbuzz.c | 5 +++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index ed83d82..e95219e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # TEXLIVE_SRC must be a precompiled TEXLIVE build with dynamic libraries -TEXLIVE_SRC = $(HOME)/texlive-mingw +TEXLIVE_SRC = $(HOME)/texlive-source LUAMETATEX_SRC = $(HOME)/luametatex # We expect to find a precompiled static library compiled with -fpic here LUA_DIR = $(LUAMETATEX_SRC)/source/luacore/lua54/src @@ -19,12 +19,13 @@ 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 -Wl,--gc-sections -# SO_EXT = so +override LDFLAGS += -Wl,linkscript.ld -Wl,--gc-sections +SO_EXT = so # For Windows instead: # override LDFLAGS += -Wl,-version-script=versionscript -Wl,--gc-sections -SO_EXT = dll +# SO_EXT = dll # For MacOS instead: # override LDFLAGS += -Wl,-exported_symbols_list,symbols_list,-alias_list,alias_list -lc++abi # SO_EXT = dylib @@ -32,7 +33,9 @@ SO_EXT = dll 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/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);