This is an automated email from the ASF dual-hosted git repository.
astitcher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git
The following commit(s) were added to refs/heads/main by this push:
new bace48e2e PROTON-2669: More updates for CMake 3.16
bace48e2e is described below
commit bace48e2e16aed0186e2a17dc89aaf0cef553f7c
Author: Andrew Stitcher <[email protected]>
AuthorDate: Thu Feb 9 15:06:32 2023 -0500
PROTON-2669: More updates for CMake 3.16
Use CMAKE_INTERPROCEDURAL_OPTIMIZATION as can now rely on it. Remove all
special support for C/C++ standards beyond the support in CMake 3 and
up.
---
CMakeLists.txt | 49 +++++----------------------------------
c/CMakeLists.txt | 24 +++++++------------
c/tests/CMakeLists.txt | 8 +++----
cpp/CMakeLists.txt | 3 +--
cpp/cpp.cmake | 62 --------------------------------------------------
ruby/CMakeLists.txt | 25 --------------------
6 files changed, 19 insertions(+), 152 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 58624b587..7b81e529e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,16 +63,9 @@ set (PN_C_LIBRARY_DIR "${CMAKE_BINARY_DIR}/c")
set (PN_C_SOURCE_DIR "${CMAKE_BINARY_DIR}/c/src")
## C
-if (DEFINED CMAKE_C_COMPILE_FEATURES)
- set(CMAKE_C_STANDARD 99)
- set(CMAKE_C_EXTENSIONS OFF)
- set(CMAKE_C_STANDARD_REQUIRED ON)
-else()
- set (C_STANDARD_GNU -std=c99)
- set (C_EXTENDED_GNU -std=gnu99)
- set (C_STANDARD_Clang -std=c99)
- set (C_EXTENDED_Clang -std=gnu99)
-endif()
+set(CMAKE_C_STANDARD 99)
+set(CMAKE_C_EXTENSIONS OFF)
+set(CMAKE_C_STANDARD_REQUIRED ON)
set (C_STANDARD_FLAGS ${C_STANDARD_${CMAKE_C_COMPILER_ID}})
set (C_EXTENDED_FLAGS ${C_EXTENDED_${CMAKE_C_COMPILER_ID}})
@@ -83,13 +76,8 @@ if (CMAKE_CXX_COMPILER)
enable_language(CXX)
# This effectively checks for cmake version 3.1 or later
- if (DEFINED CMAKE_CXX_COMPILE_FEATURES)
- set(CMAKE_CXX_STANDARD 11)
- set(CMAKE_CXX_EXTENSIONS OFF)
- else ()
- # This can only be a fairly old version of Linux in practice
- set(CXX_STANDARD "-std=c++11")
- endif ()
+ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_EXTENSIONS OFF)
endif()
# Build static C and C++ libraries in addition to shared libraries.
@@ -167,13 +155,6 @@ option(BUILD_EXAMPLES "Enable building example programs"
ON)
option(BUILD_TLS "Enable building separate TLS library for Proton raw
connections" OFF)
# Set any additional compiler specific flags
-set (LTO_GNU "-flto -fno-fat-lto-objects")
-set (LTO_Clang "-flto=thin")
-set (LTO_MSVC "/GL")
-set (LINK_LTO_GNU "-flto -fno-fat-lto-objects")
-set (LINK_LTO_Clang "-flto=thin")
-set (LINK_LTO_MSVC "/LTCG")
-
set (WERROR_GNU "-Werror")
set (WERROR_Clang "-Werror")
set (WERROR_MSVC "")
@@ -200,8 +181,7 @@ set (HIDE_SYMBOLS_Clang "-fvisibility=hidden")
set (HIDE_SYMBOLS_SunPro "-xldscope=hidden")
if (ENABLE_LINKTIME_OPTIMIZATION)
- set (LTO ${LTO_${CMAKE_C_COMPILER_ID}})
- set (LINK_LTO ${LINK_LTO_${CMAKE_C_COMPILER_ID}})
+ set (CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
endif (ENABLE_LINKTIME_OPTIMIZATION)
if (ENABLE_WARNING_ERROR)
@@ -289,23 +269,6 @@ pn_relative_install_dir (LIBDIR "${CMAKE_INSTALL_PREFIX}"
"${LIB_INSTALL_DIR}")
## LANGUAGE BINDINGS
-# Default directory for language bindings not being installed into
-# system specified locations.
-set (BINDINGS_DIR ${LIB_INSTALL_DIR}/proton/bindings)
-
-set (SYSINSTALL_BINDINGS OFF CACHE BOOL "If SYSINSTALL_BINDINGS is ON, then
each language interpreter will be queried for the appropriate directory and
proton bindings will be installed in that location.")
-
-set (BINDING_LANGS PYTHON RUBY)
-
-foreach (LANG ${BINDING_LANGS})
- set (SYSINSTALL_${LANG} OFF CACHE BOOL "Install ${LANG} bindings into
interpreter specified location.")
- if (SYSINSTALL_BINDINGS OR SYSINSTALL_${LANG})
- set (CHECK_SYSINSTALL_${LANG} ON)
- else ()
- set (CHECK_SYSINSTALL_${LANG} OFF)
- endif ()
-endforeach()
-
set (PROTON_SHARE ${SHARE_INSTALL_DIR}/proton)
# End of variables used during install
diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt
index 95d03814d..53b912437 100644
--- a/c/CMakeLists.txt
+++ b/c/CMakeLists.txt
@@ -431,8 +431,7 @@ add_library (qpid-proton-core-objects OBJECT
${qpid-proton-core-src})
add_dependencies (qpid-proton-core-objects generated_c_files)
set_target_properties(qpid-proton-core-objects PROPERTIES
POSITION_INDEPENDENT_CODE ON
- COMPILE_FLAGS "${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
+ LINK_FLAGS "${CATCH_UNDEFINED}")
target_compile_definitions(qpid-proton-core-objects PRIVATE
qpid_proton_core_EXPORTS)
target_link_libraries (qpid-proton-core-objects ${SSL_LIB} ${SASL_LIB}
${PLATFORM_LIBS})
@@ -440,8 +439,7 @@ add_library (qpid-proton-platform-io-objects OBJECT
${qpid-proton-platform-io})
set_target_properties(qpid-proton-platform-io-objects PROPERTIES
POSITION_INDEPENDENT_CODE ON
C_EXTENSIONS ON
- COMPILE_FLAGS "${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
+ LINK_FLAGS "${CATCH_UNDEFINED}")
target_compile_definitions(qpid-proton-platform-io-objects PRIVATE
qpid_proton_EXPORTS)
target_link_libraries (qpid-proton-platform-io-objects ${SSL_LIB} ${SASL_LIB}
${TIME_LIB} ${PLATFORM_LIBS} ${PROACTOR_LIBS})
@@ -451,8 +449,7 @@ set_target_properties (qpid-proton-core
PROPERTIES
VERSION "${PN_LIB_CORE_VERSION}"
SOVERSION "${PN_LIB_CORE_MAJOR_VERSION}"
- COMPILE_FLAGS "${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
+ LINK_FLAGS "${CATCH_UNDEFINED}"
EXPORT_NAME core)
if (BUILD_STATIC_LIBS)
@@ -472,8 +469,7 @@ if (qpid-proton-proactor)
add_library (qpid-proton-proactor-objects OBJECT ${qpid-proton-proactor})
set_target_properties(qpid-proton-proactor-objects PROPERTIES
POSITION_INDEPENDENT_CODE ON
- COMPILE_FLAGS "${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
+ LINK_FLAGS "${CATCH_UNDEFINED}")
target_compile_definitions(qpid-proton-proactor-objects PRIVATE
qpid_proton_proactor_EXPORTS)
target_link_libraries (qpid-proton-proactor-objects ${PLATFORM_LIBS}
${PROACTOR_LIBS})
@@ -484,8 +480,7 @@ if (qpid-proton-proactor)
PROPERTIES
VERSION "${PN_LIB_PROACTOR_VERSION}"
SOVERSION "${PN_LIB_PROACTOR_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
- COMPILE_FLAGS "${LTO}"
+ LINK_FLAGS "${CATCH_UNDEFINED}"
EXPORT_NAME proactor
)
if (BUILD_STATIC_LIBS)
@@ -514,8 +509,7 @@ set_target_properties (qpid-proton
PROPERTIES
VERSION "${PN_LIB_LEGACY_VERSION}"
SOVERSION "${PN_LIB_LEGACY_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
- COMPILE_FLAGS "${LTO}"
+ LINK_FLAGS "${CATCH_UNDEFINED}"
EXPORT_NAME qpid-proton
)
@@ -544,8 +538,7 @@ if (qpid-proton-tls)
target_link_libraries (qpid-proton-proactor LINK_PRIVATE ${PLATFORM_LIBS}
${PROACTOR_LIBS})
set_target_properties(qpid-proton-tls-objects PROPERTIES
POSITION_INDEPENDENT_CODE ON
- COMPILE_FLAGS "${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
+ LINK_FLAGS "${CATCH_UNDEFINED}")
target_compile_definitions(qpid-proton-tls-objects PRIVATE
qpid_proton_tls_EXPORTS)
target_link_libraries (qpid-proton-tls-objects ${SSL_LIB} ${PLATFORM_LIBS})
@@ -556,8 +549,7 @@ if (qpid-proton-tls)
PROPERTIES
VERSION "${PN_LIB_TLS_VERSION}"
SOVERSION "${PN_LIB_TLS_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
- COMPILE_FLAGS "${LTO}"
+ LINK_FLAGS "${CATCH_UNDEFINED}"
EXPORT_NAME tls
)
if (BUILD_STATIC_LIBS)
diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt
index 3afb1bf2a..641ba3c75 100644
--- a/c/tests/CMakeLists.txt
+++ b/c/tests/CMakeLists.txt
@@ -40,13 +40,13 @@ if (CMAKE_CXX_COMPILER)
add_library(test_main OBJECT test_main.cpp)
set_target_properties(test_main PROPERTIES
- COMPILE_FLAGS "${CXX_STANDARD} ${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS}
${LTO}")
+ COMPILE_FLAGS "${CXX_WARNING_FLAGS}")
macro(add_c_test exe)
add_executable(${exe} $<TARGET_OBJECTS:test_main> pn_test.cpp ${ARGN})
set_target_properties(${exe} PROPERTIES
- COMPILE_FLAGS "${CXX_STANDARD} ${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS}
${LTO}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}")
+ COMPILE_FLAGS "${CXX_WARNING_FLAGS}"
+ LINK_FLAGS "${CATCH_UNDEFINED}")
pn_add_test(
EXECUTABLE
NAME ${exe}
@@ -92,7 +92,7 @@ if (CMAKE_CXX_COMPILER)
if (THREADERCISER)
add_executable(c-threaderciser threaderciser.c)
set_target_properties(c-threaderciser
- PROPERTIES COMPILE_FLAGS "${C_STANDARD_FLAGS}
${COMPILE_WARNING_FLAGS}")
+ PROPERTIES COMPILE_FLAGS "${COMPILE_WARNING_FLAGS}")
target_link_libraries (c-threaderciser qpid-proton-proactor
Threads::Threads)
pn_add_test(
EXECUTABLE
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 2049fe94b..0ef4f54b1 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -142,8 +142,7 @@ set_target_properties (
LINKER_LANGUAGE CXX
VERSION "${PN_LIB_CPP_VERSION}"
SOVERSION "${PN_LIB_CPP_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LINK_LTO}"
- COMPILE_FLAGS "${LTO}"
+ LINK_FLAGS "${CATCH_UNDEFINED}"
EXPORT_NAME cpp
)
diff --git a/cpp/cpp.cmake b/cpp/cpp.cmake
deleted file mode 100644
index 079104420..000000000
--- a/cpp/cpp.cmake
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-# Check C++ capabilities.
-
-include(CheckCXXSourceCompiles)
-
-macro (cxx_test prog name)
- check_cxx_source_compiles("${prog}" HAS_${name})
- if (HAS_${name})
- list(APPEND CPP_DEFINITIONS "HAS_${name}")
- else()
- set(CPP_TEST_FAILED True)
- endif()
-endmacro()
-
-set(CPP_DEFINITIONS "")
-set(CMAKE_REQUIRED_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_STANDARD}
${CXX_WARNING_FLAGS}")
-cxx_test("#if defined(__cplusplus) && __cplusplus >= 201103\nint main(int,
char**) { return 0; }\n#endif" CPP11)
-# Don't need to check individual flags if compiler claims to be C++11 or later
as they will be set automatically
-if (NOT HAS_CPP11)
- set(CPP_TEST_FAILED False)
- cxx_test("long long ll; int main(int, char**) { return 0; }" LONG_LONG_TYPE)
- cxx_test("int* x = nullptr; int main(int, char**) { return 0; }" NULLPTR)
- cxx_test("#include <string>\nvoid blah(std::string&&) {} int main(int,
char**) { blah(\"hello\"); return 0; }" RVALUE_REFERENCES)
- cxx_test("class x {explicit operator int(); }; int main(int, char**) {
return 0; }" EXPLICIT_CONVERSIONS)
- cxx_test("class x {x()=default; }; int main(int, char**) { return 0; }"
DEFAULTED_FUNCTIONS)
- cxx_test("class x {x(x&&)=default; }; int main(int, char**) { return 0; }"
DEFAULTED_MOVE_INITIALIZERS)
- cxx_test("class x {x()=delete; }; int main(int, char**) { return 0; }"
DELETED_FUNCTIONS)
- cxx_test("struct x {x() {}}; int main(int, char**) { static thread_local x
foo; return 0; }" THREAD_LOCAL)
- cxx_test("int main(int, char**) { int a=[](){return 42;}(); return a; }"
LAMBDAS)
- cxx_test("template <class... X> void x(X... a) {} int main(int, char**) {
x(1); x(43, \"\"); return 0; }" VARIADIC_TEMPLATES)
-
- cxx_test("#include <random>\nint main(int, char**) { return 0; }"
HEADER_RANDOM)
- cxx_test("#include <memory>\nstd::unique_ptr<int> u; int main(int, char**) {
return 0; }" STD_UNIQUE_PTR)
- cxx_test("#include <thread>\nstd::thread t; int main(int, char**) { return
0; }" STD_THREAD)
- cxx_test("#include <mutex>\nstd::mutex m; int main(int, char**) { return 0;
}" STD_MUTEX)
- cxx_test("#include <atomic>\nstd::atomic<int> a; int main(int, char**) {
return 0; }" STD_ATOMIC)
-
- # If all the tests passed this is the same as if we have C++11 for the
purposes of compilation
- # (this shortens the compile command line for VS 2017 significantly)
- if (NOT CPP_TEST_FAILED)
- set(CPP_DEFINITIONS "HAS_CPP11")
- endif()
-endif()
-unset(CMAKE_REQUIRED_FLAGS) # Don't contaminate later C tests with C++ flags
diff --git a/ruby/CMakeLists.txt b/ruby/CMakeLists.txt
index 178b87bb1..582f2856e 100644
--- a/ruby/CMakeLists.txt
+++ b/ruby/CMakeLists.txt
@@ -83,31 +83,6 @@ if (GEM_EXE)
add_custom_target(ruby-gem ALL DEPENDS ${GEM_FILE})
endif ()
-## CMake-based install
-
-if (CHECK_SYSINSTALL_RUBY)
- execute_process(COMMAND ${RUBY_EXECUTABLE}
- -r rbconfig -e "print RbConfig::CONFIG['vendorarchdir'] || ''"
- RESULT_VARIABLE RESULT_RUBY_ARCHLIB_DIR
- OUTPUT_VARIABLE OUTPUT_RUBY_ARCHLIB_DIR)
-
- if(OUTPUT_RUBY_ARCHLIB_DIR STREQUAL "")
- execute_process(COMMAND ${RUBY_EXECUTABLE}
- -r rbconfig -e "print RbConfig::CONFIG['archdir'] || ''"
- RESULT_VARIABLE RESULT_RUBY_ARCHLIB_DIR
- OUTPUT_VARIABLE OUTPUT_RUBY_ARCHLIB_DIR)
- endif()
-
- set(RUBY_ARCHLIB_DIR_DEFAULT "${OUTPUT_RUBY_ARCHLIB_DIR}")
-
- if (NOT RUBY_ARCHLIB_DIR)
- set (RUBY_ARCHLIB_DIR ${RUBY_ARCHLIB_DIR_DEFAULT})
- endif()
-
- install(TARGETS cproton-ruby DESTINATION ${RUBY_ARCHLIB_DIR} COMPONENT Ruby)
- install(DIRECTORY lib/ DESTINATION ${RUBY_ARCHLIB_DIR} COMPONENT Ruby)
-endif (CHECK_SYSINSTALL_RUBY)
-
install(DIRECTORY examples/
DESTINATION "${PROTON_SHARE}/examples/ruby"
COMPONENT Ruby
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]