]> git.sesse.net Git - x264/blobdiff - Makefile
Makefiles: better dependencies for SEI version number
[x264] / Makefile
index 87f6d4cc10a8191b42c79d28f373eb5a7fc3b8c4..ca1e066b0d09d43efa42c5c683ff5dda65ffdfa2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,29 +1,71 @@
-# Makefile: tuned for i386/MMX system only
+# Makefile
 
-# For FreeBSD, remove -DHAVE_MALLOC_H and add -DSYS_FREEBSD
+# Uncomment the line for your platform
+ARCH=X86
+#ARCH=PPC
 
-# Uncomment this for Mac OS X
-#SYS_MACOSX=1
+# Uncomment the line for you operating system
+SYS=LINUX
+#SYS=MACOSX
+#SYS=BEOS
+#SYS=FREEBSD
 
 SRCS_COMMON= common/mc.c common/predict.c common/pixel.c common/macroblock.c \
              common/frame.c common/dct.c common/cpu.c common/cabac.c \
              common/common.c common/mdate.c common/csp.c \
              encoder/analyse.c encoder/me.c encoder/ratecontrol.c \
              encoder/set.c encoder/macroblock.c encoder/cabac.c \
-             encoder/cavlc.c encoder/encoder.c encoder/eval.c x264.c
+             encoder/cavlc.c encoder/encoder.c encoder/eval.c
 
-ifdef SYS_MACOSX
-PFLAGS=-DARCH_PPC -DSYS_MACOSX -faltivec
-SRCS= $(SRCS_COMMON) common/ppc/mc.c common/ppc/pixel.c
+# Compiler, global flags
+CC=gcc
+CFLAGS=-Wall -I. -O4 -funroll-loops -D__X264__ -DARCH_$(ARCH) -DSYS_$(SYS)
+ifdef NDEBUG
+CFLAGS+=-s -DNDEBUG
 else
-PFLAGS=-DARCH_X86 -DHAVE_MMXEXT -DHAVE_SSE2 -DHAVE_MALLOC_H
-SRCS= $(SRCS_COMMON) common/i386/mc-c.c common/i386/dct-c.c common/i386/predict.c
-ASMSRC= common/i386/dct.asm common/i386/cpu.asm common/i386/pixel.asm common/i386/mc.asm
+CFLAGS+=-g -DDEBUG
+endif
+SRCS= $(SRCS_COMMON)
+
+# MMX/SSE optims
+ifeq ($(ARCH),X86)
+CFLAGS+=-DHAVE_MMXEXT -DHAVE_SSE2
+SRCS+= common/i386/mc-c.c common/i386/dct-c.c common/i386/predict.c
+ASMSRC= common/i386/dct-a.asm common/i386/cpu-a.asm \
+        common/i386/pixel-a.asm common/i386/mc-a.asm \
+        common/i386/mc-a2.asm common/i386/predict-a.asm
 OBJASM= $(ASMSRC:%.asm=%.o)
 endif
 
-CC=gcc
-CFLAGS=-g -Wall -I. -DDEBUG -O4 -funroll-loops -D__X264__ $(PFLAGS)
+# AltiVec optims
+ifeq ($(ARCH),PPC)
+ifeq ($(SYS),MACOSX)
+CFLAGS+=-faltivec
+else
+CFLAGS+=-maltivec -mabi=altivec
+endif
+SRCS+= common/ppc/mc.c common/ppc/pixel.c
+endif
+
+# stdint.h: everyone but BeOS
+ifneq ($(SYS),BEOS)
+CFLAGS+=-DHAVE_STDINT_H
+endif
+
+# malloc.h: everyone but OS X and FreeBSD
+ifneq ($(SYS),MACOSX)
+ifneq ($(SYS),FREEBSD)
+CFLAGS+=-DHAVE_MALLOC_H
+endif
+endif
+
+# Math libraries we have to link to
+ifneq ($(SYS),BEOS)
+MATHLIBS=-lm
+endif
+ifeq ($(SYS),MACOSX)
+MATHLIBS+=-lmx
+endif
 
 AS= nasm
 # for linux
@@ -41,16 +83,21 @@ libx264.a: $(OBJS) $(OBJASM)
        ranlib libx264.a
 
 x264: libx264.a x264.o
-       $(CC) $(CFLAGS) -o x264 x264.o libx264.a -lm
+       $(CC) $(CFLAGS) -o x264 x264.o libx264.a $(MATHLIBS)
 
 checkasm: testing/checkasm.c libx264.a
-       $(CC) $(CFLAGS) -o checkasm $< libx264.a -lm
+       $(CC) $(CFLAGS) -o checkasm $< libx264.a $(MATHLIBS)
 
 %.o: %.asm
        $(AS) $(ASFLAGS) -o $@ $<
 
-.depend: $(SRCS) x264.c
-       $(CC) -MM $(CFLAGS) $(SRCS) x264.c 1> .depend
+.depend: $(SRCS) x264.c config.h
+       rm -f .depend
+# Hacky - because gcc 2.9x doesn't have -MT
+       $(foreach SRC, $(SRCS) x264.c, ( echo -n "`dirname $(SRC)`/" && $(CC) $(CFLAGS) $(SRC) -MM -g0 ) 1>> .depend;)
+
+config.h: $(wildcard .svn/entries */.svn/entries */*/.svn/entries)
+       ./version.sh
 
 depend: .depend
 ifneq ($(wildcard .depend),)
@@ -58,10 +105,16 @@ include .depend
 endif
 
 clean:
-       rm -f $(OBJS) $(OBJASM) *.a x264.o .depend x264 TAGS
+       rm -f $(OBJS) $(OBJASM) config.h *.a x264.o .depend x264 TAGS
 
 distclean: clean
 
+DIR_INSTALL="/usr/local"
+install: x264
+       install x264.h $(DIR_INSTALL)/include/
+       install libx264.a $(DIR_INSTALL)/lib/
+       install x264 $(DIR_INSTALL)/bin/
+
 etags: TAGS
 
 TAGS: