summaryrefslogtreecommitdiff
path: root/macros.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'macros.cmake.in')
-rw-r--r--macros.cmake.in90
1 files changed, 90 insertions, 0 deletions
diff --git a/macros.cmake.in b/macros.cmake.in
new file mode 100644
index 0000000..cddccd9
--- /dev/null
+++ b/macros.cmake.in
@@ -0,0 +1,90 @@
+#
+# Macros for cmake
+#
+
+%__cmake_in_source_build 1
+
+%_cmake_lib_suffix64 -DLIB_SUFFIX=64
+%_cmake_lib_suffixilp32 -DLIB_SUFFIX=ilp32
+%_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 %{lua:
+ if rpm.expand('%{__cmake_in_source_build}') == '%{__cmake_in_source_build}' then
+ print(rpm.expand('%{_vpath_builddir}'))
+ else
+ if rpm.expand('%{__cmake_in_source_build}') == '0' then
+ print(rpm.expand('%{_vpath_builddir}'))
+ else
+ print(".")
+ end
+ end
+}
+%_cmake_module_linker_flags %(echo %build_ldflags|sed -e 's#-Wl,--no-undefined##')
+
+# - 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 \\\
+ -S "%{_vpath_srcdir}" \\\
+ -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} \\\
+ -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\
+ -DLIB_INSTALL_DIR:PATH=%{_libdir} \\\
+ -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\
+ -DCMAKE_INSTALL_RUNSTATEDIR:PATH=%{_rundir} \\\
+ -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\
+%if "%{?_lib}" == "lib64" \
+ %{?_cmake_lib_suffix64} \\\
+%endif \
+%if "%{?_lib}" == "libilp32" \
+ %{?_cmake_lib_suffixilp32} \\\
+%endif \
+ %{?_cmake_shared_libs} \\\
+ %{?_cmake_module_linker_flags:-DCMAKE_MODULE_LINKER_FLAGS="%_cmake_module_linker_flags%{?_cmake_module_linker_flags_extra: %_cmake_module_linker_flags_extra}"} \\\
+ %{nil}
+
+%cmake_conf %cmake
+
+%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} %{**}
+
+
+%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 %{**}
+
+# Declarative buildsystem, requires RPM 4.20+ to work
+# https://rpm-software-management.github.io/rpm/manual/buildsystem.html
+%buildsystem_cmake_generate_buildrequires() %{nil}
+%buildsystem_cmake_conf() %cmake %*
+%buildsystem_cmake_build() %cmake_build %*
+%buildsystem_cmake_install() %cmake_install %*
+%buildsystem_cmake_check(:-:h:j:u:v:A:C:D:E:F:H:I:L:M:N:O:Q:R:S:T:U:V:) %ctest %{**}