7 SRCS
= common
/mc.c common
/predict.c common
/pixel.c common
/macroblock.c \
8 common
/frame.c common
/dct.c common
/cpu.c common
/cabac.c \
9 common
/common.c common
/mdate.c common
/set.c \
10 common
/quant.c common
/vlc.c \
11 encoder
/analyse.c encoder
/me.c encoder
/ratecontrol.c \
12 encoder
/set.c encoder
/macroblock.c encoder
/cabac.c \
13 encoder
/cavlc.c encoder
/encoder.c
15 SRCCLI
= x264.c matroska.c muxers.c
17 # Visualization sources
19 SRCS
+= common
/visualize.c common
/display-x11.c
24 X86SRC0
= cabac-a.asm dct-a.asm deblock-a.asm mc-a.asm mc-a2.asm \
25 pixel-a.asm predict-a.asm quant-a.asm sad-a.asm \
27 X86SRC
= $(X86SRC0
:%=common
/x86
/%)
31 ASMSRC
= $(X86SRC
) common
/x86
/pixel-32.asm
36 ASMSRC
= $(X86SRC
:-32.asm
=-64.asm
)
37 ASFLAGS
+= -DARCH_X86_64
41 ASFLAGS
+= -Icommon
/x86
/
42 SRCS
+= common
/x86
/mc-c.c common
/x86
/predict-c.c
43 OBJASM
= $(ASMSRC
:%.asm
=%.o
)
44 $(OBJASM
): common
/x86
/x86inc.asm common
/x86
/x86util.asm
45 checkasm
: tools
/checkasm-a.o
51 ALTIVECSRC
+= common
/ppc
/mc.c common
/ppc
/pixel.c common
/ppc
/dct.c \
52 common
/ppc
/quant.c common
/ppc
/deblock.c \
55 $(ALTIVECSRC
:%.c
=%.o
): CFLAGS
+= $(ALTIVECFLAGS
)
59 ifeq ($(ARCH
),UltraSparc
)
60 ASMSRC
+= common
/sparc
/pixel.asm
61 OBJASM
= $(ASMSRC
:%.asm
=%.o
)
64 ifneq ($(HAVE_GETOPT_LONG
),1)
65 SRCS
+= extras
/getopt.c
68 OBJS
= $(SRCS
:%.c
=%.o
)
69 OBJCLI
= $(SRCCLI
:%.c
=%.o
)
72 .PHONY
: all default fprofiled
clean distclean install uninstall dox
test testclean
74 default
: $(DEP
) x264
$(EXE
)
76 libx264.a
: .depend
$(OBJS
) $(OBJASM
)
77 ar rc libx264.a
$(OBJS
) $(OBJASM
)
80 $(SONAME
): .depend
$(OBJS
) $(OBJASM
)
81 $(CC
) -shared
-o
$@
$(OBJS
) $(OBJASM
) $(SOFLAGS
) $(LDFLAGS
)
83 x264
$(EXE
): $(OBJCLI
) libx264.a
84 $(CC
) -o
$@
$+ $(LDFLAGS
)
86 checkasm
: tools
/checkasm.o libx264.a
87 $(CC
) -o
$@
$+ $(LDFLAGS
)
90 $(AS
) $(ASFLAGS
) -o
$@
$<
91 # delete local/anonymous symbols, so they don't show up in oprofile
96 # Hacky - because gcc 2.9x doesn't have -MT
97 $(foreach SRC
, $(SRCS
) $(SRCCLI
), ( $(ECHON
) "`dirname $(SRC)`/" && $(CC
) $(CFLAGS
) $(ALTIVECFLAGS
) $(SRC
) -MM
-g0
) 1>> .depend
;)
99 config.mak
: $(wildcard .svn
/entries
*/.svn
/entries
*/*/.svn
/entries
)
100 .
/configure
$(CONFIGURE_ARGS
)
103 ifneq ($(wildcard .depend
),)
107 SRC2
= $(SRCS
) $(SRCCLI
)
108 # These should cover most of the important codepaths
109 OPT0
= --crf
30 -b1
-m1
-r1
--me dia
--no-cabac
--pre-scenecut
--direct temporal
--no-ssim
--no-psnr
110 OPT1
= --crf
16 -b2
-m3
-r3
--me hex
-8 --direct spatial
--no-dct-decimate
111 OPT2
= --crf
26 -b2
-m5
-r2
--me hex
-8 -w
--cqm jvt
--nr
100
112 OPT3
= --crf
18 -b3
-m9
-r5
--me umh
-8 -t1
-A
all --mixed-refs
-w
--b-pyramid
--direct auto
--no-fast-pskip
113 OPT4
= --crf
22 -b3
-m7
-r4
--me esa
-8 -t2
-A
all --mixed-refs
114 OPT5
= --frames
50 --crf
24 -b3
-m9
-r3
--me tesa
-8 -t1
--mixed-refs
115 OPT6
= --frames
50 -q0
-m9
-r2
--me hex
-Aall
116 OPT7
= --frames
50 -q0
-m2
-r1
--me hex
--no-cabac
120 @echo
'usage: make fprofiled VIDS="infile1 infile2 ..."'
121 @echo
'where infiles are anything that x264 understands,'
122 @echo
'i.e. YUV with resolution in the filename, y4m, or avisynth.'
126 mv config.mak config.mak2
127 sed
-e
's/CFLAGS.*/& -fprofile-generate/; s/LDFLAGS.*/& -fprofile-generate/' config.mak2
> config.mak
129 $(foreach V
, $(VIDS
), $(foreach I
, 0 1 2 3 4 5 6 7, .
/x264
$(EXE
) $(OPT
$I) $(V
) --progress
-o
$(DEVNULL
) ;))
130 rm -f
$(SRC2
:%.c
=%.o
)
131 sed
-e
's/CFLAGS.*/& -fprofile-use/; s/LDFLAGS.*/& -fprofile-use/' config.mak2
> config.mak
133 rm -f
$(SRC2
:%.c
=%.gcda
) $(SRC2
:%.c
=%.gcno
)
134 mv config.mak2 config.mak
138 rm -f
$(OBJS
) $(OBJASM
) $(OBJCLI
) $(SONAME
) *.a x264 x264.exe .depend TAGS
139 rm -f checkasm checkasm.exe tools
/checkasm.o
140 rm -f
$(SRC2
:%.c
=%.gcda
) $(SRC2
:%.c
=%.gcno
)
141 - sed
-e
's/ *-fprofile-\(generate\|use\)//g' config.mak
> config.mak2
&& mv config.mak2 config.mak
144 rm -f config.mak config.h x264.
pc
147 install: x264
$(EXE
) $(SONAME
)
148 install -d
$(DESTDIR
)$(bindir) $(DESTDIR
)$(includedir)
149 install -d
$(DESTDIR
)$(libdir) $(DESTDIR
)$(libdir)/pkgconfig
150 install -m
644 x264.h
$(DESTDIR
)$(includedir)
151 install -m
644 libx264.a
$(DESTDIR
)$(libdir)
152 install -m
644 x264.
pc $(DESTDIR
)$(libdir)/pkgconfig
153 install x264
$(EXE
) $(DESTDIR
)$(bindir)
154 ranlib
$(DESTDIR
)$(libdir)/libx264.a
156 $(if
$(SONAME
), install -m
755 $(SONAME
) $(DESTDIR
)$(bindir))
158 $(if
$(SONAME
), ln
-sf
$(SONAME
) $(DESTDIR
)$(libdir)/libx264.
$(SOSUFFIX
))
159 $(if
$(SONAME
), install -m
755 $(SONAME
) $(DESTDIR
)$(libdir))
161 $(if
$(IMPLIBNAME
), install -m
644 $(IMPLIBNAME
) $(DESTDIR
)$(libdir))
164 rm -f
$(DESTDIR
)$(includedir)/x264.h
$(DESTDIR
)$(libdir)/libx264.a
165 rm -f
$(DESTDIR
)$(bindir)/x264
$(DESTDIR
)$(libdir)/pkgconfig
/x264.
pc
166 $(if
$(SONAME
), rm -f
$(DESTDIR
)$(libdir)/$(SONAME
) $(DESTDIR
)$(libdir)/libx264.
$(SOSUFFIX
))
178 @echo
'usage: make test VIDS="infile1 infile2 ..."'
179 @echo
'where infiles are anything that x264 understands,'
180 @echo
'i.e. YUV with resolution in the filename, y4m, or avisynth.'
183 perl tools
/regression-test.pl
--version
=head
,current
--options
='$(OPT0)' --options
='$(OPT1)' --options
='$(OPT2)' $(VIDS
:%=--input
=%)
187 rm -f
test/*.log
test/*.264
188 $(foreach DIR
, $(wildcard test/x264-r
*/), cd
$(DIR
) ; make
clean ; cd ..
/..
;)