diff --git a/.editorconfig b/.editorconfig index cee094a7..79bd2701 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,6 +13,6 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true -[*.{ttl,ttl.in,yml}] +[*.{ttl,ttl.in,sh,yml}] indent_size = 2 indent_style = space diff --git a/.gitignore b/.gitignore index c6bae06c..ceeb7326 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ node_modules/ .sass-cache *.lock *.sublime-* +*.code-* diff --git a/.travis.yml b/.travis.yml index 11a9c269..0c55d8c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,48 +1,65 @@ language: cpp +env: + global: + - INSTALL_DIR="sfizz-$(git describe --tags)-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" -matrix: +jobs: include: - - os: linux + - os: linux + arch: amd64 dist: bionic + env: MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" addons: apt: sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' + packages: - gcc-8 - g++-8 - doxygen - env: - - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + + - os: linux + arch: arm64 + dist: bionic + env: MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + addons: + apt: + sources: + - sourceline: 'ppa:ubuntu-toolchain-r/test' + + packages: + - gcc-8 + - g++-8 # - os: osx # osx_image: xcode10.1 before_install: -- sh ${TRAVIS_BUILD_DIR}/.travis/before_install.sh +- bash ${TRAVIS_BUILD_DIR}/.travis/before_install.sh install: -- sh ${TRAVIS_BUILD_DIR}/.travis/install.sh +- bash ${TRAVIS_BUILD_DIR}/.travis/install.sh script: -- sh ${TRAVIS_BUILD_DIR}/.travis/script.sh +- bash ${TRAVIS_BUILD_DIR}/.travis/script.sh after_failure: -- sh ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh failure +- bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh failure after_success: -- sh ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh success -- sh ${TRAVIS_BUILD_DIR}/.travis/update_dox.sh -- sh ${TRAVIS_BUILD_DIR}/.travis/deploy.sh +- bash ${TRAVIS_BUILD_DIR}/.travis/discord_webhook.sh success +- bash ${TRAVIS_BUILD_DIR}/.travis/update_dox.sh +- bash ${TRAVIS_BUILD_DIR}/.travis/after_success.sh deploy: - provider: releases + provider: releases skip_cleanup: true - api_key: - secure: cc6IkdalZRb+lOWzPkubCUvTcP9lBwiNBBPkXWVmeX7YXkdQlsoVQ11bZThd1Go+5Lt+jGFtEqEjJ0L7GxpdatEeBMEK5HXl0QtHAybl9J4Ax7hKba8FSX5RqPFOuKixCob6eCqJRchT26qRsQE/WYMY8DmproEFGMBHk0K4HXDWEq0HP8dbWVx3KudvellCYszUrVQYb2s49sDiF8OwSog5TiqdBqO5PRcqyt2ySmHgqwBYq7XV0pb+DxcKJcc7/gCBpBN7nyEhl8gmKELypLF81l8xUDBUjRy1jjf0r33ISHpX1MWeWIN9YzSNL0aLPQvwynAQ7OeckFAIMABah2UuYcxdd4ioXduPTbprVYpSwIyyxkeafK2jxgxwoKWi9GJZ3yAUHNS/V7Gh5DsFb7C6QDqr5gOxOMtjHwjmHnxmD44SsugjSosVzirvQR+JbrSsPsmZThQjCvwG+7hO3JatX4BXA7bp9WtgsoMrCH61gCp2GogQVLvYpgRpVErKK8PMTkt71OouewTDqD5iwc3N/2pNWP3cXxpPegerjl4R2sY0sZ57WRfW8ts7akPyqJZa2uKpzpM0eXy35fZl6WoJSlIv3akCnzdtLtaWAptzfXhgRSlF/33+gZ3jRcSP7ca2YpUviuZ+KYk+uGfMh092CMRMjPv1Et5h7zYGD+o= - file: "$DEPLOYFILE" + file: "${INSTALL_DIR}.tar.gz" + token: + secure: jBIMWMPva8OazC8Wnqc2vqATa3exjvGDGvejEu6fgwt/BMDkgJCsJ7gS3ITpYFuO0HoHtLGfTVrFcZIE+agGVRdRGRni5xZRp5Vuf9hvLf8hCTaxkS/HYoliYYPp9FLY6J4yq9mp/R/QyGrwgssQEjhYlI2GL4+lJzt750AcmYibnQo2AMe5SSOp3q8KdLBG1vca1o1BZWBhW/S7l2hA1aJ7y1ytwm0ETIdrTZHxgfz7bqdqQcw/Ytqjm1rgzty6iQKX3B/InaZNB6CqXy6FoGLf771lery8nWJbjTjKYD4QK2NelExldyp1vrdHGvknWguFk+8vlQ16Dt0+R7Byr/LOPRLTCf/T+IehMQGtVA9/gjrkH8LqHy9oVFB+33p11gGu3h6hvg7yB6z3sSck0u4FHjrlpNd5XmmCsKQVQ9vI1cPPkVkbMHIewc7uOu+bD6cmotFj1vJ9UYesvN6n4siyCiPOIhgV9++bjcyiLqX3DWP5UWyZ9/VT8bz5VcxUdJnEYtdNPx4x5pRW4081VUjIf2EmHhQTrjb1iz6FAGwNU/fpefA8x+bBxXP9MkFFgU0tbCDKw2y6o0GOXX82mZr/IB0/DIBg7UllTzCBKTuiJQV1prFPlZLc6V22H5ozAXHgu3E+qNjvHoMsoYjGssX3+AYHwu8isBINo/gGo6Y= on: - repo: sfztools/sfizz + repo: ${TRAVIS_REPO_SLUG} tags: true notifications: @@ -56,4 +73,4 @@ notifications: - "%{commit_subject}" - "Commit URL : https://github.com/%{repository_slug}/commit/%{commit}" - "Change View : %{compare_url}" - - "Build Details : %{build_url}" + - "Build Details : %{build_url}" diff --git a/.travis/after_success.sh b/.travis/after_success.sh new file mode 100755 index 00000000..8ce5bdd7 --- /dev/null +++ b/.travis/after_success.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ex + +if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then + cd build + make install + tar -zcvf "${INSTALL_DIR}.tar.gz" ${INSTALL_DIR} + mv "${INSTALL_DIR}.tar.gz" ${TRAVIS_BUILD_DIR} + cd .. +elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then + echo "TODO: xcodebuild make install or dmg image?" +fi diff --git a/.travis/before_install.sh b/.travis/before_install.sh index 248954a6..923a8e0d 100755 --- a/.travis/before_install.sh +++ b/.travis/before_install.sh @@ -1,12 +1,19 @@ #!/bin/bash -set -e +set -ex -if [ "$TRAVIS_OS_NAME" = "linux" ]; then - wget https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.sh - sudo sh cmake-3.13.0-Linux-x86_64.sh --skip-license --prefix=/usr/local +cmake_dir="cmake-3.13.0-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}" +cmake_arc="${cmake_dir}.tar.gz" +cmake_url="https://github.com/sfztools/cmake/releases/download/${TRAVIS_OS_NAME}/${cmake_arc}" + +if [ ${TRAVIS_OS_NAME} = "linux" ]; then + wget -q ${cmake_url} + tar xzf ${cmake_arc} + cd ${TRAVIS_BUILD_DIR}/${cmake_dir} + sudo cp bin/* /usr/local/bin/ + sudo cp -r share/* /usr/local/share/ export PATH="/usr/local/bin:$PATH" # FIXME -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then +elif [ ${TRAVIS_OS_NAME} = "osx" ]; then sudo ln -s /usr/local /opt/local brew update brew upgrade cmake diff --git a/.travis/deploy.sh b/.travis/deploy.sh deleted file mode 100755 index 8acde8a9..00000000 --- a/.travis/deploy.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -e - -export VERSION=$(git describe --tags) -if [ "$TRAVIS_OS_NAME" = "linux" ]; then - export DEPLOYFILE=Sfizz-$VERSION-x86_64.AppImage - wget -c -nv "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" - chmod +x linuxdeploy-x86_64.AppImage - for size in 16 32 48 128 256; do dirname="sfizz/usr/share/icons/hicolor/${size}x${size}/apps"; mkdir -p $dirname; cp ./resources/icons/icon_${size}px.png ./${dirname}/sfizz.png; done - ./linuxdeploy-x86_64.AppImage --appdir=sfizz --desktop-file=./resources/linux/sfizz.desktop --executable=./build/clients/sfizz_jack --output=appimage -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then - export DEPLOYFILE=sfizz-$VERSION.dmg - mkdir ./output - cp -r /build/* ./output/ - cp ./resources/icons/icon.icns ./output/sfizz.app/Contents/Resources/ - hdiutil create /tmp/tmp.dmg -ov -volname "sfizz-$VERSION" -fs HFS+ -srcfolder "./output/" - hdiutil convert /tmp/tmp.dmg -format UDZO -o ./$DEPLOYFILE; -fi diff --git a/.travis/discord_webhook.sh b/.travis/discord_webhook.sh index 8ab1ee30..6931fba2 100755 --- a/.travis/discord_webhook.sh +++ b/.travis/discord_webhook.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -e +set -ex # Travis Webhook wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh diff --git a/.travis/install.sh b/.travis/install.sh index 99fcaf94..03e1dd6c 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -1,7 +1,10 @@ #!/bin/bash -set -e +set -ex if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install libasound2-dev libjack-jackd2-dev libsndfile1-dev lv2-dev + + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + gcc -v && g++ -v && cmake --version && /usr/local/bin/cmake --version && $SHELL --version fi diff --git a/.travis/script.sh b/.travis/script.sh index bdd57a4a..c6064a09 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -1,17 +1,14 @@ #!/bin/bash -set -e +set -ex -if [ "$TRAVIS_OS_NAME" = "linux" ]; then - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 - gcc -v && g++ -v && cmake --version && /usr/local/bin/cmake --version && $SHELL --version - - mkdir build && cd build +if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then + mkdir -p build/${INSTALL_DIR} && cd build # FIXME: lto error in build when enabled - /usr/local/bin/cmake -D CMAKE_BUILD_TYPE=Release -D ENABLE_LTO=OFF .. + /usr/local/bin/cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=OFF -DCMAKE_INSTALL_PREFIX:PATH=${PWD}/${INSTALL_DIR} .. make -j$(nproc) -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then +elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then mkdir build && cd build cmake -D SFIZZ_JACK=OFF -G Xcode .. # FIXME: client build xcodebuild -project sfizz.xcodeproj -alltargets -configuration Debug build diff --git a/.travis/update_dox.sh b/.travis/update_dox.sh index af2d1679..1a7a9481 100755 --- a/.travis/update_dox.sh +++ b/.travis/update_dox.sh @@ -1,6 +1,9 @@ #!/bin/bash -set -e +set -x # No fail, we need to go back to the original branch at the end + +# Build documentation only from Linux x86_64 builds +if [[ ${TRAVIS_CPU_ARCH} != "amd64" ]]; then exit 0; fi doxygen Doxyfile git fetch --depth=1 https://github.com/${TRAVIS_REPO_SLUG}.git refs/heads/gh-pages:refs/remotes/origin/gh-pages @@ -11,3 +14,4 @@ mv _api api git add api && git commit -m "Travis build: ${TRAVIS_BUILD_NUMBER}" git remote add origin-pages https://${GITHUB_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git > /dev/null 2>&1 git push --quiet --set-upstream origin-pages gh-pages +git checkout ${TRAVIS_BRANCH} diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 56b6c387..8297801e 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -1,5 +1,5 @@ -project(sfizz) -add_executable(sfizz_jack jack_client.cpp) -target_link_libraries(sfizz_jack sfizz::sfizz jack absl::flags_parse) -sfizz_enable_lto_if_needed(sfizz_jack) -# install(TARGETS sfizz_jack DESTINATION . OPTIONAL) +project (sfizz) +add_executable (sfizz_jack jack_client.cpp) +target_link_libraries (sfizz_jack sfizz::sfizz jack absl::flags_parse) +sfizz_enable_lto_if_needed (sfizz_jack) +install (TARGETS sfizz_jack DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)