From 81212b2a3d2431abbaf165efd7fa7b182d42e500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiago=20Fran=C3=A7a=20da=20Silva?= Date: Tue, 22 Mar 2022 15:38:59 -0300 Subject: [PATCH 1/3] build: split makefile --- Makefile | 336 +------------------------------------ build/m4/brotli.mk | 40 +++++ build/m4/expat.mk | 34 ++++ build/m4/fontconfig.mk | 37 ++++ build/m4/freetype.mk | 69 ++++++++ build/m4/fribidi.mk | 37 ++++ build/m4/harfbuzz.mk | 51 ++++++ build/m4/libass.mk | 37 ++++ build/m4/license_bundle.mk | 36 ++++ 9 files changed, 349 insertions(+), 328 deletions(-) create mode 100644 build/m4/brotli.mk create mode 100644 build/m4/expat.mk create mode 100644 build/m4/fontconfig.mk create mode 100644 build/m4/freetype.mk create mode 100644 build/m4/fribidi.mk create mode 100644 build/m4/harfbuzz.mk create mode 100644 build/m4/libass.mk create mode 100644 build/m4/license_bundle.mk diff --git a/Makefile b/Makefile index 553633fd..a8f2df63 100644 --- a/Makefile +++ b/Makefile @@ -10,258 +10,14 @@ all: subtitleoctopus subtitleoctopus: dist -# Fribidi -build/lib/fribidi/configure: lib/fribidi $(wildcard $(BASE_DIR)build/patches/fribidi/*.patch) - rm -rf build/lib/fribidi - mkdir -p build/lib - cp -r lib/fribidi build/lib/fribidi - $(foreach file, $(wildcard $(BASE_DIR)build/patches/fribidi/*.patch), patch -d "$(BASE_DIR)build/lib/fribidi" -Np1 -i $(file) && ) true - cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh - -$(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure - cd build/lib/fribidi && \ - emconfigure ./configure \ - CFLAGS=" \ - -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 \ - --build=x86_64 \ - --enable-static \ - --disable-shared \ - --disable-dependency-tracking \ - --disable-debug \ - && \ - emmake make -C lib/ install && \ - emmake make install-pkgconfigDATA - -build/lib/expat/configured: lib/expat - mkdir -p build/lib/expat - touch build/lib/expat/configured - -$(DIST_DIR)/lib/libexpat.a: build/lib/expat/configured - cd build/lib/expat && \ - emcmake cmake \ - -DCMAKE_C_FLAGS=" \ - -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 \ - -DEXPAT_SHARED_LIBS=off \ - -DEXPAT_BUILD_EXAMPLES=off \ - -DEXPAT_BUILD_FUZZERS=off \ - -DEXPAT_BUILD_TESTS=off \ - -DEXPAT_BUILD_TOOLS=off \ - $(BASE_DIR)lib/expat/expat \ - && \ - emmake make -j8 && \ - emmake make install - -build/lib/brotli/js/decode.js: build/lib/brotli/configured -build/lib/brotli/js/polyfill.js: build/lib/brotli/configured -build/lib/brotli/configured: lib/brotli $(wildcard $(BASE_DIR)build/patches/brotli/*.patch) - rm -rf build/lib/brotli - cp -r lib/brotli build/lib/brotli - $(foreach file, $(wildcard $(BASE_DIR)build/patches/brotli/*.patch), patch -d "$(BASE_DIR)build/lib/brotli" -Np1 -i $(file) && ) true - touch build/lib/brotli/configured - -build/lib/brotli/libbrotlidec.pc: build/lib/brotli/configured - cd build/lib/brotli && \ - emcmake cmake \ - -DCMAKE_C_FLAGS=" \ - $(GLOBAL_CFLAGS) \ - " \ - -DCMAKE_INSTALL_PREFIX=$(DIST_DIR) \ - . \ - && \ - emmake make -j8 && \ - cp -r ./c/include $(DIST_DIR) - -$(DIST_DIR)/lib/libbrotlicommon.a: build/lib/brotli/libbrotlidec.pc - cd build/lib/brotli && \ - mkdir -p $(DIST_DIR)/lib/pkgconfig && \ - cp libbrotlicommon.pc $(DIST_DIR)/lib/pkgconfig && \ - cp libbrotlicommon-static.a $(DIST_DIR)/lib/libbrotlicommon.a - -$(DIST_DIR)/lib/libbrotlidec.a: build/lib/brotli/libbrotlidec.pc $(DIST_DIR)/lib/libbrotlicommon.a - cd build/lib/brotli && \ - mkdir -p $(DIST_DIR)/lib/pkgconfig && \ - cp libbrotlidec.pc $(DIST_DIR)/lib/pkgconfig && \ - cp libbrotlidec-static.a $(DIST_DIR)/lib/libbrotlidec.a - -# Freetype without Harfbuzz -build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a: $(DIST_DIR)/lib/libbrotlidec.a $(wildcard $(BASE_DIR)build/patches/freetype/*.patch) - rm -rf build/lib/freetype - cp -r lib/freetype build/lib/freetype - $(foreach file, $(wildcard $(BASE_DIR)build/patches/freetype/*.patch), patch -d "$(BASE_DIR)build/lib/freetype" -Np1 -i $(file) && ) true - cd build/lib/freetype && \ - NOCONFIGURE=1 ./autogen.sh && \ - mkdir -p build_hb && \ - cd build_hb && \ - EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ - emconfigure ../configure \ - CFLAGS=" \ - -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 \ - --build=x86_64 \ - --enable-static \ - --disable-shared \ - \ - --with-brotli=yes \ - --without-zlib \ - --without-bzip2 \ - --without-png \ - --without-harfbuzz \ - && \ - emmake make -j8 && \ - emmake make install - -# Harfbuzz -build/lib/harfbuzz/configure: lib/harfbuzz $(wildcard $(BASE_DIR)build/patches/harfbuzz/*.patch) - rm -rf build/lib/harfbuzz - cp -r lib/harfbuzz build/lib/harfbuzz - $(foreach file, $(wildcard $(BASE_DIR)build/patches/harfbuzz/*.patch), patch -d "$(BASE_DIR)build/lib/harfbuzz" -Np1 -i $(file) && ) true - cd build/lib/harfbuzz && NOCONFIGURE=1 ./autogen.sh - -$(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a build/lib/harfbuzz/configure - cd build/lib/harfbuzz && \ - 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 \ - $(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 \ - " \ - LDFLAGS="" \ - --prefix="$(DIST_DIR)" \ - --host=x86-none-linux \ - --build=x86_64 \ - --enable-static \ - --disable-shared \ - --disable-dependency-tracking \ - \ - --without-cairo \ - --without-fontconfig \ - --without-icu \ - --with-freetype \ - --without-glib \ - && \ - cd src && \ - emmake make -j8 install-libLTLIBRARIES install-pkgincludeHEADERS install-pkgconfigDATA - -# 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 \ - emconfigure ./configure \ - CFLAGS=" \ - -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 \ - --build=x86_64 \ - --enable-static \ - --disable-shared \ - \ - --with-brotli=yes \ - --without-zlib \ - --without-bzip2 \ - --without-png \ - --with-harfbuzz \ - && \ - emmake make -j8 && \ - emmake make install - -# Fontconfig -build/lib/fontconfig/configure: lib/fontconfig $(wildcard $(BASE_DIR)build/patches/fontconfig/*.patch) - rm -rf build/lib/fontconfig - cp -r lib/fontconfig build/lib/fontconfig - $(foreach file, $(wildcard $(BASE_DIR)build/patches/fontconfig/*.patch), patch -d "$(BASE_DIR)build/lib/fontconfig" -Np1 -i $(file) && ) true - cd build/lib/fontconfig && NOCONFIGURE=1 ./autogen.sh - -$(DIST_DIR)/lib/libfontconfig.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/libexpat.a $(DIST_DIR)/lib/libfribidi.a $(DIST_DIR)/lib/libfreetype.a build/lib/fontconfig/configure - cd build/lib/fontconfig && \ - EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ - emconfigure ./configure \ - CFLAGS=" \ - -s USE_PTHREADS=0 \ - -DEMSCRIPTEN \ - $(GLOBAL_CFLAGS) \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ - " \ - --prefix="$(DIST_DIR)" \ - --host=x86-none-linux \ - --build=x86_64 \ - --disable-shared \ - --enable-static \ - --disable-docs \ - --with-default-fonts=/fonts \ - && \ - emmake make -C src/ install && \ - emmake make -C fontconfig/ install && \ - emmake make install-pkgconfigDATA - -# libass -- - -build/lib/libass/configured: lib/libass - rm -rf build/lib/libass - cd lib/libass && NOCONFIGURE=1 ./autogen.sh - mkdir -p build/lib/libass - touch build/lib/libass/configured - -$(DIST_DIR)/lib/libass.a: $(DIST_DIR)/lib/libfontconfig.a $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/libexpat.a $(DIST_DIR)/lib/libfribidi.a $(DIST_DIR)/lib/libfreetype.a $(DIST_DIR)/lib/libbrotlidec.a build/lib/libass/configured - cd build/lib/libass && \ - EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ - emconfigure ../../../lib/libass/configure \ - CFLAGS=" \ - -s USE_PTHREADS=0 \ - $(GLOBAL_CFLAGS) \ - -s NO_EXIT_RUNTIME=1 \ - -s MODULARIZE=1 \ - " \ - --prefix="$(DIST_DIR)" \ - --host=x86-none-linux \ - --build=x86_64 \ - --disable-shared \ - --enable-static \ - --disable-asm \ - \ - --enable-harfbuzz \ - --enable-fontconfig \ - && \ - emmake make -j8 && \ - emmake make install +include $(BASE_DIR)/build/m4/fribidi.mk +include $(BASE_DIR)/build/m4/expat.mk +include $(BASE_DIR)/build/m4/brotli.mk +include $(BASE_DIR)/build/m4/freetype.mk +include $(BASE_DIR)/build/m4/harfbuzz.mk +include $(BASE_DIR)/build/m4/fontconfig.mk +include $(BASE_DIR)/build/m4/libass.mk +include $(BASE_DIR)/build/m4/license_bundle.mk # SubtitleOctopus.js OCTP_DEPS = \ @@ -339,40 +95,6 @@ dist/js/subtitles-octopus.js: dist/license/all src/subtitles-octopus.js mkdir -p dist/js awk '1 {print "// "$$0}' dist/license/all | cat - src/subtitles-octopus.js > $@ -LIB_LICENSES := brotli expat freetype fribidi fontconfig harfbuzz libass -LIB_LICENSES_FINDOPT_brotli := -path ./research -prune -false -o ! -path ./js/decode.min.js -LIB_LICENSES_FINDOPT_expat := -path ./expat/fuzz -prune -false -o -LIB_LICENSES_FINDOPT_freetype := -path ./src/tools -prune -false -o -LIB_LICENSES_FINDOPT_fribidi := -path ./bin -prune -false -o -LIB_LICENSES_FINDOPT_harfbuzz := -path ./test -prune -false -o - -$(addprefix dist/license/, $(LIB_LICENSES)): dist/license/%: .git/modules/lib/%/HEAD build/license_extract.sh build/license_defaults - @mkdir -p dist/license - (cd "lib/$*" && FINDOPTS="$(LIB_LICENSES_FINDOPT_$*)" \ - ../../build/license_extract.sh ../../build/license_defaults "$*" .) > $@ - -dist/license/subtitlesoctopus: .git/HEAD build/license_extract.sh - @mkdir -p dist/license - build/license_extract.sh build/license_defaults subtitlesoctopus src > dist/license/subtitlesoctopus - -dist/license/all: dist/license/subtitlesoctopus $(addprefix dist/license/, $(LIB_LICENSES)) build/license_fullnotice build/license_lint.awk - @echo "# The following lists all copyright notices and licenses for the" > dist/license/all - @echo "# work contained in JavascriptSubtitlesOctopus per project." >> dist/license/all - @echo "" >> dist/license/all - - @echo "Concatenate extracted license info..." - @$(foreach LIB_PROJ, subtitlesoctopus $(LIB_LICENSES), \ - echo "# Project: $(LIB_PROJ)" >> dist/license/all && \ - cat dist/license/$(LIB_PROJ) >> dist/license/all && \ - ) : - - mv dist/license/all dist/license/all.tmp - build/license_lint.awk dist/license/all.tmp build/license_fullnotice - cat dist/license/all.tmp build/license_fullnotice > dist/license/all - -dist/js/COPYRIGHT: dist/license/all - cp "$<" "$@" - # Clean Tasks clean: clean-dist clean-libs clean-octopus @@ -394,45 +116,3 @@ server: # Node http server npm i -g http-server http-server git-update: git-freetype git-fribidi git-fontconfig git-expat git-harfbuzz git-libass git-brotli - -git-brotli: - cd lib/brotli && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-freetype: - cd lib/freetype && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-fribidi: - cd lib/fribidi && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-fontconfig: - cd lib/fontconfig && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-expat: - cd lib/expat && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-harfbuzz: - cd lib/harfbuzz && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master - -git-libass: - cd lib/libass && \ - git reset --hard && \ - git clean -dfx && \ - git pull origin master diff --git a/build/m4/brotli.mk b/build/m4/brotli.mk new file mode 100644 index 00000000..d56537ec --- /dev/null +++ b/build/m4/brotli.mk @@ -0,0 +1,40 @@ +# +# Brotli +# +build/lib/brotli/js/decode.js: build/lib/brotli/configured +build/lib/brotli/js/polyfill.js: build/lib/brotli/configured +build/lib/brotli/configured: lib/brotli $(wildcard $(BASE_DIR)build/patches/brotli/*.patch) + rm -rf build/lib/brotli + cp -r lib/brotli build/lib/brotli + $(foreach file, $(wildcard $(BASE_DIR)build/patches/brotli/*.patch), patch -d "$(BASE_DIR)build/lib/brotli" -Np1 -i $(file) && ) true + touch build/lib/brotli/configured + +build/lib/brotli/libbrotlidec.pc: build/lib/brotli/configured + cd build/lib/brotli && \ + emcmake cmake \ + -DCMAKE_C_FLAGS=" \ + $(GLOBAL_CFLAGS) \ + " \ + -DCMAKE_INSTALL_PREFIX=$(DIST_DIR) \ + . \ + && \ + emmake make -j8 && \ + cp -r ./c/include $(DIST_DIR) + +$(DIST_DIR)/lib/libbrotlicommon.a: build/lib/brotli/libbrotlidec.pc + cd build/lib/brotli && \ + mkdir -p $(DIST_DIR)/lib/pkgconfig && \ + cp libbrotlicommon.pc $(DIST_DIR)/lib/pkgconfig && \ + cp libbrotlicommon-static.a $(DIST_DIR)/lib/libbrotlicommon.a + +$(DIST_DIR)/lib/libbrotlidec.a: build/lib/brotli/libbrotlidec.pc $(DIST_DIR)/lib/libbrotlicommon.a + cd build/lib/brotli && \ + mkdir -p $(DIST_DIR)/lib/pkgconfig && \ + cp libbrotlidec.pc $(DIST_DIR)/lib/pkgconfig && \ + cp libbrotlidec-static.a $(DIST_DIR)/lib/libbrotlidec.a + +git-brotli: + cd lib/brotli && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/expat.mk b/build/m4/expat.mk new file mode 100644 index 00000000..ff4d5ca6 --- /dev/null +++ b/build/m4/expat.mk @@ -0,0 +1,34 @@ +# +# Expat +# +build/lib/expat/configured: lib/expat + mkdir -p build/lib/expat + touch build/lib/expat/configured + +$(DIST_DIR)/lib/libexpat.a: build/lib/expat/configured + cd build/lib/expat && \ + emcmake cmake \ + -DCMAKE_C_FLAGS=" \ + -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 \ + -DEXPAT_SHARED_LIBS=off \ + -DEXPAT_BUILD_EXAMPLES=off \ + -DEXPAT_BUILD_FUZZERS=off \ + -DEXPAT_BUILD_TESTS=off \ + -DEXPAT_BUILD_TOOLS=off \ + $(BASE_DIR)lib/expat/expat \ + && \ + emmake make -j8 && \ + emmake make install + +git-expat: + cd lib/expat && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/fontconfig.mk b/build/m4/fontconfig.mk new file mode 100644 index 00000000..a845a8f3 --- /dev/null +++ b/build/m4/fontconfig.mk @@ -0,0 +1,37 @@ +# +# Fontconfig +# +build/lib/fontconfig/configure: lib/fontconfig $(wildcard $(BASE_DIR)build/patches/fontconfig/*.patch) + rm -rf build/lib/fontconfig + cp -r lib/fontconfig build/lib/fontconfig + $(foreach file, $(wildcard $(BASE_DIR)build/patches/fontconfig/*.patch), patch -d "$(BASE_DIR)build/lib/fontconfig" -Np1 -i $(file) && ) true + cd build/lib/fontconfig && NOCONFIGURE=1 ./autogen.sh + +$(DIST_DIR)/lib/libfontconfig.a: $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/libexpat.a $(DIST_DIR)/lib/libfribidi.a $(DIST_DIR)/lib/libfreetype.a build/lib/fontconfig/configure + cd build/lib/fontconfig && \ + EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ + emconfigure ./configure \ + CFLAGS=" \ + -s USE_PTHREADS=0 \ + -DEMSCRIPTEN \ + $(GLOBAL_CFLAGS) \ + -s NO_EXIT_RUNTIME=1 \ + -s MODULARIZE=1 \ + " \ + --prefix="$(DIST_DIR)" \ + --host=x86-none-linux \ + --build=x86_64 \ + --disable-shared \ + --enable-static \ + --disable-docs \ + --with-default-fonts=/fonts \ + && \ + emmake make -C src/ install && \ + emmake make -C fontconfig/ install && \ + emmake make install-pkgconfigDATA + +git-fontconfig: + cd lib/fontconfig && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/freetype.mk b/build/m4/freetype.mk new file mode 100644 index 00000000..b68163b4 --- /dev/null +++ b/build/m4/freetype.mk @@ -0,0 +1,69 @@ +# +# Freetype +# + +## Without Harfbuzz (Bootstrap) +build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a: $(DIST_DIR)/lib/libbrotlidec.a $(wildcard $(BASE_DIR)build/patches/freetype/*.patch) + rm -rf build/lib/freetype + cp -r lib/freetype build/lib/freetype + $(foreach file, $(wildcard $(BASE_DIR)build/patches/freetype/*.patch), patch -d "$(BASE_DIR)build/lib/freetype" -Np1 -i $(file) && ) true + cd build/lib/freetype && \ + NOCONFIGURE=1 ./autogen.sh && \ + mkdir -p build_hb && \ + cd build_hb && \ + EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ + emconfigure ../configure \ + CFLAGS=" \ + -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 \ + --build=x86_64 \ + --enable-static \ + --disable-shared \ + \ + --with-brotli=yes \ + --without-zlib \ + --without-bzip2 \ + --without-png \ + --without-harfbuzz \ + && \ + emmake make -j8 && \ + emmake make install + +## 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 \ + emconfigure ./configure \ + CFLAGS=" \ + -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 \ + --build=x86_64 \ + --enable-static \ + --disable-shared \ + \ + --with-brotli=yes \ + --without-zlib \ + --without-bzip2 \ + --without-png \ + --with-harfbuzz \ + && \ + emmake make -j8 && \ + emmake make install + +git-freetype: + cd lib/freetype && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/fribidi.mk b/build/m4/fribidi.mk new file mode 100644 index 00000000..a496d340 --- /dev/null +++ b/build/m4/fribidi.mk @@ -0,0 +1,37 @@ +# +# Fribidi +# +build/lib/fribidi/configure: lib/fribidi $(wildcard $(BASE_DIR)build/patches/fribidi/*.patch) + rm -rf build/lib/fribidi + mkdir -p build/lib + cp -r lib/fribidi build/lib/fribidi + $(foreach file, $(wildcard $(BASE_DIR)build/patches/fribidi/*.patch), patch -d "$(BASE_DIR)build/lib/fribidi" -Np1 -i $(file) && ) true + cd build/lib/fribidi && NOCONFIGURE=1 ./autogen.sh + +$(DIST_DIR)/lib/libfribidi.a: build/lib/fribidi/configure + cd build/lib/fribidi && \ + emconfigure ./configure \ + CFLAGS=" \ + -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 \ + --build=x86_64 \ + --enable-static \ + --disable-shared \ + --disable-dependency-tracking \ + --disable-debug \ + && \ + emmake make -C lib/ install && \ + emmake make install-pkgconfigDATA + +git-fribidi: + cd lib/fribidi && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/harfbuzz.mk b/build/m4/harfbuzz.mk new file mode 100644 index 00000000..0b2dd85a --- /dev/null +++ b/build/m4/harfbuzz.mk @@ -0,0 +1,51 @@ +# +# Harfbuzz +# +build/lib/harfbuzz/configure: lib/harfbuzz $(wildcard $(BASE_DIR)build/patches/harfbuzz/*.patch) + rm -rf build/lib/harfbuzz + cp -r lib/harfbuzz build/lib/harfbuzz + $(foreach file, $(wildcard $(BASE_DIR)build/patches/harfbuzz/*.patch), patch -d "$(BASE_DIR)build/lib/harfbuzz" -Np1 -i $(file) && ) true + cd build/lib/harfbuzz && NOCONFIGURE=1 ./autogen.sh + +$(DIST_DIR)/lib/libharfbuzz.a: build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a build/lib/harfbuzz/configure + cd build/lib/harfbuzz && \ + 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 \ + $(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 \ + " \ + LDFLAGS="" \ + --prefix="$(DIST_DIR)" \ + --host=x86-none-linux \ + --build=x86_64 \ + --enable-static \ + --disable-shared \ + --disable-dependency-tracking \ + \ + --without-cairo \ + --without-fontconfig \ + --without-icu \ + --with-freetype \ + --without-glib \ + && \ + cd src && \ + emmake make -j8 install-libLTLIBRARIES install-pkgincludeHEADERS install-pkgconfigDATA + +git-harfbuzz: + cd lib/harfbuzz && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/libass.mk b/build/m4/libass.mk new file mode 100644 index 00000000..71c08382 --- /dev/null +++ b/build/m4/libass.mk @@ -0,0 +1,37 @@ +# +# libass +# +build/lib/libass/configured: lib/libass + rm -rf build/lib/libass + cd lib/libass && NOCONFIGURE=1 ./autogen.sh + mkdir -p build/lib/libass + touch build/lib/libass/configured + +$(DIST_DIR)/lib/libass.a: $(DIST_DIR)/lib/libfontconfig.a $(DIST_DIR)/lib/libharfbuzz.a $(DIST_DIR)/lib/libexpat.a $(DIST_DIR)/lib/libfribidi.a $(DIST_DIR)/lib/libfreetype.a $(DIST_DIR)/lib/libbrotlidec.a build/lib/libass/configured + cd build/lib/libass && \ + EM_PKG_CONFIG_PATH=$(DIST_DIR)/lib/pkgconfig \ + emconfigure ../../../lib/libass/configure \ + CFLAGS=" \ + -s USE_PTHREADS=0 \ + $(GLOBAL_CFLAGS) \ + -s NO_EXIT_RUNTIME=1 \ + -s MODULARIZE=1 \ + " \ + --prefix="$(DIST_DIR)" \ + --host=x86-none-linux \ + --build=x86_64 \ + --disable-shared \ + --enable-static \ + --disable-asm \ + \ + --enable-harfbuzz \ + --enable-fontconfig \ + && \ + emmake make -j8 && \ + emmake make install + +git-libass: + cd lib/libass && \ + git reset --hard && \ + git clean -dfx && \ + git pull origin master diff --git a/build/m4/license_bundle.mk b/build/m4/license_bundle.mk new file mode 100644 index 00000000..8c0064ba --- /dev/null +++ b/build/m4/license_bundle.mk @@ -0,0 +1,36 @@ +# +# License Bundle +# +LIB_LICENSES := brotli expat freetype fribidi fontconfig harfbuzz libass +LIB_LICENSES_FINDOPT_brotli := -path ./research -prune -false -o ! -path ./js/decode.min.js +LIB_LICENSES_FINDOPT_expat := -path ./expat/fuzz -prune -false -o +LIB_LICENSES_FINDOPT_freetype := -path ./src/tools -prune -false -o +LIB_LICENSES_FINDOPT_fribidi := -path ./bin -prune -false -o +LIB_LICENSES_FINDOPT_harfbuzz := -path ./test -prune -false -o + +$(addprefix dist/license/, $(LIB_LICENSES)): dist/license/%: .git/modules/lib/%/HEAD build/license_extract.sh build/license_defaults + @mkdir -p dist/license + (cd "lib/$*" && FINDOPTS="$(LIB_LICENSES_FINDOPT_$*)" \ + ../../build/license_extract.sh ../../build/license_defaults "$*" .) > $@ + +dist/license/subtitlesoctopus: .git/HEAD build/license_extract.sh + @mkdir -p dist/license + build/license_extract.sh build/license_defaults subtitlesoctopus src > dist/license/subtitlesoctopus + +dist/license/all: dist/license/subtitlesoctopus $(addprefix dist/license/, $(LIB_LICENSES)) build/license_fullnotice build/license_lint.awk + @echo "# The following lists all copyright notices and licenses for the" > dist/license/all + @echo "# work contained in JavascriptSubtitlesOctopus per project." >> dist/license/all + @echo "" >> dist/license/all + + @echo "Concatenate extracted license info..." + @$(foreach LIB_PROJ, subtitlesoctopus $(LIB_LICENSES), \ + echo "# Project: $(LIB_PROJ)" >> dist/license/all && \ + cat dist/license/$(LIB_PROJ) >> dist/license/all && \ + ) : + + mv dist/license/all dist/license/all.tmp + build/license_lint.awk dist/license/all.tmp build/license_fullnotice + cat dist/license/all.tmp build/license_fullnotice > dist/license/all + +dist/js/COPYRIGHT: dist/license/all + cp "$<" "$@" From dfd8dbfb30fddb9909527f418d85b89664e50340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiago=20Fran=C3=A7a=20da=20Silva?= Date: Tue, 22 Mar 2022 15:48:26 -0300 Subject: [PATCH 2/3] build: do not clean untracked files --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a8f2df63..bba6a997 100644 --- a/Makefile +++ b/Makefile @@ -106,7 +106,7 @@ clean-dist: clean-libs: rm -frv dist/libraries build/lib clean-octopus: - cd src && git clean -fdx + cd src && git clean -fdX git-checkout: git submodule sync --recursive && \ From 0ef4dc5fdb842f86fc6edfa6b2f604f5e045113a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiago=20Fran=C3=A7a=20da=20Silva?= Date: Tue, 22 Mar 2022 15:53:17 -0300 Subject: [PATCH 3/3] build: checkout submodules in the right version When run make git-update, this will checkout the submodule for the especified version. --- build/m4/brotli.mk | 7 ++++++- build/m4/expat.mk | 7 ++++++- build/m4/fontconfig.mk | 7 ++++++- build/m4/freetype.mk | 6 +++++- build/m4/fribidi.mk | 7 ++++++- build/m4/harfbuzz.mk | 7 ++++++- build/m4/libass.mk | 7 ++++++- 7 files changed, 41 insertions(+), 7 deletions(-) diff --git a/build/m4/brotli.mk b/build/m4/brotli.mk index d56537ec..3bd6ad66 100644 --- a/build/m4/brotli.mk +++ b/build/m4/brotli.mk @@ -1,6 +1,8 @@ # # Brotli # +BROTLI_GIT_VERSION:=v1.0.9 + build/lib/brotli/js/decode.js: build/lib/brotli/configured build/lib/brotli/js/polyfill.js: build/lib/brotli/configured build/lib/brotli/configured: lib/brotli $(wildcard $(BASE_DIR)build/patches/brotli/*.patch) @@ -37,4 +39,7 @@ git-brotli: cd lib/brotli && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(BROTLI_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/expat.mk b/build/m4/expat.mk index ff4d5ca6..bd0d977f 100644 --- a/build/m4/expat.mk +++ b/build/m4/expat.mk @@ -1,6 +1,8 @@ # # Expat # +EXPAT_GIT_VERSION:=R_2_4_1 + build/lib/expat/configured: lib/expat mkdir -p build/lib/expat touch build/lib/expat/configured @@ -31,4 +33,7 @@ git-expat: cd lib/expat && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(EXPAT_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/fontconfig.mk b/build/m4/fontconfig.mk index a845a8f3..d304f94a 100644 --- a/build/m4/fontconfig.mk +++ b/build/m4/fontconfig.mk @@ -1,6 +1,8 @@ # # Fontconfig # +FONTCONFIG_GIT_VERSION:=2.13.94 + build/lib/fontconfig/configure: lib/fontconfig $(wildcard $(BASE_DIR)build/patches/fontconfig/*.patch) rm -rf build/lib/fontconfig cp -r lib/fontconfig build/lib/fontconfig @@ -34,4 +36,7 @@ git-fontconfig: cd lib/fontconfig && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(FONTCONFIG_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/freetype.mk b/build/m4/freetype.mk index b68163b4..a2ad2ebd 100644 --- a/build/m4/freetype.mk +++ b/build/m4/freetype.mk @@ -1,6 +1,7 @@ # # Freetype # +FREETYPE_GIT_VERSION:=VER-2-11-0 ## Without Harfbuzz (Bootstrap) build/lib/freetype/build_hb/dist_hb/lib/libfreetype.a: $(DIST_DIR)/lib/libbrotlidec.a $(wildcard $(BASE_DIR)build/patches/freetype/*.patch) @@ -66,4 +67,7 @@ git-freetype: cd lib/freetype && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(FREETYPE_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/fribidi.mk b/build/m4/fribidi.mk index a496d340..e5a4450c 100644 --- a/build/m4/fribidi.mk +++ b/build/m4/fribidi.mk @@ -1,6 +1,8 @@ # # Fribidi # +FRIBIDI_GIT_VERSION:=v1.0.10 + build/lib/fribidi/configure: lib/fribidi $(wildcard $(BASE_DIR)build/patches/fribidi/*.patch) rm -rf build/lib/fribidi mkdir -p build/lib @@ -34,4 +36,7 @@ git-fribidi: cd lib/fribidi && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(FRIBIDI_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/harfbuzz.mk b/build/m4/harfbuzz.mk index 0b2dd85a..a39489f0 100644 --- a/build/m4/harfbuzz.mk +++ b/build/m4/harfbuzz.mk @@ -1,6 +1,8 @@ # # Harfbuzz # +HARFBUZZ_GIT_VERSION:=2.8.2 + build/lib/harfbuzz/configure: lib/harfbuzz $(wildcard $(BASE_DIR)build/patches/harfbuzz/*.patch) rm -rf build/lib/harfbuzz cp -r lib/harfbuzz build/lib/harfbuzz @@ -48,4 +50,7 @@ git-harfbuzz: cd lib/harfbuzz && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(HARFBUZZ_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive diff --git a/build/m4/libass.mk b/build/m4/libass.mk index 71c08382..8b697856 100644 --- a/build/m4/libass.mk +++ b/build/m4/libass.mk @@ -1,6 +1,8 @@ # # libass # +LIBASS_GIT_VERSION:=643829edd8408ec37182a04040fe5a7bf54dccc3 + build/lib/libass/configured: lib/libass rm -rf build/lib/libass cd lib/libass && NOCONFIGURE=1 ./autogen.sh @@ -34,4 +36,7 @@ git-libass: cd lib/libass && \ git reset --hard && \ git clean -dfx && \ - git pull origin master + git fetch origin && \ + git checkout $(LIBASS_GIT_VERSION) && \ + git submodule sync --recursive && \ + git submodule update --init --recursive