configure 8.83 KB
Newer Older
1
2
#! /bin/sh

Loren Merritt's avatar
Loren Merritt committed
3
4
5
6
7
8
9
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then

echo "Usage: ./configure [options]"
echo ""
echo "available options:"
echo ""
echo "  --help                   print this message"
10
echo "  --enable-avis-input      enables avisynth input (win32 only)"
Loren Merritt's avatar
Loren Merritt committed
11
echo "  --enable-mp4-output      enables mp4 output (using gpac)"
Loren Merritt's avatar
Loren Merritt committed
12
echo "  --enable-vfw             compiles the VfW frontend"
Loren Merritt's avatar
Loren Merritt committed
13
echo "  --enable-pthread         enables multithreaded encoding"
Loren Merritt's avatar
Loren Merritt committed
14
echo "  --enable-debug           adds -g, doesn't strip"
15
echo "  --enable-gprof           adds -pg, doesn't strip"
Loren Merritt's avatar
Loren Merritt committed
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"
Loren Merritt's avatar
Loren Merritt committed
20
21
22
23
24
25
echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
echo ""
exit 1
fi

26
27
28
29
cc_check() {
    rm -f conftest*
    cat > conftest.c << EOF
#include <$1>
Loren Merritt's avatar
Loren Merritt committed
30
int main () { $3 return 0; }
31
EOF
32
    $CC $CFLAGS $LDFLAGS $2 conftest.c -o conftest 2>$DEVNULL
33
    TMP="$?"
Loren Merritt's avatar
Loren Merritt committed
34
    rm -f conftest.c conftest*
35
36
37
    return $TMP
}

Loren Merritt's avatar
Loren Merritt committed
38
39
rm -f config.h config.mak x264.pc

40
prefix='/usr/local'
Loren Merritt's avatar
Loren Merritt committed
41
42
43
exec_prefix='${prefix}'
bindir='${exec_prefix}/bin'
libdir='${exec_prefix}/lib'
44
includedir='${prefix}/include'
45
DEVNULL='/dev/null'
46

47
48
49
avis_input="auto"
mp4_output="auto"
pthread="auto"
50
debug="no"
51
gprof="no"
52
pic="no"
Loren Merritt's avatar
Loren Merritt committed
53
vfw="no"
Loren Merritt's avatar
Loren Merritt committed
54
vis="no"
55
shared="no"
Loren Merritt's avatar
Loren Merritt committed
56

57
CC="gcc"
Loren Merritt's avatar
Loren Merritt committed
58
CFLAGS="-Wall -I. -O4 -ffast-math -D__X264__"
59
LDFLAGS=""
60
HAVE_GETOPT_LONG=1
61
62

AS="nasm"
63
ASFLAGS=""
64

Loren Merritt's avatar
Loren Merritt committed
65
66
EXE=""

67
68
69
70
71
72
73
74
UNAMES="`uname -s`"
case "$UNAMES" in
  BeOS)
    SYS="BEOS"
    CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
    ;;
  Darwin)
    SYS="MACOSX"
75
    CFLAGS="$CFLAGS -falign-loops=16"
76
77
78
79
80
81
    LDFLAGS="$LDFLAGS -lm -lmx"
    ;;
  FreeBSD)
    SYS="FREEBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
82
83
84
85
  NetBSD)
    SYS="NETBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
86
87
88
89
90
  Linux)
    SYS="LINUX"
    CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
    LDFLAGS="$LDFLAGS -lm"
    ;;
Eric Petit's avatar
Eric Petit committed
91
92
93
94
  CYGWIN*)
    SYS="CYGWIN"
    CFLAGS="$CFLAGS -mno-cygwin"
    LDFLAGS="$LDFLAGS -mno-cygwin"
Loren Merritt's avatar
Loren Merritt committed
95
    EXE=".exe"
96
    DEVNULL="NUL"
Eric Petit's avatar
Eric Petit committed
97
    ;;
98
99
  MINGW*)
    SYS="MINGW"
Loren Merritt's avatar
Loren Merritt committed
100
    EXE=".exe"
