cmake/macros.cmake.in
Miro Hrončok aaa289ec8e Declarative %generate_buildrequires: Keep the BRs stable
Make the rpm-macros implementation add new BuildRequires, but not removing some.
This makes the individual rounds of %generate_buildrequires behave more predictably.

Nothing says the previous approach is wrong, but is might blow up unexpectedly.
2025-12-12 22:48:14 +01:00

76 lines
2.9 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
%__cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.}
# - 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
# - Turn off stripping by default so RPM can do it separately
# - Set default install prefixes and library install directories
# - Turn on shared libraries by default
%cmake \
%{set_build_flags} \
%__cmake \\\
%{!?__cmake_in_source_build:-S "%{_vpath_srcdir}"} \\\
%{!?__cmake_in_source_build:-B "%{__cmake_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_DO_STRIP:BOOL=OFF \\\
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \\\
-DCMAKE_INSTALL_FULL_SBINDIR:PATH=%{_sbindir} \\\
-DCMAKE_INSTALL_SBINDIR:PATH=%(s=%{_sbindir}; echo ${s##*/}) \\\
-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 "%{__cmake_builddir}" %{?_smp_mflags} --verbose
%cmake_install \
DESTDIR="%{buildroot}" %__cmake --install "%{__cmake_builddir}"
%ctest(:-:h:j:u:v:A:C:D:E:F:H:I:L:M:N:O:Q:R:S:T:U:V:) \
%__ctest --test-dir "%{__cmake_builddir}" \\\
--output-on-failure \\\
--force-new-ctest-process \\\
%ifarch riscv64 \
--timeout 6000 \\\
%endif \
%{?_smp_mflags} \\\
%{lua:print((string.gsub(rpm.expand('%{**}'),"%-%-%s","")))}
# Declarative buildsystem macros (usable with rpm >= 4.20)
# https://rpm-software-management.github.io/rpm/manual/buildsystem.html
%cmake_generate_buildrequires(-) echo "cmake-rpm-macros"; echo "cmake"
%buildsystem_cmake_generate_buildrequires() %cmake_generate_buildrequires %{*}
%buildsystem_cmake_conf() %cmake %{*}
%buildsystem_cmake_build() %cmake_build %{*}
%buildsystem_cmake_install() %cmake_install %{*}
%buildsystem_cmake_check() %{?with_ctest:%ctest %{*}} %{!?with_ctest:%{nil}}
# Legacy cmakeX macros for multiversioned CMake
%cmake@@CMAKE_MAJOR_VERSION@@ %cmake
%cmake@@CMAKE_MAJOR_VERSION@@_build %cmake_build
%cmake@@CMAKE_MAJOR_VERSION@@_install %cmake_install
%ctest@@CMAKE_MAJOR_VERSION@@(:-:h:j:u:v:A:C:D:E:F:H:I:L:M:N:O:Q:R:S:T:U:V:) \
%ctest %{**}