]> git.sesse.net Git - mlt/blob - configure
Enable build on NetBSD (3090684)
[mlt] / configure
1 #!/bin/sh
2
3 export version=0.6.1
4 export soversion=3
5
6 show_help()
7 {
8         cat << EOF
9 Non-autotool config script for MLT.
10
11 Help options:
12
13   --help                  - this information
14
15 General build options:
16
17   --prefix=directory      - install prefix for path (default: $prefix)
18   --libdir=directory      - lib directory (default: $prefix/lib)
19   --datadir=directory     - data directory (default: $prefix/share)
20   --mandir=directory      - man documentation directory (default: $prefix/share/man)
21   --enable-gpl            - Enable GPL components
22   --disable-debug         - Compile without debug support (default: on)
23   --disable-mmx           - Compile without MMX support (default: on)
24   --disable-sse           - Compile without SSE support (default: on)
25   --disable-sse2          - Compile without SSE2 support (default: on)
26   --arch='arch'           - Compile for a specific architecture (default: none)
27   --cpu='cpu'             - Compile for a specific CPU (default: none)
28
29 Module disable options:
30
31 EOF
32
33         for i in src/modules/*
34         do
35                 [ -d $i ] && [ "`basename $i`" != "CVS" ] && echo `basename $i` `[ -f $i/gpl ] && echo [GPL]`
36         done |
37         awk '{ printf( "  --disable-%-14.14s- Disable the %s module %s\n", $1, $1, $2 ); }'
38
39         echo
40         echo "  NOTE: libraries marked [GPL] will not be built unless --enable-gpl is stipulated."
41         echo
42 }
43
44 build_config()
45 {
46         (
47                 echo "version=$version"
48                 echo "soversion=$soversion"
49                 echo "prefix=$prefix"
50                 echo "libdir=$libdir"
51                 echo "bindir=$prefix/bin"
52                 echo "datadir=$datadir"
53                 echo "mandir=$mandir"
54                 echo "targetos=$targetos"
55
56                 [ "$mmx" = "true" ] && 
57                 echo "MMX_FLAGS=-DUSE_MMX"
58
59                 [ "$sse" = "true" ] && 
60                 echo "SSE_FLAGS=-DUSE_SSE"
61
62                 [ "$sse2" = "true" ] && 
63                 echo "SSE2_FLAGS=-DUSE_SSE2"
64
65                 [ "$debug" = "true" ] && 
66                 echo "DEBUG_FLAGS=-g"
67
68                 echo "LARGE_FILE=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
69
70                 [ "$arch" != "" ] && echo "TARGETARCH=-march=$arch"
71                 [ "$cpu" != "" ] && echo "TARGETCPU=-mcpu=$cpu"
72                 echo "OPTIMISATIONS=-O2 -pipe -fomit-frame-pointer"
73
74                 echo "CFLAGS+=-Wall -fPIC -DPIC \$(TARGETARCH) \$(TARGETCPU) \$(OPTIMISATIONS) \$(MMX_FLAGS) \$(SSE_FLAGS) \$(SSE2_FLAGS) \$(DEBUG_FLAGS) \$(LARGE_FILE)"
75
76                 case $targetos in
77                 Darwin)
78                 sysctl -a hw | grep "x86_64: 1" > /dev/null && echo "ARCH_X86_64=1" && echo "CFLAGS+=-DARCH_X86_64"
79                 echo "CFLAGS+=-D__DARWIN__ `sdl-config --cflags`"
80                 echo "SHFLAGS=-dynamiclib"
81                 echo "LDFLAGS+=`sdl-config --libs`"
82                 ;;
83                 Linux)
84                 [ "$(uname -m)" = "x86_64" ] && echo "ARCH_X86_64=1" && echo "CFLAGS+=-DARCH_X86_64"
85                 echo "OPTIMISATIONS+=-ffast-math"
86                 echo "CFLAGS+=-pthread"
87                 echo "SHFLAGS=-shared"
88                 echo "LIBDL=-ldl"
89                 echo "RDYNAMIC=-rdynamic"
90                 echo "LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed"
91                 ;;
92                 FreeBSD)
93                 [ "$(uname -m)" = "x86_64" ] && echo "ARCH_X86_64=1" && echo "CFLAGS+=-DARCH_X86_64"
94                 echo "OPTIMISATIONS+=-ffast-math"
95                 echo "CFLAGS+=-pthread"
96                 echo "SHFLAGS=-shared"
97                 echo "RDYNAMIC=-rdynamic"
98                 echo "LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed"
99                 ;;
100                 NetBSD)
101                 [ "$(uname -m)" = "amd64" ] && echo "ARCH_X86_64=1" && echo "CFLAGS+=-DARCH_X86_64"
102                 echo "OPTIMISATIONS+=-ffast-math"
103                 echo "CFLAGS+=-pthread"
104                 echo "SHFLAGS=-shared"
105                 echo "RDYNAMIC=-rdynamic"
106                 echo "LDFLAGS+=-Wl,--no-undefined -Wl,--as-needed"
107                 ;;
108                 *)
109                 ;;
110                 esac
111                 echo "LIBSUF=$LIBSUF"
112         ) > config.mak
113
114         echo "#!/bin/sh" > mlt-config
115         (
116                 echo export version=$version
117                 echo export prefix=$prefix
118                 echo export libdir=$libdir
119                 echo export bindir=$prefix/bin
120         ) >> mlt-config
121
122         cat < mlt-config-template >> mlt-config
123
124         echo -n > packages.dat
125 }
126
127 build_pkgconfig()
128 {
129         echo prefix="$prefix" > mlt-framework.pc
130         (
131                 echo exec_prefix=$prefix
132                 echo libdir=$libdir
133                 echo includedir=$prefix/include
134                 echo datadir=$datadir
135                 echo mandir=$mandir
136                 echo version=$version
137                 echo cflags=`grep ^framework packages.dat | cut -f 2`
138                 echo libs=`grep ^framework packages.dat | cut -f 3`
139         ) >> mlt-framework.pc
140         cat mlt-framework.pc.in >>mlt-framework.pc
141
142         echo prefix="$prefix" > mlt++.pc
143         (
144                 echo exec_prefix=$prefix
145                 echo libdir=$libdir
146                 echo includedir=$prefix/include
147                 echo datadir=$datadir
148                 echo mandir=$mandir
149                 echo version=$version
150                 echo cflags=`grep ^mlt++ packages.dat | cut -f 2`
151                 echo libs=`grep ^mlt++ packages.dat | cut -f 3`
152         ) >> mlt++.pc
153         cat mlt++.pc.in >>mlt++.pc
154 }
155
156 # Debug mode
157 set +x
158
159 # Define build directory for scripts called
160 export build_dir=`dirname $0`
161 export prefix=/usr/local
162 export libdir=""
163 export datadir=""
164 export mandir=""
165 export help=0
166 export debug=true
167 export mmx=true
168 export sse=true
169 export sse2=true
170 export gpl=false
171 export arch=
172 export cpu=
173 export targetos=
174
175 # Determine OS
176 targetos=$(uname -s)
177 # Chose appropriate suffix for libraries
178 case $targetos in
179         Darwin)
180         LIBSUF=".dylib"
181         ;;
182         Linux|FreeBSD|NetBSD)
183         LIBSUF=".so"
184         ;;
185         *)
186         LIBSUF=".so"
187         ;;
188 esac
189 export LIBSUF
190
191 # Iterate through arguments
192 for i in "$@"
193 do
194         case $i in
195                 --help )                        help=1 ;;
196                 --prefix=* )            prefix="${i#--prefix=}" ;;
197                 --libdir=* )            libdir="${i#--libdir=}" ;;
198                 --datadir=* )           datadir="${i#--datadir=}" ;;
199                 --mandir=* )            mandir="${i#--mandir=}" ;;
200                 --disable-debug )       debug=false ;;
201                 --disable-mmx )         mmx=false; sse=false; sse2=false ;;
202                 --disable-sse )         sse=false; sse2=false ;;
203                 --disable-sse2 )        sse2=false ;;
204                 --enable-gpl )          gpl=true ;;
205                 --arch=* )                      arch="${i#--arch=}" ;;
206                 --cpu=* )                       cpu="${i#--cpu=}" ;;
207         esac
208 done
209
210 # Determine the libdir if it's not specified in the args
211 [ "$libdir" = "" ] && libdir=$prefix/lib
212 [ "$datadir" = "" ] && datadir=$prefix/share
213 [ "$mandir" = "" ] && mandir=$prefix/share/man
214
215 # Double check MMX (Darwin, Linux and FreeBSD supported, may end up disabling MMX on other platforms incorrectly)
216 if [ "$mmx" = "true" ]
217 then
218         case $targetos in
219                 Darwin)
220                 sysctl -a hw | grep "mmx: 1" > /dev/null || mmx=false
221                 ;;
222                 Linux)
223                 grep mmx /proc/cpuinfo > /dev/null 2>&1 || mmx=false
224                 ;;
225                 FreeBSD)
226                 [ "$(make -V MACHINE_CPU:Mmmx)" ] || mmx=false
227                 ;;
228                 *)
229                 grep mmx /proc/cpuinfo > /dev/null 2>&1 || mmx=false
230                 ;;
231         esac
232 fi
233
234 # Double check SSE (Darwin, Linux and FreeBSD supported, may end up disabling SSE on other platforms incorrectly)
235 if [ "$sse" = "true" ]
236 then
237         case $targetos in
238                 Darwin)
239                 sysctl -a hw | grep "sse: 1" > /dev/null || sse=false
240                 ;;
241                 Linux)
242                 grep sse /proc/cpuinfo > /dev/null 2>&1 || sse=false
243                 ;;
244                 FreeBSD)
245                 [ "$(make -V MACHINE_CPU:Msse)" ] || sse=false
246                 ;;
247                 *)
248                 grep sse /proc/cpuinfo > /dev/null 2>&1 || sse=false
249                 ;;
250         esac
251 fi
252
253 # Double check SSE2 (Darwin, Linux and FreeBSD supported, may end up disabling SSE2 on other platforms incorrectly)
254 if [ "$sse2" = "true" ]
255 then
256         case $targetos in
257                 Darwin)
258                 sysctl -a hw | grep "sse2: 1" > /dev/null || sse2=false
259                 ;;
260                 Linux)
261                 grep sse2 /proc/cpuinfo > /dev/null 2>&1 || sse2=false
262                 ;;
263                 FreeBSD)
264                 [ "$(make -V MACHINE_CPU:Msse2)" ] || sse2=false
265                 ;;
266                 *)
267                 grep sse2 /proc/cpuinfo > /dev/null 2>&1 || sse2=false
268                 ;;
269         esac
270 fi
271
272 # Show help if requested
273 if [ $help = 1 ]
274 then
275         show_help
276 else
277         # Log the configuration history
278         date >> config.log
279         echo "$0 $@" >> config.log
280
281         build_config
282 fi
283
284 # Iterate through each of the components
285 for i in framework modules melt mlt++ swig
286 do
287         if [ -x src/$i/configure ]
288         then
289                 [ $help = 0 ] && echo "Configuring `basename $i`:"
290                 olddir=`pwd`
291                 cd src/$i
292                 ./configure "$@"
293                 [ $? != 0 ] && exit 1
294                 cd $olddir
295         fi
296 done
297
298 # Build the pkg-config files
299 build_pkgconfig
300
301 # Report GPL Usage
302 [ $help != 1 ] && 
303 ( [ "$gpl" = "false" ] && 
304 echo "GPL Components are disabled" || 
305 echo "GPL License Used" )