]> git.sesse.net Git - x264/blob - configure
add support for x86_64 on Darwin9.0 (Mac OS X 10.5, aka Leopard)
[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-gtk             build GTK+ interface"
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 "  --enable-pic             build position-independent code"
18 echo "  --enable-shared          build libx264.so"
19 echo "  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"
20 echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
21 echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
22 echo "  --host=HOST              build programs to run on HOST"
23 echo ""
24 exit 1
25 fi
26
27 cc_check() {
28     rm -f conftest*
29     cat > conftest.c << EOF
30 #include <$1>
31 int main () { $3 return 0; }
32 EOF
33     $CC conftest.c $CFLAGS $LDFLAGS $2 -o conftest 2>$DEVNULL
34     TMP="$?"
35     rm -f conftest*
36     return $TMP
37 }
38
39 as_check() {
40     rm -f conftest*
41     echo "$1" > conftest.asm
42     $AS conftest.asm $ASFLAGS $2 -o conftest.o 2>$DEVNULL
43     TMP="$?"
44     rm -f conftest*
45     return $TMP
46 }
47
48 rm -f config.h config.mak x264.pc
49
50 prefix='/usr/local'
51 exec_prefix='${prefix}'
52 bindir='${exec_prefix}/bin'
53 libdir='${exec_prefix}/lib'
54 includedir='${prefix}/include'
55 DEVNULL='/dev/null'
56
57 avis_input="auto"
58 mp4_output="auto"
59 pthread="auto"
60 debug="no"
61 gprof="no"
62 pic="no"
63 gtk="no"
64 vis="no"
65 shared="no"
66
67 CC="${CC-gcc}"
68 CFLAGS="$CFLAGS -Wall -I."
69 LDFLAGS="$LDFLAGS"
70 HAVE_GETOPT_LONG=1
71
72 AS="yasm"
73 ASFLAGS=""
74
75 EXE=""
76
77 # check whether 'echo -n' works as expected, otherwise try printf
78 if [ "x`echo -n houba`" = xhouba ]
79 then
80   ECHON="echo -n"
81 elif [ "x`printf houba`" = xhouba ]
82 then
83   ECHON="printf"
84 else
85   echo "Neither 'echo -n' nor 'printf' are working with your shell!"
86   exit 1
87 fi
88
89 # parse options
90
91 for opt do
92     optarg="${opt#*=}"
93     case "$opt" in
94         --prefix=*)
95             prefix="$optarg"
96             ;;
97         --exec-prefix=*)
98             exec_prefix="$optarg"
99             ;;
100         --bindir=*)
101             bindir="$optarg"
102             ;;
103         --libdir=*)
104             libdir="$optarg"
105             ;;
106         --includedir=*)
107             includedir="$optarg"
108             ;;
109         --enable-avis-input)
110             avis_input="yes"
111             ;;
112         --disable-avis-input)
113             avis_input="no"
114             ;;
115         --enable-mp4-output)
116             mp4_output="yes"
117             ;;
118         --disable-mp4-output)
119             mp4_output="no"
120             ;;
121         --extra-asflags=*)
122             ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}"
123             ;;
124         --extra-cflags=*)
125             CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
126             ;;
127         --extra-ldflags=*)
128             LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
129             ;;
130         --enable-pthread)
131             pthread="auto" # can't skip detection, since it differs by OS
132             ;;
133         --disable-pthread)
134             pthread="no"
135             ;;
136         --enable-debug)
137             debug="yes"
138             ;;
139         --enable-gprof)
140             CFLAGS="$CFLAGS -pg"
141             LDFLAGS="$LDFLAGS -pg"
142             gprof="yes"
143             ;;
144         --enable-pic)
145             pic="yes"
146             ;;
147         --enable-gtk)
148             gtk="yes"
149             ;;
150         --disable-gtk)
151             gtk="no"
152             ;;
153         --enable-shared)
154             shared="yes"
155             ;;
156         --enable-visualize)
157             LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
158             CFLAGS="$CFLAGS -DVISUALIZE=1"
159             vis="yes"
160             ;;
161         --host=*)
162             host="${opt#--host=}"
163             ;;
164         *)
165             echo "Unknown option $opt, ignored"
166             ;;
167     esac
168 done
169
170 if [ "x$host" = x ]; then
171     host=`./config.guess`
172 fi
173 # normalize a triplet into a quadruplet
174 host=`./config.sub $host`
175
176 # split $host
177 host_cpu="${host%%-*}"
178 host="${host#*-}"
179 host_vendor="${host%%-*}"
180 host_os="${host#*-}"
181
182 case $host_os in
183   beos*)
184     SYS="BEOS"
185     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
186     ;;
187   darwin*)
188     SYS="MACOSX"
189     CFLAGS="$CFLAGS -falign-loops=16"
190     LDFLAGS="$LDFLAGS -lm -lmx"
191     ;;
192   freebsd*)
193     SYS="FREEBSD"
194     LDFLAGS="$LDFLAGS -lm"
195     ;;
196   kfreebsd*-gnu)
197     SYS="FREEBSD"
198     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
199     LDFLAGS="$LDFLAGS -lm"
200     ;;
201   netbsd*)
202     SYS="NETBSD"
203     LDFLAGS="$LDFLAGS -lm"
204     ;;
205   openbsd*)
206     SYS="OPENBSD"
207     CFLAGS="$CFLAGS -I/usr/X11R6/include"
208     LDFLAGS="$LDFLAGS -lm"
209     ;;
210   linux*)
211     SYS="LINUX"
212     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
213     LDFLAGS="$LDFLAGS -lm"
214     ;;
215   cygwin*)
216     SYS="CYGWIN"
217     CFLAGS="$CFLAGS -mno-cygwin"
218     LDFLAGS="$LDFLAGS -mno-cygwin"
219     EXE=".exe"
220     DEVNULL="NUL"
221     ;;
222   mingw*)
223     SYS="MINGW"
224     EXE=".exe"
225     DEVNULL="NUL"
226     ;;
227   sunos*|solaris*)
228     SYS="SunOS"
229     CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
230     LDFLAGS="$LDFLAGS -lm"
231     HAVE_GETOPT_LONG=0
232     ;;
233   *)
234     echo "Unknown system $host, edit the configure"
235     exit 1
236     ;;
237 esac
238
239 case $host_cpu in
240   i*86)
241     ARCH="X86"
242     AS="yasm"
243     ASFLAGS="-O2"
244     if [ "$SYS" = MACOSX ]; then
245       ASFLAGS="$ASFLAGS -f macho -DPREFIX"
246     elif [ "$SYS" = CYGWIN -o "$SYS" = MINGW ]; then
247       ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
248     elif [ "$SYS" = NETBSD ]; then
249       ASFLAGS="$ASFLAGS -f aoutb"
250     else
251       ASFLAGS="$ASFLAGS -f elf"
252     fi
253     as_check || AS="nasm"
254     ;;
255   x86_64)
256     ARCH="X86_64"
257     AS="yasm"
258     if [ "$SYS" = MACOSX ];then
259       ASFLAGS="-f macho64 -m amd64 -D__PIC__ -DPREFIX"
260       CFLAGS="$CFLAGS -arch x86_64"
261       LDFLAGS="$LDFLAGS -arch x86_64"
262     else
263       ASFLAGS="-f elf -m amd64"
264     fi
265     ;;
266   powerpc|powerpc64)
267     ARCH="PPC"
268     if [ $SYS = MACOSX ]
269     then
270       ALTIVECFLAGS="$ALTIVECFLAGS -faltivec -fastf -mcpu=G4"
271     else
272       ALTIVECFLAGS="$ALTIVECFLAGS -maltivec -mabi=altivec"
273     fi
274     ;;
275   sparc)
276     if test "$(uname -m)" = "sun4u"; then
277       ARCH="UltraSparc"
278       CFLAGS="$CFLAGS -mcpu=ultrasparc"
279       LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
280       AS="as"
281       ASFLAGS="-xarch=v8plusa"
282     else
283       ARCH="Sparc"
284     fi
285     ;;
286   mips|mipsel|mips64|mips64el)
287     ARCH="MIPS"
288     ;;
289   arm*)
290     ARCH="ARM"
291     ;;
292   s390|s390x)
293     ARCH="S390"
294     ;;
295   parisc|parisc64)
296     ARCH="PARISC"
297     ;;
298   *)
299     ARCH="$(echo $host_cpu | tr a-z A-Z)"
300     ;;
301 esac
302
303 # check requirements
304
305 if [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" \) ] ; then
306     pic="yes"
307 fi
308
309 if [ $SYS = MACOSX -a $ARCH = X86 ]
310 then
311   # we want Apple's nasm from Xcode 2.4.1 or later
312   NASM_BUILD_REQUIRED=11
313   NASM_BUILD=`nasm -v|grep "Apple Computer"|sed 's/.*build \([0-9]*\).*/\1/'`
314   if [ $NASM_BUILD -lt $NASM_BUILD_REQUIRED ]
315   then
316     echo "Your version of 'nasm' is too old."
317     echo "Please install Xcode 2.4.1 or later."
318     AS=""
319   fi
320 fi
321
322 if [ $ARCH = X86 -o $ARCH = X86_64 ] ; then
323     if as_check ; then
324         CFLAGS="$CFLAGS -DHAVE_MMX"
325         if as_check "pabsw xmm0, xmm0" ; then
326             ASFLAGS="$ASFLAGS -DHAVE_SSE3"
327             CFLAGS="$CFLAGS -DHAVE_SSE3"
328         fi
329     else
330         echo "No suitable assembler found.  x264 will be several times slower."
331         echo "Please install 'yasm' to get MMX/SSE optimized code."
332         AS=""
333     fi
334 fi
335
336 CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS"
337
338 # autodetect options that weren't forced nor disabled
339
340 libpthread=""
341 if test "$pthread" = "auto" ; then
342     pthread="no"
343     case $SYS in
344         BEOS)
345             pthread="yes"
346             ;;
347         MINGW|CYGWIN)
348             if cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then
349                 pthread="yes"
350                 libpthread="-lpthread"
351             elif cc_check pthread.h -lpthreadGC2 "pthread_create(0,0,0,0);" ; then
352                 pthread="yes"
353                 libpthread="-lpthreadGC2"
354             elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
355                 pthread="yes"
356                 libpthread="-lpthreadGC2 -lwsock32"
357                 CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"
358             fi
359             ;;
360         *)
361             cc_check pthread.h -lpthread && pthread="yes" && libpthread="-lpthread"
362             ;;
363     esac
364 fi
365 if test "$pthread" = "yes" ; then
366     CFLAGS="$CFLAGS -DHAVE_PTHREAD"
367     LDFLAGS="$LDFLAGS $libpthread"
368 fi
369
370 MP4_LDFLAGS="-lgpac_static"
371 if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
372     MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm"
373 fi
374 if [ "$mp4_output" = "auto" ] ; then
375     mp4_output="no"
376     cc_check gpac/isomedia.h "$MP4_LDFLAGS" && mp4_output="yes"
377 fi
378 if [ "$mp4_output" = "yes" ] ; then
379     echo "#define MP4_OUTPUT" >> config.h
380     LDFLAGS="$LDFLAGS $MP4_LDFLAGS"
381 fi
382
383 if [ "$avis_input" = "auto" ] ; then
384     if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
385         avis_input="yes"
386     else
387         avis_input="no";
388     fi
389 fi
390 if [ "$avis_input" = "yes" ] ; then
391     echo "#define AVIS_INPUT" >> config.h
392     LDFLAGS="$LDFLAGS -lvfw32"
393 fi
394
395 if [ "$pic" = "yes" ] ; then
396     CFLAGS="$CFLAGS -fPIC"
397     ASFLAGS="$ASFLAGS -D__PIC__"
398 fi
399
400 if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
401     CFLAGS="$CFLAGS -s -fomit-frame-pointer"
402     LDFLAGS="$LDFLAGS -s"
403 fi
404
405 if [ "$debug" = "yes" ]; then
406     CFLAGS="-O1 -g $CFLAGS"
407 else
408     CFLAGS="-O4 -ffast-math $CFLAGS"
409 fi
410
411 if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then
412     echo "#define fseek fseeko" >> config.h
413     echo "#define ftell ftello" >> config.h
414 elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then
415     echo "#define fseek fseeko64" >> config.h
416     echo "#define ftell ftello64" >> config.h
417 fi
418
419 # generate config files
420
421 cat > config.mak << EOF
422 prefix=$prefix
423 exec_prefix=$exec_prefix
424 bindir=$bindir
425 libdir=$libdir
426 includedir=$includedir
427 ARCH=$ARCH
428 SYS=$SYS
429 CC=$CC
430 CFLAGS=$CFLAGS
431 ALTIVECFLAGS=$ALTIVECFLAGS
432 LDFLAGS=$LDFLAGS
433 AS=$AS
434 ASFLAGS=$ASFLAGS
435 GTK=$gtk
436 EXE=$EXE
437 VIS=$vis
438 HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
439 DEVNULL=$DEVNULL
440 ECHON=$ECHON
441 EOF
442
443 $ECHON 'CONFIGURE_ARGS=' >> config.mak
444 for A in "$@" ; do
445     $ECHON " '$A'" >> config.mak
446 done
447 echo '' >> config.mak
448
449 cp config.mak gtk/config.mak
450
451 if [ "$shared" = "yes" ]; then
452     API=$(grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' ')
453     echo "SONAME=libx264.so.$API" >> config.mak
454     echo 'default: $(SONAME)' >> config.mak
455     if [ "$gtk" = "yes" ]; then
456         echo "SONAMEGTK=libx264gtk.so.$API" >> gtk/config.mak
457     fi
458 fi
459
460 if [ "$gtk" = "yes" ]; then
461     echo 'default: libx264gtk.a' >> config.mak
462     echo 'install: install-gtk' >> config.mak
463 fi
464
465 ./version.sh
466
467 pclibs="-L$libdir -lx264 $libpthread"
468
469 cat > x264.pc << EOF
470 prefix=$prefix
471 exec_prefix=$exec_prefix
472 libdir=$libdir
473 includedir=$includedir
474
475 Name: x264
476 Description: H.264 (MPEG4 AVC) encoder library
477 Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')
478 Libs: $pclibs
479 Cflags: -I$includedir
480 EOF
481
482
483 echo "Platform:   $ARCH"
484 echo "System:     $SYS"
485 echo "avis input: $avis_input"
486 echo "mp4 output: $mp4_output"
487 echo "pthread:    $pthread"
488 echo "gtk:        $gtk"
489 echo "debug:      $debug"
490 echo "gprof:      $gprof"
491 echo "PIC:        $pic"
492 echo "shared:     $shared"
493 echo "visualize:  $vis"
494 echo
495 echo "You can run 'make' or 'make fprofiled' now."
496