diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3f067c..2afcdad 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -305,6 +305,7 @@ jobs: submodules: recursive - name: Set up cache uses: actions/cache@v2 + id: mpb-cache with: path: | ~/mod-workdir @@ -312,23 +313,24 @@ jobs: - name: Set up dependencies run: | sudo apt-get update -qq - sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin + sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev - name: Bootstrap toolchain + if: steps.mpb-cache.outputs.cache-hit != 'true' run: | git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduo-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduo-static - #- name: Build for modduo - #run: | - #CFLAGS="-ffat-lto-objects" CXXFLAGS="-ffat-lto-objects" make modduo HAVE_LIBLO=true HEADLESS=true WITH_LTO=true -j $(nproc) - #- name: Pack binaries - #run: | - #tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) - #- uses: actions/upload-artifact@v2 - #with: - #name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} - #path: | - #*.tar.gz + - name: Build for modduo + run: | + make modduo HEADLESS=true WITH_LTO=true -j $(nproc) + - name: Pack binaries + run: | + tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz modduox: runs-on: ubuntu-20.04 @@ -338,6 +340,7 @@ jobs: submodules: recursive - name: Set up cache uses: actions/cache@v2 + id: mpb-cache with: path: | ~/mod-workdir @@ -345,23 +348,24 @@ jobs: - name: Set up dependencies run: | sudo apt-get update -qq - sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin + sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev - name: Bootstrap toolchain + if: steps.mpb-cache.outputs.cache-hit != 'true' run: | git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduox-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduox-static - #- name: Build for modduox - #run: | - #CFLAGS="-ffat-lto-objects" CXXFLAGS="-ffat-lto-objects" make modduox HAVE_LIBLO=true HEADLESS=true WITH_LTO=true -j $(nproc) - #- name: Pack binaries - #run: | - #tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) - #- uses: actions/upload-artifact@v2 - #with: - #name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} - #path: | - #*.tar.gz + - name: Build for modduox + run: | + make modduox HEADLESS=true WITH_LTO=true -j $(nproc) + - name: Pack binaries + run: | + tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz moddwarf: runs-on: ubuntu-20.04 @@ -371,6 +375,7 @@ jobs: submodules: recursive - name: Set up cache uses: actions/cache@v2 + id: mpb-cache with: path: | ~/mod-workdir @@ -378,23 +383,24 @@ jobs: - name: Set up dependencies run: | sudo apt-get update -qq - sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin + sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev - name: Bootstrap toolchain + if: steps.mpb-cache.outputs.cache-hit != 'true' run: | git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config $(pwd)/deps/mod-plugin-builder/bootstrap.sh moddwarf minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh moddwarf - #- name: Build for moddwarf - #run: | - #CFLAGS="-ffat-lto-objects" CXXFLAGS="-ffat-lto-objects" make moddwarf HAVE_LIBLO=true HEADLESS=true WITH_LTO=true -j $(nproc) - #- name: Pack binaries - #run: | - #tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) - #- uses: actions/upload-artifact@v2 - #with: - #name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} - #path: | - #*.tar.gz + - name: Build for moddwarf + run: | + make moddwarf HEADLESS=true WITH_LTO=true -j $(nproc) + - name: Pack binaries + run: | + tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2) + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz win32: runs-on: ubuntu-20.04 diff --git a/Makefile b/Makefile index 5448197..3c2bf41 100644 --- a/Makefile +++ b/Makefile @@ -97,7 +97,7 @@ endif # MOD builds MOD_WORKDIR ?= $(HOME)/mod-workdir -MOD_ENVIRONMENT = AR=${1}/host/usr/bin/${2}-gcc-ar CC=${1}/host/usr/bin/${2}-gcc CPP=${1}/host/usr/bin/${2}-cpp CXX=${1}/host/usr/bin/${2}-g++ LD=${1}/host/usr/bin/${2}-ld PKG_CONFIG=${1}/host/usr/bin/pkg-config STRIP=${1}/host/usr/bin/${2}-strip CFLAGS="-I${1}/staging/usr/include" CPPFLAGS= CXXFLAGS="-I${1}/staging/usr/include" LDFLAGS="-L${1}/staging/usr/lib" \ EXE_WRAPPER="qemu-${3}-static -L ${1}/target" HEADLESS=true NOOPT=true STATIC_BUILD=true +MOD_ENVIRONMENT = AR=${1}/host/usr/bin/${2}-gcc-ar CC=${1}/host/usr/bin/${2}-gcc CPP=${1}/host/usr/bin/${2}-cpp CXX=${1}/host/usr/bin/${2}-g++ LD=${1}/host/usr/bin/${2}-ld PKG_CONFIG=${1}/host/usr/bin/pkg-config STRIP=${1}/host/usr/bin/${2}-strip CFLAGS="-I${1}/staging/usr/include" CPPFLAGS= CXXFLAGS="-I${1}/staging/usr/include" LDFLAGS="-L${1}/staging/usr/lib" \ EXE_WRAPPER="qemu-${3}-static -L ${1}/target" HEADLESS=true MOD_BUILD=true NOOPT=true STATIC_BUILD=true modduo: $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/modduo-static,arm-mod-linux-gnueabihf.static,arm) diff --git a/deps/Makefile b/deps/Makefile index b1bef04..9f4fa0c 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -18,6 +18,12 @@ BASE_FLAGS += -DZSTDLIB_VISIBILITY= BASE_FLAGS += -I../include BASE_FLAGS += -I../include/neon-compat +ifeq ($(HEADLESS),true) +ifeq ($(WITH_LTO),true) +BASE_FLAGS += -ffat-lto-objects +endif +endif + ifeq ($(WASM),true) BASE_FLAGS += -msse -msse2 -msse3 -msimd128 else diff --git a/plugins/Makefile b/plugins/Makefile index 01f7268..cf4e79e 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -748,6 +748,9 @@ endif ifeq ($(HEADLESS),true) BASE_FLAGS += -DHEADLESS +ifeq ($(WITH_LTO),true) +BASE_FLAGS += -ffat-lto-objects +endif endif ifeq ($(WASM),true) diff --git a/src/Makefile b/src/Makefile index 1b821c4..5204e07 100644 --- a/src/Makefile +++ b/src/Makefile @@ -62,6 +62,9 @@ endif ifeq ($(HEADLESS),true) BASE_FLAGS += -DHEADLESS +ifeq ($(WITH_LTO),true) +BASE_FLAGS += -ffat-lto-objects +endif endif ifeq ($(WASM),true) @@ -148,9 +151,13 @@ endif TARGET = rack.a all: $(TARGET) +ifeq ($(MOD_BUILD),true) + $(MAKE) -C CardinalFX lv2 resources +else $(MAKE) -C CardinalFX $(MAKE) -C CardinalSynth $(MAKE) -C Cardinal +endif resources: $(MAKE) resources -C Cardinal diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 9ea22c5..ba9df5b 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -159,6 +159,9 @@ BASE_FLAGS += -pthread ifeq ($(HEADLESS),true) BASE_FLAGS += -DHEADLESS +ifeq ($(WITH_LTO),true) +BASE_FLAGS += -ffat-lto-objects +endif endif ifeq ($(WASM),true)