1 |
#/************************************************************************** |
############################################################################# |
2 |
# * |
# |
3 |
# * linux makefile |
# GNU/Linux Makefile |
4 |
# * |
# |
5 |
# * nasm args: |
# Edit this file to enable/disable optimizations |
6 |
# * -f fmt elf (linux), coff (djgpp) |
# |
7 |
# * -DPREFIX add '_' prefix to symbol names |
# $Id: Makefile.linux,v 1.6.2.3 2002-11-07 10:31:03 suxen_drol Exp $ |
8 |
# * |
# |
9 |
# * libso: |
############################################################################# |
|
# * (-lm not neccessary if using -ffast-math) |
|
|
# * |
|
|
# *************************************************************************/ |
|
|
|
|
10 |
|
|
11 |
include Makefile.inc |
include Makefile.inc |
12 |
|
|
13 |
CC = gcc |
# You can set/add options to CC and CFLAGS without editing this Makefile |
14 |
|
# You have just to export an environment CC/CFLAGS variable before running |
15 |
|
# make. |
16 |
|
# |
17 |
|
# Examples : |
18 |
|
# $ export CC='gcc-3.1' |
19 |
|
# $ export CFLAGS='-maccumulate-outgoing-args' |
20 |
|
# $ make |
21 |
|
# ... |
22 |
|
|
23 |
|
# You can choose a specific compiler here removing the sharp symbol |
24 |
|
# - Default is 'cc' which is a symlink to your default distro gcc |
25 |
|
|
26 |
|
|
27 |
|
# CC = gcc |
28 |
|
# CC = gcc-3.1 |
29 |
#CC=icc |
#CC=icc |
|
#CC = /opt/experimental/bin/gcc # that's where SuSE installs gcc3 |
|
30 |
|
|
31 |
CFLAGS = -DARCH_X86 -DLINUX |
# Assembler |
32 |
|
AS = nasm |
33 |
|
AFLAGS = -f elf |
34 |
|
|
35 |
|
# Constants which should not be modified |
36 |
|
CFLAGS += -DARCH_X86 |
37 |
|
CFLAGS += -DLINUX |
38 |
|
|
39 |
|
# Enable multithreaded ME (experimental), other routines to follow |
40 |
|
# CFLAGS += -D_SMP |
41 |
|
|
42 |
|
# Enable some experimental/debugging code |
43 |
|
# (Use only if you know what you're doing !) |
44 |
|
# PSNR during encoding |
45 |
|
# CFLAGS += -D_DEBUG_PSNR |
46 |
|
# BFRAMES encoding |
47 |
|
CFLAGS += -DBFRAMES |
48 |
|
# BFRAMES decoding |
49 |
|
CFLAGS += -DBFRAMES_DEC |
50 |
|
|
51 |
LIBDIR = /usr/local/lib |
LIBDIR = /usr/local/lib |
52 |
|
|
53 |
ifeq ($(CC),icc) |
ifeq ($(CC),icc) |
54 |
CFLAGS+= -O3 -ip -tpp6 -xM # -tpp7 might be faster (P4 optmization)... |
|
55 |
CFLAGS+= -I/opt/intel/compiler50/ia32/include -I/opt/intel/compiler50/ia32/substitute_headers/ |
# -tpp7 might be faster (P4 optmization)... |
56 |
|
CFLAGS += -O3 -ip -tpp6 -xM |
57 |
|
CFLAGS += -I/opt/intel/compiler50/ia32/include |
58 |
|
CFLAGS += -I/opt/intel/compiler50/ia32/substitute_headers/ |
59 |
|
|
60 |
else |
else |
61 |
|
|
62 |
# CFLAGS += -funroll-loops -ffast-math -fstrict-aliasing -fomit-frame-pointer |
# Warning level options |
63 |
# CFLAGS += -fPIC |
# Shows all warnings |
64 |
# CFLAGS += -m486 |
CFLAGS += -Wall |
65 |
|
# To detect non ANSI C code (xvid is not ANSI C (yet?)) |
66 |
|
# CFLAGS += -pedantic |
67 |
|
|
68 |
|
|
69 |
|
# General Optimization options |
70 |
|
# Optimize code for size (implies -O2) |
71 |
|
CFLAGS += -Os |
72 |
|
# Unroll loops code, this might speed up loops |
73 |
|
CFLAGS += -funroll-loops |
74 |
|
# Generates FPU math code |
75 |
|
CFLAGS += -ffast-math |
76 |
|
# ??? (man gcc) |
77 |
|
CFLAGS += -fstrict-aliasing |
78 |
|
# Omit the x86 push ebp; mov ebp, esp function |
79 |
|
# header and its corresponding function tailer |
80 |
|
CFLAGS += -fomit-frame-pointer |
81 |
|
# Generates Position Independant Code depending on your nasm version, |
82 |
|
# this could generate shared libraries that segfault because of a nasm |
83 |
|
# bug |
84 |
|
CFLAGS += -fPIC |
85 |
|
|
86 |
|
# Debugging and Profiling options |
87 |
|
# Writes debugging symbols in object files |
88 |
|
# CFLAGS += -g |
89 |
|
# Includes profiling code in generated code, don't forget to disable |
90 |
|
# -fomit-frame-pointer as these 2 options are exclusive. |
91 |
|
# CFLAGS += -p |
92 |
|
|
93 |
|
|
94 |
|
# Architecture options : Valid for every gcc version |
95 |
|
# Uncomment the one which you want to compile for |
96 |
|
|
97 |
|
# CFLAGS += -march=i386 -mcpu=i386 |
98 |
|
# CFLAGS += -march=i486 -mcpu=i486 |
99 |
|
# CFLAGS += -march=i586 -mcpu=i586 |
100 |
|
# CFLAGS += -march=i686 -mcpu=i686 |
101 |
# CFLAGS += -march=pentium -mcpu=pentium |
# CFLAGS += -march=pentium -mcpu=pentium |
102 |
# CFLAGS += -march=pentiumpro -mcpu=pentiumpro |
# CFLAGS += -march=pentiumpro -mcpu=pentiumpro |
103 |
|
|
104 |
CFLAGS += -Wall -O3 -funroll-loops -ffast-math -march=pentiumpro -mcpu=pentiumpro |
# Architecture options : Valid for every gcc >= 3.1 |
105 |
CFLAGS += -fstrict-aliasing -fomit-frame-pointer |
# Uncomment the one which you want to compile for |
106 |
|
|
107 |
|
# CFLAGS += -march=pentium-mmx -mcpu=pentium-mmx |
108 |
|
# CFLAGS += -march=pentium3 -mcpu=pentium3 |
109 |
|
# CFLAGS += -march=pentium4 -mcpu=pentium4 |
110 |
|
# CFLAGS += -march=athlon -mcpu=athlon |
111 |
|
# CFLAGS += -march=k6 -mcpu=k6 |
112 |
|
# CFLAGS += -march=k6-2 -mcpu=k6-2 |
113 |
|
# CFLAGS += -march=k6-3 -mcpu=k6-3 |
114 |
|
# CFLAGS += -march=athlon-tbird -mcpu=athlon-tbird |
115 |
|
# CFLAGS += -march=athlon-xp -mcpu=athlon-xp |
116 |
|
# CFLAGS += -march=athlon-mp -mcpu=athlon-mp |
117 |
|
|
118 |
|
# x86 specific optimization for every gcc |
119 |
|
# Aligns the stack to 2^4=16bytes boundaries in each function |
120 |
|
# Local variables should be aligned and make the code faster |
121 |
|
# some gcc versions (3.0.4) have problems with this option |
122 |
|
# we can't really trust gcc output :-( You're warned. |
123 |
|
CFLAGS += -mpreferred-stack-boundary=4 |
124 |
|
|
125 |
|
# Architecture specific optimization available in gcc >= 3.1 |
126 |
|
# generates floating point sse code (for >= pentium 3) |
127 |
|
# CFLAGS += -mfpmath=sse |
128 |
|
# generates both floating point sse and 387 code, this double the amount |
129 |
|
# of fp registers and could make the code faster |
130 |
|
# (Still experimental in gcc 3.1.0) |
131 |
|
# CFLAGS += -mfpmath=sse,387 |
132 |
|
|
133 |
endif |
endif |
134 |
|
|
135 |
AS = nasm |
############################################################################# |
136 |
AFLAGS = -f elf |
# |
137 |
|
# Makefile rules |
138 |
|
# |
139 |
|
############################################################################# |
140 |
|
|
141 |
%.o: %.asm |
%.o: %.asm |
142 |
$(AS) $(AFLAGS) $< -o $@ |
$(AS) $(AFLAGS) -I$(<D) $< -o $@ |
143 |
|
|
144 |
RM = rm -rf |
RM = rm -rf |
145 |
|
|
157 |
|
|
158 |
clean: |
clean: |
159 |
$(RM) `find $(SRCDIR) -name "*.o"` |
$(RM) `find $(SRCDIR) -name "*.o"` |
|
|
|
|
remove-all: |
|
|
$(RM) $(DIRS) |
|
|
$(RM) $(DIRS_INTEL) |
|
160 |
$(RM) $(LIB) |
$(RM) $(LIB) |
161 |
$(RM) $(LIBSO) |
$(RM) $(LIBSO) |
162 |
|
|
|
|
|
163 |
install: libxvidcore.so |
install: libxvidcore.so |
164 |
cp libxvidcore.so $(LIBDIR) # you have to bee root for this |
cp libxvidcore.so $(LIBDIR) # you have to bee root for this |
165 |
|
cp $(SRCDIR)/xvid.h /usr/local/include |
166 |
/sbin/ldconfig |
/sbin/ldconfig |
167 |
|
|
168 |
install-test: libxvidcore.so # if you don't want to overwrite previous compile |
install-test: libxvidcore.so # if you don't want to overwrite previous compile |