bunch of small fixes, add msg.txt to about prefs
[goodguy/history.git] / cinelerra-5.0 / quicktime / Makefile
1 -include ../global_config
2 include $(THIRDPARTY)/config.mak
3
4 OBJDIR := $(shell uname --machine)
5 USE_MMX = 0
6 CC = gcc
7 OBJS := 
8 INCS :=
9
10 ifndef HAVE_CFLAGS
11 ifeq ($(origin CFLAGS), environment)
12 HAVE_CFLAGS := y
13 else
14 HAVE_CFLAGS := n
15 endif
16 endif
17
18 MJPEG_DIR = $(shell cd $(THIRDPARTY)/mjpegtools*; pwd)
19 MPEG3_DIR = $(shell cd ../libzmpeg3*; pwd)
20
21 ifeq ($(call firstword,$(encore)),static)
22 ENCORE_DIR = $(shell cd $(THIRDPARTY)/encore*; pwd)
23 ENCORE_LIB = $(OBJDIR)/encore
24 INCS += -DENCORE_INCLUDE=\"$(ENCORE_DIR)/encore.h\"
25 endif
26
27 ifeq ($(call firstword,$(ffmpeg)),static)
28 FFMPEG_DIR = $(shell cd $(THIRDPARTY)/ffmpeg*; pwd)
29 FFMPEG_LIB = $(OBJDIR)/ffmpeg/
30 INCS += -I$(FFMPEG_DIR)
31 endif
32
33 ifeq ($(call firstword,$(faad2)),static)
34 FAAD_DIR = $(shell cd $(THIRDPARTY)/faad*; pwd)
35 FAAD_LIB = $(OBJDIR)/faad/
36 INCS += -I$(FAAD_DIR)/include/
37 endif
38
39 ifeq ($(call firstword,$(faac)),static)
40 FAAC_DIR = $(shell cd $(THIRDPARTY)/faac*; pwd)
41 FAAC_LIB = $(OBJDIR)/faac/
42 INCS += -I$(FAAC_DIR)/include/
43 endif
44
45 ifeq ($(call firstword,$(lame)),static)
46 LAME_DIR = $(shell cd $(THIRDPARTY)/lame*; pwd)
47 LAME_LIB = $(OBJDIR)/lame
48 INCS += -I$(LAME_DIR)/include/
49 else
50 INCS += -I/usr/include/lame
51 endif
52
53 ifeq ($(call firstword,$(openjpeg)),static)
54 OPENJPEG_DIR = $(shell cd $(THIRDPARTY)/openjpeg*; pwd)
55 OPENJPEG_LIB = $(OBJDIR)/openjpeg
56 INCS += -I$(OPENJPEG_DIR)/src/lib/openmj2
57 endif
58
59 ifeq ($(call firstword,$(x264)),static)
60 X264_DIR = $(shell cd $(THIRDPARTY)/x264*; pwd)
61 X264_LIB = $(OBJDIR)/x264
62 INCS += -I$(X264_DIR)
63 endif
64
65 ifeq ($(call firstword,$(libdv)),static)
66 DV_DIR = $(shell cd $(THIRDPARTY)/libdv*; pwd)
67 DV_LIB = $(OBJDIR)/libdv
68 INCS += -I$(DV_DIR)/
69 endif
70
71 ifeq ($(call firstword,$(libogg)),static)
72 OGG_DIR = $(shell cd $(THIRDPARTY)/libogg*; pwd)
73 INCS += -I$(OBJDIR)/ogg
74 endif
75
76 ifeq ($(call firstword,$(libvorbis)),static)
77 VORBIS_DIR = $(shell cd $(THIRDPARTY)/libvorbis*; pwd)
78 VORBIS_LIB = $(OBJDIR)/vorbis
79 INCS += -I$(VORBIS_DIR)/include -I$(VORBIS_DIR)
80 endif
81
82 ifeq ($(call firstword,$(libjpeg)),static)
83 JPEG_DIR = $(shell cd $(THIRDPARTY)/libjpeg*; pwd)
84 JPEG_LIB = $(OBJDIR)/libjpeg
85 INCS += -I$(JPEG_DIR)
86 endif
87
88 ifneq ($(HAVE_CFLAGS), y)
89 ifeq ($(OBJDIR), alpha)
90   CFLAGS += -O4 -arch ev67 -ieee -accept c99_keywords -gcc_messages
91 endif
92
93 ifeq ($(OBJDIR), i686)
94   CFLAGS += -O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2 -I/usr/local/include
95 endif
96
97 ifeq ($(OBJDIR), x86_64)
98   CFLAGS += -O2 -funroll-all-loops -fomit-frame-pointer -I/usr/local/include
99 endif
100 endif
101
102 CFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
103 CFLAGS += -DHAVE_FIREWIRE
104
105 OBJS += \
106         $(OBJDIR)/atom.o \
107         $(OBJDIR)/avcc.o \
108         $(OBJDIR)/avi_hdrl.o \
109         $(OBJDIR)/avi_ix.o \
110         $(OBJDIR)/avi_idx1.o \
111         $(OBJDIR)/avi_indx.o \
112         $(OBJDIR)/avi_movi.o \
113         $(OBJDIR)/avi_odml.o \
114         $(OBJDIR)/avi_riff.o \
115         $(OBJDIR)/avi_strl.o \
116         $(OBJDIR)/cmodel_default.o \
117         $(OBJDIR)/cmodel_float.o \
118         $(OBJDIR)/cmodel_yuv420p.o \
119         $(OBJDIR)/cmodel_yuv422.o \
120         $(OBJDIR)/codecs.o \
121         $(OBJDIR)/colormodels.o \
122         $(OBJDIR)/ctab.o \
123         $(OBJDIR)/dinf.o \
124         $(OBJDIR)/dref.o \
125         $(OBJDIR)/edts.o \
126         $(OBJDIR)/elst.o \
127         $(OBJDIR)/esds.o \
128         $(OBJDIR)/frma.o \
129         $(OBJDIR)/graphics.o \
130         $(OBJDIR)/hdlr.o \
131         $(OBJDIR)/ima4.o \
132         $(OBJDIR)/jpeg.o \
133         $(OBJDIR)/libdv.o \
134         $(OBJDIR)/libmjpeg.o \
135         $(OBJDIR)/matrix.o \
136         $(OBJDIR)/mdat.o \
137         $(OBJDIR)/mdhd.o \
138         $(OBJDIR)/mdia.o \
139         $(OBJDIR)/minf.o \
140         $(OBJDIR)/moov.o \
141         $(OBJDIR)/mp4a.o \
142         $(OBJDIR)/mvhd.o \
143         $(OBJDIR)/plugin.o \
144         $(OBJDIR)/qtasf.o \
145         $(OBJDIR)/qtcache.o \
146         $(OBJDIR)/qtdv.o \
147         $(OBJDIR)/qtpng.o \
148         $(OBJDIR)/qtmp3.o \
149         $(OBJDIR)/quicktime.o \
150         $(OBJDIR)/raw.o \
151         $(OBJDIR)/rawaudio.o \
152         $(OBJDIR)/rle.o \
153         $(OBJDIR)/smhd.o \
154         $(OBJDIR)/stbl.o \
155         $(OBJDIR)/stco.o \
156         $(OBJDIR)/stsc.o \
157         $(OBJDIR)/stsd.o \
158         $(OBJDIR)/stsdtable.o \
159         $(OBJDIR)/stss.o \
160         $(OBJDIR)/stsz.o \
161         $(OBJDIR)/stts.o \
162         $(OBJDIR)/tkhd.o \
163         $(OBJDIR)/trak.o \
164         $(OBJDIR)/twos.o \
165         $(OBJDIR)/udta.o \
166         $(OBJDIR)/ulaw.o \
167         $(OBJDIR)/util.o \
168         $(OBJDIR)/v308.o \
169         $(OBJDIR)/v408.o \
170         $(OBJDIR)/v410.o \
171         $(OBJDIR)/vbraudio.o \
172         $(OBJDIR)/vmhd.o \
173         $(OBJDIR)/vorbis.o \
174         $(OBJDIR)/wmx2.o \
175         $(OBJDIR)/workarounds.o \
176         $(OBJDIR)/yuv2.o \
177         $(OBJDIR)/yuv4.o \
178         $(OBJDIR)/yv12.o
179
180 FFMPEG_OBJS := \
181         $(OBJDIR)/mpeg4.o \
182         $(OBJDIR)/qdm2.o \
183         $(OBJDIR)/qtffmpeg.o \
184         $(OBJDIR)/qth264.o \
185         $(OBJDIR)/wma.o
186
187
188 UTILS := \
189         $(OBJDIR)/qtdump \
190         $(OBJDIR)/make_streamable \
191         $(OBJDIR)/qtinfo \
192         $(OBJDIR)/dechunk \
193         $(OBJDIR)/yuv2mov \
194         $(OBJDIR)/yuv4toyuv \
195         $(OBJDIR)/recover \
196         $(OBJDIR)/rechunk \
197
198 #       $(OBJDIR)/mts2mp4
199
200
201 OUTPUT = $(OBJDIR)/libquicktime.a
202 SHAREDOUTPUT = $(OBJDIR)/libquicktime.so
203
204 CFLAGS += -I. \
205         -I$(MJPEG_DIR) -I$(MJPEG_DIR)/utils -I$(MJPEG_DIR)/lavtools \
206         -I$(MPEG3_DIR) $(INCS) -ffast-math -mno-ieee-fp
207
208 FFMPEG_CFLAGS := $(CFLAGS) $(FFMPEG_INCLUDE)
209
210 LIBS := $(OUTPUT) $(thirdparty_libraries) $(MPEG3_DIR)/$(OBJDIR)/libzmpeg3.a \
211         $(static_libraries) -lpng -lz -lbz2 -llzma -lasound \
212         -lX11 -lpthread -ldl -lm -lstdc++
213
214
215 $(shell mkdir -p $(OBJDIR) )
216 $(shell echo  $(CFLAGS) > $(OBJDIR)/c_flags)
217 $(shell echo  $(LAME_CFLAGS) > $(OBJDIR)/lame_flags)
218 $(shell echo > $(OBJDIR)/objs $(OBJS) $(FFMPEG_OBJS) \
219         $(foreach lib,$(JPEG_LIB) $(DV_LIB) $(FAAD_LIB) $(FAAC_LIB) $(X264_LIB) \
220                  $(OGG_LIB) $(VORBIS_LIB) $(LAME_LIB) $(ENCORE_LIB), $(lib)/*.o))
221 $(shell echo  $(FFMPEG_CFLAGS) > $(OBJDIR)/ffmpeg_cflags)
222
223 all: $(OBJDIR) $(THIRDPARTY) $(OUTPUT)
224
225 $(OUTPUT): $(OBJS) $(FFMPEG_OBJS) \
226                 $(FAAD_LIB) $(FAAC_LIB) $(FFMPEG_LIB) $(X264_LIB) $(DV_LIB) \
227                 $(JPEG_LIB) $(OGG_LIB) $(VORBIS_LIB) $(LAME_LIB) $(ENCORE_LIB)
228         find $(FFMPEG_DIR)/libavcodec/ -name *.o >> $(OBJDIR)/objs
229         find $(FFMPEG_DIR)/libavformat/ -name *.o >> $(OBJDIR)/objs
230         find $(FFMPEG_DIR)/libavutil/ -name *.o >> $(OBJDIR)/objs
231         ar rcs $(OUTPUT) `cat $(OBJDIR)/objs`
232
233 # this is the only way we figured out to merge .a files
234 $(FFMPEG_LIB):
235         mkdir -p $(FFMPEG_LIB)/avcodec \
236                 $(FFMPEG_LIB)/avformat \
237                 $(FFMPEG_LIB)/avutil
238         [ -d $(FFMPEG_DIR) ] && cd $(FFMPEG_LIB)/avcodec && \
239         ar x $(FFMPEG_DIR)/libavcodec/libavcodec.a &&  \
240         cd ../avformat && \
241         ar x $(FFMPEG_DIR)/libavformat/libavformat.a &&  \
242         cd ../avutil && \
243         ar x $(FFMPEG_DIR)/libavutil/libavutil.a
244
245 $(FAAD_LIB):
246         mkdir -p $(FAAD_LIB) && \
247         [ -d $(FAAD_DIR) ] && cd $(FAAD_LIB) && \
248         ar x $(FAAD_DIR)/libfaad/.libs/libfaad.a
249
250 $(FAAC_LIB):
251         mkdir -p $(FAAC_LIB) && \
252         [ -d $(FAAC_DIR) ] && cd $(FAAC_LIB) && \
253         ar x $(FAAC_DIR)/libfaac/.libs/libfaac.a
254
255 $(DV_LIB):
256         mkdir -p $(DV_LIB) && \
257         [ -d $(DV_DIR) ] && cd $(DV_LIB) && \
258         ar x $(DV_DIR)/libdv/.libs/libdv.a
259
260 $(JPEG_LIB):
261         mkdir -p $(JPEG_LIB) && \
262         [ -d $(JPEB_DIR) ] && cd $(JPEG_LIB) && \
263         ar x $(JPEG_DIR)/.libs/libjpeg.a
264
265 # need some trickery to get the duplicated filenames out
266 $(X264_LIB):
267         mkdir -p $(X264_LIB) && \
268         [ -d $(X264_DIR) ] && cd $(X264_LIB) && \
269         ar x $(X264_DIR)/libx264.a && \
270         mv predict.o predict2.o && \
271         mv cabac.o cabac2.o && \
272         mv macroblock.o macroblock2.o && \
273         mv set.o set2.o && \
274         ar xN 1 $(X264_DIR)/libx264.a predict.o cabac.o macroblock.o set.o
275
276 $(OGG_LIB):
277         mkdir -p $(OGG_LIB) && \
278         cd $(OGG_LIB) && \
279         ar x $(OGG_DIR)/src/.libs/libogg.a
280
281 $(VORBIS_LIB):
282         mkdir -p $(VORBIS_LIB) && \
283         [ -d $(VORBIS_DIR) ] && cd $(VORBIS_LIB) && \
284         ar x $(VORBIS_DIR)/lib/.libs/libvorbis.a && \
285         ar x $(VORBIS_DIR)/lib/.libs/libvorbisenc.a && \
286         ar x $(VORBIS_DIR)/lib/.libs/libvorbisfile.a
287
288 $(LAME_LIB):
289         mkdir -p $(LAME_LIB) && \
290         [ -d $(LAME_DIR) ] && cd $(LAME_LIB) && \
291         ar x $(LAME_DIR)/libmp3lame/.libs/libmp3lame.a
292
293 $(ENCORE_LIB):
294         mkdir -p $(ENCORE_LIB) && \
295         [ -d $(ENCORE_DIR) ] && cd $(ENCORE_LIB) && \
296         ar x $(ENCORE_DIR)/$(OBJDIR)/libencore.a
297
298 # broken
299 $(OPENJPEG_LIB):
300         mkdir -p $(OPENJPEG_LIB) && \
301         [ -d $(OPENJPEG_DIR) ] && cd $(OPENJPEG_LIB) && \
302         ar x $(OPENJPEG_DIR)/bin/libopenjpip.a && \
303         ar x $(OPENJPEG_DIR)/bin/libopenjp3d.a && \
304         ar x $(OPENJPEG_DIR)/bin/libopenjp2.a
305
306 $(OBJDIR)/mts2mp4: $(OBJDIR)/mts2mp4.o $(OUTPUT)
307         $(CC) -o $(OBJDIR)/mts2mp4 $(OBJDIR)/mts2mp4.o $(LIBS)
308
309 $(OBJDIR)/qtdump: $(OBJDIR)/dump.o $(OUTPUT)
310         $(CC) -o $(OBJDIR)/qtdump $(OBJDIR)/dump.o $(LIBS)
311
312 $(OBJDIR)/make_streamable: $(OBJDIR)/make_streamable.o $(OUTPUT)
313         $(CC) -o $(OBJDIR)/make_streamable $(OBJDIR)/make_streamable.o $(LIBS)
314
315 $(OBJDIR)/dechunk: $(OBJDIR)/dechunk.o $(OUTPUT)
316         $(CC) -o $(OBJDIR)/dechunk $(OBJDIR)/dechunk.o $(LIBS)
317
318 $(OBJDIR)/rechunk: $(OBJDIR)/rechunk.o $(OUTPUT)
319         $(CC) -o $(OBJDIR)/rechunk $(OBJDIR)/rechunk.o $(LIBS)
320
321 $(OBJDIR)/recover: $(OBJDIR)/recover.o $(OUTPUT)
322         $(CC) -o $(OBJDIR)/recover $(OBJDIR)/recover.o $(LIBS)
323
324 $(OBJDIR)/yuv4toyuv: $(OBJDIR)/yuv4toyuv.o $(OUTPUT)
325         $(CC) -o $(OBJDIR)/yuv4toyuv $(OBJDIR)/yuv4toyuv.o $(LIBS)
326
327 $(OBJDIR)/yuv2mov: $(OBJDIR)/yuv2mov.o $(OUTPUT)
328         $(CC) -o $(OBJDIR)/yuv2mov $(OBJDIR)/yuv2mov.o $(LIBS)
329
330 $(OBJDIR)/qtinfo: $(OBJDIR)/qtinfo.o
331         $(CC) -o $(OBJDIR)/qtinfo $(OBJDIR)/qtinfo.o $(LIBS)
332
333 utils:  $(UTILS)
334
335
336 clean:
337         rm -rf $(OBJDIR)
338         find \( -name 'core*' -o -name '*.plugin' \
339                 -o -name '*.lo' -o -name '*.o' \
340                 -o -name '*.la' -o -name '*.a' \
341                 -o -name '*.so' \) -exec rm -f {} \; -prune
342
343 backup: clean
344         cd .. && \
345         tar zcvf quicktime.tar.gz quicktime
346
347 install:
348         cp $(UTILS) /usr/bin
349
350 $(OBJDIR)/%.o:            %.c
351         $(CC) -c `cat $(OBJDIR)/c_flags` $^ -o $@
352
353 $(OBJDIR)/mts2mp4.o:
354         $(CC) -c `cat $(OBJDIR)/c_flags` $(FFMPEG_INCLUDE) $(subst $(OBJDIR)/,, $*.c) -o $*.o
355
356 $(FFMPEG_OBJS): $(OBJDIR)/%.o: %.c
357         $(CC) `cat $(OBJDIR)/ffmpeg_cflags` -c $< -o $@
358