101
    DEVNULL="NUL"
Loren Merritt's avatar
Loren Merritt committed
102
    ;;
103
104
105
106
107
108
  SunOS)
    SYS="SunOS"
    CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
    LDFLAGS="$LDFLAGS -lm"
    HAVE_GETOPT_LONG=0
    ;;
109
110
111
112
113
114
115
116
117
118
  *)
    echo "Unknown system $UNAMES, edit the configure"
    exit 1
    ;;
esac

UNAMEM="`uname -m`"
case "$UNAMEM" in
  i386|i486|i586|i686|BePC)
    ARCH="X86"
119
    CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
120
121
    AS="nasm"
    ASFLAGS="-O2"
122
    if [ "$SYS" = MACOSX ]; then
123
124
125
      ASFLAGS="$ASFLAGS -f macho -DPREFIX"
    elif [ "$SYS" = CYGWIN -o "$SYS" = MINGW ]; then
      ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
Måns Rullgård's avatar
Måns Rullgård committed
126
    elif [ "$SYS" = NETBSD ]; then
127
128
129
      ASFLAGS="$ASFLAGS -f aoutb"
    else
      ASFLAGS="$ASFLAGS -f elf"
130
    fi
131
    ;;
Måns Rullgård's avatar
Måns Rullgård committed
132
133
  x86_64)
    ARCH="X86_64"
Loren Merritt's avatar
Loren Merritt committed
134
135
136
    CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
    AS="yasm"
    ASFLAGS="-f elf -m amd64"
Måns Rullgård's avatar
Måns Rullgård committed
137
    ;;
138
139
140
141
142
143
144
145
146
  "Power Macintosh"|ppc)
    ARCH="PPC"
    if [ $SYS = MACOSX ]
    then
      CFLAGS="$CFLAGS -faltivec"
    else
      CFLAGS="$CFLAGS -maltivec -mabi=altivec"
    fi
    ;;
147
  sun4m|sun4d|sparc|sparc64)
148
149
    ARCH="Sparc"
    ;;
150
151
152
153
154
155
156
  sun4u)
    ARCH="UltraSparc"
    CFLAGS="$CFLAGS -mcpu=ultrasparc"
    LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
    AS="as"
    ASFLAGS="-xarch=v8plusa"
    ;;
157
158
159
  ia64)
    ARCH="IA64"
    ;;
160
161
162
  alpha)
    ARCH="ALPHA"
    ;;
163
  mips|mipsel|mips64)
164
165
166
167
168
    ARCH="MIPS"
    ;;
  m68k)
    ARCH="M68K"
    ;;
169
  arm|armv5tel)
170
171
172
173
174
175
176
177
    ARCH="ARM"
    ;;
  s390|s390x)
    ARCH="S390"
    ;;
  parisc|parisc64)
    ARCH="PARISC"
    ;;
178
179
180
181
182
183
184
185
  *)
    echo "Unknown platform $UNAMEM, edit the configure"
    exit 1
    ;;
esac

CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS"

Loren Merritt's avatar
Loren Merritt committed
186
187
188
# parse options

for opt do
189
    optarg="${opt#*=}"
Loren Merritt's avatar
Loren Merritt committed
190
    case "$opt" in
191
192
193
194
        --prefix=*)
            prefix="$optarg"
            ;;
        --exec-prefix=*)
Loren Merritt's avatar
Loren Merritt committed
195
            exec_prefix="$optarg"
196
197
198
199
200
201
202
203
204
205
            ;;
        --bindir=*)
            bindir="$optarg"
            ;;
        --libdir=*)
            libdir="$optarg"
            ;;
        --includedir=*)
            includedir="$optarg"
            ;;
Loren Merritt's avatar
Loren Merritt committed
206
        --enable-avis-input)
207
208
209
210
            avis_input="yes"
            ;;
        --disable-avis-input)
            avis_input="no"
Loren Merritt's avatar
Loren Merritt committed
211
212
            ;;
        --enable-mp4-output)
213
            mp4_output="yes"
