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