]> git.sesse.net Git - vlc/blob - m4/vlc.m4
08e7ec51244f3bc9fab901b50e40c8d9a28cf3df
[vlc] / m4 / vlc.m4
1 dnl  Macros needed for VLC
2 dnl  $Id$
3
4 dnl ===========================================================================
5 dnl  Macros to add plugins or builtins and handle their flags
6
7 AC_DEFUN([VLC_ADD_BUILTINS], [
8   BUILTINS="${BUILTINS} $1"
9 ])
10
11 AC_DEFUN([VLC_ADD_PLUGINS], [
12   PLUGINS="${PLUGINS} $1"
13 ])
14
15 dnl  Special cases: vlc, pics, plugins, save
16 AC_DEFUN([VLC_ADD_CPPFLAGS], [
17   for element in [$1]; do
18     eval "CPPFLAGS_${element}="'"$'"{CPPFLAGS_${element}} $2"'"'
19     am_modules_with_cppflags="${am_modules_with_cppflags} ${element}"
20   done
21 ])
22
23 AC_DEFUN([VLC_ADD_CFLAGS], [
24   for element in [$1]; do
25     eval "CFLAGS_${element}="'"$'"{CFLAGS_${element}} $2"'"'
26     am_modules_with_cflags="${am_modules_with_cflags} ${element}"
27   done
28 ])
29
30 AC_DEFUN([VLC_ADD_CXXFLAGS], [
31   for element in [$1]; do
32     eval "CXXFLAGS_${element}="'"$'"{CXXFLAGS_${element}} $2"'"'
33     am_modules_with_cxxflags="${am_modules_with_cxxflags} ${element}"
34   done
35 ])
36
37 AC_DEFUN([VLC_ADD_OBJCFLAGS], [
38   for element in [$1]; do
39     eval "OBJCFLAGS_${element}="'"$'"{OBJCFLAGS_${element}} $2"'"'
40     am_modules_with_objcflags="${am_modules_with_objcflags} ${element}"
41   done
42 ])
43
44 AC_DEFUN([VLC_ADD_LDFLAGS], [
45   for element in [$1]; do
46     eval "LDFLAGS_${element}="'"'"$2 "'$'"{LDFLAGS_${element}} "'"'
47     am_modules_with_ldflags="${am_modules_with_ldflags} ${element}"
48   done
49 ])
50
51 dnl ===========================================================================
52 dnl  Macros to save and restore default flags
53
54 AC_DEFUN([VLC_SAVE_FLAGS], [
55   CPPFLAGS_save="${CPPFLAGS}"
56   CFLAGS_save="${CFLAGS}"
57   CXXFLAGS_save="${CXXFLAGS}"
58   OBJCFLAGS_save="${OBJCFLAGS}"
59   LDFLAGS_save="${LDFLAGS}"
60 ])
61
62 AC_DEFUN([VLC_RESTORE_FLAGS], [
63   CPPFLAGS="${CPPFLAGS_save}"
64   CFLAGS="${CFLAGS_save}"
65   CXXFLAGS="${CXXFLAGS_save}"
66   OBJCFLAGS="${OBJCFLAGS_save}"
67   LDFLAGS="${LDFLAGS_save}"
68 ])
69
70 dnl ===========================================================================
71 dnl  Helper macro to generate the vlc-config.in file
72
73 AC_DEFUN([VLC_OUTPUT_VLC_CONFIG_IN], [
74
75   AC_MSG_RESULT(configure: creating ./vlc-config.in)
76
77   am_all_modules="`for x in ${am_modules_with_cppflags} ${am_modules_with_cflags} ${am_modules_with_cxxflags} ${am_modules_with_objcflags} ${am_modules_with_ldflags}; do echo $x; done | sort | uniq`"
78
79   rm -f vlc-config.in
80   sed -ne '/#@1@#/q;p' < "${srcdir}/vlc-config.in.in" \
81     | sed -e "s/@gprof@/${enable_gprof}/" \
82           -e "s/@cprof@/${enable_cprof}/" \
83           -e "s/@optim@/${enable_optimizations}/" \
84           -e "s/@debug@/${enable_debug}/" \
85           -e "s/@release@/${enable_release}/" \
86           -e "s/@PLUGINS@/${PLUGINS}/" \
87           -e "s/@BUILTINS@/${BUILTINS}/" \
88           -e "s/@CFLAGS_TUNING@/${CFLAGS_TUNING}/" \
89           -e "s/@CFLAGS_OPTIM@/${CFLAGS_OPTIM}/" \
90           -e "s/@CFLAGS_OPTIM_NODEBUG@/${CFLAGS_OPTIM_NODEBUG}/" \
91           -e "s/@CFLAGS_NOOPTIM@/${CFLAGS_NOOPTIM}/" \
92     > vlc-config.in
93
94   dnl  Switch/case loop
95   for x in `echo ${am_all_modules}`
96   do [
97     echo "    ${x})" >> vlc-config.in
98     if test "`eval echo @'$'CPPFLAGS_${x}@`" != "@@"; then
99       echo "      cppflags=\"\${cppflags} `eval echo '$'CPPFLAGS_${x}`\"" >> vlc-config.in
100     fi
101     if test "`eval echo @'$'CFLAGS_${x}@`" != "@@"; then
102       echo "      cflags=\"\${cflags} `eval echo '$'CFLAGS_${x}`\"" >> vlc-config.in
103     fi
104     if test "`eval echo @'$'CXXFLAGS_${x}@`" != "@@"; then
105       echo "      cxxflags=\"\${cxxflags} `eval echo '$'CXXFLAGS_${x}`\"" >> vlc-config.in
106       if test "${x}" != "plugin" -a "${x}" != "builtin"; then
107         echo "      linkage=\"c++\"" >> vlc-config.in
108       fi
109     fi
110     if test "`eval echo @'$'OBJCFLAGS_${x}@`" != "@@"; then
111       echo "      objcflags=\"\${objcflags} `eval echo '$'OBJCFLAGS_${x}`\"" >> vlc-config.in
112       if test "${x}" != "plugin" -a "${x}" != "builtin"; then
113         echo "      if test \"\${linkage}\" = \"c\"; then linkage=\"objc\"; fi" >> vlc-config.in
114       fi
115     fi
116     if test "`eval echo @'$'LDFLAGS_${x}@`" != "@@"; then
117       echo "      ldflags=\"\${ldflags} `eval echo '$'LDFLAGS_${x}`\"" >> vlc-config.in
118     fi
119     echo "    ;;" >> vlc-config.in
120   ] done
121
122   dnl  '/#@1@#/,/#@2@#/{/#@.@#/d;p}' won't work on OS X
123   sed -ne '/#@1@#/,/#@2@#/p' < "${srcdir}/vlc-config.in.in" \
124    | sed -e '/#@.@#/d' >> vlc-config.in
125
126   VLC_CONFIG_HELPER
127
128   dnl  '/#@2@#/,${/#@.@#/d;p}' won't work on OS X
129   sed -ne '/#@2@#/,$p' < "${srcdir}/vlc-config.in.in" \
130    | sed -e '/#@.@#/d' >> vlc-config.in
131 ])
132
133 dnl ===========================================================================
134 dnl  Macros for shared object handling (TODO)
135
136 AC_DEFUN([VLC_LIBRARY_SUFFIX], [
137   AC_MSG_CHECKING(for shared objects suffix)
138   case "${target_os}" in
139     darwin*)
140       LIBEXT=".dylib"
141       ;;
142     *mingw32* | *cygwin*)
143       LIBEXT=".dll"
144       ;;
145     hpux*)
146       LIBEXT=".sl"
147       ;;
148     *)
149       LIBEXT=".so"
150       ;;
151   esac
152   AC_MSG_RESULT(${LIBEXT})
153   AC_DEFINE_UNQUOTED(LIBEXT, "${LIBEXT}", [Dynamic object extension])
154 ])
155