]> git.pld-linux.org Git - packages/crossmingw32-boost.git/blobdiff - crossmingw32-boost.spec
- up to 1.61.0
[packages/crossmingw32-boost.git] / crossmingw32-boost.spec
index 0a26e13d6e2e88a07f4fb3632d3869ac29acd5cc..f8d8ff7d2539d44f1559d188d7a0a382ffa42cd0 100644 (file)
@@ -1,24 +1,27 @@
+# TODO: fix serialization
+#
+# Conditional build:
+%bcond_without context         # Boost Context and dependent modules [gas+PE not supported by upstream]
+%bcond_with    serialization   # Boost Serialization [broken for MinGW in 1.61: https://svn.boost.org/trac/boost/ticket/12205]
+#
 %define                realname        boost
-Summary:       The Boost C++ Libraries - Mingw32 cross version
-Summary(pl.UTF-8):     Biblioteki C++ "Boost" - wersja skrośna dla Mingw32
+Summary:       The Boost C++ Libraries - MinGW32 cross version
+Summary(pl.UTF-8):     Biblioteki C++ "Boost" - wersja skrośna dla MinGW32
 Name:          crossmingw32-%{realname}
-Version:       1.34.0
+Version:       1.61.0
 %define        fver    %(echo %{version} | tr . _)
 Release:       1
 License:       Boost Software License and others
-Group:         Libraries
-Source0:       http://dl.sourceforge.net/boost/%{realname}_%{fver}.tar.bz2
-# Source0-md5: ed5b9291ffad776f8757a916e1726ad0
-Patch0:                %{name}-win.patch
+Group:         Development/Libraries
+Source0:       http://downloads.sourceforge.net/boost/%{realname}_%{fver}.tar.bz2
+# Source0-md5: 6095876341956f65f9d35939ccea1a9f
+Patch0:                boost-windows-decl.patch
 URL:           http://www.boost.org/
-BuildRequires: boost-jam
 BuildRequires: crossmingw32-bzip2
 BuildRequires: crossmingw32-gcc-c++
 BuildRequires: crossmingw32-runtime
 BuildRequires: crossmingw32-w32api
 BuildRequires: crossmingw32-zlib
-BuildRequires: libtool >= 2:1.4d
-BuildRequires: perl-base
 Requires:      crossmingw32-bzip2
 Requires:      crossmingw32-runtime
 Requires:      crossmingw32-zlib
@@ -28,17 +31,25 @@ BuildRoot:  %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                target          i386-mingw32
 %define                target_platform i386-pc-mingw32
-%define                arch            %{_prefix}/%{target}
-%define                gccarch         %{_prefix}/lib/gcc-lib/%{target}
-%define                gcclib          %{_prefix}/lib/gcc-lib/%{target}/%{version}
+
+%define                _sysprefix      /usr
+%define                _prefix         %{_sysprefix}/%{target}
+%define                _libdir         %{_prefix}/lib
+%define                _dlldir         /usr/share/wine/windows/system
 
 %define                __cc            %{target}-gcc
 %define                __cxx           %{target}-g++
 
-%ifarch alpha sparc sparc64 sparcv9
-# alpha's -mieee and sparc's -mtune=* are not valid for target's gcc
+%ifnarch %{ix86}
+# arch-specific flags (like alpha's -mieee) are not valid for i386 gcc
 %define                optflags        -O2
 %endif
+# -z options are invalid for mingw linker, most of -f options are Linux-specific
+%define                filterout_ld    -Wl,-z,.*
+%define                filterout_c     -f[-a-z0-9=]*
+%define                filterout_cxx   -f[-a-z0-9=]*
+
+%define                abi_tag         1_61
 
 %description
 The Boost web site provides free peer-reviewed portable C++ source
@@ -56,114 +67,180 @@ współpracują ze standardową biblioteką C++. Celem jest ustanowienie
 "istniejącej praktyki" i dostarczenie implementacji, tak że biblioteki
 "Boost" nadają się do ewentualnej standaryzacji. Niektóre z bibliotek
 już zostały zgłoszone do komitetu standaryzacyjnego C++ w nadchodzącym
-Raporcie Technicznym Biblioteki Standardowej C++
+Raporcie Technicznym Biblioteki Standardowej C++.
+
+%package static
+Summary:       Static Boost libraries (cross MinGW32 version)
+Summary(pl.UTF-8):     Statyczne biblioteki Boost (wersja skrośna MinGW32)
+Group:         Development/Libraries
+Requires:      %{name} = %{version}-%{release}
+
+%description static
+Static Boost libraries (cross MinGW32 version).
+
+%description static -l pl.UTF-8
+Statyczne biblioteki Boost (wersja skrośna MinGW32).
 
 %package dll