Loren Merritt's avatar
Loren Merritt committed
214
            ;;
215
216
217
        --disable-mp4-output)
            mp4_output="no"
            ;;
218
219
220
        --extra-asflags=*)
            ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}"
            ;;
Loren Merritt's avatar
Loren Merritt committed
221
222
223
        --extra-cflags=*)
            CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
            VFW_CFLAGS="${opt#--extra-cflags=}"
Loren Merritt's avatar
Loren Merritt committed
224
            ;;
Loren Merritt's avatar
Loren Merritt committed
225
226
227
        --extra-ldflags=*)
            LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
            VFW_LDFLAGS="${opt#--extra-ldflags=}"
Loren Merritt's avatar
Loren Merritt committed
228
            ;;
Loren Merritt's avatar
Loren Merritt committed
229
230
        --enable-pthread)
            pthread="yes"
231
232
233
            ;;
        --disable-pthread)
            pthread="no"
Loren Merritt's avatar
Loren Merritt committed
234
            ;;
235
236
237
238
        --enable-debug)
            CFLAGS="$CFLAGS -g"
            debug="yes"
            ;;
239
240
241
242
243
        --enable-gprof)
            CFLAGS="$CFLAGS -pg"
            LDFLAGS="$LDFLAGS -pg"
            gprof="yes"
            ;;
244
245
246
        --enable-pic)
            pic="yes"
            ;;
Loren Merritt's avatar
Loren Merritt committed
247
248
249
        --enable-vfw)
            vfw="yes"
            ;;
250
251
252
        --disable-vfw)
            vfw="no"
            ;;
253
254
255
256
257
258
        --enable-shared)
            shared="yes"
            if [ $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" ] ; then
                pic="yes"
            fi
            ;;
Loren Merritt's avatar
Loren Merritt committed
259
260
261
262
263
        --enable-visualize)
            LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
            CFLAGS="$CFLAGS -DVISUALIZE=1"
            vis="yes"
            ;;
Loren Merritt's avatar
Loren Merritt committed
264
265
266
267
268
269
        *)
            echo "Unknown option $opt, ignored"
            ;;
    esac
done

270
271
272
273
274
275
276
277
278
279
280
281
282
283
# autodetect options that weren't forced nor disabled

if test "$pthread" = "auto" ; then
    case $SYS in
        MINGW|CYGWIN|BEOS)
            pthread="yes"
            ;;
        *)
            pthread="no"
            cc_check pthread.h -lpthread && pthread="yes"
            ;;
    esac
fi
if test "$pthread" = "yes" ; then
284
    CFLAGS="$CFLAGS -DHAVE_PTHREAD"
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
    case $SYS in
        MINGW|CYGWIN|BEOS)
            ;;
        *) LDFLAGS="$LDFLAGS -lpthread"
            ;;
    esac
fi

MP4_LDFLAGS="-lgpac_static"
if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
    MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm"
fi
if [ "$mp4_output" = "auto" ] ; then
    mp4_output="no"
    cc_check gpac/isomedia.h "$MP4_LDFLAGS" && mp4_output="yes"
fi
if [ "$mp4_output" = "yes" ] ; then
Loren Merritt's avatar
Loren Merritt committed
302
    echo "#define MP4_OUTPUT" >> config.h
303
304
305
306
307
308
309
310
311
312
313
    LDFLAGS="$LDFLAGS $MP4_LDFLAGS"
fi

if [ "$avis_input" = "auto" ] ; then
    if [ $SYS = CYGWIN -o $SYS = MINGW ]; then
        avis_input="yes"
    else
        avis_input="no";
    fi
fi
if [ "$avis_input" = "yes" ] ; then
Loren Merritt's avatar
Loren Merritt committed
314
    echo "#define AVIS_INPUT" >> config.h
315
316
317
    LDFLAGS="$LDFLAGS -lvfw32"
fi

318
319
320
321
322
if [ "$pic" = "yes" ] ; then
    CFLAGS="$CFLAGS -fPIC"
    ASFLAGS="$ASFLAGS -D__PIC__"
