+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_DEFINE_UNQUOTED(DECLARE_WRITER_INITS, $inits, init functions of the supported writers)
+array="$(for i in $writers; do printf '{.init = '$i'_write_init},'; done)"
+AC_DEFINE_UNQUOTED(WRITER_ARRAY, $array, array of supported writers)
+######################################################################## audioc
+audioc_cmdline_objs="audioc"
+audioc_errlist_objs="
+ audioc
+ string
+ net
+ fd
+ version
+ ggo
+"
+if test "$have_readline" = "yes"; then
+ audioc_errlist_objs="$audioc_errlist_objs
+ buffer_tree
+ interactive
+ sched
+ time
+ "
+fi
+audioc_objs="add_cmdline($audioc_cmdline_objs) $audioc_errlist_objs"
+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)
+############################################################# error2.h
+# these are always built
+all_errlist_objs="
+ $recv_errlist_objs
+ $filter_errlist_objs
+ $audioc_errlist_objs
+ $write_errlist_objs
+ $afh_errlist_objs
+ $play_errlist_objs
+"
+
+# optional executables
+if test "$build_server" = "yes"; then
+ all_errlist_objs="$all_errlist_objs $server_errlist_objs"
+fi
+if test "$build_gui" = "yes"; then
+ all_errlist_objs="$all_errlist_objs $gui_errlist_objs"
+fi
+if test "$build_fade" = "yes"; then
+ all_errlist_objs="$all_errlist_objs $fade_errlist_objs"
+fi
+if test "$build_client" = "yes"; then
+ all_errlist_objs="$all_errlist_objs $client_errlist_objs"
+fi
+if test "$build_audiod" = "yes"; then
+ all_errlist_objs="$all_errlist_objs $audiod_errlist_objs"
+fi
+
+all_errlist_objs="$(echo $all_errlist_objs | tr ' ' '\n' | sort | uniq)"
+
+object_executable_matrix=
+for i in $executables; do
+ eval objs=\$${i}_errlist_objs
+ object_executable_matrix="$object_executable_matrix $i: $objs"
+done
+# use echo to replace newlines by space
+AC_SUBST(object_executable_matrix, $(echo $object_executable_matrix))
+
+for obj in $all_errlist_objs; do
+ SS="$SS SS_$(echo $obj | tr 'a-z' 'A-Z'),"
+done
+AC_DEFINE_UNQUOTED(DEFINE_ERRLIST_OBJECT_ENUM,
+ [enum {$SS NUM_SS}],
+ [list of all objects that use the paraslash error facility]
+)
+################################################################## status items
+
+status_items="basename status num_played mtime bitrate frequency file_size
+status_flags format score techinfo afs_mode
+attributes_txt decoder_flags audiod_status play_time attributes_bitmap
+offset seconds_total stream_start current_time audiod_uptime image_id
+lyrics_id duration directory lyrics_name image_name path hash channels
+last_played num_chunks chunk_time amplification artist title year album
+comment"
+
+result=
+for i in $status_items; do
+ result="$result SI_$(echo $i | tr 'a-z' 'A-Z'), "
+done
+AC_DEFINE_UNQUOTED(STATUS_ITEM_ENUM, [$result],
+ [enum of all status items])
+
+result=
+for i in $status_items; do
+ result="$result \"$i\", "
+done
+AC_DEFINE_UNQUOTED(STATUS_ITEM_ARRAY, [$result],
+ [char * array of all status items])
+
+AC_DEFINE_UNQUOTED(AUDIO_FORMAT_HANDLERS, "$audio_format_handlers",
+ [formats supported by para_server and para_afh])
+
+AC_SUBST(executables)
+
+filter_objs="add_cmdline($filter_cmdline_objs) $filter_errlist_objs"
+audiod_objs="add_cmdline($audiod_cmdline_objs) $audiod_errlist_objs"
+client_objs="add_cmdline($client_cmdline_objs) $client_errlist_objs"
+
+AC_SUBST(filter_objs, add_dot_o($filter_objs))
+AC_DEFINE_UNQUOTED(INIT_FILTER_ERRLISTS,
+ objlist_to_errlist($filter_errlist_objs), errors used by para_filter)
+
+AC_SUBST(audiod_objs, add_dot_o($audiod_objs))
+AC_SUBST(audiod_ldflags, $audiod_ldflags)
+AC_DEFINE_UNQUOTED(INIT_AUDIOD_ERRLISTS, objlist_to_errlist($audiod_errlist_objs),
+ errors used by para_audiod)