diff --git a/.github/workflows/config-all.yml b/.github/workflows/config-all.yml deleted file mode 100644 index a84ada59..00000000 --- a/.github/workflows/config-all.yml +++ /dev/null @@ -1,121 +0,0 @@ -name: Linux all configurations -on: - # push - schedule: [cron: '15 4 * * *'] - -jobs: - build_ubuntu: - name: ${{ matrix.conf.name }} - runs-on: ubuntu-latest - strategy: - matrix: - conf: - - name: With ALSA MIDI - configure_flags: --enable-alsa-midi - with_packages: libasound2-dev - max_warnings: 5194 - - - name: With debugger - configure_flags: --enable-debug - with_packages: libncurses-dev libsdl-net1.2-dev - max_warnings: 6013 - - - name: With debugger-heavy - configure_flags: --enable-debug - with_packages: libncurses-dev libsdl-net1.2-dev - max_warnings: 6013 - - - name: Without core-inline - configure_flags: --disable-core-inline - max_warnings: 5194 - - - name: Without dynamic-x86 - configure_flags: --disable-dynamic-x86 - max_warnings: 5197 - - - name: Without dynrec - configure_flags: --disable-dynrec - max_warnings: 5194 - - - name: Without FPU - configure_flags: --disable-fpu - max_warnings: 5182 - - - name: Without FPU-x64 - configure_flags: --disable-fpu-x64 - max_warnings: 5200 - - - name: Without FPU-x86 - configure_flags: --disable-fpu-x86 - max_warnings: 5200 - - - name: Without OpenGL - configure_flags: --disable-opengl - max_warnings: 5195 - - - name: Without screenshots - configure_flags: --disable-screenshots - max_warnings: 5178 - - - name: Without SDL_Net - without_packages: libsdl-net1.2-dev - max_warnings: 5194 - - - name: Without unaligned memory - configure_flags: --disable-unaligned-memory - max_warnings: 5016 - - steps: - - uses: actions/checkout@v1 - - run: sudo apt-get -y update - - name: Install C++ development tools - run: sudo apt-get -y install autoconf-archive libtool build-essential g++ libsdl1.2-dev libopusfile-dev - - name: Add libraries - if: matrix.conf.with_packages - run: sudo apt-get -y install ${{ matrix.conf.with_packages }} - - name: Remove libraries - if: matrix.conf.without_packages - run: sudo apt-get -y purge ${{ matrix.conf.without_packages }} - - name: Build - run: | - set -xeu - ./autogen.sh - - export CFLAGS="\ - -g \ - -Og \ - -pedantic \ - -pipe \ - -Wall \ - -Wcast-align \ - -Wdouble-promotion \ - -Wduplicated-branches \ - -Wduplicated-cond \ - -Wextra \ - -Wformat=2 \ - -Wlogical-op \ - -Wmisleading-indentation \ - -Wnull-dereference \ - -Wshadow \ - -Wunused" - - export CXXFLAGS="\ - ${CFLAGS} \ - -Weffc++ \ - -Wnon-virtual-dtor \ - -Woverloaded-virtual \ - -Wuseless-cast" - - g++ --version - ./configure ${{ matrix.conf.configure_flags }} - - make \ - --jobs="$(nproc)" \ - --output-sync=line \ - |& tr -cd '\11\12\15\40-\176' \ - | tee build.log - - - name: Summarize warnings - env: - MAX_WARNINGS: ${{ matrix.conf.max_warnings }} - run: ./scripts/count-warnings.py build.log diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml new file mode 100644 index 00000000..7441176d --- /dev/null +++ b/.github/workflows/config.yml @@ -0,0 +1,89 @@ +name: Config heavy +on: + # push + schedule: [cron: '15 5 * * *'] + +jobs: + config_all: + name: ${{ matrix.system.name }} ${{ matrix.conf.configure_flags }} ${{ matrix.conf.without_packages }} + runs-on: ${{ matrix.system.os }} + strategy: + # max-parallel: 1 + matrix: + system: + - name: Windows + os: windows-latest + compiler: gcc + - name: macOS + os: macos-latest + compiler: clang + - name: Linux + os: ubuntu-latest + compiler: gcc + + # Disabled temporarily due to https://github.com/dreamer/dosbox-staging/issues/86 + # - configure_flags: --enable-debug + # - configure_flags: --enable-debug-heavy + conf: + - configure_flags: --enable-alsa-midi + - configure_flags: --disable-core-inline + - configure_flags: --disable-dynamic-x86 + - configure_flags: --disable-dynrec + - configure_flags: --disable-fpu + - configure_flags: --disable-fpu-x64 + - configure_flags: --disable-fpu-x86 + - configure_flags: --disable-opengl + - configure_flags: --disable-screenshots + - configure_flags: --disable-unaligned-memory + - without_packages: -x net + - without_packages: -x curses + - without_packages: -x net -x curses + env: + CHERE_INVOKING: yes + steps: + - uses: actions/checkout@v1 + with: + fetch-depth: 1 + + - name: Get Date + if: matrix.system.name == 'Windows' + id: get-date + shell: bash + run: echo ::set-output name=date::$(date +%Y-%W) + + - uses: actions/cache@v1 + if: matrix.system.name == 'Windows' + id: cache-msys2 + with: + path: 'C:/tools/msys64' + key: msys2-GCC-64-${{ steps.get-date.outputs.date }}-1 + + - name: Install MSYS2 (Windows) + if: matrix.system.name == 'Windows' && steps.cache-msys2.outputs.cache-hit != 'true' + run: choco install msys2 --no-progress + + - name: Install dependencies ${{ matrix.conf.without_packages }} (Windows) + if: matrix.system.name == 'Windows' && steps.cache-msys2.outputs.cache-hit != 'true' + shell: python scripts\msys-bash.py {0} + run: | + scripts/list-build-dependencies.sh -m msys2 -c gcc ${{ matrix.conf.without_packages }} | xargs pacman -S --noconfirm + .github/scripts/shrink-msys2.sh + + - name: Install dependencies ${{ matrix.conf.without_packages }} (Linux) + if: matrix.system.name == 'Linux' + run: | + sudo apt-get -y update + sudo apt-get install -y $(./scripts/list-build-dependencies.sh -m apt -c gcc ${{ matrix.conf.without_packages }}) + + - name: Install dependencies ${{ matrix.conf.without_packages }} (macOS) + if: matrix.system.name == 'macOS' + run: brew install $(./scripts/list-build-dependencies.sh -m brew -c clang ${{ matrix.conf.without_packages }}) + + - name: Build ${{ matrix.conf.configure_flags }} (Windows) + if: matrix.system.name == 'Windows' + shell: python scripts\msys-bash.py {0} + run: scripts/build.sh -c ${{ matrix.system.compiler }} -t debug --bin-path /mingw64/bin ${{ matrix.conf.configure_flags }} + + - name: Build ${{ matrix.conf.configure_flags }} (non-Windows) + if: matrix.system.name != 'Windows' + run: ./scripts/build.sh -c ${{ matrix.system.compiler }} -t debug ${{ matrix.conf.configure_flags }} diff --git a/.github/workflows/dormant/linux.yml b/.github/workflows/dormant/linux.yml deleted file mode 100644 index b997e543..00000000 --- a/.github/workflows/dormant/linux.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Linux builds -on: push -env: - MAX_WARNINGS_GCC_6_Debug: 378 - MAX_WARNINGS_GCC_6_Release: 661 - MAX_WARNINGS_GCC_7_Debug: 380 - MAX_WARNINGS_GCC_7_Release: 329 - MAX_WARNINGS_GCC_8_Debug: 380 - MAX_WARNINGS_GCC_8_Release: 330 - MAX_WARNINGS_GCC_9_Debug: 403 - MAX_WARNINGS_GCC_9_Release: 358 - MAX_WARNINGS_Clang_7_Debug: 193 - MAX_WARNINGS_Clang_7_Release: 193 - MAX_WARNINGS_Clang_8_Debug: 193 - MAX_WARNINGS_Clang_8_Release: 193 - -jobs: - - build_matrix: - name: ${{ matrix.compiler }}-${{ matrix.compiler_version }} - runs-on: ubuntu-latest - strategy: - matrix: - compiler: [Clang, GCC] - compiler_version: [6, 7, 8, 9] - # build_type: [Debug, Release] - exclude: - - compiler: Clang - compiler_version: 6 - - compiler: Clang - compiler_version: 9 - steps: - - uses: actions/checkout@v1 - - run: sudo apt-get update - - name: Install C++ compiler and libraries - run: sudo apt-get install -y $(./scripts/list-build-dependencies.sh -m apt -c ${{ matrix.compiler }} -v ${{ matrix.compiler_version }}) - - name: Log environment - run: ./scripts/log-env.sh - - name: Release build - run: ./scripts/build.sh --compiler ${{ matrix.compiler }} --version-postfix ${{ matrix.compiler_version }} --build-type Release - - name: Release warnings - run: ./scripts/count-warnings.py -m $MAX_WARNINGS_${{ matrix.compiler }}_${{ matrix.compiler_version }}_Release build.log - - name: Debug build - run: ./scripts/build.sh --compiler ${{ matrix.compiler }} --version-postfix ${{ matrix.compiler_version }} --build-type Debug - - name: Debug warnings - run: ./scripts/count-warnings.py -m $MAX_WARNINGS_${{ matrix.compiler }}_${{ matrix.compiler_version }}_Debug build.log diff --git a/.github/workflows/dormant/windows.yml b/.github/workflows/dormant/windows.yml deleted file mode 100644 index c60f34be..00000000 --- a/.github/workflows/dormant/windows.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Windows builds -on: push -env: - MAX_WARNINGS_GCC_32bit_Debug: 320 - MAX_WARNINGS_GCC_32bit_Release: 284 - MAX_WARNINGS_GCC_64bit_Debug: 405 - MAX_WARNINGS_GCC_64bit_Release: 369 - MAX_WARNINGS_Clang_32bit_Debug: 129 - MAX_WARNINGS_Clang_32bit_Release: 129 - MAX_WARNINGS_Clang_64bit_Debug: 190 - MAX_WARNINGS_Clang_64bit_Release: 190 - -jobs: - - build_msvc_matrix: - name: MSVC 32-bit - runs-on: windows-latest - steps: - - uses: actions/checkout@v1 - - name: Install packages - shell: pwsh - run: | - vcpkg install libpng sdl1 sdl1-net opusfile - vcpkg integrate install - - name: Log environment - shell: pwsh - run: .\scripts\log-env.ps1 - - name: Release build - shell: pwsh - env: - PATH: '${env:PATH};C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\amd64' - run: | - cd vs - MSBuild -m dosbox.sln -p:Configuration=Release - - name: Debug build - shell: pwsh - env: - PATH: '${env:PATH};C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\amd64' - run: | - cd vs - MSBuild -m dosbox.sln -p:Configuration=Debug - - - build_msys2_matrix: - name: ${{ matrix.compiler }} ${{ matrix.bits }}-bit - runs-on: windows-latest - strategy: - matrix: - compiler: [GCC, Clang] - bits: [32, 64] - env: - CHERE_INVOKING: yes - steps: - - uses: actions/checkout@v1 - - uses: actions/cache@v1 - id: cache-msys2 - if: matrix.compiler == 'GCC' - with: - path: 'C:/tools/msys64' - key: msys2-${{ matrix.compiler }}-${{ matrix.bits }}-2019-v11} - - name: Install MSYS2 - if: steps.cache-msys2.outputs.cache-hit != 'true' - run: choco install msys2 --no-progress - - name: Install C++ compiler and libraries - if: steps.cache-msys2.outputs.cache-hit != 'true' - shell: python scripts\msys-bash.py {0} - run: ./scripts/list-build-dependencies.sh -m msys2 -c ${{ matrix.compiler }} -b ${{ matrix.bits }} | xargs pacman -S --noconfirm - - name: Shrink MSYS2 for cache - if: matrix.compiler == 'GCC' && steps.cache-msys2.outputs.cache-hit != 'true' - shell: python scripts\msys-bash.py {0} - run: ./.github/scripts/shrink-msys2.sh - - name: Log environment - shell: python scripts\msys-bash.py {0} - run: ./scripts/log-env.sh - - name: Release build - shell: python scripts\msys-bash.py {0} - run: ./scripts/build.sh --compiler ${{ matrix.compiler }} --build-type Release --bin-path /mingw${{ matrix.bits }}/bin - - name: Release warnings - run: '.\scripts\count-warnings.py -m $env:MAX_WARNINGS_${{ matrix.compiler }}_${{ matrix.bits }}bit_Release build.log' - - name: Debug build - shell: python scripts\msys-bash.py {0} - run: ./scripts/build.sh --compiler ${{ matrix.compiler }} --build-type Debug --bin-path /mingw${{ matrix.bits }}/bin - - name: Debug warnings - run: '.\scripts\count-warnings.py -m $env:MAX_WARNINGS_${{ matrix.compiler }}_${{ matrix.bits }}bit_Debug build.log' diff --git a/scripts/automator/build/os-defaults b/scripts/automator/build/os-defaults index 572d999d..9c801a85 100644 --- a/scripts/automator/build/os-defaults +++ b/scripts/automator/build/os-defaults @@ -29,7 +29,9 @@ function autogen() { function configure() { if [[ ! -f Makefile || ! -f .previous_build || configure -nt Makefile ]]; then export CXXFLAGS="${CFLAGS} ${CXXONLY}" + set -x ./configure --enable-core-inline ${configure_additions[*]} + set +x fi } diff --git a/scripts/automator/packages/manager-msys2 b/scripts/automator/packages/manager-msys2 index ddd00736..d67e32ba 100644 --- a/scripts/automator/packages/manager-msys2 +++ b/scripts/automator/packages/manager-msys2 @@ -2,6 +2,6 @@ # MSYS2 only supports the current latest releases of Clang and GCC, so we disable version customization packages+=(autogen autoconf base-devel automake-wrapper binutils) pkg_type=$([[ "${bits}" == "64" ]] && echo "x86_64" || echo "i686") -for pkg in pkg-config libtool libpng zlib ncurses SDL SDL_net opusfile; do +for pkg in pkg-config libtool libpng zlib ncurses pdcurses SDL SDL_net opusfile; do packages+=("mingw-w64-${pkg_type}-${pkg}") done