# Tests by default. No tests: rpm -ba --define 'dotests 0' *.spec %{!?dotests: %define dotests 1} %define _libdir64 %{_prefix}/lib64 Summary: libuv is cross-platform support library which was originally written for Node.js. It is designed around the event-driven asynchronous I/O model. Name: libuv Version: 1.38.1 Release: 1 License: MIT Group: Development/Languages URL: http://libuv.org Source0: http://dist.libuv.org/dist/v%{version}/libuv-v%{version}.tar.gz Source1: https://dist.libuv.org/dist/v%{version}/libuv-v%{version}.tar.gz.sign Requires: libgcc >= 8.3.0 BuildRequires: cmake >= 3.16.0 %description The library provides much more than a simple abstraction over different I/O polling mechanisms: 'handles' and 'streams' provide a high level abstraction for sockets and other entities; cross-platform file I/O and threading functionality is also provided, amongst other things. %package devel Summary: Development libraries for libuv Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development libraries for libuv %package static Summary: Platform layer for node.js - static library Requires: %{name}-devel%{?_isa} = %{version}-%{release} %description static Static library version of libuv %prep %setup -n %{name}-v%{version} # Duplicate source for 32 & 64 bits rm -rf /tmp/%{name}-%{version}-32bit cp -pr . /tmp/%{name}-%{version}-32bit rm -fr * mv /tmp/%{name}-%{version}-32bit 32bit mkdir 64bit cp -pr 32bit/* 64bit/ %build export CC="/opt/freeware/bin/gcc" # First build 64 bit cd 64bit export OBJECT_MODE=64 export CFLAGS64="-O2 -maix64" export LDFLAGS="-L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib" ./autogen.sh cmake \ -DWITH_STATIC_LIB=ON \ -DWITH_CMOCKERY_SUPPORT=ON \ -DUNIT_TESTING=ON \ -DOBJECT_MODE="64" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DINCLUDE_INSTALL_DIR=%{_prefix}/include \ -DCMAKE_INSTALL_LIBDIR="%{_libdir64}" \ -DBUILD_SHARED_LIBS:BOOL=OFF \ -DSYSCONF_INSTALL_DIR:PATH="%{_sysconfdir}" \ -DSHARE_INSTALL_PREFIX=share \ -DCMAKE_C_COMPILER="${CC}" \ -DCMAKE_C_FLAGS="$CFLAGS64" \ %{_builddir}/%{name}-v%{version}/64bit gmake %{?_smp_mflags} VERBOSE=1 if [ "%{dotests}" == 1 ] then (ctest --output-on-failure || true) /usr/sbin/slibclean fi #Now build 32bit cd ../32bit export OBJECT_MODE=32 export CFLAGS32="-O2 -maix32" export LDFLAGS="-L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000" ./autogen.sh cmake \ -DWITH_STATIC_LIB=ON \ -DWITH_CMOCKERY_SUPPORT=ON \ -DUNIT_TESTING=ON \ -DOBJECT_MODE="32" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DINCLUDE_INSTALL_DIR=%{_prefix}/include \ -DCMAKE_INSTALL_LIBDIR="%{_libdir}" \ -DBUILD_SHARED_LIBS:BOOL=OFF \ -DSYSCONF_INSTALL_DIR:PATH="%{_sysconfdir}" \ -DSHARE_INSTALL_PREFIX=share \ -DCMAKE_C_COMPILER="${CC}" \ -DCMAKE_C_FLAGS="$CFLAGS32" \ %{_builddir}/%{name}-v%{version}/32bit gmake %{?_smp_mflags} VERBOSE=1 if [ "%{dotests}" == 1 ] then (ctest --output-on-failure || true) /usr/sbin/slibclean fi %install [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} export AR="/usr/bin/ar -X32_64" # install on 64bit mode cd 64bit export OBJECT_MODE=64 gmake DESTDIR=${RPM_BUILD_ROOT} install # install on 32 bit mode cd ../32bit export OBJECT_MODE=32 gmake DESTDIR=${RPM_BUILD_ROOT} install #remove .la file rm -f %{buildroot}%{_libdir64}/libuv.la rm -f %{buildroot}%{_libdir}/libuv.la # add the 64-bit shared objects to the shared library containing already the 32-bit shared objects ${AR} -x ${RPM_BUILD_ROOT}%{_libdir64}/%{name}.a ${AR} -q ${RPM_BUILD_ROOT}%{_libdir}/%{name}.a libuv.so.1 #Renaming static libraries according to naming standards mv ${RPM_BUILD_ROOT}%{_libdir64}/%{name}_a.a ${RPM_BUILD_ROOT}%{_libdir64}/%{name}-static.a mv ${RPM_BUILD_ROOT}%{_libdir}/%{name}_a.a ${RPM_BUILD_ROOT}%{_libdir}/%{name}-static.a %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system,-) %doc 32bit/README.md 32bit/AUTHORS 32bit/CONTRIBUTING.md 32bit/MAINTAINERS.md 32bit/SUPPORTED_PLATFORMS.md %doc 32bit/ChangeLog %license 32bit/LICENSE %{_libdir64}/%{name}.a %{_libdir}/%{name}.a %files devel %defattr(-,root,system,-) %{_libdir64}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}.pc %{_includedir}/uv.h %{_includedir}/uv/ %files static %defattr(-,root,system,-) %{_libdir64}/%{name}-static.a %{_libdir}/%{name}-static.a %changelog * Thu Jan 28 2021 Ashwini Chandrappa - 1.38.1-1 - Initial build