Backport support for out-of-source builds controlled by __cmake_in_source_build macro (#1861329)

- Backport cmake_build and cmake_install macros
- Backport ctest macro
epel9
Neal Gompa 4 years ago
parent ec3dee4d05
commit 3d7bea8322

@ -0,0 +1,17 @@
#!/bin/bash
# Shell wrapper for supporting compiling with different backends for CMake < 3.13
# Collect arguments
__cmake_builddir="$1"
__build_flags="${@:2}"
if [ -f "${__cmake_builddir}/Makefile" ]; then
/usr/bin/make -C "${__cmake_builddir}" V=1 VERBOSE=1 ${__build_flags}
exit $?
elif [ -f "${__cmake_builddir}/build.ninja" ]; then
/usr/bin/ninja -C "${__cmake_builddir}" -v ${__build_flags}
exit $?
else
echo "Unknown build format, exiting!"
exit 99
fi

@ -0,0 +1,13 @@
#!/bin/bash
# Shell wrapper for supporting out-of-source builds with CMake < 3.13
# Collect arguments
__cmake="$1"
__cmake_srcdir="$2"
__cmake_builddir="$3"
__cmake_flags="${@:4}"
# Do the build
mkdir -p "${__cmake_builddir}"
"${__cmake}" ${__cmake_flags} "${__cmake_srcdir}" "${__cmake_builddir}"
exit $?

@ -0,0 +1,17 @@
#!/bin/bash
# Shell wrapper for supporting installing with different backends for CMake < 3.13
# Collect arguments
__cmake_builddir="$1"
__cmake_destdir="$2"
if [ -f "${__cmake_builddir}/Makefile" ]; then
/usr/bin/make -C "${__cmake_builddir}" install DESTDIR="${__cmake_destdir}"
exit $?
elif [ -f "${__cmake_builddir}/build.ninja" ]; then
DESTDIR="${__cmake_destdir}" /usr/bin/ninja -C "${__cmake_builddir}" install -v
exit $?
else
echo "Unknown build format, exiting!"
exit 99
fi

@ -1,6 +1,6 @@
Name: epel-rpm-macros
Version: 8
Release: 14
Release: 15
Summary: Extra Packages for Enterprise Linux RPM macros
Group: System Environment/Base
@ -16,6 +16,14 @@ Source2: gpgverify
Source3: pythondist.attr
Source9: GPL
# CMake macro backport for until RHEL 8 updates to CMake 3.17+
# Cf. https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds
# Cf. https://bugzilla.redhat.com/show_bug.cgi?id=1858941
Source21: cmake-configure
Source22: cmake-build
Source23: cmake-install
Source24: macros.zzz-epel-override-cmake
BuildArch: noarch
Requires: redhat-release >= %{version}
# For FPC buildroot macros
@ -53,15 +61,33 @@ install -Dpm 755 %{SOURCE2} \
install -Dpm 644 %{SOURCE3} \
%{buildroot}%{_fileattrsdir}/pythondist.attr
# Install CMake stuff
install -Dpm 755 %{SOURCE21} \
%{buildroot}%{_rpmconfigdir}/cmake-configure
install -Dpm 755 %{SOURCE22} \
%{buildroot}%{_rpmconfigdir}/cmake-build
install -Dpm 755 %{SOURCE23} \
%{buildroot}%{_rpmconfigdir}/cmake-install
install -Dpm 755 %{SOURCE24} \
%{buildroot}/etc/rpm/macros.zzz-epel-override-cmake
%files
%license GPL
/usr/lib/rpm/macros.d/macros.epel-rpm-macros
/etc/rpm/macros.zzz-epel-override
%{_rpmconfigdir}/gpgverify
%{_fileattrsdir}/pythondist.attr
%{_rpmconfigdir}/cmake-*
/etc/rpm/macros.zzz-epel-override-cmake
%changelog
* Wed Jul 29 2020 Neal Gompa <ngompa13@gmail.com> - 8-15
- Backport support for out-of-source builds controlled by __cmake_in_source_build macro (#1861329)
- Backport cmake_build and cmake_install macros
- Backport ctest macro
* Sun Jun 28 2020 Artur Iwicki <fedora@svgames.pl> - 8-14
- Add a Requires for fpc-srpm-macros

@ -0,0 +1,54 @@
#
# EPEL override macros for cmake
#
%_cmake_shared_libs -DBUILD_SHARED_LIBS:BOOL=ON
%__ctest /usr/bin/ctest
%__cmake_in_source_build 1
%__cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.}
%__cmake_configure %{_rpmconfigdir}/cmake-configure %{__cmake} %{_vpath_srcdir} %{__cmake_builddir}
# - 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_in_source_build:%__cmake_configure}%{?__cmake_in_source_build:%__cmake} \\\
-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 \
%{_rpmconfigdir}/cmake-build "%{__cmake_builddir}" %{?_smp_mflags}
%cmake_install \
%{_rpmconfigdir}/cmake-install "%{__cmake_builddir}" "%{buildroot}"
%ctest(:-:) \
cd "%{__cmake_builddir}" \
%__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} \
cd -
%cmake3_build %cmake_build
%cmake3_install %cmake_install
%ctest3 %ctest
Loading…
Cancel
Save