4e79ea6773
CMake supports multiple generator types for builds, such as GNU Make and Ninja. As of CMake 3.15, there are now analogs for build and install steps typically managed directly by build tools, where CMake controls the logic to correctly call out. Consequently, it is now rather easy to support any given type of build tool (as long as it's available in the build environment) and have a CMake build "work" as expected. This also brings CMake in line with the same build/install process that is used for packaging Meson-based projects.
60 lines
2.1 KiB
CMake
60 lines
2.1 KiB
CMake
#
|
|
# Macros for cmake
|
|
#
|
|
%_cmake_lib_suffix64 -DLIB_SUFFIX=64
|
|
%_cmake_shared_libs -DBUILD_SHARED_LIBS:BOOL=ON
|
|
%_cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=ON
|
|
%_cmake_version @@CMAKE_VERSION@@
|
|
%__cmake /usr/bin/cmake
|
|
%__ctest /usr/bin/ctest
|
|
|
|
# - Set default compile flags
|
|
# - CMAKE_*_FLAGS_RELEASE are added *after* the *FLAGS environment variables
|
|
# and default to -O3 -DNDEBUG. Strip the -O3 so we can override with *FLAGS
|
|
# - Turn on verbose makefiles so we can see and verify compile flags
|
|
# - Set default install prefixes and library install directories
|
|
# - Turn on shared libraries by default
|
|
%cmake \
|
|
%if 0%{?set_build_flags:1} \
|
|
%set_build_flags \
|
|
%else \
|
|
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
|
|
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
|
|
FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ; \
|
|
FCFLAGS="${FCFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FCFLAGS ; \
|
|
%{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;} \
|
|
%endif \
|
|
%__cmake \\\
|
|
-S "%{_vpath_srcdir}" \\\
|
|
-B "%{_vpath_builddir}" \\\
|
|
-DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
|
|
-DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
|
|
-DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
|
|
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \\\
|
|
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \\\
|
|
-DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\
|
|
-DLIB_INSTALL_DIR:PATH=%{_libdir} \\\
|
|
-DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\
|
|
-DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\
|
|
%if "%{?_lib}" == "lib64" \
|
|
%{?_cmake_lib_suffix64} \\\
|
|
%endif \
|
|
%{?_cmake_shared_libs}
|
|
|
|
%cmake_build \
|
|
%__cmake --build "%{_vpath_builddir}" %{?_smp_mflags} --verbose
|
|
|
|
%cmake_install \
|
|
DESTDIR="%{buildroot}" %__cmake --install "%{_vpath_builddir}"
|
|
|
|
%ctest(:-:) \
|
|
cd "%{_vpath_builddir}" \
|
|
%__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} \
|
|
cd -
|
|
|
|
|
|
%cmake@@CMAKE_MAJOR_VERSION@@ %cmake
|
|
%cmake@@CMAKE_MAJOR_VERSION@@_build %cmake_build
|
|
%cmake@@CMAKE_MAJOR_VERSION@@_install %cmake_install
|
|
%ctest@@CMAKE_MAJOR_VERSION@@ %ctest
|