configure 7.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 "  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS"
Loren Merritt's avatar
Loren Merritt committed
18
19
20
21
22
23
echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS"
echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS"
echo ""
exit 1
fi

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

Loren Merritt's avatar
Loren Merritt committed
36
37
rm -f config.h config.mak x264.pc

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

45
46
47
avis_input="auto"
mp4_output="auto"
pthread="auto"
48
debug="no"
49
gprof="no"
Loren Merritt's avatar
Loren Merritt committed
50
vfw="no"
Loren Merritt's avatar
Loren Merritt committed
51
vis="no"
Loren Merritt's avatar
Loren Merritt committed
52

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

AS="nasm"
ASFLAGS="-f elf"

Loren Merritt's avatar
Loren Merritt committed
61
62
EXE=""

63
64
65
66
67
68
69
70
UNAMES="`uname -s`"
case "$UNAMES" in
  BeOS)
    SYS="BEOS"
    CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
    ;;
  Darwin)
    SYS="MACOSX"
71
    CFLAGS="$CFLAGS -falign-loops=16"
72
73
74
75
76
77
    LDFLAGS="$LDFLAGS -lm -lmx"
    ;;
  FreeBSD)
    SYS="FREEBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
78
79
80
81
  NetBSD)
    SYS="NETBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
82
83
84
85
86
  Linux)
    SYS="LINUX"
    CFLAGS="$CFLAGS -DHAVE_MALLOC_H"
    LDFLAGS="$LDFLAGS -lm"
    ;;
Eric Petit's avatar
Eric Petit committed
87
88
89
90
91
  CYGWIN*)
    SYS="CYGWIN"
    CFLAGS="$CFLAGS -mno-cygwin"
    LDFLAGS="$LDFLAGS -mno-cygwin"
    ASFLAGS="-f win32 -DPREFIX"
Loren Merritt's avatar
Loren Merritt committed
92
    EXE=".exe"
93
    DEVNULL="NUL"
94
    vfw="yes"
Eric Petit's avatar
Eric Petit committed
95
    ;;
96
97
  MINGW*)
    SYS="MINGW"
Loren Merritt's avatar
Loren Merritt committed
98
    ASFLAGS="-f win32 -DPREFIX"
Loren Merritt's avatar
Loren Merritt committed
99
    EXE=".exe"
100
    DEVNULL="NUL"
101
    vfw="yes"
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
120
121
122
123
    if [ $SYS != MACOSX ]
    then
      # No optims on OS X / Intel yet because of nasm limitations
      CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
    fi
124
    ;;
Måns Rullgård's avatar
Måns Rullgård committed
125
126
  x86_64)
    ARCH="X86_64"
Loren Merritt's avatar
Loren Merritt committed
127
128
129
    CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2"
    AS="yasm"
    ASFLAGS="-f elf -m amd64"
Måns Rullgård's avatar
Måns Rullgård committed
130
    ;;
131
132
133
134
135
136
137
138
139
  "Power Macintosh"|ppc)
    ARCH="PPC"
    if [ $SYS = MACOSX ]
    then
      CFLAGS="$CFLAGS -faltivec"
    else
      CFLAGS="$CFLAGS -maltivec -mabi=altivec"
    fi
    ;;
140
  sun4m|sun4d|sparc|sparc64)
141
142
    ARCH="Sparc"
    ;;
143
144
145
146
147
148
149
  sun4u)
    ARCH="UltraSparc"
    CFLAGS="$CFLAGS -mcpu=ultrasparc"
    LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
    AS="as"
    ASFLAGS="-xarch=v8plusa"
    ;;
150
151
152
  ia64)
    ARCH="IA64"
    ;;
153
154
155
  alpha)
    ARCH="ALPHA"
    ;;
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
  mips|mipsel)
    ARCH="MIPS"
    ;;
  m68k)
    ARCH="M68K"
    ;;
  arm)
    ARCH="ARM"
    ;;
  s390|s390x)
    ARCH="S390"
    ;;
  parisc|parisc64)
    ARCH="PARISC"
    ;;
171
172
173
174
175
176
177
178
  *)
    echo "Unknown platform $UNAMEM, edit the configure"
    exit 1
    ;;
esac

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

Loren Merritt's avatar
Loren Merritt committed
179
180
181
# parse options

for opt do
182
    optarg="${opt#*=}"
Loren Merritt's avatar
Loren Merritt committed
183
    case "$opt" in
184
185
186
187
        --prefix=*)
            prefix="$optarg"
            ;;
        --exec-prefix=*)
Loren Merritt's avatar
Loren Merritt committed
188
            exec_prefix="$optarg"
189
190
191
192
193
194
195
196
197
198
            ;;
        --bindir=*)
            bindir="$optarg"
            ;;
        --libdir=*)
            libdir="$optarg"
            ;;
        --includedir=*)
            includedir="$optarg"
            ;;
Loren Merritt's avatar
Loren Merritt committed
199
        --enable-avis-input)
200
201
202
203
            avis_input="yes"
            ;;
        --disable-avis-input)
            avis_input="no"
Loren Merritt's avatar
Loren Merritt committed
204
205
            ;;
        --enable-mp4-output)
206
            mp4_output="yes"
Loren Merritt's avatar
Loren Merritt committed
207
            ;;
