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