15dc32f51c2bdd1fe184fb2ef24f8ecf968583f5
[fedora-mingw.git] / boost / mingw32-boost.spec
1 %define __strip %{_mingw32_strip}
2 %define __objdump %{_mingw32_objdump}
3 %define _use_internal_dependency_generator 0
4 %define __find_requires %{_mingw32_findrequires}
5 %define __find_provides %{_mingw32_findprovides}
6
7 Name:           mingw32-boost
8 Version:        1.34.1
9 Release:        1%{?dist}
10 Summary:        MinGW Windows port of Boost C++ Libraries
11
12 License:        Boost
13 Group:          Development/Libraries
14 URL:            http://www.boost.org/
15 Source0:        http://downloads.sourceforge.net/boost/boost_1_34_1.tar.bz2
16 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
17
18 Patch0:         boost-configure.patch
19 Patch1:         boost-gcc-soname.patch
20 #Patch2:         boost-use-rpm-optflags.patch
21 Patch3:         boost-run-tests.patch
22 Patch4:         boost-regex.patch
23 Patch5:         boost-gcc43.patch
24
25 BuildArch:      noarch
26
27 BuildRequires:  mingw32-filesystem >= 30
28 BuildRequires:  mingw32-gcc
29 BuildRequires:  mingw32-binutils
30 #BuildRequires:  mingw-libstdc++
31 BuildRequires:  mingw32-bzip2
32 BuildRequires:  mingw32-zlib
33 # These are required by the native package:
34 #BuildRequires:  mingw32-python
35 #BuildRequires:  mingw32-libicu
36
37
38 %description
39 Boost provides free peer-reviewed portable C++ source libraries.  The
40 emphasis is on libraries which work well with the C++ Standard
41 Library, in the hopes of establishing "existing practice" for
42 extensions and providing reference implementations so that the Boost
43 libraries are suitable for eventual standardization. (Some of the
44 libraries have already been proposed for inclusion in the C++
45 Standards Committee's upcoming C++ Standard Library Technical Report.)
46
47
48 %prep
49 %setup -q -n boost_1_34_1
50 %patch0 -p0
51 %patch1 -p0
52 #%patch2 -p0
53 %patch3 -p0
54 %patch4 -p0
55 %patch5 -p1
56
57
58 %build
59 BOOST_ROOT=`pwd`
60 staged_dir=stage
61 export BOOST_ROOT
62
63 # build make tools, ie bjam, necessary for building libs, docs, and testing
64 (cd tools/jam/src && ./build.sh)
65 BJAM=`find tools/jam/src/ -name bjam -a -type f`
66
67 #BUILD_FLAGS="--with-toolset=gcc --prefix=$RPM_BUILD_ROOT%{_prefix}"
68 BUILD_FLAGS="--with-toolset=gcc --with-bjam=$BJAM"
69 #PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]')
70 #PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION"
71 PYTHON_FLAGS="--without-libraries=python"
72 #REGEX_FLAGS="--with-icu"
73 REGEX_FLAGS="--without-icu"
74
75 ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS
76
77 # Make it use the cross-compiler instead of gcc.
78 rm user-config.jam
79 echo "using gcc : : %{_mingw32_cc} : ;" > user-config.jam
80
81 make all
82
83
84 %install
85 rm -rf $RPM_BUILD_ROOT
86 mkdir -p $RPM_BUILD_ROOT%{_mingw32_bindir}
87 mkdir -p $RPM_BUILD_ROOT%{_mingw32_libdir}
88 mkdir -p $RPM_BUILD_ROOT%{_mingw32_includedir}
89
90 # Boost doesn't build shared libraries for some reason.  However it
91 # builds *.a files which we can trivially convert to *.dll (they
92 # contain objects which are already compiled for PIC).
93 function a2dll
94 {
95   rm -rf .a2dll
96   mkdir .a2dll
97   pushd .a2dll
98   ar x ../$1
99   error=0
100   i686-pc-mingw32-gcc -shared \
101     -o ../$2.dll \
102     -Wl,--out-implib,../$2.dll.a \
103     *.o -lbz2 -lz -lstdc++ || error=1
104   popd
105   rm -rf .a2dll
106   return $error
107 }
108
109 for f in `find bin.v2 -name '*.a'`; do
110   b=`basename $f .a`
111   d=`dirname $f`
112   if a2dll $f $d/$b; then
113     install $d/$b.dll $RPM_BUILD_ROOT%{_mingw32_bindir}
114     install $d/$b.dll.a $RPM_BUILD_ROOT%{_mingw32_libdir}
115   else
116     echo '*** FAILED TO BUILD' $d/$b.dll
117   fi
118 done
119
120 # install include files
121 find boost -type d | while read a; do
122   mkdir -p $RPM_BUILD_ROOT%{_mingw32_includedir}/$a
123   find $a -mindepth 1 -maxdepth 1 -type f \
124     | xargs -r install -m 644 -p -t $RPM_BUILD_ROOT%{_mingw32_includedir}/$a
125 done
126
127 # remove scripts used to generate include files
128 find $RPM_BUILD_ROOT%{_mingw32_includedir}/ \( -name '*.pl' -o -name '*.sh' \) -exec rm {} \;
129
130
131 %clean
132 rm -rf $RPM_BUILD_ROOT
133
134
135 %files
136 %defattr(-,root,root)
137 %{_mingw32_includedir}/boost
138 %{_mingw32_bindir}/libboost_date_time.dll
139 %{_mingw32_libdir}/libboost_date_time.dll.a
140 %{_mingw32_bindir}/libboost_date_time-mt.dll
141 %{_mingw32_libdir}/libboost_date_time-mt.dll.a
142 %{_mingw32_bindir}/libboost_filesystem.dll
143 %{_mingw32_libdir}/libboost_filesystem.dll.a
144 %{_mingw32_bindir}/libboost_filesystem-mt.dll
145 %{_mingw32_libdir}/libboost_filesystem-mt.dll.a
146 %{_mingw32_bindir}/libboost_graph.dll
147 %{_mingw32_libdir}/libboost_graph.dll.a
148 %{_mingw32_bindir}/libboost_graph-mt.dll
149 %{_mingw32_libdir}/libboost_graph-mt.dll.a
150 %{_mingw32_bindir}/libboost_iostreams.dll
151 %{_mingw32_libdir}/libboost_iostreams.dll.a
152 %{_mingw32_bindir}/libboost_iostreams-mt.dll
153 %{_mingw32_libdir}/libboost_iostreams-mt.dll.a
154 %{_mingw32_bindir}/libboost_program_options.dll
155 %{_mingw32_libdir}/libboost_program_options.dll.a
156 %{_mingw32_bindir}/libboost_program_options-mt.dll
157 %{_mingw32_libdir}/libboost_program_options-mt.dll.a
158 %{_mingw32_bindir}/libboost_regex.dll
159 %{_mingw32_libdir}/libboost_regex.dll.a
160 %{_mingw32_bindir}/libboost_regex-mt.dll
161 %{_mingw32_libdir}/libboost_regex-mt.dll.a
162 %{_mingw32_bindir}/libboost_serialization.dll
163 %{_mingw32_libdir}/libboost_serialization.dll.a
164 %{_mingw32_bindir}/libboost_serialization-mt.dll
165 %{_mingw32_libdir}/libboost_serialization-mt.dll.a
166 %{_mingw32_bindir}/libboost_signals.dll
167 %{_mingw32_libdir}/libboost_signals.dll.a
168 %{_mingw32_bindir}/libboost_signals-mt.dll
169 %{_mingw32_libdir}/libboost_signals-mt.dll.a
170 %{_mingw32_bindir}/libboost_wave.dll
171 %{_mingw32_libdir}/libboost_wave.dll.a
172 %{_mingw32_bindir}/libboost_wave-mt.dll
173 %{_mingw32_libdir}/libboost_wave-mt.dll.a
174 # These fail to build: they depend on linking with other parts of boost.
175 #libboost_prg_exec_monitor.dll
176 #libboost_test_exec_monitor.dll
177 #libboost_unit_test_framework.dll
178 #libboost_unit_test_framework-mt.dll
179 #libboost_test_exec_monitor-mt.dll
180 #libboost_prg_exec_monitor-mt.dll
181 #libboost_wserialization.dll
182 #libboost_wserialization-mt.dll
183 #libboost_thread-mt.dll
184
185
186 %changelog
187 * Sat Oct 24 2008 Richard W.M. Jones <rjones@redhat.com> - 1.34.1-1
188 - Initial RPM release.