Skip to content

Commit

Permalink
update workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
KRM7 committed Sep 1, 2024
1 parent 76299ea commit 5123481
Show file tree
Hide file tree
Showing 12 changed files with 69 additions and 32 deletions.
10 changes: 10 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: "CodeQL config"

queries:
-uses: security-and-quality

query-filters:
- exclude:
id: cpp/include-non-header
- exclude:
id: cpp/undisciplined-multiple-inheritance
18 changes: 9 additions & 9 deletions .github/workflows/analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
name: core-guidelines-check
runs-on: windows-2022
# Disabled because of an internal compiler error in reference_lines.cpp
if: false
if: true

defaults:
run:
Expand Down Expand Up @@ -37,18 +37,18 @@ jobs:
#############################################################################################################

clang-analyzers:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04

strategy:
matrix:
tool: [
{ name: iwyu, cmake-flag: CMAKE_CXX_INCLUDE_WHAT_YOU_USE="iwyu;-Xiwyu;--mapping_file=../.iwyu-mappings" },
#{ name: iwyu, cmake-flag: CMAKE_CXX_INCLUDE_WHAT_YOU_USE="iwyu;-Xiwyu;--mapping_file=../.iwyu-mappings" },
{ name: clang-tidy, cmake-flag: CMAKE_CXX_CLANG_TIDY="clang-tidy" },
{ name: cppcheck, cmake-flag: CMAKE_CXX_CPPCHECK="cppcheck;--version;--verbose;--report-progress;--enable=all;--error-exitcode=1;--std=c++20;--suppressions-list=../.cppcheck-supressions" }
]
include:
- pkgs: clang-15 clang-tools-15 clang-tidy-15 iwyu cppcheck
cxx: clang++-15
- pkgs: clang-18 clang-tools-18 clang-tidy-18 iwyu cppcheck
cxx: clang++-18

defaults:
run:
Expand Down Expand Up @@ -79,13 +79,13 @@ jobs:
#############################################################################################################

codeql:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04

strategy:
matrix:
include:
- pkgs: clang-15
cxx: clang++-15
- pkgs: clang-18
cxx: clang++-18

name: codeql

Expand All @@ -104,7 +104,7 @@ jobs:
uses: github/codeql-action/init@v3
with:
languages: cpp
queries: security-and-quality
config-file: ${{ github.workspace }}/.github/codeql/codeql-config.yml

- name: setup-build
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:

jobs:
update-docs:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
defaults:
run:
working-directory: ${{ github.workspace }}
Expand Down
18 changes: 12 additions & 6 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,23 @@ on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
container:
image: ubuntu:24.04
strategy:
fail-fast: false
matrix:
common-pkgs: [ git cmake ]
build-type: [ Release, RelWithDebInfo ]
compiler: [
{ cxx: g++-11, pkgs: g++-11 },
{ cxx: g++-12, pkgs: g++-12 },
{ cxx: g++-13, pkgs: g++-13 },
{ cxx: clang++-14, pkgs: clang-14 libstdc++6=12.3.0-1ubuntu1~22.04 libgcc-s1=12.3.0-1ubuntu1~22.04 },
{ cxx: g++-14, pkgs: g++-14 },
{ cxx: clang++-15, pkgs: clang-15 },
{ cxx: clang++-16, pkgs: clang-16 },
{ cxx: clang++-17, pkgs: clang-17 },
{ cxx: clang++-18, pkgs: clang-18 },
]

defaults:
Expand All @@ -28,17 +34,17 @@ jobs:
uses: actions/checkout@v4

- name: setup-compiler
run: sudo apt update && sudo apt install --allow-downgrades -y ${{ matrix.compiler.pkgs }}
run: apt update && apt install --allow-downgrades -y ${{ matrix.common-pkgs }} ${{ matrix.compiler.pkgs }}

- name: setup-catch
env:
CXX: ${{ matrix.compiler.cxx }}
run: sudo bash ../tools/install_catch.sh
run: bash ../tools/install_catch.sh

