name: CI on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macOS-latest, windows-2016, ubuntu-20.04] platform: [x64, x86] exclude: - os: macOS-latest platform: x86 - os: ubuntu-20.04 platform: x86 steps: - uses: actions/checkout@v1 with: fetch-depth: 10 - name: Prepare (Linux) if: matrix.os == 'ubuntu-20.04' run: | sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev - name: Build (Linux) if: matrix.os == 'ubuntu-20.04' run: | CC=clang CXX=clang++ ./autogen.sh --enable-binreloc --prefix=/opt/firebird make -j4 make dist tar xzvf gen/Firebird-[0-9]*.tar.gz (cd Firebird-[0-9]*; sudo ./install.sh -silent) - name: Prepare (MacOS) if: matrix.os == 'macOS-latest' run: | brew install automake libtool export LIBTOOLIZE=glibtoolize export LIBTOOL=glibtool mkdir extern/icu-macos pushd extern/icu-macos curl -OL https://github.com/unicode-org/icu/releases/download/release-63-2/icu4c-63_2-src.tgz curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch tar xzf icu4c-63_2-src.tgz ICU_INSTALL_PATH=`pwd`/install cd icu/source patch -p3 < ../../24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch ./runConfigureICU MacOSX --prefix=$ICU_INSTALL_PATH make -j4 make install install_name_tool -id @rpath/lib/libicuuc.dylib $ICU_INSTALL_PATH/lib/libicuuc.dylib install_name_tool -id @rpath/lib/libicui18n.dylib $ICU_INSTALL_PATH/lib/libicui18n.dylib install_name_tool -id @rpath/lib/libicudata.dylib $ICU_INSTALL_PATH/lib/libicudata.dylib install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $ICU_INSTALL_PATH/lib/libicuuc.63.dylib install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $ICU_INSTALL_PATH/lib/libicui18n.63.dylib install_name_tool -change libicuuc.63.dylib @loader_path/libicuuc.63.dylib $ICU_INSTALL_PATH/lib/libicui18n.63.dylib popd mkdir -p gen/Release/firebird/lib mkdir -p gen/Debug/firebird/lib cp $ICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Release/firebird/lib/ cp $ICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Debug/firebird/lib/ - name: Build (MacOS) if: matrix.os == 'macOS-latest' run: | export LIBTOOLIZE=glibtoolize export LIBTOOL=glibtool ICU_INSTALL_PATH=`pwd`/extern/icu-macos/install export C_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$C_INCLUDE_PATH" export CPLUS_INCLUDE_PATH="$ICU_INSTALL_PATH/include:$CPLUS_INCLUDE_PATH" LIBRARY_PATH="$ICU_INSTALL_PATH/lib:$LIBRARY_PATH" ./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt make -j4 (cd gen; make -B -f make.platform.postfix ICU_LOC="$ICU_INSTALL_PATH/lib/") (cd gen; make -B -f Makefile.install) # Rename directory to make sure the build is relocatable. mv gen gen2 sudo installer -pkg gen2/Release/*.pkg -verbose -target / export FIREBIRD_LOCK=`pwd`/temp echo "create database 't.fdb'; select '1' from rdb\$database; select _win1252 '2' from rdb\$database; select _utf8 '3' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql echo "create database 'localhost:/tmp/t.fdb' user sysdba password 'masterkey'; select '11' from rdb\$database; select _win1252 '22' from rdb\$database; select _utf8 '33' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql mv gen2 gen mkdir gen/artifacts mv gen/Release/*.pkg gen/artifacts - name: Prepare (Windows) if: matrix.os == 'windows-2016' shell: cmd run: | for /r %%i in (*.bat) do unix2dos "%%i" - name: Build (Windows) if: matrix.os == 'windows-2016' shell: cmd env: PLATFORM: ${{ matrix.platform }} run: | if "%PLATFORM%" == "x64" set FB_VS_ARCH=amd64 if "%PLATFORM%" == "x64" set FB_PROCESSOR_ARCHITECTURE=AMD64 if "%PLATFORM%" == "x64" set FB_OUTPUT_SUFFIX=x64 if "%PLATFORM%" == "x86" set FB_VS_ARCH=x86 if "%PLATFORM%" == "x86" set FB_PROCESSOR_ARCHITECTURE=x86 if "%PLATFORM%" == "x86" set FB_OUTPUT_SUFFIX=win32 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=%FB_VS_ARCH% cd builds\win32 run_all.bat JUSTBUILD - name: Upload (Linux) if: matrix.os == 'ubuntu-20.04' uses: actions/upload-artifact@master with: name: firebird-linux-${{ matrix.platform }} path: gen/Firebird-[0-9]*.tar.gz - name: Upload (MacOS) if: matrix.os == 'macOS-latest' uses: actions/upload-artifact@master with: name: firebird-macos path: gen/artifacts - name: Upload (Windows x64) if: matrix.os == 'windows-2016' && matrix.platform == 'x64' uses: actions/upload-artifact@master with: name: firebird-windows-x64 path: output_x64 - name: Upload (Windows x86) if: matrix.os == 'windows-2016' && matrix.platform == 'x86' uses: actions/upload-artifact@master with: name: firebird-windows-x86 path: output_win32