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]

Reply via email to