]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
New packages: flac+libexif.
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 Aug 2012 18:29:06 +0000 (20:29 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 Aug 2012 18:29:06 +0000 (20:29 +0200)
config/rootfiles/packages/flac [new file with mode: 0644]
config/rootfiles/packages/libexif [new file with mode: 0644]
lfs/flac [new file with mode: 0644]
lfs/libexif [new file with mode: 0644]
make.sh
src/patches/flac-1.2.1-asm.patch [new file with mode: 0644]
src/patches/flac-1.2.1-bitreader.patch [new file with mode: 0644]
src/patches/flac-1.2.1-cflags.patch [new file with mode: 0644]
src/patches/flac-1.2.1-gcc43.patch [new file with mode: 0644]
src/patches/flac-1.2.1-hidesyms.patch [new file with mode: 0644]
src/patches/flac-1.2.1-tests.patch [new file with mode: 0644]

diff --git a/config/rootfiles/packages/flac b/config/rootfiles/packages/flac
new file mode 100644 (file)
index 0000000..d5ca870
--- /dev/null
@@ -0,0 +1,314 @@
+usr/bin/flac
+usr/bin/metaflac
+#usr/include/FLAC
+#usr/include/FLAC++
+#usr/include/FLAC++/all.h
+#usr/include/FLAC++/decoder.h
+#usr/include/FLAC++/encoder.h
+#usr/include/FLAC++/export.h
+#usr/include/FLAC++/metadata.h
+#usr/include/FLAC/all.h
+#usr/include/FLAC/assert.h
+#usr/include/FLAC/callback.h
+#usr/include/FLAC/export.h
+#usr/include/FLAC/format.h
+#usr/include/FLAC/metadata.h
+#usr/include/FLAC/ordinals.h
+#usr/include/FLAC/stream_decoder.h
+#usr/include/FLAC/stream_encoder.h
+#usr/lib/libFLAC++.a
+#usr/lib/libFLAC++.la
+#usr/lib/libFLAC++.so
+usr/lib/libFLAC++.so.6
+usr/lib/libFLAC++.so.6.2.0
+#usr/lib/libFLAC.a
+#usr/lib/libFLAC.la
+#usr/lib/libFLAC.so
+usr/lib/libFLAC.so.8
+usr/lib/libFLAC.so.8.2.0
+#usr/lib/pkgconfig/flac++.pc
+#usr/lib/pkgconfig/flac.pc
+#usr/man/man1/flac.1
+#usr/man/man1/metaflac.1
+#usr/share/aclocal/libFLAC++.m4
+#usr/share/aclocal/libFLAC.m4
+#usr/share/doc/flac-1.2.1
+#usr/share/doc/flac-1.2.1/FLAC.tag
+#usr/share/doc/flac-1.2.1/html
+#usr/share/doc/flac-1.2.1/html/api
+#usr/share/doc/flac-1.2.1/html/api/+_2all_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2export_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2export_8h.html
+#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h.html
+#usr/share/doc/flac-1.2.1/html/api/all_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/annotated.html
+#usr/share/doc/flac-1.2.1/html/api/assert_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/callback_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/callback_8h.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html
+#usr/share/doc/flac-1.2.1/html/api/classes.html
+#usr/share/doc/flac-1.2.1/html/api/decoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/decoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000000.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000001.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000002.html
+#usr/share/doc/flac-1.2.1/html/api/dirs.html
+#usr/share/doc/flac-1.2.1/html/api/doxygen.css
+#usr/share/doc/flac-1.2.1/html/api/doxygen.png
+#usr/share/doc/flac-1.2.1/html/api/encoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/encoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/export_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/export_8h.html
+#usr/share/doc/flac-1.2.1/html/api/files.html
+#usr/share/doc/flac-1.2.1/html/api/format_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/format_8h.html
+#usr/share/doc/flac-1.2.1/html/api/functions.html
+#usr/share/doc/flac-1.2.1/html/api/functions_func.html
+#usr/share/doc/flac-1.2.1/html/api/functions_vars.html
+#usr/share/doc/flac-1.2.1/html/api/globals.html
+#usr/share/doc/flac-1.2.1/html/api/globals_0x66.html
+#usr/share/doc/flac-1.2.1/html/api/globals_0x67.html
+#usr/share/doc/flac-1.2.1/html/api/globals_defs.html
+#usr/share/doc/flac-1.2.1/html/api/globals_enum.html
+#usr/share/doc/flac-1.2.1/html/api/globals_eval.html
+#usr/share/doc/flac-1.2.1/html/api/globals_func.html
+#usr/share/doc/flac-1.2.1/html/api/globals_type.html
+#usr/share/doc/flac-1.2.1/html/api/globals_vars.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__callbacks.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__export.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__format.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level0.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level1.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level2.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__object.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__export.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level0.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level1.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level2.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__object.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__2__to__1__1__3.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__3__to__1__1__4.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__4__to__1__2__0.html
+#usr/share/doc/flac-1.2.1/html/api/hierarchy.html
+#usr/share/doc/flac-1.2.1/html/api/index.html
+#usr/share/doc/flac-1.2.1/html/api/metadata_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/metadata_8h.html
+#usr/share/doc/flac-1.2.1/html/api/modules.html
+#usr/share/doc/flac-1.2.1/html/api/ordinals_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim.html
+#usr/share/doc/flac-1.2.1/html/changelog.html
+#usr/share/doc/flac-1.2.1/html/comparison.html
+#usr/share/doc/flac-1.2.1/html/comparison__chopin_prelude_24.html
+#usr/share/doc/flac-1.2.1/html/comparison__dream_theater_600.html
+#usr/share/doc/flac-1.2.1/html/comparison__eddie_warner_titus.html
+#usr/share/doc/flac-1.2.1/html/comparison__fanfare_de_l_eventail_de_jeanne.html
+#usr/share/doc/flac-1.2.1/html/comparison__gloria_estefan_conga.html
+#usr/share/doc/flac-1.2.1/html/comparison__hand_in_my_pocket.html
+#usr/share/doc/flac-1.2.1/html/comparison__l_sub_raga_sivapriya.html
+#usr/share/doc/flac-1.2.1/html/comparison__laetatus_sum.html
+#usr/share/doc/flac-1.2.1/html/comparison__mummified_in_barbed_wire.html
+#usr/share/doc/flac-1.2.1/html/comparison__prokofiev_pcon3_3.html
+#usr/share/doc/flac-1.2.1/html/comparison__ravel_sq4_4.html
+#usr/share/doc/flac-1.2.1/html/comparison__scarlatti_k42.html
+#usr/share/doc/flac-1.2.1/html/comparison__tool_forty_six_and_2.html
+#usr/share/doc/flac-1.2.1/html/comparison__white_room.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_cpudectime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_cpuenctime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_procdectime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_procenctime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_ratio.html
+#usr/share/doc/flac-1.2.1/html/developers.html
+#usr/share/doc/flac-1.2.1/html/documentation.html
+#usr/share/doc/flac-1.2.1/html/documentation_bugs.html
+#usr/share/doc/flac-1.2.1/html/documentation_example_code.html
+#usr/share/doc/flac-1.2.1/html/documentation_format_overview.html
+#usr/share/doc/flac-1.2.1/html/documentation_tasks.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_flac.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_metaflac.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_plugins.html
+#usr/share/doc/flac-1.2.1/html/download.html
+#usr/share/doc/flac-1.2.1/html/faq.html
+#usr/share/doc/flac-1.2.1/html/favicon.ico
+#usr/share/doc/flac-1.2.1/html/features.html
+#usr/share/doc/flac-1.2.1/html/flac.css
+#usr/share/doc/flac-1.2.1/html/format.html
+#usr/share/doc/flac-1.2.1/html/id.html
+#usr/share/doc/flac-1.2.1/html/images
+#usr/share/doc/flac-1.2.1/html/images/1x1.gif
+#usr/share/doc/flac-1.2.1/html/images/cafebug.gif
+#usr/share/doc/flac-1.2.1/html/images/hw
+#usr/share/doc/flac-1.2.1/html/images/hw/Blackbird_Front_low3_325x87.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/MS300frontsmall_270x108.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/MediaBox_Frt_170x325.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/SB_Hero_Black_325x182.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/Sooloos-ControlOne_325x328.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/Z500_front_325x94.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/a2_01_325x252.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/arcus_325x135.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/bmp-1430_325x241.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/cs505_front_lrg_325x113.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/escient_ProductLine_325x163.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/i-station-mini-dx_325x237.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/iwod-g10_325x257.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/knc_hr-2800_325x209.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/meizu_m6_325x206.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/musica_artwork_325x90.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/neodigits_x5000_325x124.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/onda-vx737_325x240.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/request_n_front_325x103.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/rio_karma_279x254.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/sonos_family_RGB_325x200.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/teclast-tl29_325x244.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/transporter_hero_grey_325x208.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/tvix-4000_325x204.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg
+#usr/share/doc/flac-1.2.1/html/images/logo100.gif
+#usr/share/doc/flac-1.2.1/html/images/logo130.gif
+#usr/share/doc/flac-1.2.1/html/index.html
+#usr/share/doc/flac-1.2.1/html/itunes.html
+#usr/share/doc/flac-1.2.1/html/license.html
+#usr/share/doc/flac-1.2.1/html/links.html
+#usr/share/doc/flac-1.2.1/html/news.html
+#usr/share/doc/flac-1.2.1/html/ogg_mapping.html
+#usr/share/doc/flac-1.2.1/html/ru
+#usr/share/doc/flac-1.2.1/html/ru/authors.html
+#usr/share/doc/flac-1.2.1/html/ru/comparison.html
+#usr/share/doc/flac-1.2.1/html/ru/developers.html
+#usr/share/doc/flac-1.2.1/html/ru/documentation.html
+#usr/share/doc/flac-1.2.1/html/ru/download.html
+#usr/share/doc/flac-1.2.1/html/ru/features.html
+#usr/share/doc/flac-1.2.1/html/ru/format.html
+#usr/share/doc/flac-1.2.1/html/ru/goals.html
+#usr/share/doc/flac-1.2.1/html/ru/id.html
+#usr/share/doc/flac-1.2.1/html/ru/index.html
+#usr/share/doc/flac-1.2.1/html/ru/links.html
+#usr/share/doc/flac-1.2.1/html/ru/news.html
diff --git a/config/rootfiles/packages/libexif b/config/rootfiles/packages/libexif
new file mode 100644 (file)
index 0000000..9efbc1f
--- /dev/null
@@ -0,0 +1,64 @@
+#usr/include/libexif
+#usr/include/libexif/_stdint.h
+#usr/include/libexif/exif-byte-order.h
+#usr/include/libexif/exif-content.h
+#usr/include/libexif/exif-data-type.h
+#usr/include/libexif/exif-data.h
+#usr/include/libexif/exif-entry.h
+#usr/include/libexif/exif-format.h
+#usr/include/libexif/exif-ifd.h
+#usr/include/libexif/exif-loader.h
+#usr/include/libexif/exif-log.h
+#usr/include/libexif/exif-mem.h
+#usr/include/libexif/exif-mnote-data.h
+#usr/include/libexif/exif-tag.h
+#usr/include/libexif/exif-utils.h
+#usr/lib/libexif.la
+#usr/lib/libexif.so
+usr/lib/libexif.so.12
+usr/lib/libexif.so.12.3.3
+usr/lib/pkgconfig/libexif.pc
+#usr/share/doc/libexif
+#usr/share/doc/libexif/ABOUT-NLS
+#usr/share/doc/libexif/AUTHORS
+#usr/share/doc/libexif/COPYING
+#usr/share/doc/libexif/ChangeLog
+#usr/share/doc/libexif/NEWS
+#usr/share/doc/libexif/README
+#usr/share/locale/be/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/bs
+#usr/share/locale/bs/LC_MESSAGES
+#usr/share/locale/bs/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/cs/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/da/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/de/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_AU
+#usr/share/locale/en_AU/LC_MESSAGES
+#usr/share/locale/en_AU/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_CA
+#usr/share/locale/en_CA/LC_MESSAGES
+#usr/share/locale/en_CA/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_GB/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/es/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/fr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/it/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/ja/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/nl/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pl/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pt
+#usr/share/locale/pt/LC_MESSAGES
+#usr/share/locale/pt/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/ru/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sk/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sq
+#usr/share/locale/sq/LC_MESSAGES
+#usr/share/locale/sq/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sr
+#usr/share/locale/sr/LC_MESSAGES
+#usr/share/locale/sr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sv/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/tr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/uk/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/vi/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/libexif-12.mo
diff --git a/lfs/flac b/lfs/flac
new file mode 100644 (file)
index 0000000..2143d36
--- /dev/null
+++ b/lfs/flac
@@ -0,0 +1,95 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.2.1
+
+THISAPP    = flac-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = flac
+PAK_VER    = 1
+
+DEPS       = "libogg"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 153c8b15a54da428d1f0fadc756c22c7
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-asm.patch
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/flac-1.2.1-bitreader.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-cflags.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-gcc43.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-hidesyms.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-tests.patch
+       cd $(DIR_APP) && ./autogen.sh -V
+       cd $(DIR_APP) && \
+               ./configure \
+               --prefix=/usr \
+               --disable-xmms-plugin \
+               --disable-thorough-tests
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/libexif b/lfs/libexif
new file mode 100644 (file)
index 0000000..e39508d
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.6.21
+
+THISAPP    = libexif-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = libexif
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 27339b89850f28c8f1c237f233e05b27
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index c88a8eb25d26d9d2613049ab1239ae64ff2be015..840b7b0722864b8678141064de864b169cb03c0a 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -487,6 +487,7 @@ buildipfire() {
   ipfiremake libnl
   ipfiremake libidn
   ipfiremake libjpeg
+  ipfiremake libexif
   ipfiremake libpng
   ipfiremake libtiff
   ipfiremake libart
@@ -632,6 +633,7 @@ buildipfire() {
   ipfiremake libogg
   ipfiremake libvorbis
   ipfiremake libdvbpsi
+  ipfiremake flac
   ipfiremake lame
   ipfiremake sox
   ipfiremake libshout
diff --git a/src/patches/flac-1.2.1-asm.patch b/src/patches/flac-1.2.1-asm.patch
new file mode 100644 (file)
index 0000000..932a761
--- /dev/null
@@ -0,0 +1,73 @@
+diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c
+--- flac-1.2.1/src/libFLAC/stream_decoder.c.asm        2007-09-13 17:38:05.000000000 +0200
++++ flac-1.2.1/src/libFLAC/stream_decoder.c    2008-01-29 10:32:17.000000000 +0100
+@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini
+ #ifdef FLAC__CPU_IA32
+               FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32);
+ #ifdef FLAC__HAS_NASM
+-#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */
++#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */
+               if(decoder->private_->cpuinfo.data.ia32.bswap)
+                       decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap;
+ #endif
+diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm       2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm   2008-01-29 10:34:09.000000000 +0100
+@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32
+ end
+ %ifdef OBJ_FORMAT_elf
+-       section .note.GNU-stack noalloc
++       section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am
+--- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm        2007-04-04 02:01:13.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/Makefile.am    2008-03-17 14:04:37.000000000 +0100
+@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n
+ noinst_LTLIBRARIES = libFLAC-asm.la
+ libFLAC_asm_la_SOURCES = \
+-      bitreader_asm.nasm \
+       cpu_asm.nasm \
+       fixed_asm.nasm \
+       lpc_asm.nasm \
+diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm     2008-01-29 10:32:57.000000000 +0100
+@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_
+ end
+ %ifdef OBJ_FORMAT_elf
+-      section .note.GNU-stack noalloc
++      section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm     2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100
+@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto
+ end
+ %ifdef OBJ_FORMAT_elf
+-       section .note.GNU-stack noalloc
++       section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm       2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm   2008-01-29 10:33:24.000000000 +0100
+@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i
+ end
+ %ifdef OBJ_FORMAT_elf
+-       section .note.GNU-stack noalloc
++       section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm    2007-06-19 22:01:27.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm        2008-01-29 10:34:40.000000000 +0100
+@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32
+ end
+ %ifdef OBJ_FORMAT_elf
+-      section .note.GNU-stack noalloc
++      section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
diff --git a/src/patches/flac-1.2.1-bitreader.patch b/src/patches/flac-1.2.1-bitreader.patch
new file mode 100644 (file)
index 0000000..9d47af3
--- /dev/null
@@ -0,0 +1,558 @@
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c    28 Feb 2008 05:34:26 -0000      1.15
++++ src/libFLAC/bitreader.c    14 Mar 2008 11:07:07 -0000
+@@ -69,13 +69,12 @@
+ #endif
+ /* counts the # of zero MSBs in a word */
+ #define COUNT_ZERO_MSBS(word) ( \
+-      (word) <= 0xffff ? \
+-              ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \
+-              ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \
++      word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \
++      !word ? 32 : \
++      word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \
++      word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \
++      byte_to_unary_table[word] + 24 \
+ )
+-/* this alternate might be slightly faster on some systems/compilers: */
+-#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) )
+-
+ /*
+  * This should be at least twice as large as the largest number of words
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c    28 Feb 2008 05:34:26 -0000      1.15
++++ src/libFLAC/bitreader.c    14 Mar 2008 13:19:46 -0000
+@@ -149,6 +148,7 @@
+       FLAC__CPUInfo cpu_info;
+ };
++#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32
+ #ifdef _MSC_VER
+ /* OPT: an MSVC built-in would be better */
+ static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x)
+@@ -173,6 +173,15 @@
+ done1:
+       }
+ }
++#elif __GNUC__
++static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len)
++{
++      FLAC__uint32 *end;
++
++      for(end = start + len; start < end; start++)
++              asm ("bswap %0" : "=r"(*start) : "0"(*start));
++}
++#endif
+ #endif
+ static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
+@@ -263,7 +272,7 @@
+ #if WORDS_BIGENDIAN
+ #else
+       end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
+-# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4)
++# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4
+       if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) {
+               start = br->words;
+               local_swap32_block_(br->buffer + start, end - start);
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c    28 Feb 2008 05:34:26 -0000      1.15
++++ src/libFLAC/bitreader.c    17 Mar 2008 15:42:57 -0000
+@@ -803,379 +812,144 @@
+ }
+ /* this is by far the most heavily used reader call.  it ain't pretty but it's fast */
+-/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */
+ FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
+-/* OPT: possibly faster version for use with MSVC */
+-#ifdef _MSC_VER
+ {
+-      unsigned i;
+-      unsigned uval = 0;
+-      unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */
+-
+       /* try and get br->consumed_words and br->consumed_bits into register;
+        * must remember to flush them back to *br before calling other
+-       * bitwriter functions that use them, and before returning */
+-      register unsigned cwords;
+-      register unsigned cbits;
++       * bitreader functions that use them, and before returning */
++      unsigned cwords, words, lsbs, msbs, x, y;
++      unsigned ucbits; /* keep track of the number of unconsumed bits in word */
++      brword b;
++      int *val, *end;
+       FLAC__ASSERT(0 != br);
+       FLAC__ASSERT(0 != br->buffer);
+       /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
+       FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
+       FLAC__ASSERT(parameter < 32);
+-      /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */
+-
+-      if(nvals == 0)
+-              return true;
+-
+-      cbits = br->consumed_bits;
+-      cwords = br->consumed_words;
++      /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
+-      while(1) {
++      val = vals;
++      end = vals + nvals;
+-              /* read unary part */
+-              while(1) {
+-                      while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+-                              brword b = br->buffer[cwords] << cbits;
+-                              if(b) {
+-#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32
+-                                      __asm {
+-                                              bsr eax, b
+-                                              not eax
+-                                              and eax, 31
+-                                              mov i, eax
+-                                      }
+-#else
+-                                      i = COUNT_ZERO_MSBS(b);
+-#endif
+-                                      uval += i;
+-                                      bits = parameter;
+-                                      i++;
+-                                      cbits += i;
+-                                      if(cbits == FLAC__BITS_PER_WORD) {
+-                                              crc16_update_word_(br, br->buffer[cwords]);
+-                                              cwords++;
+-                                              cbits = 0;
+-                                      }
+-                                      goto break1;
+-                              }
+-                              else {
+-                                      uval += FLAC__BITS_PER_WORD - cbits;
+-                                      crc16_update_word_(br, br->buffer[cwords]);
+-                                      cwords++;
+-                                      cbits = 0;
+-                                      /* didn't find stop bit yet, have to keep going... */
+-                              }
+-                      }
+-                      /* at this point we've eaten up all the whole words; have to try
+-                       * reading through any tail bytes before calling the read callback.
+-                       * this is a repeat of the above logic adjusted for the fact we
+-                       * don't have a whole word.  note though if the client is feeding
+-                       * us data a byte at a time (unlikely), br->consumed_bits may not
+-                       * be zero.
+-                       */
+-                      if(br->bytes) {
+-                              const unsigned end = br->bytes * 8;
+-                              brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits;
+-                              if(b) {
+-                                      i = COUNT_ZERO_MSBS(b);
+-                                      uval += i;
+-                                      bits = parameter;
+-                                      i++;
+-                                      cbits += i;
+-                                      FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+-                                      goto break1;
+-                              }
+-                              else {
+-                                      uval += end - cbits;
+-                                      cbits += end;
+-                                      FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+-                                      /* didn't find stop bit yet, have to keep going... */
+-                              }
+-                      }
+-                      /* flush registers and read; bitreader_read_from_client_() does
+-                       * not touch br->consumed_bits at all but we still need to set
+-                       * it in case it fails and we have to return false.
+-                       */
+-                      br->consumed_bits = cbits;
+-                      br->consumed_words = cwords;
+-                      if(!bitreader_read_from_client_(br))
++      if(parameter == 0) {
++              while(val < end) {
++                      /* read the unary MSBs and end bit */
++                      if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
+                               return false;
+-                      cwords = br->consumed_words;
+-              }
+-break1:
+-              /* read binary part */
+-              FLAC__ASSERT(cwords <= br->words);
+-
+-              if(bits) {
+-                      while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) {
+-                              /* flush registers and read; bitreader_read_from_client_() does
+-                               * not touch br->consumed_bits at all but we still need to set
+-                               * it in case it fails and we have to return false.
+-                               */
+-                              br->consumed_bits = cbits;
+-                              br->consumed_words = cwords;
+-                              if(!bitreader_read_from_client_(br))
+-                                      return false;
+-                              cwords = br->consumed_words;
+-                      }
+-                      if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+-                              if(cbits) {
+-                                      /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+-                                      const unsigned n = FLAC__BITS_PER_WORD - cbits;
+-                                      const brword word = br->buffer[cwords];
+-                                      if(bits < n) {
+-                                              uval <<= bits;
+-                                              uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits);
+-                                              cbits += bits;
+-                                              goto break2;
+-                                      }
+-                                      uval <<= n;
+-                                      uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
+-                                      bits -= n;
+-                                      crc16_update_word_(br, word);
+-                                      cwords++;
+-                                      cbits = 0;
+-                                      if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
+-                                              uval <<= bits;
+-                                              uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits));
+-                                              cbits = bits;
+-                                      }
+-                                      goto break2;
+-                              }
+-                              else {
+-                                      FLAC__ASSERT(bits < FLAC__BITS_PER_WORD);
+-                                      uval <<= bits;
+-                                      uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
+-                                      cbits = bits;
+-                                      goto break2;
+-                              }
+-                      }
+-                      else {
+-                              /* in this case we're starting our read at a partial tail word;
+-                               * the reader has guaranteed that we have at least 'bits' bits
+-                               * available to read, which makes this case simpler.
+-                               */
+-                              uval <<= bits;
+-                              if(cbits) {
+-                                      /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+-                                      FLAC__ASSERT(cbits + bits <= br->bytes*8);
+-                                      uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits);
+-                                      cbits += bits;
+-                                      goto break2;
+-                              }
+-                              else {
+-                                      uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
+-                                      cbits += bits;
+-                                      goto break2;
+-                              }
+-                      }
+-              }
+-break2:
+-              /* compose the value */
+-              *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
+-              /* are we done? */
+-              --nvals;
+-              if(nvals == 0) {
+-                      br->consumed_bits = cbits;
+-                      br->consumed_words = cwords;
+-                      return true;
++                      *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1);
+               }
+-              uval = 0;
+-              ++vals;
+-
++              return true;
+       }
+-}
+-#else
+-{
+-      unsigned i;
+-      unsigned uval = 0;
+-      /* try and get br->consumed_words and br->consumed_bits into register;
+-       * must remember to flush them back to *br before calling other
+-       * bitwriter functions that use them, and before returning */
+-      register unsigned cwords;
+-      register unsigned cbits;
+-      unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */
++      FLAC__ASSERT(parameter > 0);
+-      FLAC__ASSERT(0 != br);
+-      FLAC__ASSERT(0 != br->buffer);
+-      /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
+-      FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
+-      FLAC__ASSERT(parameter < 32);
+-      /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
++      cwords = br->consumed_words;
++      words = br->words;
+-      if(nvals == 0)
+-              return true;
++      /* if we've not consumed up to a partial tail word... */
++      if(cwords >= words) {
++              x = 0;
++              goto process_tail;
++      }
++
++      ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
++      b = br->buffer[cwords] << br->consumed_bits;  /* keep unconsumed bits aligned to left */
++
++      while(val < end) {
++              /* read the unary MSBs and end bit */
++              x = y = COUNT_ZERO_MSBS(b);
++              if(x == FLAC__BITS_PER_WORD) {
++                      x = ucbits;
++                      do {
++                              /* didn't find stop bit yet, have to keep going... */
++                              crc16_update_word_(br, br->buffer[cwords++]);
++                              if (cwords >= words)
++                                      goto incomplete_msbs;
++                              b = br->buffer[cwords];
++                              y = COUNT_ZERO_MSBS(b);
++                              x += y;
++                      } while(y == FLAC__BITS_PER_WORD);
++              }
++              b <<= y;
++              b <<= 1; /* account for stop bit */
++              ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD;
++              msbs = x;
++
++              /* read the binary LSBs */
++              x = b >> (FLAC__BITS_PER_WORD - parameter);
++              if(parameter <= ucbits) {
++                      ucbits -= parameter;
++                      b <<= parameter;
++              } else {
++                      /* there are still bits left to read, they will all be in the next word */
++                      crc16_update_word_(br, br->buffer[cwords++]);
++                      if (cwords >= words)
++                              goto incomplete_lsbs;
++                      b = br->buffer[cwords];
++                      ucbits += FLAC__BITS_PER_WORD - parameter;
++                      x |= b >> ucbits;
++                      b <<= FLAC__BITS_PER_WORD - ucbits;
++              }
++              lsbs = x;
+-      cbits = br->consumed_bits;
+-      cwords = br->consumed_words;
+-      ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
++              /* compose the value */
++              x = (msbs << parameter) | lsbs;
++              *val++ = (int)(x >> 1) ^ -(int)(x & 1);
+-      while(1) {
++              continue;
+-              /* read unary part */
+-              while(1) {
+-                      while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+-                              brword b = br->buffer[cwords] << cbits;
+-                              if(b) {
+-#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__
+-                                      asm volatile (
+-                                              "bsrl %1, %0;"
+-                                              "notl %0;"
+-                                              "andl $31, %0;"
+-                                              : "=r"(i)
+-                                              : "r"(b)
+-                                      );
+-#else
+-                                      i = COUNT_ZERO_MSBS(b);
+-#endif
+-                                      uval += i;
+-                                      cbits += i;
+-                                      cbits++; /* skip over stop bit */
+-                                      if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
+-                                              crc16_update_word_(br, br->buffer[cwords]);
+-                                              cwords++;
+-                                              cbits = 0;
+-                                      }
+-                                      goto break1;
+-                              }
+-                              else {
+-                                      uval += FLAC__BITS_PER_WORD - cbits;
+-                                      crc16_update_word_(br, br->buffer[cwords]);
+-                                      cwords++;
+-                                      cbits = 0;
+-                                      /* didn't find stop bit yet, have to keep going... */
+-                              }
+-                      }
+-                      /* at this point we've eaten up all the whole words; have to try
+-                       * reading through any tail bytes before calling the read callback.
+-                       * this is a repeat of the above logic adjusted for the fact we
+-                       * don't have a whole word.  note though if the client is feeding
+-                       * us data a byte at a time (unlikely), br->consumed_bits may not
+-                       * be zero.
+-                       */
+-                      if(br->bytes) {
+-                              const unsigned end = br->bytes * 8;
+-                              brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits;
+-                              if(b) {
+-                                      i = COUNT_ZERO_MSBS(b);
+-                                      uval += i;
+-                                      cbits += i;
+-                                      cbits++; /* skip over stop bit */
+-                                      FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+-                                      goto break1;
+-                              }
+-                              else {
+-                                      uval += end - cbits;
+-                                      cbits += end;
+-                                      FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+-                                      /* didn't find stop bit yet, have to keep going... */
+-                              }
++              /* at this point we've eaten up all the whole words */
++process_tail:
++              do {
++                      if(0) {
++incomplete_msbs:
++                              br->consumed_bits = 0;
++                              br->consumed_words = cwords;
+                       }
+-                      /* flush registers and read; bitreader_read_from_client_() does
+-                       * not touch br->consumed_bits at all but we still need to set
+-                       * it in case it fails and we have to return false.
+-                       */
+-                      br->consumed_bits = cbits;
+-                      br->consumed_words = cwords;
+-                      if(!bitreader_read_from_client_(br))
++                      
++                      /* read the unary MSBs and end bit */
++                      if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
+                               return false;
+-                      cwords = br->consumed_words;
+-                      ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval;
+-                      /* + uval to offset our count by the # of unary bits already
+-                       * consumed before the read, because we will add these back
+-                       * in all at once at break1
+-                       */
+-              }
+-break1:
+-              ucbits -= uval;
+-              ucbits--; /* account for stop bit */
+-
+-              /* read binary part */
+-              FLAC__ASSERT(cwords <= br->words);
+-
+-              if(parameter) {
+-                      while(ucbits < parameter) {
+-                              /* flush registers and read; bitreader_read_from_client_() does
+-                               * not touch br->consumed_bits at all but we still need to set
+-                               * it in case it fails and we have to return false.
+-                               */
+-                              br->consumed_bits = cbits;
++                      msbs += x;
++                      x = ucbits = 0;
++
++                      if(0) {
++incomplete_lsbs:
++                              br->consumed_bits = 0;
+                               br->consumed_words = cwords;
+-                              if(!bitreader_read_from_client_(br))
+-                                      return false;
+-                              cwords = br->consumed_words;
+-                              ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
+-                      }
+-                      if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+-                              if(cbits) {
+-                                      /* this also works when consumed_bits==0, it's just slower than necessary for that case */
+-                                      const unsigned n = FLAC__BITS_PER_WORD - cbits;
+-                                      const brword word = br->buffer[cwords];
+-                                      if(parameter < n) {
+-                                              uval <<= parameter;
+-                                              uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter);
+-                                              cbits += parameter;
+-                                      }
+-                                      else {
+-                                              uval <<= n;
+-                                              uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
+-                                              crc16_update_word_(br, word);
+-                                              cwords++;
+-                                              cbits = parameter - n;
+-                                              if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
+-                                                      uval <<= cbits;
+-                                                      uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
+-                                              }
+-                                      }
+-                              }
+-                              else {
+-                                      cbits = parameter;
+-                                      uval <<= parameter;
+-                                      uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
+-                              }
+                       }
+-                      else {
+-                              /* in this case we're starting our read at a partial tail word;
+-                               * the reader has guaranteed that we have at least 'parameter'
+-                               * bits available to read, which makes this case simpler.
+-                               */
+-                              uval <<= parameter;
+-                              if(cbits) {
+-                                      /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+-                                      FLAC__ASSERT(cbits + parameter <= br->bytes*8);
+-                                      uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter);
+-                                      cbits += parameter;
+-                              }
+-                              else {
+-                                      cbits = parameter;
+-                                      uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
+-                              }
+-                      }
+-              }
+-              ucbits -= parameter;
+-
+-              /* compose the value */
+-              *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
++                      /* read the binary LSBs */
++                      if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits))
++                              return false;
++                      lsbs = x | lsbs;
+-              /* are we done? */
+-              --nvals;
+-              if(nvals == 0) {
+-                      br->consumed_bits = cbits;
+-                      br->consumed_words = cwords;
+-                      return true;
+-              }
++                      /* compose the value */
++                      x = (msbs << parameter) | lsbs;
++                      *val++ = (int)(x >> 1) ^ -(int)(x & 1);
++                      x = 0;
+-              uval = 0;
+-              ++vals;
++                      cwords = br->consumed_words;
++                      words = br->words;
++                      ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
++                      b = br->buffer[cwords] << br->consumed_bits;
++              } while(cwords >= words && val < end);
++      }
++      if(ucbits == 0 && cwords < words) {
++              /* don't leave the head word with no unconsumed bits */
++              crc16_update_word_(br, br->buffer[cwords++]);
++              ucbits = FLAC__BITS_PER_WORD;
+       }
++
++      br->consumed_bits = FLAC__BITS_PER_WORD - ucbits;
++      br->consumed_words = cwords;
++
++      return true;
+ }
+-#endif
+ #if 0 /* UNUSED */
+ FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter)
diff --git a/src/patches/flac-1.2.1-cflags.patch b/src/patches/flac-1.2.1-cflags.patch
new file mode 100644 (file)
index 0000000..032fa5e
--- /dev/null
@@ -0,0 +1,45 @@
+diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am
+--- flac-1.2.1/src/libFLAC/Makefile.am.cflags  2007-09-14 23:06:17.000000000 +0200
++++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100
+@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_
+ else
+ # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
+ #@@@ PPC optimizations temporarily disabled
+-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
++CPUCFLAGS = -DFLAC__NO_ASM
+ endif
+ endif
+@@ -69,7 +69,7 @@ endif
+ endif
+ endif
+-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
++libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la
+ SUBDIRS = $(ARCH_SUBDIRS) include .
+@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \
+       metadata_iterators.c \
+       metadata_object.c \
+       stream_decoder.c \
+-      stream_encoder.c \
+       stream_encoder_framing.c \
+       window.c \
+       $(extra_ogg_sources)
++
++noinst_LTLIBRARIES = libFLAC_extracflags.la
++libFLAC_extracflags_la_SOURCES = stream_encoder.c
++libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops
+diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in
+--- flac-1.2.1/configure.in.cflags     2007-09-13 17:48:42.000000000 +0200
++++ flac-1.2.1/configure.in    2008-03-17 14:17:08.000000000 +0100
+@@ -301,7 +301,7 @@ else
+       CPPFLAGS="-DNDEBUG $CPPFLAGS"
+       if test "x$GCC" = xyes; then
+               CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS"
+-              CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS"
++              CFLAGS="-Wall -W -Winline $CFLAGS"
+       fi
+ fi
diff --git a/src/patches/flac-1.2.1-gcc43.patch b/src/patches/flac-1.2.1-gcc43.patch
new file mode 100644 (file)
index 0000000..7fdbf80
--- /dev/null
@@ -0,0 +1,11 @@
+diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp
+--- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200
++++ flac-1.2.1/examples/cpp/encode/file/main.cpp       2008-01-08 10:27:39.000000000 +0100
+@@ -29,6 +29,7 @@
+ #endif
+ #include <stdio.h>
++#include <string.h>
+ #include <stdlib.h>
+ #include "FLAC++/metadata.h"
+ #include "FLAC++/encoder.h"
diff --git a/src/patches/flac-1.2.1-hidesyms.patch b/src/patches/flac-1.2.1-hidesyms.patch
new file mode 100644 (file)
index 0000000..0f4c104
--- /dev/null
@@ -0,0 +1,39 @@
+diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h
+--- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms       2007-02-02 07:22:40.000000000 +0100
++++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h        2008-01-29 15:27:13.000000000 +0100
+@@ -35,9 +35,13 @@
+ #include <ogg/ogg.h>
+ #include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */
++__attribute__((__visibility__("hidden")))
+ void simple_ogg_page__init(ogg_page *page);
++__attribute__((__visibility__("hidden")))
+ void simple_ogg_page__clear(ogg_page *page);
++__attribute__((__visibility__("hidden")))
+ FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data);
++__attribute__((__visibility__("hidden")))
+ FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data);
+ #endif
+diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h
+--- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms        2007-07-10 22:22:19.000000000 +0200
++++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100
+@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u
+ FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen);
+ FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen);
++__attribute__((__visibility__("hidden")))
+ FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br);
+ #endif
+diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms       2008-01-29 15:27:13.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm        2008-01-29 15:28:32.000000000 +0100
+@@ -34,7 +34,7 @@
+       data_section
+-cglobal precompute_partition_info_sums_32bit_asm_ia32_
++cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden
+       code_section
diff --git a/src/patches/flac-1.2.1-tests.patch b/src/patches/flac-1.2.1-tests.patch
new file mode 100644 (file)
index 0000000..89c5921
--- /dev/null
@@ -0,0 +1,41 @@
+diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh
+--- flac-1.2.1/test/test_seeking.sh.tests      2007-09-11 09:33:04.000000000 +0200
++++ flac-1.2.1/test/test_seeking.sh    2008-01-29 13:52:03.000000000 +0100
+@@ -103,7 +103,7 @@ tiny_seek_count=100
+ if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then
+       small_seek_count=10000
+ else
+-      small_seek_count=100000
++      small_seek_count=100
+ fi
+ for suffix in '' '-s' ; do
+diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh
+--- flac-1.2.1/test/test_streams.sh.tests      2007-06-16 21:58:39.000000000 +0200
++++ flac-1.2.1/test/test_streams.sh    2008-03-17 13:57:39.000000000 +0100
+@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then
+       FLAC__TEST_LEVEL=1
+ fi
++if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then
++      exit 0
++fi
++
+ flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable"
+ run_flac ()
+diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c
+--- flac-1.2.1/src/test_streams/main.c.tests   2007-08-31 07:54:49.000000000 +0200
++++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100
+@@ -898,9 +898,9 @@ int main(int argc, char *argv[])
+       if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1;
+       if(!generate_noise("noise8m32.raw", 32)) return 1;
+       if(!generate_wackywavs()) return 1;
+-      for(channels = 1; channels <= 8; channels++) {
++      for(channels = 1; channels <= 2; channels++) {
+               unsigned bits_per_sample;
+-              for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) {
++              for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) {
+                       static const unsigned nsamples[] = { 1, 111, 4777 } ;
+                       unsigned samples;
+                       for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) {