From b8e8dd14457f42badf89e36a6c0ea26989f0efbb Mon Sep 17 00:00:00 2001 From: Darafei Praliaskouski Date: Thu, 26 Mar 2020 12:21:20 +0300 Subject: [PATCH 1/8] Enable interprocedural optimization --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff6081448..7546ed833 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.9) +cmake_policy(SET CMP0069 NEW) +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) set(H3_PREFIX "" CACHE STRING "Prefix for exported symbols") set(H3_ALLOC_PREFIX "" CACHE STRING "Prefix for allocation functions") @@ -57,8 +59,8 @@ set(H3_SOVERSION 1) project(h3 LANGUAGES C VERSION ${H3_VERSION}) -set(H3_COMPILE_FLAGS "") -set(H3_LINK_FLAGS "") +set(H3_COMPILE_FLAGS "-O1" "-finline-small-functions" "-finline-functions") +set(H3_LINK_FLAGS "-Wl,-Bsymbolic-functions" "-Wl,-z,relro") if(NOT WIN32) # Compiler options are set only on non-Windows, since these options # are not correct for MSVC. From 15b5a4db9ce5b6c2b6f38c81acfb8624a7c8c8c6 Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Fri, 19 Jun 2020 12:06:35 -0700 Subject: [PATCH 2/8] Enable inline only on release --- CMakeLists.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7546ed833..8f9191189 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,6 @@ # limitations under the License. cmake_minimum_required(VERSION 3.9) -cmake_policy(SET CMP0069 NEW) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) set(H3_PREFIX "" CACHE STRING "Prefix for exported symbols") set(H3_ALLOC_PREFIX "" CACHE STRING "Prefix for allocation functions") @@ -25,6 +23,9 @@ set(CMAKE_MACOSX_RPATH 1) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # YCM needs compilation database set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# Interprocedural optimization +cmake_policy(SET CMP0069 NEW) +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchain.cmake" @@ -59,13 +60,14 @@ set(H3_SOVERSION 1) project(h3 LANGUAGES C VERSION ${H3_VERSION}) -set(H3_COMPILE_FLAGS "-O1" "-finline-small-functions" "-finline-functions") -set(H3_LINK_FLAGS "-Wl,-Bsymbolic-functions" "-Wl,-z,relro") +set(H3_COMPILE_FLAGS "") +set(H3_LINK_FLAGS "") if(NOT WIN32) # Compiler options are set only on non-Windows, since these options # are not correct for MSVC. list(APPEND H3_COMPILE_FLAGS -Wall) + list(APPEND H3_COMPILE_FLAGS $<$:-O2 -finline-functions>) list(APPEND H3_COMPILE_FLAGS $<$:-gdwarf-2 -g3 -O0 -fno-inline -fno-eliminate-unused-debug-types>) if(ENABLE_COVERAGE) From 874c3cbe17743838000cf7dcc392f2062954b9d2 Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Fri, 19 Jun 2020 14:01:32 -0700 Subject: [PATCH 3/8] Try disabling linting --- CMakeLists.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f9191189..71fb3a3ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,17 +266,17 @@ elseif(NOT CLANG_FORMAT_PATH) "so automatic source code reformatting is disabled") endif() -option(ENABLE_LINTING "Run clang-tidy on source files" ON) -find_program(CLANG_TIDY_PATH "clang-tidy") -cmake_dependent_option( - ENABLE_LINTING "Enable running clang-tidy on sources during compilation" ON - "CLANG_TIDY_PATH" OFF) -if(ENABLE_LINTING) - set_target_properties(h3 PROPERTIES C_CLANG_TIDY "${CLANG_TIDY_PATH}") -elseif(NOT CLANG_TIDY_PATH) - message(WARNING "clang-tidy was not detected, " - "so source code linting is disabled") -endif() +# option(ENABLE_LINTING "Run clang-tidy on source files" ON) +# find_program(CLANG_TIDY_PATH "clang-tidy") +# cmake_dependent_option( +# ENABLE_LINTING "Enable running clang-tidy on sources during compilation" ON +# "CLANG_TIDY_PATH" OFF) +# if(ENABLE_LINTING) +# set_target_properties(h3 PROPERTIES C_CLANG_TIDY "${CLANG_TIDY_PATH}") +# elseif(NOT CLANG_TIDY_PATH) +# message(WARNING "clang-tidy was not detected, " +# "so source code linting is disabled") +# endif() # Docs find_package(Doxygen) From 6f1ad6134d565587f24e4bb6c8ccc52dd13861ea Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Thu, 6 Aug 2020 18:51:23 -0700 Subject: [PATCH 4/8] Use clang from apt --- .travis.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3acc25265..ccbde5fcf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,10 +17,6 @@ language: c os: linux dist: bionic -compiler: - - gcc - - clang - # Docs are built during the normal compile/test check. addons: apt: @@ -30,6 +26,18 @@ addons: matrix: include: + - name: "GCC" + compiler: gcc + - name: "Clang" + # Fix missing LLVMgold + # https://travis-ci.community/t/xenial-image-includes-clang-without-llvmgold-support/3522/4 + env: + - CC="/usr/bin/clang-7" + addons: + apt: + packages: + - clang-7 + - llvm-7-dev # Check that clang-format doesn't detect some files are not formatted. - name: "Formatting check" compiler: clang From dee30a5be481b7249d2df977552bccb4e7bb3822 Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Thu, 6 Aug 2020 19:06:04 -0700 Subject: [PATCH 5/8] Disable C++ in examples --- .travis.yml | 1 + examples/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ccbde5fcf..f4eb4f2d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,6 +33,7 @@ matrix: # https://travis-ci.community/t/xenial-image-includes-clang-without-llvmgold-support/3522/4 env: - CC="/usr/bin/clang-7" + - CXX="/usr/bin/clang++-7" addons: apt: packages: diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 52937a86d..3844f3103 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required(VERSION 3.1) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD 11) -project(h3examples) +project(h3examples LANGUAGES C) find_package(h3 CONFIG REQUIRED) From 7d53e60984b1e599bb1e613da81a33c3517058b8 Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Thu, 6 Aug 2020 19:12:59 -0700 Subject: [PATCH 6/8] set compiler for Clang test --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f4eb4f2d0..3223f94bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ matrix: - name: "GCC" compiler: gcc - name: "Clang" + compiler: clang # Fix missing LLVMgold # https://travis-ci.community/t/xenial-image-includes-clang-without-llvmgold-support/3522/4 env: From a7a3164d463c1ea995c6fdb0332487ff2e9c02cf Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Thu, 6 Aug 2020 19:19:11 -0700 Subject: [PATCH 7/8] Download clang package from llvm.org --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 3223f94bf..8007add63 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,9 @@ matrix: - CXX="/usr/bin/clang++-7" addons: apt: + sources: + - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main' + key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' packages: - clang-7 - llvm-7-dev From b68d4c2cd6466c622d2379927b9689af90fcb131 Mon Sep 17 00:00:00 2001 From: Isaac Brodsky Date: Thu, 6 Aug 2020 19:49:20 -0700 Subject: [PATCH 8/8] Try clang-9 --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8007add63..76152cc36 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,16 +33,16 @@ matrix: # Fix missing LLVMgold # https://travis-ci.community/t/xenial-image-includes-clang-without-llvmgold-support/3522/4 env: - - CC="/usr/bin/clang-7" - - CXX="/usr/bin/clang++-7" + - CC="/usr/bin/clang-9" + - CXX="/usr/bin/clang++-9" addons: apt: sources: - - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main' + - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main' key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' packages: - - clang-7 - - llvm-7-dev + - clang-9 + - llvm-9-dev # Check that clang-format doesn't detect some files are not formatted. - name: "Formatting check" compiler: clang