208
209
210
        --disable-mp4-output)
            mp4_output="no"
            ;;
211
212
213
        --extra-asflags=*)
            ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}"
            ;;
Loren Merritt's avatar
Loren Merritt committed
214
215
216
        --extra-cflags=*)
            CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
            VFW_CFLAGS="${opt#--extra-cflags=}"
Loren Merritt's avatar
Loren Merritt committed
217
            ;;
Loren Merritt's avatar
Loren Merritt committed
218
219
220
        --extra-ldflags=*)
            LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
            VFW_LDFLAGS="${opt#--extra-ldflags=}"
Loren Merritt's avatar
Loren Merritt committed
221
            ;;
Loren Merritt's avatar
Loren Merritt committed
222
223
        --enable-pthread)
            pthread="yes"
224
225
226
            ;;
        --disable-pthread)
            pthread="no"
Loren Merritt's avatar
Loren Merritt committed
227
            ;;
228
229
230
231
        --enable-debug)
            CFLAGS="$CFLAGS -g"
            debug="yes"
            ;;
232
233
234
235
236
        --enable-gprof)
            CFLAGS="$CFLAGS -pg"
            LDFLAGS="$LDFLAGS -pg"
            gprof="yes"
            ;;
Loren Merritt's avatar
Loren Merritt committed
237
238
239
        --enable-vfw)
            vfw="yes"
            ;;
240
241
242
        --disable-vfw)
            vfw="no"
            ;;
Loren Merritt's avatar
Loren Merritt committed
243
244
245
246
247
        --enable-visualize)
            LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
            CFLAGS="$CFLAGS -DVISUALIZE=1"
            vis="yes"
            ;;
Loren Merritt's avatar
Loren Merritt committed
248
249
250
251
252
253
        *)
            echo "Unknown option $opt, ignored"
            ;;
    esac
done

254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# 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
    CFLAGS="$CFLAGS -DHAVE_PTHREAD=1"
    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
286
    echo "#define MP4_OUTPUT" >> config.h
287
288
289
290
291
292
293
294
295
296
297
    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
298
    echo "#define AVIS_INPUT" >> config.h
299
300
301
    LDFLAGS="$LDFLAGS -lvfw32"
fi

302
if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
Loren Merritt's avatar
Loren Merritt committed
303
    CFLAGS="$CFLAGS -s -fomit-frame-pointer"
Loren Merritt's avatar
Loren Merritt committed
304
    LDFLAGS="$LDFLAGS -s"
Loren Merritt's avatar
Loren Merritt committed
305
    VFW_LDFLAGS="$VFW_LDFLAGS -s"
306
307
fi

Loren Merritt's avatar
Loren Merritt committed
308
309
310
311
312
313
314
315
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

316
317
# generate config files

318
cat > config.mak << EOF
319
prefix=$prefix
Loren Merritt's avatar
Loren Merritt committed
320
exec_prefix=$exec_prefix
321
322
323
bindir=$bindir
libdir=$libdir
includedir=$includedir
324
325
326
327
328
329
330
ARCH=$ARCH
SYS=$SYS
CC=$CC
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
AS=$AS
ASFLAGS=$ASFLAGS
Loren Merritt's avatar
Loren Merritt committed
331
VFW=$vfw
Loren Merritt's avatar
Loren Merritt committed
332
EXE=$EXE
Loren Merritt's avatar
Loren Merritt committed
333
VIS=$vis
334
HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
335
DEVNULL=$DEVNULL
336
CONFIGURE_ARGS=$@
337
338
EOF

Eric Petit's avatar
Eric Petit committed
339
if [ "$vfw" = "yes" ]; then
Loren Merritt's avatar
Loren Merritt committed
340
    rm -f vfw/build/cygwin/config.mak
Loren Merritt's avatar
Loren Merritt committed
341
342
343
344
    cat > vfw/build/cygwin/config.mak << EOF
CFLAGS=$VFW_CFLAGS
LDFLAGS=$VFW_LDFLAGS
EOF
Loren Merritt's avatar
Loren Merritt committed
345
346
347
    echo "default: x264vfw.dll" >> config.mak
fi

348
349
./version.sh

Loren Merritt's avatar
Loren Merritt committed
350
351
352
353
354
355
356
357
cat > x264.pc << EOF
prefix=$prefix
exec_prefix=$exec_prefix
libdir=$libdir
includedir=$includedir

Name: x264
Description: H.264 (MPEG4 AVC) encoder library
358
Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//')
Loren Merritt's avatar
Loren Merritt committed
359
360
361
362
363
Libs: -L$libdir -lx264
Cflags: -I$includedir
EOF


Loren Merritt's avatar
Loren Merritt committed
364
365
366
367
echo "Platform:   $ARCH"
echo "System:     $SYS"
echo "avis input: $avis_input"
echo "mp4 output: $mp4_output"
Loren Merritt's avatar
Loren Merritt committed
368
echo "pthread:    $pthread"
Loren Merritt's avatar
Loren Merritt committed
369
echo "vfw:        $vfw"
370
echo "debug:      $debug"
371
echo "gprof:      $gprof"
Loren Merritt's avatar
Loren Merritt committed
372
echo "visualize:  $vis"
373
echo
374
echo "You can run 'make' or 'make fprofiled' now."
375