From 363b79ad03c985b85886ce19416b6bf77b6d4de2 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sat, 16 Mar 2024 14:31:52 -0400 Subject: [PATCH 1/4] Set the CMake minimum version and project as early as possible Also uses the standard version variables. Replaced PATCHLEVEL by PATCH except in #define'd macros (to preserve API). Replaced languages list with enable_language. Removed policy options that do not affect runtime (because they are enabled by the minimum version, anyway) --- CMakeLists.txt | 33 +++++++++--------------------- src/libm/CMakeLists.txt | 2 +- src/libm/sleef.pc.in | 2 +- src/libm/sleeflibm_header.h.org.in | 2 +- src/quad/CMakeLists.txt | 4 ++-- src/quad/sleefquad_header.h.org.in | 2 +- 6 files changed, 16 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 742912b3..d4947ec8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,7 @@ +cmake_minimum_required(VERSION 3.18) +project(SLEEF VERSION 3.6.0 LANGUAGES C) + +set(SLEEF_SOVERSION ${SLEEF_VERSION_MAJOR}) # Options @@ -63,7 +67,7 @@ set(SLEEF_ALL_SUPPORTED_EXTENSIONS SVENOFMA SVE ADVSIMDNOFMA ADVSIMD # Aarch64 NEON32 NEON32VFPV4 # Aarch32 VSX VSXNOFMA VSX3 VSX3NOFMA # PPC64 - VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z + VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z RVVM1NOFMA RVVM1 RVVM2NOFMA RVVM2 # RISC-V Vectors PUREC_SCALAR PURECFMA_SCALAR # Generic type CACHE STRING "List of SIMD architectures supported by libsleef." @@ -74,7 +78,7 @@ set(SLEEF_SUPPORTED_LIBM_EXTENSIONS SVENOFMA SVE ADVSIMDNOFMA ADVSIMD # Aarch64 NEON32 NEON32VFPV4 # Aarch32 VSX VSXNOFMA VSX3 VSX3NOFMA # PPC64 - VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z + VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z RVVM1NOFMA RVVM1 RVVM2NOFMA RVVM2 # RISC-V Vectors PUREC_SCALAR PURECFMA_SCALAR # Generic type CACHE STRING "List of SIMD architectures supported by libsleef." @@ -112,31 +116,15 @@ set(COSTOVERRIDE_RVVM2NOFMA 20) # -cmake_minimum_required(VERSION 3.18) - -if(${CMAKE_VERSION} VERSION_GREATER "3.14.99") - cmake_policy(SET CMP0091 NEW) -endif() - enable_testing() -set(SLEEF_VERSION_MAJOR 3) -set(SLEEF_VERSION_MINOR 6) -set(SLEEF_VERSION_PATCHLEVEL 0) -set(SLEEF_VERSION ${SLEEF_VERSION_MAJOR}.${SLEEF_VERSION_MINOR}.${SLEEF_VERSION_PATCHLEVEL}) -set(SLEEF_SOVERSION ${SLEEF_VERSION_MAJOR}) - -set(LANGLIST C) - -if (SLEEF_ENABLE_CUDA) - set(LANGLIST ${LANGLIST} CUDA) -endif() - if (SLEEF_ENABLE_CXX) - set(LANGLIST ${LANGLIST} CXX) + enable_language(CXX) endif() -project(SLEEF VERSION ${SLEEF_VERSION} LANGUAGES ${LANGLIST}) +if (SLEEF_ENABLE_CUDA) + enable_language(CUDA) +endif() # For specifying installation directories include(GNUInstallDirs) @@ -162,7 +150,6 @@ if(SLEEF_ENABLE_LTO AND BUILD_SHARED_LIBS) endif(SLEEF_ENABLE_LTO AND BUILD_SHARED_LIBS) if(SLEEF_ENABLE_LTO) - cmake_policy(SET CMP0069 NEW) include(CheckIPOSupported) check_ipo_supported(RESULT supported OUTPUT error) endif() diff --git a/src/libm/CMakeLists.txt b/src/libm/CMakeLists.txt index d0938750..430c7b37 100644 --- a/src/libm/CMakeLists.txt +++ b/src/libm/CMakeLists.txt @@ -594,7 +594,7 @@ if(SLEEF_BUILD_INLINE_HEADERS) ${CMAKE_CURRENT_BINARY_DIR}/sleef${SIMD}.h.tmp3 | ${SED_COMMAND} # Embed version number into the header - -e "s/SLEEF_VERSION_SLEEF/${SLEEF_VERSION_MAJOR}.${SLEEF_VERSION_MINOR}.${SLEEF_VERSION_PATCHLEVEL}/g" + -e "s/SLEEF_VERSION_SLEEF/${SLEEF_VERSION_MAJOR}.${SLEEF_VERSION_MINOR}.${SLEEF_VERSION_PATCH}/g" -e "s/SLEEF_SIMD_SLEEF/${SIMD}/g" # Substitute "SLEEFSHARP" at the beginning of line with "#" -e "s/^SLEEFSHARP/#/g" diff --git a/src/libm/sleef.pc.in b/src/libm/sleef.pc.in index 165af02d..f73bc145 100644 --- a/src/libm/sleef.pc.in +++ b/src/libm/sleef.pc.in @@ -4,6 +4,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: SLEEF Description: SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT -Version: @SLEEF_VERSION_MAJOR@.@SLEEF_VERSION_MINOR@.@SLEEF_VERSION_PATCHLEVEL@ +Version: @SLEEF_VERSION_MAJOR@.@SLEEF_VERSION_MINOR@.@SLEEF_VERSION_PATCH@ Cflags: -I${includedir} Libs: -L${libdir} -lsleef diff --git a/src/libm/sleeflibm_header.h.org.in b/src/libm/sleeflibm_header.h.org.in index 61620464..075e5200 100644 --- a/src/libm/sleeflibm_header.h.org.in +++ b/src/libm/sleeflibm_header.h.org.in @@ -8,7 +8,7 @@ #define SLEEF_VERSION_MAJOR @SLEEF_VERSION_MAJOR@ #define SLEEF_VERSION_MINOR @SLEEF_VERSION_MINOR@ -#define SLEEF_VERSION_PATCHLEVEL @SLEEF_VERSION_PATCHLEVEL@ +#define SLEEF_VERSION_PATCHLEVEL @SLEEF_VERSION_PATCH@ #include #include diff --git a/src/quad/CMakeLists.txt b/src/quad/CMakeLists.txt index bf422763..b674f75c 100644 --- a/src/quad/CMakeLists.txt +++ b/src/quad/CMakeLists.txt @@ -327,8 +327,8 @@ if(SLEEF_BUILD_INLINE_HEADERS) ${CMAKE_CURRENT_BINARY_DIR}/sleef${SIMD}.h.qtmp2 | ${SED_COMMAND} # Embed version number into the header - -e "s/SLEEF_VERSION_SLEEF/${SLEEF_VERSION_MAJOR}.${SLEEF_VERSION_MINOR}.${SLEEF_VERSION_PATCHLEVEL}/g" # "s/SLEEF_VERSION_SLEEF/3.5.0/g" - -e "s/SLEEF_SIMD_SLEEF/${SIMD}/g" # -e "s/SLEEF_SIMD_SLEEF/SSE2/g" + -e "s/SLEEF_VERSION_SLEEF/${SLEEF_VERSION_MAJOR}.${SLEEF_VERSION_MINOR}.${SLEEF_VERSION_PATCH}/g" # "s/SLEEF_VERSION_SLEEF/3.5.0/g" + -e "s/SLEEF_SIMD_SLEEF/${SIMD}/g" # -e "s/SLEEF_SIMD_SLEEF/SSE2/g" # Substitute "SLEEFSHARP" at the beginning of line with "#" -e "s/^SLEEFSHARP/#/g" # Remove SLEEFXXX diff --git a/src/quad/sleefquad_header.h.org.in b/src/quad/sleefquad_header.h.org.in index 70ff9184..05b5e121 100644 --- a/src/quad/sleefquad_header.h.org.in +++ b/src/quad/sleefquad_header.h.org.in @@ -8,7 +8,7 @@ #define SLEEF_VERSION_MAJOR @SLEEF_VERSION_MAJOR@ #define SLEEF_VERSION_MINOR @SLEEF_VERSION_MINOR@ -#define SLEEF_VERSION_PATCHLEVEL @SLEEF_VERSION_PATCHLEVEL@ +#define SLEEF_VERSION_PATCHLEVEL @SLEEF_VERSION_PATCH@ #include "sleef.h" #include From aa032f12834bae5c85f843ad814e14df7be5547b Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sat, 16 Mar 2024 14:42:39 -0400 Subject: [PATCH 2/4] Add SLEEF_BUILD_SHARED_LIBS to override BUILD_SHARED_LIBS from including projects. --- CMakeLists.txt | 20 ++++++++++++++++++-- docs/build-with-cmake.md | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4947ec8..3c072778 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,22 @@ option(SLEEF_DISABLE_SSL "Disable testing with the SSL library" OFF) option(SLEEF_ENABLE_CUDA "Enable CUDA" OFF) option(SLEEF_ENABLE_CXX "Enable C++" OFF) +# + +if (DEFINED SLEEF_BUILD_SHARED_LIBS) + set(BUILD_SHARED_LIBS ${SLEEF_BUILD_SHARED_LIBS}) +endif () + +if (SLEEF_SHOW_CONFIG) + # Normalize the value of BUILD_SHARED_LIBS so that it displays nicely + # in the configuration display + if (BUILD_SHARED_LIBS) + set(BUILD_SHARED_LIBS YES) + else () + set(BUILD_SHARED_LIBS NO) + endif () +endif () + # Function used to generate safe command arguments for add_custom_command function(command_arguments PROPNAME) set(quoted_args "") @@ -67,7 +83,7 @@ set(SLEEF_ALL_SUPPORTED_EXTENSIONS SVENOFMA SVE ADVSIMDNOFMA ADVSIMD # Aarch64 NEON32 NEON32VFPV4 # Aarch32 VSX VSXNOFMA VSX3 VSX3NOFMA # PPC64 - VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z + VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z RVVM1NOFMA RVVM1 RVVM2NOFMA RVVM2 # RISC-V Vectors PUREC_SCALAR PURECFMA_SCALAR # Generic type CACHE STRING "List of SIMD architectures supported by libsleef." @@ -78,7 +94,7 @@ set(SLEEF_SUPPORTED_LIBM_EXTENSIONS SVENOFMA SVE ADVSIMDNOFMA ADVSIMD # Aarch64 NEON32 NEON32VFPV4 # Aarch32 VSX VSXNOFMA VSX3 VSX3NOFMA # PPC64 - VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z + VXE VXENOFMA VXE2 VXE2NOFMA # IBM Z RVVM1NOFMA RVVM1 RVVM2NOFMA RVVM2 # RISC-V Vectors PUREC_SCALAR PURECFMA_SCALAR # Generic type CACHE STRING "List of SIMD architectures supported by libsleef." diff --git a/docs/build-with-cmake.md b/docs/build-with-cmake.md index 2dfaa79e..45fb942f 100644 --- a/docs/build-with-cmake.md +++ b/docs/build-with-cmake.md @@ -134,6 +134,7 @@ optimized, or any other special set of flags. - `SLEEF_SHOW_ERROR_LOG` : Show the content of CMakeError.log - `BUILD_SHARED_LIBS` : Static libs are built if set to FALSE +- `SLEEF_BUILD_SHARED_LIBS` : If set, override the value of `BUILD_SHARED_LIBS` when configuring SLEEF. - `SLEEF_BUILD_GNUABI_LIBS` : Avoid building libraries with GNU ABI if set to FALSE - `SLEEF_BUILD_INLINE_HEADERS` : Generate header files for inlining whole SLEEF functions From 592edaf41be295cbb15be5c12b0bd904969323d1 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Sat, 16 Mar 2024 15:12:42 -0400 Subject: [PATCH 3/4] Remove "dummy" install targets --- src/dft/CMakeLists.txt | 9 --------- src/libm/CMakeLists.txt | 26 -------------------------- src/quad/CMakeLists.txt | 9 --------- 3 files changed, 44 deletions(-) diff --git a/src/dft/CMakeLists.txt b/src/dft/CMakeLists.txt index f3097447..acc65b82 100644 --- a/src/dft/CMakeLists.txt +++ b/src/dft/CMakeLists.txt @@ -423,12 +423,3 @@ install( INCLUDES # DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) - -install( - TARGETS ${TARGET_LIBDFT} - DESTINATION dummy # provided above already - LIBRARY # - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT sleef_Development - NAMELINK_ONLY -) diff --git a/src/libm/CMakeLists.txt b/src/libm/CMakeLists.txt index 430c7b37..9d347238 100644 --- a/src/libm/CMakeLists.txt +++ b/src/libm/CMakeLists.txt @@ -1004,15 +1004,6 @@ if(SLEEF_BUILD_SCALAR_LIB) DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT sleef_Runtime ) - - install( - TARGETS sleefscalar - DESTINATION dummy # provided above already - LIBRARY # - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT sleef_Development - NAMELINK_ONLY - ) endif() # -------------------------------------------------------------------- @@ -1038,14 +1029,6 @@ install( INCLUDES # DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) -install( - TARGETS ${TARGET_LIBSLEEF} - DESTINATION dummy # provided above already - LIBRARY # - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT sleef_Development - NAMELINK_ONLY -) configure_file("sleef.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/sleef.pc" @ONLY) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/sleef.pc" @@ -1068,13 +1051,4 @@ if(ENABLE_GNUABI) DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT sleef_Runtime ) - - install( - TARGETS ${TARGET_LIBSLEEF} - DESTINATION dummy # provided above already - LIBRARY # - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT sleef_Development - NAMELINK_ONLY - ) endif() diff --git a/src/quad/CMakeLists.txt b/src/quad/CMakeLists.txt index b674f75c..7afcd029 100644 --- a/src/quad/CMakeLists.txt +++ b/src/quad/CMakeLists.txt @@ -502,12 +502,3 @@ install( INCLUDES # DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) - -install( - TARGETS sleefquad - DESTINATION dummy # provided above already - LIBRARY # - DESTINATION "${CMAKE_INSTALL_LIBDIR}" - COMPONENT sleef_Development - NAMELINK_ONLY -) From 5f30e7a28dbf633436d0ecd6e5a999d5b46e88f8 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Mon, 18 Mar 2024 08:42:22 -0400 Subject: [PATCH 4/4] Use ON/OFF for the normalized values of BUILD_SHARED_LIBS --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c072778..ad313862 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,9 +43,9 @@ if (SLEEF_SHOW_CONFIG) # Normalize the value of BUILD_SHARED_LIBS so that it displays nicely # in the configuration display if (BUILD_SHARED_LIBS) - set(BUILD_SHARED_LIBS YES) + set(BUILD_SHARED_LIBS ON) else () - set(BUILD_SHARED_LIBS NO) + set(BUILD_SHARED_LIBS OFF) endif () endif ()