From a6823e60836dba7e5a7008378f107dac327eebe6 Mon Sep 17 00:00:00 2001 From: "Dementiev, Roman" Date: Tue, 25 Jan 2022 09:29:11 +0100 Subject: [PATCH 1/3] add .github/workflows/ci-cmake-options.yml Change-Id: Ifda50cd43868ed0f7cfbb1574b2d47a428f61d37 --- .github/workflows/ci-cmake-options.yml | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .github/workflows/ci-cmake-options.yml diff --git a/.github/workflows/ci-cmake-options.yml b/.github/workflows/ci-cmake-options.yml new file mode 100644 index 00000000..da66d789 --- /dev/null +++ b/.github/workflows/ci-cmake-options.yml @@ -0,0 +1,60 @@ +name: test cmake options + +on: + push: + branches: [ '**' ] + pull_request: + branches: [ '**' ] + +jobs: + build: + + runs-on: ci-gcc10 + if: ${{ github.repository != 'opcm/pcm' }} + + steps: + - uses: actions/checkout@v2 + - name: Preparation + run: | + cd ${{ github.workspace }}/src + git clone https://github.com/simdjson/simdjson.git + cd .. + + - name: CMake default install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake Release install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=Release + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake Debug install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=Debug + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake RelWithDebInfo install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=RelWithDebInfo + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: Diagnostic + run: date \ No newline at end of file From 737164b7a940a4c80949bd6b31f7715d91469177 Mon Sep 17 00:00:00 2001 From: MarkovaMaria Date: Tue, 18 Jan 2022 17:21:59 +0100 Subject: [PATCH 2/3] cmake: streamline option definitions Change-Id: Ic4033c1ee304b1e94d5d7b2e743a2d1d45975a5c Co-authored-by: MarkovaMaria Co-authored-by: Roman Dementiev --- .github/workflows/ci-cmake-options.yml | 42 ++++++++++++++++++++++++++ CMakeLists.txt | 26 ++++++++++++++++ examples/CMakeLists.txt | 4 --- src/CMakeLists.txt | 26 ++++------------ tests/CMakeLists.txt | 4 --- 5 files changed, 74 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci-cmake-options.yml b/.github/workflows/ci-cmake-options.yml index da66d789..304c5f68 100644 --- a/.github/workflows/ci-cmake-options.yml +++ b/.github/workflows/ci-cmake-options.yml @@ -56,5 +56,47 @@ jobs: export VERBOSE=1 make install -j$(nproc) + - name: CMake Custom build install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_CXX_FLAGS_CUSTOM:STRING="-O2 -g" -DCMAKE_BUILD_TYPE=CUSTOM + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake User-flags build install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_CXX_FLAGS="-O2 -g -fPIC" + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake env var option build install + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + export CXXFLAGS="-grecord-gcc-switches" + export CFLAGS="-fstack-protector-strong" + export LDFLAGS="-Wl,-z,now" + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_CXX_FLAGS_CUSTOM:STRING="-O2 -g -fPIC" -DCMAKE_BUILD_TYPE=CUSTOM + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + + - name: CMake env var option build install (no custom flags) + run: | + cmake --version + rm -rf ${{ github.workspace }}/build + export CXXFLAGS="-grecord-gcc-switches" + export CFLAGS="-fstack-protector-strong" + export LDFLAGS="-Wl,-z,now" + cmake -B ${{ github.workspace }}/build -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=CUSTOM + cd ${{ github.workspace }}/build + export VERBOSE=1 + make install -j$(nproc) + - name: Diagnostic run: date \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d32eaac6..00175bef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,32 @@ if(UNIX) # APPLE, LINUX, FREE_BSD set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE) endif() message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + + message(STATUS "initial CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") + message(STATUS "initial CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") + + # required PCM common flags + set (PCM_COMMON_FLAGS "-Wno-unknown-pragmas -fPIC") + + if(LINUX) + set (PCM_COMMON_FLAGS "${PCM_COMMON_FLAGS} -Wextra -DPCM_USE_PERF") + endif(LINUX) + + # adding the required PCM common flags + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PCM_COMMON_FLAGS}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PCM_COMMON_FLAGS}") + + message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") + message(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") + + set(PCM_OPTIONAL_FLAGS "-Wall") + set(CMAKE_CXX_FLAGS_RELEASE "${PCM_OPTIONAL_FLAGS} -O3") + set(CMAKE_CXX_FLAGS_DEBUG "${PCM_OPTIONAL_FLAGS} -O0 -g") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${PCM_OPTIONAL_FLAGS} -O3 -g") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + endif(UNIX) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index da7d7902..ffc325bf 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -8,10 +8,6 @@ # * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set(CMAKE_C_FLAGS "-Wall -Wno-unknown-pragmas -fPIC") -set(CMAKE_C_FLAGS_RELEASE "-O3") -set(CMAKE_C_FLAGS_DEBUG "-O0 -g") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/examples) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3f812d84..19a3d3d1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,27 +10,13 @@ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Flags settings -set(CMAKE_CXX_FLAGS "") -if(LINUX) - set(CMAKE_CXX_FLAGS "-Wall -fPIC -Wno-unknown-pragmas -Wextra -DPCM_USE_PERF") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g") -endif(LINUX) - -if(FREE_BSD) - set(CMAKE_CXX_FLAGS "-Wall -fPIC -Wno-unknown-pragmas") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g") -endif(FREE_BSD) +if(UNIX) -if(APPLE) - set(CMAKE_CXX_FLAGS "-Wall -fPIC -Wno-unknown-pragmas") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") - add_subdirectory(MacMSRDriver) -endif(APPLE) + if(APPLE) + add_subdirectory(MacMSRDriver) + endif(APPLE) + +endif(UNIX) if(MSVC) set(CMAKE_CXX_FLAGS "/O2 /wd4251 /wd4273") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index af7e65ef..bb5154fd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,10 +8,6 @@ # * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set(CMAKE_CXX_FLAGS "-Wall -Wno-unknown-pragmas -fPIC") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") -set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests) From ce3f809f372df3dd5e102f149c7c11480a788418 Mon Sep 17 00:00:00 2001 From: "Dementiev, Roman" Date: Tue, 25 Jan 2022 14:43:16 +0100 Subject: [PATCH 3/3] fix options for MSVC Change-Id: Icc56eb57cdae11061873c4db0b6e70097d4680a5 --- src/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 19a3d3d1..07452186 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,8 +19,7 @@ if(UNIX) endif(UNIX) if(MSVC) - set(CMAKE_CXX_FLAGS "/O2 /wd4251 /wd4273") - set(CMAKE_CXX_FLAGS_RELEASE "/O2 /wd4251 /wd4273") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /wd4251 /wd4273") add_definitions(/W3) endif(MSVC) @@ -56,7 +55,7 @@ if(APPLE) endif(APPLE) if(MSVC) - set(CMAKE_CXX_FLAGS "/EHa /Zi") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa /Zi") # https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html # windows/restrictDriverAccess.cpp is building separately add_library(restrictDriverAccess OBJECT windows/restrictDriverAccess.cpp)