fi

323
if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
Loren Merritt's avatar
Loren Merritt committed
324
    CFLAGS="$CFLAGS -s -fomit-frame-pointer"
Loren Merritt's avatar
Loren Merritt committed
325
    LDFLAGS="$LDFLAGS -s"
Loren Merritt's avatar
Loren Merritt committed
326
    VFW_LDFLAGS="$VFW_LDFLAGS -s"
327
328
fi

Loren Merritt's avatar
Loren Merritt committed
329
330
331
332
333
334
335
336
if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then
    echo "#define fseek fseeko" >> config.h
    echo "#define ftell ftello" >> config.h
elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then
    echo "#define fseek fseeko64" >> config.h
    echo "#define ftell ftello64" >> config.h
fi

337
338
# generate config files

339
cat > config.mak << EOF
340
prefix=$prefix
Loren Merritt's avatar
Loren Merritt committed
341
exec_prefix=$exec_prefix
342
343
344
bindir=$bindir
libdir=$libdir
includedir=$includedir
345
346
347
348
349
350
351
ARCH=$ARCH
SYS=$SYS
CC=$CC
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
AS=$AS
ASFLAGS=$ASFLAGS
Loren Merritt's avatar
Loren Merritt committed
352
VFW=$vfw
Loren Merritt's avatar
Loren Merritt committed
353
EXE=$EXE
Loren Merritt's avatar
Loren Merritt committed
354
VIS=$vis
355
HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
356
DEVNULL=$DEVNULL
357
CONFIGURE_ARGS=$@
358
359
EOF

Loren Merritt's avatar
Loren Merritt committed
360
361
cp config.mak gtk/config.mak

Eric Petit's avatar
Eric Petit committed
362
if [ "$vfw" = "yes" ]; then
Loren Merritt's avatar
Loren Merritt committed
363
    rm -f vfw/build/cygwin/config.mak
Loren Merritt's avatar
Loren Merritt committed
364
365
366
367
    cat > vfw/build/cygwin/config.mak << EOF
CFLAGS=$VFW_CFLAGS
LDFLAGS=$VFW_LDFLAGS
EOF
Loren Merritt's avatar
Loren Merritt committed
368
369
370
    echo "default: x264vfw.dll" >> config.mak
fi

371
372
373
374
375
376
if [ "$shared" = "yes" ]; then
    API=`grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' '`
    echo "SONAME=libx264.so.$API" >> config.mak
    echo 'default: $(SONAME)' >> config.mak
fi

377
378
./version.sh

379
380
381
382
383
384
385
386
387
388
pclibs="-L$libdir -lx264"
if test "$pthread" = "yes" ; then
  case $SYS in
    MINGW|CYGWIN|BEOS)
      ;;
    *) pclibs="$pclibs -lpthread"
      ;;
  esac
fi

Loren Merritt's avatar
Loren Merritt committed
389
390
391
392
393
394
395
396
cat > x264.pc << EOF
prefix=$prefix
exec_prefix=$exec_prefix
libdir=$libdir
includedir=$includedir

Name: x264
Description: H.264 (MPEG4 AVC) encoder library
397
Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')
398
Libs: $pclibs
Loren Merritt's avatar
Loren Merritt committed
399
400
401
402
Cflags: -I$includedir
EOF


Loren Merritt's avatar
Loren Merritt committed
403
404
405
406
echo "Platform:   $ARCH"
echo "System:     $SYS"
echo "avis input: $avis_input"
echo "mp4 output: $mp4_output"
Loren Merritt's avatar
Loren Merritt committed
407
echo "pthread:    $pthread"
Loren Merritt's avatar
Loren Merritt committed
408
echo "vfw:        $vfw"
409
echo "debug:      $debug"
410
echo "gprof:      $gprof"
411
echo "PIC:        $pic"
412
echo "shared:     $shared"
Loren Merritt's avatar
Loren Merritt committed
413
echo "visualize:  $vis"
414
echo
415
echo "You can run 'make' or 'make fprofiled' now."
416