Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bumped minimum requirements to GCC 5.1 / Clang 3.5 / Visual Studio 2015 / CMake 3.5 #5398

Merged
merged 3 commits into from
Jan 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 5 additions & 30 deletions .github/workflows/CI-unixish-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:

strategy:
matrix:
image: ["centos:7", "ubuntu:14.04", "ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"]
image: ["ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"]
include:
- build_gui: false
- image: "ubuntu:23.10"
Expand All @@ -39,13 +39,6 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Install missing software on CentOS 7
if: matrix.image == 'centos:7'
run: |
yum install -y cmake gcc-c++ make pcre-devel
yum --enablerepo=extras install -y epel-release
yum install -y ccache

- name: Install missing software on ubuntu
if: contains(matrix.image, 'ubuntu')
run: |
Expand All @@ -62,30 +55,20 @@ jobs:
# - it doesn't support centos
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
if: matrix.image != 'ubuntu:14.04' # no support for --set-config
with:
key: ${{ github.workflow }}-${{ matrix.image }}

# tests require CMake 3.9 - no ccache available
- name: CMake build (no tests / no ccache)
if: matrix.image == 'ubuntu:14.04'
run: |
mkdir cmake.output
cd cmake.output
cmake -G "Unix Makefiles" -DHAVE_RULES=On ..
cmake --build . -- -j$(nproc)

# tests require CMake 3.9 - ccache available
- name: CMake build (no tests)
if: matrix.image == 'centos:7' || matrix.image == 'ubuntu:16.04'
if: matrix.image == 'ubuntu:16.04'
run: |
mkdir cmake.output
cd cmake.output
cmake -G "Unix Makefiles" -DHAVE_RULES=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ..
cmake --build . -- -j$(nproc)

- name: CMake build
if: ${{ !matrix.build_gui && matrix.image != 'centos:7' && matrix.image != 'ubuntu:14.04' && matrix.image != 'ubuntu:16.04' }}
if: ${{ !matrix.build_gui && matrix.image != 'ubuntu:16.04' }}
run: |
mkdir cmake.output
cd cmake.output
Expand All @@ -99,15 +82,15 @@ jobs:
cmake --build cmake.output -- -j$(nproc)

- name: Run CMake test
if: matrix.image != 'centos:7' && matrix.image != 'ubuntu:14.04' && matrix.image != 'ubuntu:16.04'
if: matrix.image != 'ubuntu:16.04'
run: |
cmake --build cmake.output --target check -- -j$(nproc)

build_make:

strategy:
matrix:
image: ["centos:7", "ubuntu:14.04", "ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"]
image: ["ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"]
fail-fast: false # Prefer quick result

runs-on: ubuntu-22.04
Expand All @@ -118,13 +101,6 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Install missing software on CentOS 7
if: matrix.image == 'centos:7'
run: |
yum install -y gcc-c++ make which python3 pcre-devel
yum --enablerepo=extras install -y epel-release
yum install -y ccache

- name: Install missing software on ubuntu
if: contains(matrix.image, 'ubuntu')
run: |
Expand All @@ -136,7 +112,6 @@ jobs:
# - it doesn't support centos
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
if: matrix.image != 'ubuntu:14.04' # no support for --set-config
with:
key: ${{ github.workflow }}-${{ matrix.image }}

Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5)
project(Cppcheck)

include(cmake/cxx11.cmake)
Expand Down
13 changes: 6 additions & 7 deletions cmake/compilerCheck.cmake
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
message(ERROR "GCC >= 4.8 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
message(ERROR "GCC >= 5.1 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported")
endif ()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# TODO: verify this
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.9)
message(ERROR "Clang >= 2.9 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5)
message(ERROR "Clang >= 3.5 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported")
endif ()
elseif(MSVC)
if (MSVC_VERSION VERSION_LESS 1800)
message(ERROR "Visual Studio >= 2013 (1800) required - detected ${MSVC_VERSION} not supported")
if (MSVC_VERSION VERSION_LESS 1900)
message(ERROR "Visual Studio >= 2015 (19.0) required - detected ${MSVC_VERSION} not supported")
endif ()
endif()
24 changes: 13 additions & 11 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,24 @@ You can stop the script whenever you like with Ctrl C.

## Compiling

Any C++11 compiler should work. For compilers with partial C++11 support it may work. If your compiler has the C++11 features that are available in Visual Studio 2013 / GCC 4.8 then it will work.
Cppcheck requires a C++ compiler with (partial) C++11 support. Minimum required versions are GCC 5.1 / Clang 3.5 / Visual Studio 2015.

To build the GUI, you need Qt.
To build the GUI application, you need to use the CMake or qmake (deprecated) build system.

When building the command line tool, [PCRE](http://www.pcre.org/) is optional. It is used if you build with rules.

There are multiple compilation choices:
* qmake - cross platform build tool
* cmake - cross platform build tool
* Windows: Visual Studio (VS 2013 and above)
* Windows: Qt Creator + mingw
* gnu make
* g++ 4.8 (or later)
* clang++

### cmake
* qmake - cross platform build tool (deprecated)
* CMake - cross platform build tool
* Windows: Visual Studio
* Windows: Qt Creator + MinGW
* GNU make
* GCC (g++)
* Clang (clang++)

### CMake

The minimum required version is CMake 3.5.

Example, compiling Cppcheck with cmake:

Expand Down
2 changes: 2 additions & 0 deletions releasenotes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ Deprecations:

Other:
- Added CMake option 'EXTERNALS_AS_SYSTEM' to treat external includes as 'SYSTEM' ones.
- The minimum required compiler versions have been bumped to GCC 5.1 / Clang 3.5 / Visual Studio 2015
- The minimum required CMake version has been bumped to 3.5
3 changes: 2 additions & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ if (BUILD_TESTS)
endif()

if (REGISTER_TESTS)
# CMP0064 requires 3.4
# CMP0057 requires 3.3 - if (IN_LIST)
# CMP0064 requires 3.4 - if (TEST)
# CMAKE_MATCH_<n> usage for if (MATCHES) requires 3.9
cmake_minimum_required(VERSION 3.9)
cmake_policy(SET CMP0064 NEW)
Expand Down
Loading