FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

added MinGW workflow by firewave · Pull Request #475 · cppcheck-opensource/simplecpp · GitHub

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .cpp  (1) .sh  (1) .txt  (1) .yml  (1) All 4 file types selected
Only manifest files
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
138 changes: 138 additions & 0 deletions .github/workflows/CI-mingw.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: CI-mingw

on: [push, pull_request]

permissions:
contents: read

defaults:
run:
shell: msys2 {0}

jobs:
build:

strategy:
matrix:
compiler: [g++, clang++]
# TODO: add MSYS after #556 is fixed
msystem: [MINGW32, MINGW64, CLANG64]
include:
#- msystem: MSYS
# pkg-prefix: ''
- msystem: MINGW32
pkg-prefix: 'mingw-w64-i686-'
- msystem: MINGW64
pkg-prefix: 'mingw-w64-x86_64-'
- msystem: CLANG64
pkg-prefix: 'mingw-w64-clang-x86_64-'
- compiler: g++
compiler-pkg: gcc
- compiler: clang++
compiler-pkg: clang
exclude:
- msystem: CLANG64
compiler: g++
fail-fast: false

runs-on: windows-2025

env:
CXX: ${{ matrix.compiler }}

steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
release: false # use pre-installed
msystem: ${{ matrix.msystem }}
# TODO: install mingw-w64-x86_64-make and use mingw32.make instead - currently fails with "Windows Subsystem for Linux has no installed distributions."
# TODO: also run tests with non-prefixed Python?
install: >-
make
${{ matrix.pkg-prefix }}cmake
${{ matrix.pkg-prefix }}python
${{ matrix.pkg-prefix }}python-pytest

- name: install compiler
run: |
pacman -S --noconfirm ${{ matrix.pkg-prefix }}${{ matrix.compiler-pkg }}
${CXX} -v

- name: make simplecpp
run: |
make -j$(nproc) CXXOPTS="-Werror"

# gcc *and* clang are required to run-tests.py
# install it at this point since it has gcc as dependency which might interfere with the build
- name: install compiler (clang)
if: matrix.compiler == 'g++'
run: |
pacman -S --noconfirm clang

- name: install compiler (gcc)
if: matrix.compiler == 'clang++'
run: |
pacman -S --noconfirm gcc

- name: make test
run: |
# TODO: run tests with Windows paths
make -j$(nproc) test

- name: selfcheck
run: |
# TODO: run tests with Windows paths
make -j$(nproc) selfcheck

- name: make (c++14)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++14"

- name: make (c++17)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++17"

- name: make (c++20)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++20"

- name: make (c++23)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++23"

- name: Run CMake
run: |
cmake -S . -B cmake.output -DCMAKE_COMPILE_WARNING_AS_ERROR=On

- name: CMake simplecpp
run: |
cmake --build cmake.output --target simplecpp -- -j $(nproc)

- name: CMake testrunner
run: |
cmake --build cmake.output --target testrunner -- -j $(nproc)

- name: Run testrunner
run: |
./cmake.output/testrunner

- name: Run with libstdc++ debug mode
if: matrix.compiler == 'g++'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -g3 -D_GLIBCXX_DEBUG"

- name: Run with libc++ hardening mode
if: matrix.compiler == 'clang++' && matrix.msystem == 'CLANG64'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -stdlib=libc++ -g3 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG" LDOPTS="-lc++"
12 changes: 11 additions & 1 deletion CMakeLists.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_options(-Woverloaded-virtual) # when a function declaration hides virtual functions from a base class

add_compile_options(-Wsuggest-attribute=noreturn)
add_compile_options_safe(-Wuseless-cast)
if (NOT MINGW)
add_compile_options_safe(-Wuseless-cast)
endif()

# we are not interested in these
set_source_files_properties(test.cpp PROPERTIES COMPILE_FLAGS -Wno-multichar)
Expand Down Expand Up @@ -62,6 +64,14 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")

# contradicts -Wcovered-switch-default
add_compile_options(-Wno-switch-default)
if (MINGW)
add_compile_options(-Wno-reserved-macro-identifier)
add_compile_options(-Wno-unused-macros)
endif()

# these are experimental warnings which might produce false positives
add_compile_options_safe(-Wno-thread-safety-negative)
add_compile_options_safe(-Wno-thread-safety-beta)

# TODO: fix these?
add_compile_options(-Wno-padded)
Expand Down
15 changes: 13 additions & 2 deletions selfcheck.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,20 @@ if [ "$cxx_type" = "Ubuntu" ] || [ "$cxx_type" = "Debian" ]; then
fi

# TODO: generate defines from compiler
if [ "$cxx_type" = "g++" ]; then
if [ "$cxx_type" = "g++" ] || [ "$cxx_type" = "g++.exe" ]; then
defs=
defs="$defs -D__GNUC__"
defs="$defs -D__STDC__"
defs="$defs -D__x86_64__"
defs="$defs -D__STDC_HOSTED__"
defs="$defs -D__CHAR_BIT__=8"
if [ "${MSYSTEM}" = "MINGW32" ] || [ "${MSYSTEM}" = "MINGW64" ]; then
defs="$defs -D_WIN32"
fi
defs="$defs -D__has_builtin(x)=(1)"
defs="$defs -D__has_cpp_attribute(x)=(1)"
defs="$defs -D__has_attribute(x)=(1)"
defs="$defs -Ddefined(x)=(0)"

inc=
while read line
Expand All @@ -63,12 +67,19 @@ elif [ "$cxx_type" = "clang" ]; then
defs="$defs -D__x86_64__"
defs="$defs -D__STDC_HOSTED__"
defs="$defs -D__CHAR_BIT__=8"
defs="$defs -D__BYTE_ORDER__=1234"
defs="$defs -D__SIZEOF_SIZE_T__=8"
if [ "${MSYSTEM}" = "MINGW32" ] || [ "${MSYSTEM}" = "MINGW64" ] || [ "${MSYSTEM}" = "CLANG64" ]; then
defs="$defs -D_WIN32"
fi
defs="$defs -D__has_builtin(x)=(1)"
defs="$defs -D__has_cpp_attribute(x)=(1)"
defs="$defs -D__has_feature(x)=(1)"
defs="$defs -D__has_include_next(x)=(0)"
defs="$defs -D__has_include_next(x)=(1)"
defs="$defs -D__has_attribute(x)=(0)"
defs="$defs -D__building_module(x)=(0)"
defs="$defs -D__has_extension(x)=(1)"
defs="$defs -Ddefined(x)=(0)"

inc=
while read line
Expand Down
2 changes: 1 addition & 1 deletion simplecpp.cpp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -3120,7 +3120,7 @@ std::pair<simplecpp::FileData *, bool> simplecpp::FileDataCache::get(const std::
bool simplecpp::FileDataCache::getFileId(const std::string &path, FileID &id)
{
#ifdef _WIN32
HANDLE hFile = CreateFileA(path.c_str(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hFile = CreateFileA(path.c_str(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);

if (hFile == INVALID_HANDLE_VALUE)
return false;
Expand Down

Back | FazBrowse Home | New Git URL