- name: setup-build
env:
CXX: ${{ matrix.compiler.cxx }}
run: cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DGAPP_USE_WERROR=ON -DGAPP_USE_LTO=ON
run: cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DGAPP_USE_WERROR=ON -DGAPP_USE_LTO=ON -DGAPP_CXX_FLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS"

- name: build
run: cmake --build . --parallel 8
Expand All @@ -47,4 +53,4 @@ jobs:
run: ctest --output-on-failure --schedule-random

- name: install
run: sudo cmake --install .
run: cmake --install .
20 changes: 18 additions & 2 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ on: [push, pull_request]

jobs:
build:
runs-on: macos-13
runs-on: macos-14
strategy:
fail-fast: false
matrix:
build-type: [ Release, RelWithDebInfo ]
compiler: [
{ cxx: g++-11, pkgs: gcc@11, extra-flags: "-undefined dynamic_lookup" },
{ cxx: g++-12, pkgs: gcc@12, extra-flags: "-undefined dynamic_lookup" },
{ cxx: g++-13, pkgs: gcc@13, extra-flags: "-undefined dynamic_lookup -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread" },
{ cxx: g++-13, pkgs: gcc@13, extra-flags: "-undefined dynamic_lookup" },
{ cxx: g++-14, pkgs: gcc@14, extra-flags: "-undefined dynamic_lookup" },
{
cxx: $(brew --prefix llvm@14)/bin/clang++,
pkgs: llvm@14 gcc@11,
Expand All @@ -24,6 +25,18 @@ jobs:
pkgs: llvm@15 gcc@12,
extra-flags: "-femulated-tls -stdlib=libstdc++ -stdlib++-isystem $(brew --prefix gcc@12)/include/c++/12 -cxx-isystem $(brew --prefix gcc@12)/include/c++/12/x86_64-apple-darwin22",
linker-flags: "-L$(brew --prefix gcc@12)/lib/gcc/12"
},
{
cxx: $(brew --prefix llvm@15)/bin/clang++,
pkgs: llvm@16 gcc@13,
extra-flags: "-femulated-tls -stdlib=libstdc++ -stdlib++-isystem $(brew --prefix gcc@13)/include/c++/13 -cxx-isystem $(brew --prefix gcc@13)/include/c++/13/x86_64-apple-darwin22",
linker-flags: "-L$(brew --prefix gcc@13)/lib/gcc/13"
},
{
cxx: $(brew --prefix llvm@15)/bin/clang++,
pkgs: llvm@17 gcc@14,
extra-flags: "-femulated-tls -stdlib=libstdc++ -stdlib++-isystem $(brew --prefix gcc@14)/include/c++/14 -cxx-isystem $(brew --prefix gcc@14)/include/c++/14/x86_64-apple-darwin23",
linker-flags: "-L$(brew --prefix gcc@14)/lib/gcc/14"
}
]

Expand All @@ -40,6 +53,9 @@ jobs:
- name: setup-compiler
run: brew update && brew install ${{ matrix.compiler.pkgs }}

- name: dummy step
run: ls $(brew --prefix gcc@13)/include/c++/13

- name: setup-xcode
run: sudo xcode-select -switch /Applications/Xcode_15.1.app

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/sanitizers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
sanitizer: [ address, undefined, thread ]
include:
- cxx: clang++-15
pkgs: clang-15 llvm-15
- cxx: clang++-18
pkgs: clang-18 llvm-18

env:
ASAN_OPTIONS: check_initialization_order=1:strict_init_order=1:detect_stack_use_after_return=1:detect_leaks=1
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ jobs:
build-type: [ Release, RelWithDebInfo ]
platform: [ x64, Win32 ]
generator: [ "Visual Studio 17 2022" ]
compiler: [ v143, ClangCL ]
compiler: [
{ name: msvc, toolset: v143 },
{ name: clang, toolset: ClangCL }
]
build-shared: [ "ON", "OFF" ]
exclude:
- platform: Win32
Expand All @@ -23,7 +26,7 @@ jobs:
run:
working-directory: ${{ github.workspace }}/build

