AC_INIT(paraslash, [git], maan@systemlinux.org)
AC_CONFIG_HEADER([config.h])
-########################################################################### generic
+AC_PATH_PROG(UNAMEPATH, uname, no)
+if test "$UNAMEPATH" = "no"; then
+ AC_MSG_ERROR(unable to determine system type)
+fi
+AC_MSG_CHECKING(os type)
+OSTYPE="`$UNAMEPATH -s`"
+AC_MSG_RESULT("$OSTYPE")
+
+AC_C_BIGENDIAN()
+
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
+
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h \
- string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h sys/ipc.h unistd.h utime.h], \
+AC_CHECK_HEADERS([arpa/inet.h ctype.h fcntl.h limits.h netdb.h netinet/in.h \
+ stdlib.h string.h sys/socket.h sys/time.h sys/timeb.h sys/un.h \
+ sys/ipc.h unistd.h utime.h stddef.h],
[], [AC_MSG_ERROR([$ac_header not found])])
AC_CHECK_HEADER(linux/soundcard.h, [extras="$extras para_fade"],
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
+AC_C_INLINE
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
+AC_TYPE_INT16_T
+AC_TYPE_MODE_T
+AC_TYPE_SSIZE_T
+AC_TYPE_UID_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT8_T
# Checks for library functions.
AC_FUNC_FORK
AC_FUNC_STAT
AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_LSTAT
+
AC_CHECK_FUNCS([atexit dup2 gethostbyname inet_ntoa memchr memmove memset \
- regcomp select socket strchr strdup strerror strstr strtol uname], [],
+ regcomp select socket strchr strdup strerror strstr strtol uname \
+ fchdir gettimeofday localtime_r munmap strcasecmp strcspn \
+ strncasecmp strrchr strspn alarm], [],
[AC_MSG_ERROR([function not found, cannot live without it])])
########################################################################### curses
AC_CHECK_LIB([ncurses], [initscr], [],
audioc_errlist_objs="audioc string net fd"
audiod_cmdline_objs="audiod.cmdline grab_client.cmdline compress_filter.cmdline
- http_recv.cmdline dccp_recv.cmdline file_write.cmdline client.cmdline"
+ http_recv.cmdline dccp_recv.cmdline file_write.cmdline client.cmdline
+ audiod_command_list"
audiod_errlist_objs="audiod signal string daemon stat net
time grab_client filter_chain wav compress http_recv dccp dccp_recv
recv_common fd sched write_common file_write audiod_command crypt
audiod_ldflags=""
audiod_audio_formats=""
-server_cmdline_objs="server.cmdline"
-server_errlist_objs="server mp3_afh afs command net string signal random_selector
- time daemon stat crypt http_send db close_on_fork playlist_selector
- ipc dccp dccp_send fd"
+server_cmdline_objs="server.cmdline server_command_list random_selector_command_list
+ playlist_selector_command_list"
+server_errlist_objs="server mp3_afh vss command net string signal random_selector
+ time daemon stat crypt http_send afs close_on_fork playlist_selector
+ ipc dccp dccp_send fd user_list chunk_queue"
server_ldflags=""
server_audio_formats=" mp3"
write_errlist_objs="write write_common file_write time fd string sched stdin"
write_ldflags=""
writers=" file"
+default_writer="FILE_WRITE"
client_cmdline_objs="client.cmdline"
client_errlist_objs="client net string crypt fd sched stdin stdout client_common"
audiod_ldflags="$audiod_ldflags $SSL_LDFLAGS $SSL_LIBS"
########################################################################### ucred
-
AC_MSG_CHECKING(for struct ucred)
AC_TRY_LINK([
#include <sys/types.h>
write_cmdline_objs="$write_cmdline_objs osx_write.cmdline"
write_ldflags="$write_ldflags $f"
writers="$writers osx"
+ default_writer="OSX_WRITE"
AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
fi
########################################################################### gtk2
-
-pkg_modules="gtk+-2.0 >= 2.0.0"
build_para_krell="yes"
+OLD_CPPFLAGS="$CPPFLAGS"
+OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
+pkg_modules="gtk+-2.0 >= 2.0.0"
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.4], [], [build_para_krell="no"])
PKG_CHECK_MODULES(GTK, [$pkg_modules], [], [build_para_krell="no"])
+CPPFLAGS="$GTK_CFLAGS $GLIB_CFLAGS"
+LDFLAGS="$LDFLAGS $GTK_LIBS"
AC_CHECK_HEADER(gkrellm2/gkrellm.h, [], [build_para_krell="no"])
-if test build_para_krell = "yes"; then
+if test "$build_para_krell" = "yes"; then
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
extras="$extras para_krell.so"
else
AC_MSG_WARN([can not build para_krell])
fi
-
+CPPFLAGS="$OLD_CPPFLAGS"
+LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### sdl
# FIXME
AC_CHECK_LIB([SDL_image], [SDL_Init], [extras="$extras para_sdl_gui"], [
have_mysql="yes"
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
AC_ARG_WITH(mysql_headers, [AC_HELP_STRING(--with-mysql-headers=dir,
[look for mysql.h also in dir])])
if test -n "$with_mysql_headers"; then
selectors="$selectors mysql"
server_ldflags="$server_ldflags $mysql_libs -lmysqlclient"
server_errlist_objs="$server_errlist_objs mysql_selector"
+ server_cmdline_objs="$server_cmdline_objs mysql_selector_command_list"
AC_SUBST(mysql_cppflags)
AC_SUBST(mysql_libs)
AC_DEFINE(HAVE_MYSQL, 1, [define to 1 to turn on mysql support])
fi
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### ogg
have_ogg="yes"
-AC_CHECK_LIB([ogg], [ogg_stream_init], [], [
- have_ogg="no"
-])
-AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [
- have_ogg="no"
-])
-AC_CHECK_HEADERS([ogg/ogg.h vorbis/codec.h], [], [
- have_ogg="no"
-])
+OLD_CPPFLAGS="$CPPFLAGS"
+OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
+AC_ARG_WITH(oggvorbis_headers, [AC_HELP_STRING(--with-oggvorbis-headers=dir,
+ [look for vorbis/codec.h also in dir])])
+if test -n "$with_oggvorbis_headers"; then
+ oggvorbis_cppflags="-I$with_oggvorbis_headers"
+ CPPFLAGS="$CPPFLAGS $oggvorbis_cppflags"
+fi
+AC_ARG_WITH(oggvorbis_libs, [AC_HELP_STRING(--with-oggvorbis-libs=dir,
+ [look for oggvorbis libs also in dir])])
+if test -n "$with_oggvorbis_libs"; then
+ oggvorbis_libs="-L$with_oggvorbis_libs"
+ LDFLAGS="$LDFLAGS $oggvorbis_libs"
+fi
+
+AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
+AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_ogg="no" ])
+AC_CHECK_HEADERS([ogg/ogg.h vorbis/codec.h], [], [ have_ogg="no" ])
if test "$have_ogg" = "yes"; then
AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg vorbis support)
filters="$filters oggdec"
- server_ldflags="$server_ldflags -logg -lvorbis -lvorbisfile"
- filter_ldflags="$filter_ldflags -lvorbis -lvorbisfile"
- audiod_ldflags="$audiod_ldflags -lvorbis -lvorbisfile"
+ if test "$OSTYPE" = "Darwin"; then
+ oggvorbis_libs="-Wl,-bind_at_load $oggvorbis_libs"
+ fi
+ server_ldflags="$server_ldflags $oggvorbis_libs -logg -lvorbis -lvorbisfile"
+ filter_ldflags="$filter_ldflags $oggvorbis_libs -lvorbis -lvorbisfile"
+ audiod_ldflags="$audiod_ldflags $oggvorbis_libs -lvorbis -lvorbisfile"
filter_cmdline_objs="$filter_cmdline_objs oggdec_filter.cmdline"
audiod_cmdline_objs="$audiod_cmdline_objs oggdec_filter.cmdline"
audiod_audio_formats="ogg"
server_audio_formats="$server_audio_formats ogg"
filter_filters="$filter_filters oggdec"
+ AC_SUBST(oggvorbis_cppflags)
+ AC_SUBST(oggvorbis_libs)
else
AC_MSG_WARN([no ogg vorbis support in para_server/para_filter])
fi
+CPPFLAGS="$OLD_CPPFLAGS"
+LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### faad
have_faad=yes
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
AC_ARG_WITH(faad_headers, [AC_HELP_STRING(--with-faad-headers=dir,
[look for neaacdec.h also in dir])])
if test -n "$with_faad_headers"; then
fi
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### mad
have_mad="yes"
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
+
AC_ARG_WITH(mad_headers, [AC_HELP_STRING(--with-mad-headers=dir,
[look for mad.h also in dir])])
if test -n "$with_mad_headers"; then
fi
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### alsa
have_alsa="yes"
+OLD_CPPFLAGS="$CPPFLAGS"
+OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
msg="=> no alsa support for para_audiod/para_write"
AC_CHECK_HEADERS([alsa/asoundlib.h], [], [
AC_MSG_WARN([no alsa/asoundlib $msg])
write_cmdline_objs="$write_cmdline_objs alsa_write.cmdline"
write_ldflags="$write_ldflags -lasound"
writers="$writers alsa"
+ default_writer="ALSA_WRITE"
fi
+CPPFLAGS="$OLD_CPPFLAGS"
+LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### ortp
have_ortp="yes"
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
AC_ARG_WITH(ortp_headers, [AC_HELP_STRING(--with-ortp-headers=dir,
[look for ortp/ortp.h also in dir])])
if test -n "$with_ortp_headers"; then
fi
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
########################################################################### zmw
build_slider="yes"
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LD_FLAGS="$LDFLAGS"
+OLD_LIBS="$LIBS"
+PKG_CHECK_MODULES(GTK, [$pkg_modules], [], [build_para_slider="no"])
PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.4], [], [build_slider="no"])
CPPFLAGS="$GTK_CFLAGS $GLIB_CFLAGS"
LDFLAGS="$LDFLAGS $GTK_LIBS"
fi
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
+LIBS="$OLD_LIBS"
enum="$(for i in $writers; do printf "${i}_WRITE, " | tr '[a-z]' '[A-Z]'; done)"
AC_DEFINE_UNQUOTED(WRITER_ENUM, $enum NUM_SUPPORTED_WRITERS,
enum of supported writers)
+AC_DEFINE_UNQUOTED(DEFAULT_WRITER, $default_writer, use this writer if none was specified)
names="$(for i in $writers; do printf \"$i\",' ' ; done)"
AC_DEFINE_UNQUOTED(WRITER_NAMES, $names, supported writer names)
inits="$(for i in $writers; do printf 'extern void '$i'_write_init(struct writer *); '; done)"
AC_OUTPUT
AC_MSG_NOTICE([creating Makefile.deps])
-gcc -MM -MG $mysql_cppflags $faad_cppflags $mad_cppflags $ortp_cppflags *.c > Makefile.deps
+gcc -MM -MG $mysql_cppflags $faad_cppflags $mad_cppflags $ortp_cppflags $oggvorbis_cppflags *.c > Makefile.deps
AC_MSG_NOTICE([
paraslash configuration:
~~~~~~~~~~~~~~~~~~~~~~~~