]> git.sesse.net Git - x264/blob - configure
f1d09f69aa813a855428fe2abb31e309b32de85c
[x264] / configure
1 #! /bin/sh
2
3 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
4
5 echo "Usage: ./configure [options]"
6 echo ""
7 echo "available options:"
8 echo ""
9 echo "  --help                   print this message"
10 echo "  --enable-avis-input      enables avisynth input (win32 only)"
11 echo "  --enable-mp4-output      enables mp4 output (using gpac)"
12 echo "  --enable-vfw             compiles the VfW frontend"
13 echo "  --enable-pthread         enables multithreaded encoding"
14 echo "  --enable-debug           adds -g, doesn't strip"
15 echo "  --enable-gprof           adds -pg, doesn't strip"
16 echo "  --enable-visualize       enables visualization (X11 only)"
17 echo "  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"
18 echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
19 echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
20 echo ""
21 exit 1
22 fi
23
24 prefix='/usr/local'
25 exec_prefix='${prefix}'
26 bindir='${exec_prefix}/bin'
27 libdir='${exec_prefix}/lib'
28 includedir='${prefix}/include'
29 DEVNULL='/dev/null'
30
31 avis_input="no"
32 mp4_output="no"
33 pthread="no"
34 debug="no"
35 gprof="no"
36 vfw="no"
37 vis="no"
38
39 CC="gcc"
40 CFLAGS="-Wall -I. -O4 -ffast-math -D__X264__"
41 LDFLAGS=""
42 HAVE_GETOPT_LONG=1
43
44 AS="nasm"
45 ASFLAGS="-f elf"
46
47 EXE=""
48
49 UNAMES="`uname -s`"
50 case "$UNAMES" in
51   BeOS)
52     SYS="BEOS"
53     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
54     ;;
55   Darwin)
56     SYS="MACOSX"
57     CFLAGS="$CFLAGS -falign-loops=16"
58     LDFLAGS="$LDFLAGS -lm -lmx"
59     ;;
60   FreeBSD)
61     SYS="FREEBSD"
62     LDFLAGS="$LDFLAGS -lm"
63     ;;
64   NetBSD)
65     SYS="NETBSD"
66     LDFLAGS="$LDFLAGS -lm"
67     ;;
68   Linux)
69     SYS="LINUX"
70     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
71     LDFLAGS="$LDFLAGS -lm"
72     ;;
73   CYGWIN*)
74     SYS="CYGWIN"
75     CFLAGS="$CFLAGS -mno-cygwin"
76     LDFLAGS="$LDFLAGS -mno-cygwin"
77     ASFLAGS="-f win32 -DPREFIX"
78     EXE=".exe"
79     DEVNULL="NUL"
80     ;;
81   MINGW*)
82     SYS="MINGW"
83     ASFLAGS="-f win32 -DPREFIX"
84     EXE=".exe"
85     DEVNULL="NUL"
86     ;;
87   SunOS)
88     SYS="SunOS"
89     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
90     LDFLAGS="$LDFLAGS -lm"
91     HAVE_GETOPT_LONG=0
92     ;;
93   *)
94     echo "Unknown system $UNAMES, edit the configure"
95     exit 1
96     ;;
97 esac
98
99 UNAMEM="`uname -m`"
100 case "$UNAMEM" in
101   i386|i486|i586|i686|BePC)
102     ARCH="X86"
103     CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
104     ;;
105   x86_64)
106     ARCH="X86_64"
107     CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
108     AS="yasm"
109     ASFLAGS="-f elf -m amd64"
110     ;;
111   "Power Macintosh"|ppc)
112     ARCH="PPC"
113     if [ $SYS = MACOSX ]
114     then
115       CFLAGS="$CFLAGS -faltivec"
116     else
117       CFLAGS="$CFLAGS -maltivec -mabi=altivec"
118     fi
119     ;;
120   sun4m|sun4d|sparc|sparc64)
121     ARCH="Sparc"
122     ;;
123   sun4u)
124     ARCH="UltraSparc"
125     CFLAGS="$CFLAGS -mcpu=ultrasparc"
126     LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
127     AS="as"
128     ASFLAGS="-xarch=v8plusa"
129     ;;
130   ia64)
131     ARCH="IA64"
132     ;;
133   alpha)
134     ARCH="ALPHA"
135     ;;
136   mips|mipsel)
137     ARCH="MIPS"
138     ;;
139   m68k)
140     ARCH="M68K"
141     ;;
142   arm)
143     ARCH="ARM"
144     ;;
145   s390|s390x)
146     ARCH="S390"
147     ;;
148   parisc|parisc64)
149     ARCH="PARISC"
150     ;;
151   *)
152     echo "Unknown platform $UNAMEM, edit the configure"
153     exit 1
154     ;;
155 esac
156
157 CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS"
158
159 # parse options
160
161 for opt do
162     optarg="${opt#*=}"
163     case "$opt" in
164         --prefix=*)
165             prefix="$optarg"
166             ;;
167         --exec-prefix=*)
168             exec_prefix="$optarg"
169             ;;
170         --bindir=*)
171             bindir="$optarg"
172             ;;
173         --libdir=*)
174             libdir="$optarg"
175             ;;
176         --includedir=*)
177             includedir="$optarg"
178             ;;
179         --enable-avis-input)
180             if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
181                 CFLAGS="$CFLAGS -DAVIS_INPUT"
182                 LDFLAGS="$LDFLAGS -lvfw32"
183                 avis_input="yes"
184             fi
185             ;;
186         --enable-mp4-output)
187             CFLAGS="$CFLAGS -DMP4_OUTPUT"
188             LDFLAGS="$LDFLAGS -lgpac_static"
189             if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
190                 LDFLAGS="$LDFLAGS -lwinmm"
191             fi
192             mp4_output="yes"
193             ;;
194         --extra-asflags=*)
195             ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}"
196             ;;
197         --extra-cflags=*)
198             CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
199             VFW_CFLAGS="${opt#--extra-cflags=}"
200             ;;
201         --extra-ldflags=*)
202             LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
203             VFW_LDFLAGS="${opt#--extra-ldflags=}"
204             ;;
205         --enable-pthread)
206             CFLAGS="$CFLAGS -DHAVE_PTHREAD=1"
207             pthread="yes"
208             case $SYS in
209               MINGW|CYGWIN|BEOS)
210                 ;;
211               *)
212                 LDFLAGS="$LDFLAGS -lpthread"
213                 ;;
214             esac
215             ;;
216         --enable-debug)
217             CFLAGS="$CFLAGS -g"
218             debug="yes"
219             ;;
220         --enable-gprof)
221             CFLAGS="$CFLAGS -pg"
222             LDFLAGS="$LDFLAGS -pg"
223             gprof="yes"
224             ;;
225         --enable-vfw)
226             vfw="yes"
227             ;;
228         --enable-visualize)
229             LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
230             CFLAGS="$CFLAGS -DVISUALIZE=1"
231             vis="yes"
232             ;;
233         *)
234             echo "Unknown option $opt, ignored"
235             ;;
236     esac
237 done
238
239 VFWFLAGS=
240 if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
241     CFLAGS="$CFLAGS -s -fomit-frame-pointer"
242     LDFLAGS="$LDFLAGS -s"
243     VFW_LDFLAGS="$VFW_LDFLAGS -s"
244 fi
245
246 rm -f config.mak
247 cat > config.mak << EOF
248 prefix=$prefix
249 exec_prefix=$exec_prefix
250 bindir=$bindir
251 libdir=$libdir
252 includedir=$includedir
253 ARCH=$ARCH
254 SYS=$SYS
255 CC=$CC
256 CFLAGS=$CFLAGS
257 LDFLAGS=$LDFLAGS
258 AS=$AS
259 ASFLAGS=$ASFLAGS
260 VFW=$vfw
261 EXE=$EXE
262 VIS=$vis
263 HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
264 DEVNULL=$DEVNULL
265 CONFIGURE_ARGS=$@
266 EOF
267
268 if [ "$vfw" = "yes" ]; then
269     rm -f vfw/build/cygwin/config.mak
270     cat > vfw/build/cygwin/config.mak << EOF
271 CFLAGS=$VFW_CFLAGS
272 LDFLAGS=$VFW_LDFLAGS
273 EOF
274     echo "default: x264vfw.dll" >> config.mak
275 fi
276
277 ./version.sh
278
279 # x264.pc file creation
280 rm -f x264.pc
281 cat > x264.pc << EOF
282 prefix=$prefix
283 exec_prefix=$exec_prefix
284 libdir=$libdir
285 includedir=$includedir
286
287 Name: x264
288 Description: H.264 (MPEG4 AVC) encoder library
289 Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')
290 Libs: -L$libdir -lx264
291 Cflags: -I$includedir
292 EOF
293
294
295 echo "Platform:   $ARCH"
296 echo "System:     $SYS"
297 echo "avis input: $avis_input"
298 echo "mp4 output: $mp4_output"
299 echo "pthread:    $pthread"
300 echo "vfw:        $vfw"
301 echo "debug:      $debug"
302 echo "gprof:      $gprof"
303 echo "visualize:  $vis"
304 echo
305 echo "You can run 'make' or 'make fprofiled' now."
306