name: ${{ matrix.compiler }}-${{ matrix.platform }}, ${{ matrix.build-type }}, Shared=${{ matrix.build-shared }}
name: ${{ matrix.compiler.name }}-${{ matrix.platform }}, ${{ matrix.build-type }}, Shared=${{ matrix.build-shared }}


steps:
Expand All @@ -36,14 +39,14 @@ jobs:
- name: setup-catch
env:
CMAKE_GENERATOR: ${{ matrix.generator }}
CMAKE_GENERATOR_TOOLSET: ${{ matrix.compiler }}
CMAKE_GENERATOR_TOOLSET: ${{ matrix.compiler.toolset }}
CMAKE_GENERATOR_PLATFORM: ${{ matrix.platform }}
run: bash ../tools/install_catch.sh

- name: setup-build
env:
CMAKE_GENERATOR: ${{ matrix.generator }}
CMAKE_GENERATOR_TOOLSET: ${{ matrix.compiler }}
CMAKE_GENERATOR_TOOLSET: ${{ matrix.compiler.toolset }}
CMAKE_GENERATOR_PLATFORM: ${{ matrix.platform }}
run: cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DBUILD_SHARED_LIBS=${{ matrix.build-shared }} -DGAPP_USE_WERROR=ON -DGAPP_USE_LTO=ON

Expand Down
5 changes: 3 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,16 @@ else() # GNU style compiler interface

# gcc specific options
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(GAPP_WARN_FLAGS "${GAPP_WARN_FLAGS} -Wlogical-op")
# -Warray-bounds, -Wstringop-overflow, -Wstringop-overread are regular false positives since g++-12
set(GAPP_WARN_FLAGS "${GAPP_WARN_FLAGS} -Wlogical-op -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread")
endif()
# clang specific options
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(GAPP_OPT_FLAGS "${GAPP_OPT_FLAGS}")
endif()

set(CMAKE_CXX_FLAGS "${GAPP_CXX_FLAGS} ${GAPP_WARN_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "-Og")
set(CMAKE_CXX_FLAGS_DEBUG "-Og -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS")
set(CMAKE_CXX_FLAGS_RELEASE "-g -DNDEBUG ${GAPP_OPT_FLAGS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g ${GAPP_OPT_FLAGS}")
endif()
Expand Down
3 changes: 2 additions & 1 deletion CMakeSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@
"variables": [
{
"name": "CMAKE_CXX_CLANG_TIDY",
"value": "clang-tidy"
"value": "clang-tidy",
"type": "STRING"
}
]
},
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ The maximum of sin(x) in [0.0, 3.14] is at x = 1.57079

The following are needed for building and using the library:

- C++20 compiler (gcc 11.0, clang 14.0, msvc 14.30 or later)
- C++20 compiler (gcc 11.0, clang 15.0, msvc 14.30 or later)
- CMake 3.21 or later
- Catch2 3.3 or later (optional, only needed for the tests)

Expand Down
2 changes: 1 addition & 1 deletion docs/install-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ is needed to build the tests.

The full list of requirements are:

- C++20 compiler (gcc 11.0, clang 14.0, msvc 14.30 or later)
- C++20 compiler (gcc 11.0, clang 15.0, msvc 14.30 or later)
- CMake 3.21 or later
- Catch2 3.3 or later (optional, only needed for the tests)

Expand Down
4 changes: 2 additions & 2 deletions src/algorithm/soga_selection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@ namespace gapp::selection
const double temperature = temperature_(ga.generation_cntr(), ga.max_gen());

// can't capture the iterators by ref or value here
std::transform(fvec.begin(), fvec.end(), fvec.begin(), [&, fmin = *fmin](double f) noexcept
std::transform(fvec.begin(), fvec.end(), fvec.begin(), [&, f_min = *fmin](double f) noexcept
{
const double fnorm = f / df - fmin / df; // normalize the fitness values to prevent overflows with std::exp
const double fnorm = f / df - f_min / df; // normalize the fitness values to prevent overflows with std::exp

return std::min(math::large<double>, std::exp(fnorm / temperature));
});
Expand Down

0 comments on commit 5123481

Please sign in to comment.