summaryrefslogtreecommitdiff
path: root/macros.cmake.in
blob: cddccd9f4ed76d81450e2305b616c40d30272a16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 %{**}