]> git.sesse.net Git - x264/blobdiff - Makefile
configure test for endianness
[x264] / Makefile
index fe41fe977748a4fb6c4a6e178f356846bb4b9040..63338e8fa2bec660d9e58f0d77a8a7e6b1b16960 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,7 @@ endif
 
 # MMX/SSE optims
 ifeq ($(ARCH),X86)
+ifneq ($(AS),)
 SRCS   += common/i386/mc-c.c common/i386/predict-c.c
 ASMSRC  = common/i386/dct-a.asm common/i386/cpu-a.asm \
           common/i386/pixel-a.asm common/i386/mc-a.asm \
@@ -28,9 +29,11 @@ ASMSRC  = common/i386/dct-a.asm common/i386/cpu-a.asm \
 OBJASM  = $(ASMSRC:%.asm=%.o)
 ASFLAGS += -Icommon/i386/
 endif
+endif
 
 # MMX/SSE optims
 ifeq ($(ARCH),X86_64)
+ifneq ($(AS),)
 SRCS   += common/i386/mc-c.c common/i386/predict-c.c
 ASMSRC  = common/amd64/dct-a.asm common/amd64/cpu-a.asm \
           common/amd64/pixel-a.asm common/amd64/mc-a.asm \
@@ -40,11 +43,15 @@ ASMSRC  = common/amd64/dct-a.asm common/amd64/cpu-a.asm \
 OBJASM  = $(ASMSRC:%.asm=%.o)
 ASFLAGS += -Icommon/amd64
 endif
+endif
 
 # AltiVec optims
 ifeq ($(ARCH),PPC)
-SRCS += common/ppc/mc.c common/ppc/pixel.c common/ppc/dct.c \
-       common/ppc/quant.c
+ALTIVECSRC += common/ppc/mc.c common/ppc/pixel.c common/ppc/dct.c \
+              common/ppc/quant.c common/ppc/deblock.c \
+              common/ppc/predict.c
+SRCS += $(ALTIVECSRC)
+$(ALTIVECSRC:%.c=%.o): CFLAGS += $(ALTIVECFLAGS)
 endif
 
 # VIS optims
@@ -61,7 +68,7 @@ OBJS = $(SRCS:%.c=%.o)
 OBJCLI = $(SRCCLI:%.c=%.o)
 DEP  = depend
 
-.PHONY: all default fprofiled clean distclean install install-gtk uninstall dox
+.PHONY: all default fprofiled clean distclean install install-gtk uninstall dox test testclean
 all: default
 
 default: $(DEP) x264$(EXE)
@@ -92,7 +99,7 @@ common/i386/*.o: common/i386/i386inc.asm
 .depend: config.mak
        rm -f .depend
 # Hacky - because gcc 2.9x doesn't have -MT
-       $(foreach SRC, $(SRCS) $(SRCCLI), ( $(ECHON) "`dirname $(SRC)`/" && $(CC) $(CFLAGS) $(SRC) -MM -g0 ) 1>> .depend;)
+       $(foreach SRC, $(SRCS) $(SRCCLI), ( $(ECHON) "`dirname $(SRC)`/" && $(CC) $(CFLAGS) $(ALTIVECFLAGS) $(SRC) -MM -g0 ) 1>> .depend;)
 
 config.mak: $(wildcard .svn/entries */.svn/entries */*/.svn/entries)
        ./configure $(CONFIGURE_ARGS)
@@ -104,22 +111,24 @@ endif
 
 SRC2 = $(SRCS) $(SRCCLI)
 # These should cover most of the important codepaths
-OPT0 = --crf 30 -b1 -m1 -r1 --me dia --no-cabac
-OPT1 = --crf 18 -b2 -m3 -r3 --me hex -8 --cqm jvt --direct spatial
-OPT2 = --crf 24 -b3 -m6 -r6 --me umh -8 -w -t1 -A all --b-pyramid --b-rdo --mixed-refs
+OPT0 = --crf 30 -b1 -m1 -r1 --me dia --no-cabac --pre-scenecut --direct temporal --no-ssim --no-psnr
+OPT1 = --crf 16 -b2 -m3 -r3 --me hex -8 --direct spatial --no-dct-decimate
+OPT2 = --crf 26 -b2 -m5 -r2 --me hex -8 -w --cqm jvt --nr 100
+OPT3 = --crf 18 -b3 -m7 -r5 --me umh -8 -t1 -A all --mixed-refs --b-rdo -w --b-pyramid --direct auto --bime --no-fast-pskip
+OPT4 = --crf 22 -b3 -m6 -r3 --me esa -8 -t2 -A all --mixed-refs --b-rdo --bime
 
 ifeq (,$(VIDS))
 fprofiled:
        @echo 'usage: make fprofiled VIDS="infile1 infile2 ..."'
        @echo 'where infiles are anything that x264 understands,'
-       @echo 'i.e. YUV with resolution in the filename, or avisynth.'
+       @echo 'i.e. YUV with resolution in the filename, y4m, or avisynth.'
 else
 fprofiled:
        $(MAKE) clean
        mv config.mak config.mak2
        sed -e 's/CFLAGS.*/& -fprofile-generate/; s/LDFLAGS.*/& -fprofile-generate/' config.mak2 > config.mak
        $(MAKE) x264$(EXE)
-       $(foreach V, $(VIDS), $(foreach I, 0 1 2, ./x264$(EXE) $(OPT$I) $(V) --progress -o $(DEVNULL) ;))
+       $(foreach V, $(VIDS), $(foreach I, 0 1 2 3 4, ./x264$(EXE) $(OPT$I) $(V) --progress -o $(DEVNULL) ;))
        rm -f $(SRC2:%.c=%.o)
        sed -e 's/CFLAGS.*/& -fprofile-use/; s/LDFLAGS.*/& -fprofile-use/' config.mak2 > config.mak
        $(MAKE)
@@ -137,6 +146,7 @@ clean:
 
 distclean: clean
        rm -f config.mak config.h x264.pc
+       rm -rf test/
        $(MAKE) -C gtk distclean
 
 install: x264 $(SONAME)
@@ -166,3 +176,17 @@ TAGS:
 
 dox:
        doxygen Doxyfile
+
+ifeq (,$(VIDS))
+test:
+       @echo 'usage: make test VIDS="infile1 infile2 ..."'
+       @echo 'where infiles are anything that x264 understands,'
+       @echo 'i.e. YUV with resolution in the filename, y4m, or avisynth.'
+else
+test:
+       perl tools/regression-test.pl --version=head,current --options='$(OPT0)' --options='$(OPT1)' --options='$(OPT2)' $(VIDS:%=--input=%)
+endif
+
+testclean:
+       rm -f test/*.log test/*.264
+       $(foreach DIR, $(wildcard test/x264-r*/), cd $(DIR) ; make clean ; cd ../.. ;)