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 afs_command_list"
+server_errlist_objs="server mp3_afh vss command net string signal random_selector
+ time daemon stat crypt http_send afs_common close_on_fork playlist_selector
+ ipc dccp dccp_send fd user_list chunk_queue afs osl aft mood score attribute
+ blob playlist sha1 rbtree sched"
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"
client_ldflags=""
+fsck_cmdline_objs="fsck.cmdline"
+fsck_errlist_objs="osl rbtree fsck string sha1 fd"
+
+
########################################################################### ssl
dnl @synopsis CHECK_SSL
dnl
server_ldflags="$srver_ldflags $SSL_LDFLAGS $SSL_LIBS"
client_ldflags="$client_ldflags $SSL_LDFLAGS $SSL_LIBS"
audiod_ldflags="$audiod_ldflags $SSL_LDFLAGS $SSL_LIBS"
+fsck_ldflags="$fsck_ldflags $SSL_LDFLAGS $SSL_LIBS"
########################################################################### ucred
AC_MSG_CHECKING(for struct ucred)
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"], [
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])
if test "$have_ogg" = "yes"; then
AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg vorbis support)
filters="$filters oggdec"
+ 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"
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"
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"
server_objs="$server_cmdline_objs $server_errlist_objs"
write_objs="$write_cmdline_objs $write_errlist_objs"
client_objs="$client_cmdline_objs $client_errlist_objs"
+fsck_objs="$fsck_cmdline_objs $fsck_errlist_objs"
audioc_objs="$audioc_cmdline_objs $audioc_errlist_objs"
AC_SUBST(recv_objs, add_dot_o($recv_objs))
AC_DEFINE_UNQUOTED(INIT_CLIENT_ERRLISTS,
objlist_to_errlist($client_errlist_objs), errors used by para_client)
+AC_SUBST(fsck_objs, add_dot_o($fsck_objs))
+AC_SUBST(fsck_ldflags, $fsck_ldflags)
+AC_DEFINE_UNQUOTED(INIT_FSCK_ERRLISTS,
+ objlist_to_errlist($fsck_errlist_objs), errors used by para_fsck)
+
AC_SUBST(audioc_objs, add_dot_o($audioc_objs))
AC_DEFINE_UNQUOTED(INIT_AUDIOC_ERRLISTS,
objlist_to_errlist($audioc_errlist_objs), errors used by para_audioc)
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)"