-Summary:       %{realname} - DLL libraries for Windows
-Summary(pl.UTF-8):     %{realname} - biblioteki DLL dla Windows
+Summary:       Boost - DLL libraries for Windows
+Summary(pl.UTF-8):     Boost - biblioteki DLL dla Windows
 Group:         Applications/Emulators
 Requires:      crossmingw32-bzip2-dll
 Requires:      crossmingw32-zlib-dll
 Requires:      wine
 
 %description dll
-%{realname} - DLL libraries for Windows.
+Boost - DLL libraries for Windows.
 
 %description dll -l pl.UTF-8
-%{realname} - biblioteki DLL dla Windows.
+Boost - biblioteki DLL dla Windows.
 
 %prep
 %setup -q -n %{realname}_%{fver}
 %patch0 -p1
 
-# - don't know how to pass it through (b)jam -s (no way?)
-#   due to oversophisticated build flags system.
-%{__perl} -pi -e 's/ -O3 / %{rpmcxxflags} /' tools/build/v2/tools/gcc.jam
+echo 'using gcc : : %{target}-g++ : ' \
+       '<cxxflags>"%{rpmcxxflags}"' \
+       '<archiver>%{target}-ar' \
+       '<rc>%{target}-windres ;' >tools/build/src/user-config.jam
 
-find . -type f -exec sed -e 's/#error "wide char i\/o not supported on this platform"//' -i \{\} \;
+# use Windows Message Compiler, not Midnight Commander
+%{__sed} -i -e 's,mc $(MCFLAGS),%{target}-windmc $(MCFLAGS),' tools/build/src/tools/mc.jam
 
 %build
