X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=boost%2Fmingw32-boost.spec;h=c565baec40a420e8c55f83cba308cfb0e4fc8566;hb=f5fb0d87bb47b6a323131a45dea1e19c8718ce71;hp=6c9c386b39c95cbffbefd5561e64961f787ab137;hpb=51ddfac7d2491565912741d3b6713cebdfdab7e9;p=fedora-mingw.git diff --git a/boost/mingw32-boost.spec b/boost/mingw32-boost.spec index 6c9c386..c565bae 100644 --- a/boost/mingw32-boost.spec +++ b/boost/mingw32-boost.spec @@ -6,7 +6,7 @@ Name: mingw32-boost Version: 1.34.1 -Release: 1%{?dist} +Release: 5%{?dist} Summary: MinGW Windows port of Boost C++ Libraries License: Boost @@ -26,6 +26,7 @@ BuildArch: noarch BuildRequires: mingw32-filesystem >= 30 BuildRequires: mingw32-gcc +BuildRequires: mingw32-gcc-c++ BuildRequires: mingw32-binutils #BuildRequires: mingw-libstdc++ BuildRequires: mingw32-bzip2 @@ -78,44 +79,54 @@ REGEX_FLAGS="--without-icu" rm user-config.jam echo "using gcc : : %{_mingw32_cc} : ;" > user-config.jam -make all +make %{?_smp_mflags} all %install rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_mingw32_bindir} mkdir -p $RPM_BUILD_ROOT%{_mingw32_libdir} mkdir -p $RPM_BUILD_ROOT%{_mingw32_includedir} -# install lib -for i in `find stage -type f -name \*.a`; do - NAME=`basename $i`; - install -p -m 0644 $i $RPM_BUILD_ROOT%{_mingw32_libdir}/$NAME; -done; -for i in `find stage -type f -name \*.so`; do - NAME=$i; - SONAME=$i.3; - VNAME=$i.%{version}; - base=`basename $i`; - NAMEbase=$base; - SONAMEbase=$base.3; - VNAMEbase=$base.%{version}; - mv $i $VNAME; - ln -s $VNAMEbase $SONAME; - ln -s $VNAMEbase $NAME; - install -p -m 755 $VNAME $RPM_BUILD_ROOT%{_libdir}/$VNAMEbase; - mv $SONAME $RPM_BUILD_ROOT%{_libdir}/$SONAMEbase; - mv $NAME $RPM_BUILD_ROOT%{_libdir}/$NAMEbase; -done; +# Boost doesn't build shared libraries for some reason. However it +# builds *.a files which we can trivially convert to *.dll (they +# contain objects which are already compiled for PIC). +function a2dll +{ + rm -rf .a2dll + mkdir .a2dll + pushd .a2dll + ar x ../$1 + error=0 + i686-pc-mingw32-gcc -shared \ + -o ../$2.dll \ + -Wl,--out-implib,../$2.dll.a \ + *.o -lbz2 -lz -lstdc++ || error=1 + popd + rm -rf .a2dll + return $error +} + +for f in `find bin.v2 -name '*.a'`; do + b=`basename $f .a` + d=`dirname $f` + if a2dll $f $d/$b; then + install $d/$b.dll $RPM_BUILD_ROOT%{_mingw32_bindir} + install $d/$b.dll.a $RPM_BUILD_ROOT%{_mingw32_libdir} + else + echo '*** FAILED TO BUILD' $d/$b.dll + fi +done # install include files -find %{name} -type d | while read a; do - mkdir -p $RPM_BUILD_ROOT%{_includedir}/$a +find boost -type d | while read a; do + mkdir -p $RPM_BUILD_ROOT%{_mingw32_includedir}/$a find $a -mindepth 1 -maxdepth 1 -type f \ - | xargs -r install -m 644 -p -t $RPM_BUILD_ROOT%{_includedir}/$a + | xargs -r install -m 644 -p -t $RPM_BUILD_ROOT%{_mingw32_includedir}/$a done # remove scripts used to generate include files -find $RPM_BUILD_ROOT%{_includedir}/ \( -name '*.pl' -o -name '*.sh' \) -exec rm {} \; +find $RPM_BUILD_ROOT%{_mingw32_includedir}/ \( -name '*.pl' -o -name '*.sh' \) -exec rm {} \; %clean @@ -124,11 +135,65 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) -%{_mingw32_bindir}/foo.dll -%{_mingw32_libdir}/foo.dll.a -# etc. +%doc LICENSE_1_0.txt +%{_mingw32_includedir}/boost +%{_mingw32_bindir}/libboost_date_time.dll +%{_mingw32_libdir}/libboost_date_time.dll.a +%{_mingw32_bindir}/libboost_date_time-mt.dll +%{_mingw32_libdir}/libboost_date_time-mt.dll.a +%{_mingw32_bindir}/libboost_filesystem.dll +%{_mingw32_libdir}/libboost_filesystem.dll.a +%{_mingw32_bindir}/libboost_filesystem-mt.dll +%{_mingw32_libdir}/libboost_filesystem-mt.dll.a +%{_mingw32_bindir}/libboost_graph.dll +%{_mingw32_libdir}/libboost_graph.dll.a +%{_mingw32_bindir}/libboost_graph-mt.dll +%{_mingw32_libdir}/libboost_graph-mt.dll.a +%{_mingw32_bindir}/libboost_iostreams.dll +%{_mingw32_libdir}/libboost_iostreams.dll.a +%{_mingw32_bindir}/libboost_iostreams-mt.dll +%{_mingw32_libdir}/libboost_iostreams-mt.dll.a +%{_mingw32_bindir}/libboost_program_options.dll +%{_mingw32_libdir}/libboost_program_options.dll.a +%{_mingw32_bindir}/libboost_program_options-mt.dll +%{_mingw32_libdir}/libboost_program_options-mt.dll.a +%{_mingw32_bindir}/libboost_regex.dll +%{_mingw32_libdir}/libboost_regex.dll.a +%{_mingw32_bindir}/libboost_regex-mt.dll +%{_mingw32_libdir}/libboost_regex-mt.dll.a +%{_mingw32_bindir}/libboost_serialization.dll +%{_mingw32_libdir}/libboost_serialization.dll.a +%{_mingw32_bindir}/libboost_serialization-mt.dll +%{_mingw32_libdir}/libboost_serialization-mt.dll.a +%{_mingw32_bindir}/libboost_signals.dll +%{_mingw32_libdir}/libboost_signals.dll.a +%{_mingw32_bindir}/libboost_signals-mt.dll +%{_mingw32_libdir}/libboost_signals-mt.dll.a +%{_mingw32_bindir}/libboost_wave.dll +%{_mingw32_libdir}/libboost_wave.dll.a +%{_mingw32_bindir}/libboost_wave-mt.dll +%{_mingw32_libdir}/libboost_wave-mt.dll.a +# These fail to build: they depend on linking with other parts of boost. +#libboost_prg_exec_monitor.dll +#libboost_test_exec_monitor.dll +#libboost_unit_test_framework.dll +#libboost_unit_test_framework-mt.dll +#libboost_test_exec_monitor-mt.dll +#libboost_prg_exec_monitor-mt.dll +#libboost_wserialization.dll +#libboost_wserialization-mt.dll +#libboost_thread-mt.dll %changelog -* Wed Sep 24 2008 Your Name - 1.2.3-1 +* Fri Feb 20 2009 Richard W.M. Jones - 1.34.1-5 +- Rebuild for mingw32-gcc 4.4 + +* Fri Jan 23 2009 Richard W.M. Jones - 1.34.1-4 +- Include license file. + +* Fri Jan 23 2009 Richard W.M. Jones - 1.34.1-3 +- Use _smp_mflags. + +* Sat Oct 24 2008 Richard W.M. Jones - 1.34.1-2 - Initial RPM release.