From 0ae229257a15315f6e9a50b5bc7c756b4179400d Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:22:42 +0200 Subject: [PATCH 01/12] Remove libass patchdir We shouldn't need any patches for libass anymore. --- build/patches/libass/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 build/patches/libass/.gitkeep diff --git a/build/patches/libass/.gitkeep b/build/patches/libass/.gitkeep deleted file mode 100644 index e69de29b..00000000 From 0d3cb9fc61937d26ca99037e778220e61712832d Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:22:04 +0200 Subject: [PATCH 02/12] Drop useless patch It does nothing since we only build static libs. --- .../freetype/0001-disable-exports.patch | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 build/patches/freetype/0001-disable-exports.patch diff --git a/build/patches/freetype/0001-disable-exports.patch b/build/patches/freetype/0001-disable-exports.patch deleted file mode 100644 index 77867572..00000000 --- a/build/patches/freetype/0001-disable-exports.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/builds/freetype.mk b/builds/freetype.mk -index 111483069..734c3139a 100644 ---- a/builds/freetype.mk -+++ b/builds/freetype.mk -@@ -169,7 +169,7 @@ FT_CFLAGS = $(CPPFLAGS) \ - - # Include the `exports' rules file. - # --include $(TOP_DIR)/builds/exports.mk -+#include $(TOP_DIR)/builds/exports.mk - - - # Initialize the list of objects. -diff --git a/builds/unix/unix-cc.in b/builds/unix/unix-cc.in -index 5675866ea..5e77e3eff 100644 ---- a/builds/unix/unix-cc.in -+++ b/builds/unix/unix-cc.in -@@ -115,7 +115,6 @@ CCexe := $(CCraw_build) # used to compile `apinames' only - # - LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ - -rpath $(libdir) -version-info $(version_info) \ -- $(LDFLAGS) -no-undefined \ -- -export-symbols $(EXPORTS_LIST) -+ $(LDFLAGS) -no-undefined - - # EOF From 2081393ad2af3faf82ebc40c53df103bd2e95c44 Mon Sep 17 00:00:00 2001 From: Oneric Date: Sat, 2 Apr 2022 02:46:49 +0200 Subject: [PATCH 03/12] Replace patched harfbuzz.pc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wen HarfBuzz-enabled FreeType is built, HarfBuzz gets located via its pc-file which references FreeType’s pc-file. If there’s no such pc-file in the search path it errors out. Add the previously built HarfBuzz-less FreeType’s pc-file to the search path to avoid this. It has no ill effect on the static lib we build. --- Makefile | 2 +- .../harfbuzz/0002-disable-dependency-build.patch | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 build/patches/harfbuzz/0002-disable-dependency-build.patch diff --git a/Makefile b/Makefile index 553633fd..96446157 100644 --- a/Makefile +++ b/Makefile @@ -178,7 +178,7 @@ $(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreety # Freetype with Harfbuzz $(DIST_DIR)/lib/libfreetype.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/libbrotlidec.a cd build/lib/freetype && \ - EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ + EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig:$(BASE_DIR)build/lib/freetype/build_hb/dist_hb/lib/pkgconfig \ emconfigure ./configure \ CFLAGS=" \ -s USE_PTHREADS=0 \ diff --git a/build/patches/harfbuzz/0002-disable-dependency-build.patch b/build/patches/harfbuzz/0002-disable-dependency-build.patch deleted file mode 100644 index 18834911..00000000 --- a/build/patches/harfbuzz/0002-disable-dependency-build.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/src/harfbuzz.pc.in b/src/harfbuzz.pc.in -index 661251c2..394f2735 100644 ---- a/src/harfbuzz.pc.in -+++ b/src/harfbuzz.pc.in -@@ -9,5 +9,4 @@ Version: %VERSION% - - Libs: -L${libdir} -lharfbuzz - Libs.private: -lm %libs_private% --Requires.private: %requires_private% - Cflags: -I${includedir}/harfbuzz From b2fd3e7ecb80277853606918348e287ffa044f64 Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:39:44 +0200 Subject: [PATCH 04/12] src/make: suppress deprecation warnings We knowingly expose deprecated API. --- src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index e9011e95..d02fb099 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -AM_CXXFLAGS = -Wall +AM_CXXFLAGS = -Wall -Wno-deprecated # Fix for Emscripten 2 build llvm bitcode instead of js AM_LDFLAGS = -r From 9b1fc2ebb5857cae8648a11bfe84640dffe291df Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:30:19 +0200 Subject: [PATCH 05/12] make: split global linker and compile flags Future emscripten versions warn if link-only options are set during compilation. --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 96446157..b0fc4e69 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,9 @@ BASE_DIR:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) DIST_DIR:=$(BASE_DIR)dist/libraries -GLOBAL_CFLAGS:=-O3 -s ENVIRONMENT=web,webview +GLOBAL_CFLAGS:=-O3 +GLOBAL_LDFLAGS:=-s ENVIRONMENT=web,webview +export LDFLAGS = $(GLOBAL_LDFLAGS) all: subtitleoctopus @@ -158,7 +160,6 @@ $(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreety -s NO_EXIT_RUNTIME=1 \ -s MODULARIZE=1 \ " \ - LDFLAGS="" \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ --build=x86_64 \ @@ -292,7 +293,7 @@ src/subtitles-octopus-worker.bc: $(OCTP_DEPS) src/Makefile src/SubtitleOctopus.c # Dist Files EMCC_COMMON_ARGS = \ - $(GLOBAL_CFLAGS) \ + $(GLOBAL_LDFLAGS) \ -s EXPORTED_FUNCTIONS="['_main', '_malloc']" \ -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'getValue', 'FS_createPreloadedFile', 'FS_createPath']" \ -s NO_EXIT_RUNTIME=1 \ From ebcfe368f3c69f020cb75146f6f24fc8318897ca Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:36:41 +0200 Subject: [PATCH 06/12] make: consolidate link flags All builds but brotli already set NO_EXIT_RUNTIME, and in brotli's case it was probably an oversight for the flag to be missing. All dependencies, but not the final jso linkage also set MODULARIZE, but not -s 'EXPORT_NAME="someting"' as emscripten docs suggest should be done. But since we only use static libs, the final ones are also actually the only linking occuring, so just remove the flag. --- Makefile | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/Makefile b/Makefile index b0fc4e69..61336a1b 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ BASE_DIR:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) DIST_DIR:=$(BASE_DIR)dist/libraries GLOBAL_CFLAGS:=-O3 -GLOBAL_LDFLAGS:=-s ENVIRONMENT=web,webview +GLOBAL_LDFLAGS:=-s ENVIRONMENT=web,webview -s NO_EXIT_RUNTIME=1 export LDFLAGS = $(GLOBAL_LDFLAGS) all: subtitleoctopus @@ -27,9 +27,7 @@ $(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ - -s NO_EXIT_RUNTIME=1 \ -DFRIBIDI_ENTRY=extern \ - -s MODULARIZE=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ @@ -53,8 +51,6 @@ $(DIST_DIR)/lib/libexpat.a: build/lib/expat/configured -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ -DCMAKE_INSTALL_PREFIX=$(DIST_DIR) \ -DEXPAT_BUILD_DOCS=off \ @@ -115,8 +111,6 @@ build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a: $(DIST_DIR)/lib/libbrotli -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ --prefix="$$(pwd)/dist_hb" \ --host=x86-none-linux \ @@ -149,16 +143,12 @@ $(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreety $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ -DHB_NO_MT \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ CXXFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ -DHB_NO_MT \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ @@ -185,8 +175,6 @@ $(DIST_DIR)/lib/libfreetype.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/lib -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ -s NO_FILESYSTEM=1 \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ @@ -218,8 +206,6 @@ $(DIST_DIR)/lib/libfontconfig.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/l -s USE_PTHREADS=0 \ -DEMSCRIPTEN \ $(GLOBAL_CFLAGS) \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ @@ -248,8 +234,6 @@ $(DIST_DIR)/lib/libass.a: $(DIST_DIR)/lib/libfontconfig.a $(DIST_DIR)/lib/libhar CFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ @@ -296,7 +280,6 @@ EMCC_COMMON_ARGS = \ $(GLOBAL_LDFLAGS) \ -s EXPORTED_FUNCTIONS="['_main', '_malloc']" \ -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'getValue', 'FS_createPreloadedFile', 'FS_createPath']" \ - -s NO_EXIT_RUNTIME=1 \ --use-preload-plugins \ --preload-file assets/default.woff2 \ --preload-file assets/fonts.conf \ From 8d41bd1ae4467626df16505d46b744c957969f3f Mon Sep 17 00:00:00 2001 From: Oneric Date: Sat, 2 Apr 2022 00:16:12 +0200 Subject: [PATCH 07/12] make: remove filesystem flags from dependency builds It's a link-only setting and since we only build static libs only relevant in the final linking step. --- Makefile | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Makefile b/Makefile index 61336a1b..a98cb491 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,6 @@ $(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure CFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ -DFRIBIDI_ENTRY=extern \ " \ --prefix="$(DIST_DIR)" \ @@ -50,7 +49,6 @@ $(DIST_DIR)/lib/libexpat.a: build/lib/expat/configured -DCMAKE_C_FLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ " \ -DCMAKE_INSTALL_PREFIX=$(DIST_DIR) \ -DEXPAT_BUILD_DOCS=off \ @@ -110,7 +108,6 @@ build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a: $(DIST_DIR)/lib/libbrotli CFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ " \ --prefix="$$(pwd)/dist_hb" \ --host=x86-none-linux \ @@ -141,13 +138,11 @@ $(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreety CFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ -DHB_NO_MT \ " \ CXXFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ -DHB_NO_MT \ " \ --prefix="$(DIST_DIR)" \ @@ -174,7 +169,6 @@ $(DIST_DIR)/lib/libfreetype.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/lib CFLAGS=" \ -s USE_PTHREADS=0 \ $(GLOBAL_CFLAGS) \ - -s NO_FILESYSTEM=1 \ " \ --prefix="$(DIST_DIR)" \ --host=x86-none-linux \ From 6bee3c84d2b6969ff6278c5511c8f8e634322349 Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:38:19 +0200 Subject: [PATCH 08/12] make: explicitly target worker environment This is no longer implied in future emscripten versions. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a98cb491..44f10bd0 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ BASE_DIR:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) DIST_DIR:=$(BASE_DIR)dist/libraries GLOBAL_CFLAGS:=-O3 -GLOBAL_LDFLAGS:=-s ENVIRONMENT=web,webview -s NO_EXIT_RUNTIME=1 +GLOBAL_LDFLAGS:=-s ENVIRONMENT=web,webview,worker -s NO_EXIT_RUNTIME=1 export LDFLAGS = $(GLOBAL_LDFLAGS) all: subtitleoctopus From f92d7cebca558cb0a99688cf1e5e78a80c80d3a2 Mon Sep 17 00:00:00 2001 From: Oneric Date: Fri, 1 Apr 2022 20:42:22 +0200 Subject: [PATCH 09/12] Update emscripten Freetype upstream made changes to remove the need for our fcstat patch, but we actually also need to update emscripten as linking to fstatfs is bugged in our currently used version and will lead to runtime errors. - Since emscripten 2.0.26 unresolved symbols cause errors at link time instead of only at runtime. - The following commit contained in 2.0.27 fixed fstatfs linking: https://github.com/emscripten-core/emscripten/commit/2126d3c1a64c9db2ab390b2c09fd91ef41d05b24 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fd01e480..4f9592d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM emscripten/emsdk:2.0.20 +FROM docker.io/emscripten/emsdk:2.0.34 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ From 7250e6ef75ceac3b0c7a056f47f98d8692a5d320 Mon Sep 17 00:00:00 2001 From: Oneric Date: Mon, 14 Feb 2022 00:29:15 +0100 Subject: [PATCH 10/12] Bump Fontconfig Together with the prior emscripten bump, this removes the need for the fcstat patch. Closes: https://github.com/libass/JavascriptSubtitlesOctopus/issues/103 --- ...eads.patch => 0001-disable-pthreads.patch} | 4 +- .../0003-fix-fcstats-emscripten.patch | 46 ------------------- lib/fontconfig | 2 +- 3 files changed, 3 insertions(+), 49 deletions(-) rename build/patches/fontconfig/{0002-disable-pthreads.patch => 0001-disable-pthreads.patch} (90%) delete mode 100644 build/patches/fontconfig/0003-fix-fcstats-emscripten.patch diff --git a/build/patches/fontconfig/0002-disable-pthreads.patch b/build/patches/fontconfig/0001-disable-pthreads.patch similarity index 90% rename from build/patches/fontconfig/0002-disable-pthreads.patch rename to build/patches/fontconfig/0001-disable-pthreads.patch index 7e529378..455eb4e7 100644 --- a/build/patches/fontconfig/0002-disable-pthreads.patch +++ b/build/patches/fontconfig/0001-disable-pthreads.patch @@ -1,8 +1,8 @@ diff --git a/configure.ac b/configure.ac -index 394c281..1cb2f74 100644 +index 26b974a..b73d132 100644 --- a/configure.ac +++ b/configure.ac -@@ -681,22 +681,8 @@ if $fc_cv_have_solaris_atomic_ops; then +@@ -712,22 +712,8 @@ if $fc_cv_have_solaris_atomic_ops; then AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) fi diff --git a/build/patches/fontconfig/0003-fix-fcstats-emscripten.patch b/build/patches/fontconfig/0003-fix-fcstats-emscripten.patch deleted file mode 100644 index c55e4f27..00000000 --- a/build/patches/fontconfig/0003-fix-fcstats-emscripten.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff --git a/src/fcstat.c b/src/fcstat.c -index 5aa1643..2a5ae3b 100644 ---- a/src/fcstat.c -+++ b/src/fcstat.c -@@ -398,6 +398,8 @@ FcFStatFs (int fd, FcStatFS *statb) - } - - return ret; -+# elif EMSCRIPTEN -+ return ret; - # else - # error "BUG: No way to figure out with fstatfs()" - # endif -@@ -418,17 +420,24 @@ FcFStatFs (int fd, FcStatFS *statb) - FcBool - FcIsFsMmapSafe (int fd) - { -+#ifdef EMSCRIPTEN -+ return FcFalse; -+#else - FcStatFS statb; - - if (FcFStatFs (fd, &statb) < 0) - return FcTrue; - - return !statb.is_remote_fs; -+#endif - } - - FcBool - FcIsFsMtimeBroken (const FcChar8 *dir) - { -+#ifdef EMSCRIPTEN -+ return FcFalse; -+#else - int fd = FcOpen ((const char *) dir, O_RDONLY); - - if (fd != -1) -@@ -444,6 +453,7 @@ FcIsFsMtimeBroken (const FcChar8 *dir) - } - - return FcFalse; -+#endif - } - - #define __fcstat__ diff --git a/lib/fontconfig b/lib/fontconfig index e291fda7..d37f9722 160000 --- a/lib/fontconfig +++ b/lib/fontconfig @@ -1 +1 @@ -Subproject commit e291fda7d42e5d64379555097a066d9c2c4efce3 +Subproject commit d37f97223a4715176c0889e91685dc796457e25f From 25bd9261ab114dcb6fe6163998ee3fb4d3d33dd1 Mon Sep 17 00:00:00 2001 From: Oneric Date: Mon, 4 Apr 2022 19:02:45 +0200 Subject: [PATCH 11/12] src: use a custom Makefile We are bound to one toolchain and most results of the config-time checks were ignored anyway. This is more concise and doesn't require a configuration step. --- .gitignore | 13 ------------- Makefile | 20 +++++--------------- src/Makefile | 21 +++++++++++++++++++++ src/Makefile.am | 8 -------- src/configure.ac | 20 -------------------- 5 files changed, 26 insertions(+), 56 deletions(-) create mode 100644 src/Makefile delete mode 100644 src/Makefile.am delete mode 100644 src/configure.ac diff --git a/.gitignore b/.gitignore index fe4454f7..69d6f85e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,21 +3,8 @@ a.out.wasm a.out.js.mem a.out a.wasm -src/.deps/ src/WebIDLGrammar.pkl src/parser.out -src/Makefile -src/Makefile.in -src/aclocal.m4 -src/autom4te.cache/ -src/compile -src/config.log -src/config.status -src/configure -src/configure~ -src/depcomp -src/install-sh -src/missing lib/expat/xmlwf/xmlwf dist .libs/ diff --git a/Makefile b/Makefile index 44f10bd0..91148b8a 100644 --- a/Makefile +++ b/Makefile @@ -253,21 +253,11 @@ OCTP_DEPS = \ $(DIST_DIR)/lib/libfontconfig.a \ $(DIST_DIR)/lib/libass.a -# Require a patch to fix some errors -src/SubOctpInterface.cpp: src/SubtitleOctopus.idl - cd src && \ - python3 ../build/webidl_binder.py SubtitleOctopus.idl SubOctpInterface - -src/Makefile: src/SubOctpInterface.cpp - cd src && \ - autoreconf -fi && \ - EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ - emconfigure ./configure --host=x86-none-linux --build=x86_64 CFLAGS="$(GLOBAL_CFLAGS)" - -src/subtitles-octopus-worker.bc: $(OCTP_DEPS) src/Makefile src/SubtitleOctopus.cpp src/SubOctpInterface.cpp - cd src && \ - emmake make -j8 && \ - mv subtitlesoctopus.bc subtitles-octopus-worker.bc +src/subtitles-octopus-worker.bc: $(OCTP_DEPS) all-src +.PHONY: all-src +all-src: + PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ + $(MAKE) -C src all # Dist Files EMCC_COMMON_ARGS = \ diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 00000000..84917f57 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,21 @@ +# If needed, override the following variables via `make VARNAME=VAL ...` +CXX = em++ -r +CXXFLAGS = -O3 -g4 +LIBASS_CXXFLAGS = $(shell pkg-config --static --cflags "libass >= 0.14.0") +LOCAL_CXXFLAGS = -Wall -Wno-deprecated $(LIBASS_CXXFLAGS) + +all: subtitles-octopus-worker.bc + +SubOctpInterface.cpp: SubtitleOctopus.idl ../build/webidl_binder.py + @# Our version of WebIDL contains JSO-specific patches + python3 ../build/webidl_binder.py SubtitleOctopus.idl SubOctpInterface + +subtitles-octopus-worker.bc: SubtitleOctopus.cpp libass.cpp SubOctpInterface.cpp + @# All later dependencies are already included into the first by CPP + $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) -o $@ $< + +clean: + rm -f subtitles-octopus-worker.bc + rm -f SubOctpInterface.cpp WebIDLGrammar.pkl parser.out + +.PHONY: all clean diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index d02fb099..00000000 --- a/src/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CXXFLAGS = -Wall -Wno-deprecated - -# Fix for Emscripten 2 build llvm bitcode instead of js -AM_LDFLAGS = -r -EXEEXT = .bc - -noinst_PROGRAMS = subtitlesoctopus -subtitlesoctopus_SOURCES = SubtitleOctopus.cpp diff --git a/src/configure.ac b/src/configure.ac deleted file mode 100644 index 94c0d1bc..00000000 --- a/src/configure.ac +++ /dev/null @@ -1,20 +0,0 @@ -AC_INIT([subtitlesoctopus], [1.1]) -AM_INIT_AUTOMAKE([-Wall -Werror foreign]) -AC_CONFIG_FILES([Makefile]) -AC_PROG_CXX - -AC_HEADER_STDC -AC_HEADER_STDBOOL -AC_CHECK_HEADERS([stdint.h unistd.h iconv.h]) - -PKG_CHECK_MODULES([LIBASS], libass >= 0.9.1,[],[ - AC_MSG_WARN([libass not found via pkg-config]) - #LIBASS_LIBS="-lass" -]) - -pkg_requires="libass >= 0.9.1" - -AC_SUBST([LIBASS_CXXFLAGS]) -AC_SUBST([LIBASS_LIBS]) - -AC_OUTPUT From 3ce06434407e7d1757d618a21224dfd317ad788a Mon Sep 17 00:00:00 2001 From: Oneric Date: Thu, 7 Apr 2022 19:04:06 +0200 Subject: [PATCH 12/12] src/make: use -c to compile instead of -r The build currently warns about building an executable with an object-file extension and recommends to use -c, -shared or -r eventhough we already use -r. I'm not sure what -r is supposed to do, but -c only compiles and not links the input which should be exactly what we want here and using -c gets rid of the warning without any apparent negative effects. --- src/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 84917f57..d1dc2509 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,6 @@ # If needed, override the following variables via `make VARNAME=VAL ...` -CXX = em++ -r +# Note: we only compile and not(!) link here, thus -c +CXX = em++ -c CXXFLAGS = -O3 -g4 LIBASS_CXXFLAGS = $(shell pkg-config --static --cflags "libass >= 0.14.0") LOCAL_CXXFLAGS = -Wall -Wno-deprecated $(LIBASS_CXXFLAGS)