-CC=%{target}-gcc ; export CC
-CXX=%{target}-g++ ; export CXX
-LD=%{target}-ld ; export LD
-AR=%{target}-ar ; export AR
-AS=%{target}-as ; export AS
-CROSS_COMPILE=1 ; export CROSS_COMPILE
-CPPFLAGS="-I%{arch}/include" ; export CPPFLAGS
-RANLIB=%{target}-ranlib ; export RANLIB
-LDSHARED="%{target}-gcc -shared" ; export LDSHARED
-TARGET="%{target}" ; export TARGET
-
-bjam \
-       -q -d2 --toolset=gcc \
-       --without-python --without-serialization --without-test \
-       variant=release threading=multi inlining=on debug-symbols=on \
-       -sBZIP2_BINARY=bzip2
-
-mkdir wlib
-cd bin.v2/*
-for i in *
-do
-        cd $i/*/*/*/*/*
-        cd link-static/*
-        $AR cru ../../../../../../../../../../wlib/libboost_$i.a *\.o
-        $RANLIB ../../../../../../../../../../wlib/libboost_$i.a
-
-        cd ../..
-
-        # if there is threading-multi dir 
-        # it's content is used for dll and implib
-        dll_dir='link-static/*'
-        up_dir='../..'
-        if [ -d threading-multi ]; then
-                dll_dir='threading-multi'
-                up_dir='./..'
-        fi
-
-        cd $dll_dir
-
-        # libboost_iostreams requires additional
-        # libraries
-        additional_so_params=
-        if [ $i = "iostreams" ]; then
-                additional_so_params="-lz.dll -lbzip2.dll"
-        fi
-
-        # there are some issuses with dynamic libboost_wave
-        if [ $i != "wave" ]; then
-                $CXX --shared *\.o $additional_so_params \
-                        -Wl,--enable-auto-image-base \
-                        -o $up_dir/../../../../../../../../wlib/boost_$i.dll \
-                        -Wl,--out-implib,libboost_$i.dll.a
-                mv libboost_$i.dll.a $up_dir/../../../../../../../../wlib/
-        fi
-
-        cd $up_dir/../../../../../..
-done
-cd ../..
+./bootstrap.sh --prefix=%{_prefix}
+./b2 \
+       -d2 \
+       %{_smp_mflags} \
+       -sBZIP2_BINARY=bzip2 \
+       --layout=versioned \
+       %{!?with_context:--without-context --without-coroutine --without-coroutine2} \
+       --without-python \
+       %{!?with_serialization:--without-serialization} \
+       --without-test \
+       abi=ms \
+       binary-format=pe \
+       debug-symbols=on \
+       inlining=on \
+       link=static,shared \
+       target-os=windows \
+       threadapi=win32 \
+       threading=multi \
+       toolset=gcc \
+       variant=release
 
 %if 0%{!?debug:1}
-%{target}-strip wlib/*.dll
-%{target}-strip -g -R.comment -R.note wlib/*.a
+%{target}-strip stage/lib/*.dll
+%{target}-strip -g -R.comment -R.note stage/lib/*.a
 %endif
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{arch}/{include,lib}
-install -d $RPM_BUILD_ROOT%{_datadir}/wine/windows/system
+install -d $RPM_BUILD_ROOT{%{_includedir},%{_libdir},%{_dlldir}}
 
-cp -r boost $RPM_BUILD_ROOT%{arch}/include
-install wlib/*.a $RPM_BUILD_ROOT%{arch}/lib
-install wlib/*.dll $RPM_BUILD_ROOT%{_datadir}/wine/windows/system
+cp -r boost $RPM_BUILD_ROOT%{_includedir}
+cp -a stage/lib/*.a $RPM_BUILD_ROOT%{_libdir}
+install stage/lib/*.dll $RPM_BUILD_ROOT%{_dlldir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(644,root,root,755)
-%{arch}/include/boost
-%{arch}/lib/*
+%{_libdir}/libboost_atomic-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_chrono-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_container-mgw*-mt-%{abi_tag}.dll.a
+%{?with_context:%{_libdir}/libboost_context-mgw*-mt-%{abi_tag}.dll.a}
+%{?with_context:%{_libdir}/libboost_coroutine-mgw*-mt-%{abi_tag}.dll.a}
+%{_libdir}/libboost_date_time-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_filesystem-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_graph-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_iostreams-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_locale-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_log-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_log_setup-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_c99-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_c99f-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_c99l-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_tr1-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_tr1f-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_math_tr1l-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_program_options-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_random-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_regex-mgw*-mt-%{abi_tag}.dll.a
+%{?with_serialization:%{_libdir}/libboost_serialization-mgw*-mt-%{abi_tag}.dll.a}
+%{_libdir}/libboost_signals-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_system-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_thread_win32-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_timer-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_type_erasure-mgw*-mt-%{abi_tag}.dll.a
+%{_libdir}/libboost_wave-mgw*-mt-%{abi_tag}.dll.a
+%{?with_serialization:%{_libdir}/libboost_wserialization-mgw*-mt-%{abi_tag}.dll.a}
+# static-only
+%{_libdir}/libboost_exception-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_unit_test_framework-mgw*-mt-%{abi_tag}.a
+%{_includedir}/boost
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libboost_atomic-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_chrono-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_container-mgw*-mt-%{abi_tag}.a
+%{?with_context:%{_libdir}/libboost_context-mgw*-mt-%{abi_tag}.a}
+%{?with_context:%{_libdir}/libboost_coroutine-mgw*-mt-%{abi_tag}.a}
+%{_libdir}/libboost_date_time-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_filesystem-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_graph-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_iostreams-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_locale-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_log-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_log_setup-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_c99-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_c99f-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_c99l-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_tr1-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_tr1f-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_math_tr1l-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_program_options-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_random-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_regex-mgw*-mt-%{abi_tag}.a
+%{?with_serialization:%{_libdir}/libboost_serialization-mgw*-mt-%{abi_tag}.a}
+%{_libdir}/libboost_signals-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_system-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_thread_win32-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_timer-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_type_erasure-mgw*-mt-%{abi_tag}.a
+%{_libdir}/libboost_wave-mgw*-mt-%{abi_tag}.a
+%{?with_serialization:%{_libdir}/libboost_wserialization-mgw*-mt-%{abi_tag}.a}
 
 %files dll
 %defattr(644,root,root,755)
-%{_datadir}/wine/windows/system/*
+%{_dlldir}/libboost_atomic-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_chrono-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_container-mgw*-mt-%{abi_tag}.dll
+%{?with_context:%{_dlldir}/libboost_context-mgw*-mt-%{abi_tag}.dll}
+%{?with_context:%{_dlldir}/libboost_coroutine-mgw*-mt-%{abi_tag}.dll}
+%{_dlldir}/libboost_date_time-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_filesystem-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_graph-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_iostreams-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_locale-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_log-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_log_setup-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_c99-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_c99f-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_c99l-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_tr1-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_tr1f-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_math_tr1l-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_program_options-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_random-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_regex-mgw*-mt-%{abi_tag}.dll
+%{?with_serialization:%{_dlldir}/libboost_serialization-mgw*-mt-%{abi_tag}.dll}
+%{_dlldir}/libboost_signals-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_system-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_thread_win32-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_timer-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_type_erasure-mgw*-mt-%{abi_tag}.dll
+%{_dlldir}/libboost_wave-mgw*-mt-%{abi_tag}.dll
+%{?with_serialization:%{_dlldir}/libboost_wserialization-mgw*-mt-%{abi_tag}.dll}
This page took 0.126546 seconds and 4 git commands to generate.