1 -include ../global_config
2 include $(THIRDPARTY)/config.mak
4 OBJDIR := $(shell uname --machine)
11 ifeq ($(origin CFLAGS), environment)
18 MJPEG_DIR = $(shell cd $(THIRDPARTY)/mjpegtools*; pwd)
19 MPEG3_DIR = $(shell cd ../libzmpeg3*; pwd)
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\"
27 ifeq ($(call firstword,$(ffmpeg)),static)
28 FFMPEG_DIR = $(shell cd $(THIRDPARTY)/ffmpeg*; pwd)
29 FFMPEG_LIB = $(OBJDIR)/ffmpeg/
30 INCS += -I$(FFMPEG_DIR)
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/
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/
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/
50 INCS += -I/usr/include/lame
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
59 ifeq ($(call firstword,$(x264)),static)
60 X264_DIR = $(shell cd $(THIRDPARTY)/x264*; pwd)
61 X264_LIB = $(OBJDIR)/x264
65 ifeq ($(call firstword,$(libdv)),static)
66 DV_DIR = $(shell cd $(THIRDPARTY)/libdv*; pwd)
67 DV_LIB = $(OBJDIR)/libdv
71 ifeq ($(call firstword,$(libogg)),static)
72 OGG_DIR = $(shell cd $(THIRDPARTY)/libogg*; pwd)
73 INCS += -I$(OBJDIR)/ogg
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)
82 ifeq ($(call firstword,$(libjpeg)),static)
83 JPEG_DIR = $(shell cd $(THIRDPARTY)/libjpeg*; pwd)
84 JPEG_LIB = $(OBJDIR)/libjpeg
88 ifneq ($(HAVE_CFLAGS), y)
89 ifeq ($(OBJDIR), alpha)
90 CFLAGS += -O4 -arch ev67 -ieee -accept c99_keywords -gcc_messages
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
97 ifeq ($(OBJDIR), x86_64)
98 CFLAGS += -O2 -funroll-all-loops -fomit-frame-pointer -I/usr/local/include
102 CFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
103 CFLAGS += -DHAVE_FIREWIRE
108 $(OBJDIR)/avi_hdrl.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 \
121 $(OBJDIR)/colormodels.o \
129 $(OBJDIR)/graphics.o \
134 $(OBJDIR)/libmjpeg.o \
145 $(OBJDIR)/qtcache.o \
149 $(OBJDIR)/quicktime.o \
151 $(OBJDIR)/rawaudio.o \
158 $(OBJDIR)/stsdtable.o \
171 $(OBJDIR)/vbraudio.o \
175 $(OBJDIR)/workarounds.o \
183 $(OBJDIR)/qtffmpeg.o \
190 $(OBJDIR)/make_streamable \
194 $(OBJDIR)/yuv4toyuv \
201 OUTPUT = $(OBJDIR)/libquicktime.a
202 SHAREDOUTPUT = $(OBJDIR)/libquicktime.so
205 -I$(MJPEG_DIR) -I$(MJPEG_DIR)/utils -I$(MJPEG_DIR)/lavtools \
206 -I$(MPEG3_DIR) $(INCS) -ffast-math -mno-ieee-fp
208 FFMPEG_CFLAGS := $(CFLAGS) $(FFMPEG_INCLUDE)
210 LIBS := $(OUTPUT) $(thirdparty_libraries) $(MPEG3_DIR)/$(OBJDIR)/libzmpeg3.a \
211 $(static_libraries) -lpng -lz -lbz2 -llzma -lasound \
212 -lX11 -lpthread -ldl -lm -lstdc++
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)
223 all: $(OBJDIR) $(THIRDPARTY) $(OUTPUT)
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`
233 # this is the only way we figured out to merge .a files
235 mkdir -p $(FFMPEG_LIB)/avcodec \
236 $(FFMPEG_LIB)/avformat \
238 [ -d $(FFMPEG_DIR) ] && cd $(FFMPEG_LIB)/avcodec && \
239 ar x $(FFMPEG_DIR)/libavcodec/libavcodec.a && \
241 ar x $(FFMPEG_DIR)/libavformat/libavformat.a && \
243 ar x $(FFMPEG_DIR)/libavutil/libavutil.a
246 mkdir -p $(FAAD_LIB) && \
247 [ -d $(FAAD_DIR) ] && cd $(FAAD_LIB) && \
248 ar x $(FAAD_DIR)/libfaad/.libs/libfaad.a
251 mkdir -p $(FAAC_LIB) && \
252 [ -d $(FAAC_DIR) ] && cd $(FAAC_LIB) && \
253 ar x $(FAAC_DIR)/libfaac/.libs/libfaac.a
256 mkdir -p $(DV_LIB) && \
257 [ -d $(DV_DIR) ] && cd $(DV_LIB) && \
258 ar x $(DV_DIR)/libdv/.libs/libdv.a
261 mkdir -p $(JPEG_LIB) && \
262 [ -d $(JPEB_DIR) ] && cd $(JPEG_LIB) && \
263 ar x $(JPEG_DIR)/.libs/libjpeg.a
265 # need some trickery to get the duplicated filenames out
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 && \
274 ar xN 1 $(X264_DIR)/libx264.a predict.o cabac.o macroblock.o set.o
277 mkdir -p $(OGG_LIB) && \
279 ar x $(OGG_DIR)/src/.libs/libogg.a
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
289 mkdir -p $(LAME_LIB) && \
290 [ -d $(LAME_DIR) ] && cd $(LAME_LIB) && \
291 ar x $(LAME_DIR)/libmp3lame/.libs/libmp3lame.a
294 mkdir -p $(ENCORE_LIB) && \
295 [ -d $(ENCORE_DIR) ] && cd $(ENCORE_LIB) && \
296 ar x $(ENCORE_DIR)/$(OBJDIR)/libencore.a
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
306 $(OBJDIR)/mts2mp4: $(OBJDIR)/mts2mp4.o $(OUTPUT)
307 $(CC) -o $(OBJDIR)/mts2mp4 $(OBJDIR)/mts2mp4.o $(LIBS)
309 $(OBJDIR)/qtdump: $(OBJDIR)/dump.o $(OUTPUT)
310 $(CC) -o $(OBJDIR)/qtdump $(OBJDIR)/dump.o $(LIBS)
312 $(OBJDIR)/make_streamable: $(OBJDIR)/make_streamable.o $(OUTPUT)
313 $(CC) -o $(OBJDIR)/make_streamable $(OBJDIR)/make_streamable.o $(LIBS)
315 $(OBJDIR)/dechunk: $(OBJDIR)/dechunk.o $(OUTPUT)
316 $(CC) -o $(OBJDIR)/dechunk $(OBJDIR)/dechunk.o $(LIBS)
318 $(OBJDIR)/rechunk: $(OBJDIR)/rechunk.o $(OUTPUT)
319 $(CC) -o $(OBJDIR)/rechunk $(OBJDIR)/rechunk.o $(LIBS)
321 $(OBJDIR)/recover: $(OBJDIR)/recover.o $(OUTPUT)
322 $(CC) -o $(OBJDIR)/recover $(OBJDIR)/recover.o $(LIBS)
324 $(OBJDIR)/yuv4toyuv: $(OBJDIR)/yuv4toyuv.o $(OUTPUT)
325 $(CC) -o $(OBJDIR)/yuv4toyuv $(OBJDIR)/yuv4toyuv.o $(LIBS)
327 $(OBJDIR)/yuv2mov: $(OBJDIR)/yuv2mov.o $(OUTPUT)
328 $(CC) -o $(OBJDIR)/yuv2mov $(OBJDIR)/yuv2mov.o $(LIBS)
330 $(OBJDIR)/qtinfo: $(OBJDIR)/qtinfo.o
331 $(CC) -o $(OBJDIR)/qtinfo $(OBJDIR)/qtinfo.o $(LIBS)
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
345 tar zcvf quicktime.tar.gz quicktime
351 $(CC) -c `cat $(OBJDIR)/c_flags` $^ -o $@
354 $(CC) -c `cat $(OBJDIR)/c_flags` $(FFMPEG_INCLUDE) $(subst $(OBJDIR)/,, $*.c) -o $*.o
356 $(FFMPEG_OBJS): $(OBJDIR)/%.o: %.c
357 $(CC) `cat $(OBJDIR)/ffmpeg_cflags` -c $< -o $@