9 years agogcrypt: Fix gcc warning on Ubuntu Lucid.
Andre Noll [Mon, 27 Jan 2014 13:35:55 +0000 (14:35 +0100)]
gcrypt: Fix gcc warning on Ubuntu Lucid.

For some reason the gcc-4.4.3 that ships with Ubuntu Lucid started
to complain recently:

gcrypt.c: In function ‘mgf1’:
gcrypt.c:101: warning: ISO C90 forbids mixed declarations and code

It turned out that a double semicolon is responsible for the
warning. This patch removes the duplicate.

9 years agoflac: Try to link also without -logg.
Andre Noll [Mon, 27 Jan 2014 12:54:49 +0000 (13:54 +0100)]
flac: Try to link also without -logg.

If libflac was compiled without ogg support, the build system should
include flac even if libogg is not installed. Currently this does
not work because the autoconf test tries to link with -logg, so it
always fails if libogg is not available.

Fix this by trying both with and without libogg.

9 years agoversion.c: Fix comment of version_single_line().
Andre Noll [Tue, 7 Jan 2014 19:13:41 +0000 (19:13 +0000)]
version.c: Fix comment of version_single_line().

Codenames are no longer used.

9 years agodoxygen: Expand all macros, in particular config.h.
Andre Noll [Mon, 20 Jan 2014 20:44:54 +0000 (21:44 +0100)]
doxygen: Expand all macros, in particular config.h.

This improves the generated documentation web pages since now all
HAVE_XXX macros of config.h are taken into account.

9 years agorecv_common.c: Improve documentation of check_receiver_arg().
Andre Noll [Wed, 8 Jan 2014 06:00:36 +0000 (06:00 +0000)]
recv_common.c: Improve documentation of check_receiver_arg().

Drop meaningless "and further are present", and note that the "real"
type of the returned pointer depends on the receiver.

9 years agoaudiod: get_time_string() comment fix.
Andre Noll [Thu, 2 Jan 2014 05:47:03 +0000 (05:47 +0000)]
audiod: get_time_string() comment fix.

9 years agoconfigure: Really print opus audio file handler if opus lib was found.
Andre Noll [Sun, 5 Jan 2014 21:59:55 +0000 (21:59 +0000)]
configure: Really print opus audio file handler if opus lib was found.

This is the second time this bug shows up. It was fixed ad0da073 but
re-introduced in the merge commit b5c6af5c. See also 40439a77.

9 years agoOverhaul doxygen main page.
Andre Noll [Fri, 3 Jan 2014 05:59:22 +0000 (05:59 +0000)]
Overhaul doxygen main page.

It got way too large, and contained quite a few links to .c files
whose doxygen page is not very interesting. For example, the doxygen
page of the .c files of filters, receivers and writers contain only
the init function since all other functions are static.

This commit limits the number of links on the main page considerably.
The new page tries to focus on important data structures and APIs
and does not strive for completeness.

9 years agoafs.h: Don't try to list all supported audio formats.
Andre Noll [Fri, 3 Jan 2014 05:52:22 +0000 (05:52 +0000)]
afs.h: Don't try to list all supported audio formats.

9 years agoChange copyright year to 2014.
Andre Noll [Wed, 1 Jan 2014 00:00:34 +0000 (00:00 +0000)]
Change copyright year to 2014.

This year, we're really on time. The changes in this patch were
created by the following silly script:

    files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2013\)* Andre Noll')
    sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2013 Andre Noll/Copyright (C) \1-2014 Andre Noll/1' $files
    sed --in-place= -e 's/Copyright (C) 2013 Andre Noll/Copyright (C) 2013-2014 Andre Noll/1' $files

9 years agoAdd link to sideband.h in doxygen main page.
Andre Noll [Sun, 29 Dec 2013 16:38:53 +0000 (16:38 +0000)]
Add link to sideband.h in doxygen main page.

It is an essential part of the client/server communication, and is
well documented to boot.

9 years agoDoxify error2.c and add GPL header.
Andre Noll [Sun, 29 Dec 2013 16:26:24 +0000 (16:26 +0000)]
Doxify error2.c and add GPL header.

Also add a link to the file in the doxygen main page.

9 years agoAdd -Wdeclaration-after-statement.
Andre Noll [Sun, 29 Dec 2013 14:53:15 +0000 (14:53 +0000)]
Add -Wdeclaration-after-statement.

We don't have (and don't want to have) declarations after
statements. This change helps to keep it this way.

9 years agoAdd some missing includes.
Andre Noll [Sun, 29 Dec 2013 14:32:43 +0000 (14:32 +0000)]
Add some missing includes.

Letting .c files include their "own" header file guarantees that the
declaration in the header file stays in sync with the definition.

Eventually we may even enable gcc's -Wmissing-declarations, but
we're not there yet, mainly due to command handlers, init functions
and completers.

Note that including signal.h in signal.c required two other includes
since the header file defines a task structure.

9 years agoMakefile.real: Add clean2 to the list of phony targets.
Andre Noll [Sun, 29 Dec 2013 13:35:07 +0000 (13:35 +0000)]
Makefile.real: Add clean2 to the list of phony targets.

We don't want to create a file named clean2.

9 years agomood.c: Fix a trivial whitespace issue.
Andre Noll [Sun, 29 Dec 2013 13:21:07 +0000 (13:21 +0000)]
mood.c: Fix a trivial whitespace issue.

9 years agoProvide new screenshots.
Andre Noll [Sun, 29 Dec 2013 13:20:41 +0000 (13:20 +0000)]
Provide new screenshots.

The old ones were more than 4 years old. There is no huge difference though.

9 years agoRemove old changelog files.
Andre Noll [Sun, 29 Dec 2013 01:45:49 +0000 (01:45 +0000)]
Remove old changelog files.

This simplifies Makefile.real a bit, and of course it's still in the
git history in case somebody is really that interested in the ancient
history of this project.

9 years agoRemove
Andre Noll [Sun, 29 Dec 2013 01:41:07 +0000 (01:41 +0000)]

The database layout hasn't changed since 0.4.0, and nobody should
run paraslash-3.x.x anymore.

9 years agoRename -> command_util.bash.
Andre Noll [Sun, 29 Dec 2013 01:39:36 +0000 (01:39 +0000)]
Rename -> command_util.bash.

It's a bash script which wouldn't run properly under general POSIX

9 years agoRemove __malloc attribute from para_realloc().
Andre Noll [Wed, 1 Jan 2014 20:14:42 +0000 (20:14 +0000)]
Remove __malloc attribute from para_realloc().

This attribute tells the compiler that the returned pointer cannot
alias any other pointer. This is not the case for para_realloc().

9 years agoweb: Remove "/" character in <br> elements.
Andre Noll [Mon, 30 Dec 2013 01:00:40 +0000 (01:00 +0000)]
web: Remove "/" character in <br> elements.

'br' is an empty element, i.e., it can take no content and it may not
have an end tag.  Indeed, the W3C Markup Validation Service complains
about this:

Line 33, Column 42: NET-enabling start-tag requires SHORTTAG YES

This bug was introduced in commit 607d79aa (web: Unify <br>
elements. 2013-08).

9 years agoNEWS: Add download links for 0.5.1.
Andre Noll [Sun, 29 Dec 2013 02:57:56 +0000 (02:57 +0000)]
NEWS: Add download links for 0.5.1.

This should have been done in the release commit of course.

9 years agoRemove trailing dot at the end of purpose texts.
Andre Noll [Sun, 29 Dec 2013 01:31:18 +0000 (01:31 +0000)]
Remove trailing dot at the end of purpose texts.

This looks ugly in the man pages where the purpose is listed in
parentheses. Most of these texts are not even full sentences.

9 years agoInclude options for receivers/filters/writer in man pages
Andre Noll [Sun, 29 Dec 2013 01:28:41 +0000 (01:28 +0000)]
Include options for receivers/filters/writer in man pages

This broke in v0.5.0 when we started to create the man pages in a
way that works also in a cross-compile setup.

This fix introduces a new script man_util.bash which does the real
work and hides all the ugliness from the Makefiles.

9 years agoMerge branch 'refs/heads/t/clang_warning_fixes'
Andre Noll [Thu, 13 Feb 2014 07:36:03 +0000 (08:36 +0100)]
Merge branch 'refs/heads/t/clang_warning_fixes'

Was cooking since 2014-01-14.

1b9e28 command.c: Silence clang warning.
994e72 udp_recv: Fix clang warning.
c853e7 aac_afh: Fix clang warning.

9 years agocommand.c: Silence clang warning.
Andre Noll [Fri, 27 Dec 2013 23:54:42 +0000 (23:54 +0000)]
command.c: Silence clang warning.

command.c:562:32: warning: Null pointer passed as an argument to a 'nonnull' parameter
        return send_sb(&cc->scc, msg, strlen(msg), SBD_OUTPUT, false);

Harmless, the newly added assert() makes scan-build STFU.

9 years agoreset version to 'git'
Andre Noll [Fri, 20 Dec 2013 13:15:24 +0000 (14:15 +0100)]
reset version to 'git'

9 years agoparaslash 0.5.1 v0.5.1
Andre Noll [Fri, 20 Dec 2013 13:12:07 +0000 (14:12 +0100)]
paraslash 0.5.1

9 years agoMerge branch 't/build_system_overhaul'
Andre Noll [Fri, 20 Dec 2013 12:39:49 +0000 (13:39 +0100)]
Merge branch 't/build_system_overhaul'

This topic was quite some PITA to maintain since its commits heavily
conflict with the changes of all other topic branches which touch
the build system. Cooking since 2013-12-01 and tested on FreeBSD,
NetBSD and on different Linux systems.

abb080 Rebuild error2.h on Makefile changes.
71b616 manual: Move crypt library to the list of optional packages.
185c67 build: Don't insist on curses for CLI support.
474d4d build: Rewrite objlist_to_errlist().
1453e8 build: Reorder Makefile.real.
7fb39c build: Split
d0ddd2 build: Reorder variables in
61cc38 build: Add Make variable for clock_gettime_ldflags.
976651 build: Add Make variable for PACKAGE_TARNAME.
19b0d3 build: Introduce Make variables for objects.
fe7666 build: Combine link rules.
2440c4 build: Introduce $prefixed_executables.
2f113b build: Combine rules for object files.
761d9b build: Define Make variables for cppflags.
386572 build: Remove two unused variables from
40439a build: Collect audio format handlers in afh section.
e926e8 build: Move relevant parts to filter section.
b399d6 build: Move relevant parts to gui section.
1781cc build: Move relevant parts to fade section.
0f4790 build: Move relevant parts to audiod section.
4e9788 build: Move relevant parts to client section.
0c8626 build: Move relevant parts to server section.
755904 build: Create section for para_audioc.
d952d6 build: Create section for para_write.
9734df build: Create section for para_play.
14dee3 build: Create section for para_afh.
b1abc2 build: Create section for para_recv.
bfd5b5 build: Create section for para_filter.
9139d9 build: ldflags conversion: coreaudio.
30f966 build: ldflags conversion: libcurses.
15880b build: ldflags conversion: libnsl.
516421 build: ldflags conversion: libsocket.
ce8273 build: ldflags conversion: libgcrypt.
ad3573 build: ldflags conversion: libssl.
52ac85 build: ldflags conversion: libosl.
37083e build: ldflags conversion: libsamplerate.
7de07a build: ldflags conversion: libreadline.
0e9f1c build: ldflags conversion: libao.
ecac89 build: ldflags conversion: alsa.
6c632d build: ldflags conversion: liboss.
e74262 build: ldflags conversion: libflac.
648197 build: ldflags conversion: libmad.
91ed86 build: ldflags conversion: libfaad.
8ee713 build: ldflags/cppflags conversion: libopus.
b6c705 build: cppflags/ldflags conversion: libspeex.
7aa414 build: ldflags conversion: libvorbis.
80a639 build: ldflags conversion: libogg.
c79cdc build: cppflags/ldflags conversion: libid3tag
a02396 build: Remove duplicates from $all_objs.
d2fc4d build: Remove inactive DEBUG_CPPFLAGS.
e8f310 build: Replace by error2.c.
06e33e build: Fix filter output of configure summary.
994889 build: Convert remaining object lists to one object per line format.
782e47 build: Separate curses detection from gui configuration.
fbe4b0 build: Move down fade section.
003815 build: Add object "cmdline" suffix only once.
3097e5 INSTALL: Add an example for cross-compiling.
e8b555 build: Fix make install for cross builds.
aab667 build: Generate man pages directly from ggo files.
9a8a15 build: Remove fnmatch, malloc, realloc tests.
2dcdd9 build: Make crypto optional.
f23353 build: Make audiod optional.
98b801 build: Build para_client only if crypto lib was found.
17ed11 build: Create a separate section for para_server.
02c1e0 build: Compute $all_errlist_objs.
4ec04c build: Replace $extras by per-executable variable.
39707e build: Remove two dead recipes from
9fc99c build: Remove check for buggy snprintf().

9 years agoMerge branch 't/opusdec-latency'
Andre Noll [Fri, 20 Dec 2013 12:28:15 +0000 (13:28 +0100)]
Merge branch 't/opusdec-latency'

A single patch which was cooking since 2013-11-17 with no problems.

14c16b opusdec: Latency improvements.

9 years agoRebuild error2.h on Makefile changes.
Andre Noll [Fri, 20 Dec 2013 10:29:58 +0000 (11:29 +0100)]
Rebuild error2.h on Makefile changes.

Re-running configure without a subsequent make clean currently fails if
the set of objects has changed since the last run. This happens for
example if a different cryptolib was requested with --enable-cryptolib,
or if different libraries were detected by configure.

The problem is that error2.h is not updated according to the new
set of objects. Letting error2.h depend on Makefile should fix it,
because configure creates Makefile, so error2.h will be recreated
after reconfiguring.

9 years agoMerge branch 't/aft_cleanups'
Andre Noll [Wed, 18 Dec 2013 20:15:22 +0000 (21:15 +0100)]
Merge branch 't/aft_cleanups'

Was cooking since 2013-11-10.

fb4022 aft: Make get_afsi_of_path() static.
89d124 aft: Make load_afsi() and safe_afsi() static.
5a63e0 aft: Make get_afsi_object_of_row() static.

9 years agoudp_recv: Fix clang warning.
Andre Noll [Sun, 17 Nov 2013 22:54:44 +0000 (23:54 +0100)]
udp_recv: Fix clang warning.

clang does not seem to like adding to a string literal:

udp_recv.c:51:45: warning: adding 'size_t' (aka 'unsigned long') to a string does not append to the string [-Wstring-plus-int]
if (memcmp(iov[1].iov_base, FEC_EOF_PACKET + iov[0].iov_len,
udp_recv.c:51:45: note: use array indexing to silence this warning

That's kind of silly, but if this simple change makes clang happy,
so be it.

9 years agoaac_afh: Fix clang warning.
Andre Noll [Sun, 17 Nov 2013 22:52:15 +0000 (23:52 +0100)]
aac_afh: Fix clang warning.

Although gcc seems to have no problem with it, clang complains about
illegal characters in string literals of aac_afh.c:

aac_afh.c:114:25: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
if (!atom_cmp(type1, "<A9>ART"))
aac_afh.c:116:30: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
else if (!atom_cmp(type1, "<A9>alb"))
aac_afh.c:118:30: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
else if (!atom_cmp(type1, "<A9>nam"))
aac_afh.c:120:30: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
else if (!atom_cmp(type1, "<A9>cmt"))
aac_afh.c:122:30: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
else if (!atom_cmp(type1, "<A9>day"))

This patch encodes the offending value as "\xa9" to make clang happy,

9 years agoMerge branch 't/flacdec_fixes'
Andre Noll [Thu, 12 Dec 2013 08:11:07 +0000 (09:11 +0100)]
Merge branch 't/flacdec_fixes'

Cooking since 2013-10-27.

6da1ca flacdec: Fix DECODER_ABORTED handling.
76a2c8 flacdec: Avoid busy loop.
a1beef flacdec: Fix mono output.
8633a2 flacdec: Avoid declaration after statement.
464648 flacdec: Improve documentation of unconsumed.
c2d841 fd.c: Fix bad English in comment.

9 years agomanual: Move crypt library to the list of optional packages.
Andre Noll [Sun, 1 Dec 2013 18:13:01 +0000 (19:13 +0100)]
manual: Move crypt library to the list of optional packages.

Commit 2dcdd92c made crypto an optional feature. So this item should
go to the list of optional packages.

9 years agobuild: Don't insist on curses for CLI support.
Andre Noll [Sun, 1 Dec 2013 11:11:46 +0000 (12:11 +0100)]
build: Don't insist on curses for CLI support.

On systems without curses headers/libs, support for interactive
cli tools is deactivated and a message is shown which claims that
readline depends on the curses library. This is not true: readline
uses the termcap functions, but does not link with the termcap or
curses library itself.  Applications must choose an appropriate
library that provides these functions.

This change should enable readline support on systems that have
libtermcap but no curses library.

9 years agobuild: Rewrite objlist_to_errlist().
Andre Noll [Sun, 1 Dec 2013 00:13:56 +0000 (01:13 +0100)]
build: Rewrite objlist_to_errlist().

This function of was defined as a single line with 225
characters. Splitting it into three smaller parts makes it readable

9 years agobuild: Reorder Makefile.real.
Andre Noll [Sun, 15 Sep 2013 03:08:40 +0000 (03:08 +0000)]
build: Reorder Makefile.real.

Trivial cleanup. Only code move, no actual changes.

9 years agobuild: Split
Andre Noll [Sun, 15 Sep 2013 02:39:11 +0000 (02:39 +0000)]
build: Split

This trims down to contain only the initializations of
Make variables with their autoconf counterpart. The new Makefile.real
contains the second part, including all recipes.

With this commit, needs to be changed only when introduces new variables. In this case a full
autoconf, configure, make cycle is necessary anyway. However, if
only Makefile.real changes, a simple make run should be enough to
update everything.

9 years agobuild: Reorder variables in
Andre Noll [Sun, 15 Sep 2013 02:35:25 +0000 (02:35 +0000)]
build: Reorder variables in

Move down derived variables so that the top of consists
only of definitions of Make variables from autoconf variables.

9 years agobuild: Add Make variable for clock_gettime_ldflags.
Andre Noll [Sun, 15 Sep 2013 02:24:57 +0000 (02:24 +0000)]
build: Add Make variable for clock_gettime_ldflags.

Another autoconf variable reference bites the dust.

9 years agobuild: Add Make variable for PACKAGE_TARNAME.
Andre Noll [Sun, 15 Sep 2013 02:23:10 +0000 (02:23 +0000)]
build: Add Make variable for PACKAGE_TARNAME.

This gets rid of two more references to autoconf variables.

9 years agobuild: Introduce Make variables for objects.
Andre Noll [Sun, 15 Sep 2013 02:18:44 +0000 (02:18 +0000)]
build: Introduce Make variables for objects.

The definition of the various foo_objs variables still refers to the
autoconf variables. Having a make variable for each set of object is
another step towards the separation of autoconf and make.

9 years agobuild: Combine link rules.
Andre Noll [Sat, 14 Sep 2013 06:53:59 +0000 (06:53 +0000)]
build: Combine link rules.

Due to the cleanups in the previous patches, all rules for linking
have become identical. Hence we may replace all of them by a single

9 years agobuild: Introduce $prefixed_executables.
Andre Noll [Sun, 15 Sep 2013 01:30:27 +0000 (01:30 +0000)]
build: Introduce $prefixed_executables.

Currently $executables contains the full basename of all
executables (para_server, para_client, ...), while the autoconf
variable @executables@ is used for the variants without the "para_"
prefix. This is rather confusing, so introduce $prefixed_executables
and stop using the @executables@ variant in Make recipes.

9 years agobuild: Combine rules for object files.
Andre Noll [Sun, 15 Sep 2013 01:19:50 +0000 (01:19 +0000)]
build: Combine rules for object files.

Currently we have many similar recipes for compiling object files from
.c files that need non-standard CPPFLAGS. All rules are identical
except that different additional options to the $(CC) command are
required to build the object file. These additional options are
provided through various $(foo_cppflags) variables.

This commit avoids this duplication by adding the necessary flags to
CPPFLAGS instead. This way we can use the same rule for all object

9 years agobuild: Define Make variables for cppflags.
Andre Noll [Sun, 15 Sep 2013 00:35:36 +0000 (00:35 +0000)]
build: Define Make variables for cppflags.

As a first step towards separating autoconf output variables and Make
recipes, this commit defines Make variables for all cppflags at the
top of and avoids @variable@ constructs in Make rules.

As an additional benefit, this improves readability of the generated

9 years agobuild: Remove two unused variables from
Andre Noll [Sat, 14 Sep 2013 16:57:26 +0000 (16:57 +0000)]
build: Remove two unused variables from

PKGDATADIR and PACKAGE_STRING are defined but never used. Remove them.

9 years agobuild: Collect audio format handlers in afh section.
Andre Noll [Sat, 14 Sep 2013 03:58:49 +0000 (03:58 +0000)]
build: Collect audio format handlers in afh section.

The afh section is the natural place to define this variable.

9 years agobuild: Move relevant parts to filter section.
Andre Noll [Sat, 14 Sep 2013 04:02:18 +0000 (04:02 +0000)]
build: Move relevant parts to filter section.

This code deals with variables and defines for the various filters,
so it should go to the filter section.

9 years agobuild: Move relevant parts to gui section.
Andre Noll [Sat, 14 Sep 2013 04:00:46 +0000 (04:00 +0000)]
build: Move relevant parts to gui section.

The definition of gui_objs and INIT_GUI_ERRLISTS belongs to the
gui section so move it there.

9 years agobuild: Move relevant parts to fade section.
Andre Noll [Sat, 14 Sep 2013 03:47:56 +0000 (03:47 +0000)]
build: Move relevant parts to fade section. already has a section for para_fade, but the construction
of $fade_errlist_objs was still spread out over the whole file. Move
everything to the existing section and remove @fade_ldflags@.

This also kills the $mixer_summary variable, which was not very useful.

9 years agobuild: Move relevant parts to audiod section.
Andre Noll [Sat, 14 Sep 2013 03:35:36 +0000 (03:35 +0000)]
build: Move relevant parts to audiod section.

All of this should be in the audiod section, so move it there. Due
to the cleanups of the previous patches the @audiod_ldflags@ output
variable contained only -lm. Get rid of it by adding -lm to LDFLAGS.

9 years agobuild: Move relevant parts to client section.
Andre Noll [Sat, 14 Sep 2013 03:10:51 +0000 (03:10 +0000)]
build: Move relevant parts to client section.

These parts belong to the client section at the bottom of
This also gets rid of @client_ldflags@.

9 years agobuild: Move relevant parts to server section.
Andre Noll [Sat, 14 Sep 2013 03:05:10 +0000 (03:05 +0000)]
build: Move relevant parts to server section.

Currently $server_errlist_objs is updated whenever a feature that
affects para_server was detected. This mix of feature detection and
build options is hard to maintain and error-prone, so let's move the
definition of $server_errlist_objs to the already existing section
for para_server.

The patch also kills the unused @server_ldflags@ output variable.

9 years agobuild: Create section for para_audioc.
Andre Noll [Sat, 14 Sep 2013 02:49:43 +0000 (02:49 +0000)]
build: Create section for para_audioc.

This moves everything related to para_audioc to the bottom of and kills @audioc_ldflags@.

9 years agobuild: Create section for para_write.
Andre Noll [Sat, 14 Sep 2013 02:46:37 +0000 (02:46 +0000)]
build: Create section for para_write.

This moves all parts of related to para_write to a
separate section at the bottom and kills @write_ldflags@.

The patch also fixes a minor issue for setups where libao is the only
"real" writer. Previously we used FILE_WRITE as the default writer
in this case. This commit changes it to AO_WRITE.

9 years agobuild: Create section for para_play.
Andre Noll [Sat, 14 Sep 2013 02:35:14 +0000 (02:35 +0000)]
build: Create section for para_play.

This moves all parts related to para_play to a separate section
at the bottom of and gets rid of the output variable
@play_ldflags@ in favor of a simple LDFLAGS setting.

9 years agobuild: Create section for para_afh.
Andre Noll [Sat, 14 Sep 2013 02:20:00 +0000 (02:20 +0000)]
build: Create section for para_afh.

This moves those parts of related to para_afh to an
own section at the bottom and gets rid of the unused @afh_ldflags@
output variable.

9 years agobuild: Create section for para_recv.
Andre Noll [Sat, 14 Sep 2013 02:08:51 +0000 (02:08 +0000)]
build: Create section for para_recv.

Similar to the previous patch, this moves the creation of
$recv_cmdline_objs and $recv_errlist_objs to a separate section at
the end of and gets rid of the now unused @recv_ldflags@
output variable.

9 years agobuild: Create section for para_filter.
Andre Noll [Sat, 14 Sep 2013 01:48:41 +0000 (01:48 +0000)]
build: Create section for para_filter.

Currently, the construction of $filters, $filter_errlist_objs and
$filter_cmdline_objs is spread out over as each test
modifies these variables.

The code in becomes easier to read if these variables
are set up in a separate section after all tests have been performed.

This patch also gets rid of filter_ldflags. Due to the previous
cleanups, it only contained -lm which is now added in,
along with all other linker flags for para_filter.

9 years agobuild: ldflags conversion: coreaudio.
Andre Noll [Fri, 13 Sep 2013 07:13:03 +0000 (07:13 +0000)]
build: ldflags conversion: coreaudio.

Straight-forward transformation, relevant to MacOS only.

9 years agobuild: ldflags conversion: libcurses.
Andre Noll [Fri, 13 Sep 2013 07:07:11 +0000 (07:07 +0000)]
build: ldflags conversion: libcurses.

Straight-forward as only para_gui depends on the curses lib.

9 years agobuild: ldflags conversion: libnsl.
Andre Noll [Fri, 13 Sep 2013 06:54:42 +0000 (06:54 +0000)]
build: ldflags conversion: libnsl.

Similar to the previous patch, this converts the ldflags needed
for nsl and gets rid of the useless check for inet_ntoa().

9 years agobuild: ldflags conversion: libsocket.
Andre Noll [Fri, 13 Sep 2013 06:49:50 +0000 (06:49 +0000)]
build: ldflags conversion: libsocket.

This converts the ldflags needed for the socket/connect system calls
in the usual way. It also drops the check for the connect() system
call, as it should always be either in -lc or -lsocket.

9 years agobuild: ldflags conversion: libgcrypt.
Andre Noll [Fri, 13 Sep 2013 06:37:51 +0000 (06:37 +0000)]
build: ldflags conversion: libgcrypt.

Analogous to the previous patch.

9 years agobuild: ldflags conversion: libssl.
Andre Noll [Fri, 13 Sep 2013 06:35:04 +0000 (06:35 +0000)]
build: ldflags conversion: libssl.

Straight-forward transformation.

9 years agobuild: ldflags conversion: libosl.
Andre Noll [Fri, 13 Sep 2013 06:28:55 +0000 (06:28 +0000)]
build: ldflags conversion: libosl.

Straight-forward transformation.

9 years agobuild: ldflags conversion: libsamplerate.
Andre Noll [Fri, 13 Sep 2013 06:23:53 +0000 (06:23 +0000)]
build: ldflags conversion: libsamplerate.

Straight-forward transformation.

9 years agobuild: ldflags conversion: libreadline.
Andre Noll [Fri, 13 Sep 2013 06:18:01 +0000 (06:18 +0000)]
build: ldflags conversion: libreadline.

This also renames readline_libs to readline_ldflags, just to make
the naming more consistent to the other tests.

9 years agobuild: ldflags conversion: libao.
Andre Noll [Fri, 13 Sep 2013 06:12:38 +0000 (06:12 +0000)]
build: ldflags conversion: libao.

9 years agobuild: ldflags conversion: alsa.
Andre Noll [Fri, 13 Sep 2013 06:07:09 +0000 (06:07 +0000)]
build: ldflags conversion: alsa.

Again, a straight-forward transformation.

9 years agobuild: ldflags conversion: liboss.
Andre Noll [Fri, 13 Sep 2013 06:00:22 +0000 (06:00 +0000)]
build: ldflags conversion: liboss.

Straight-forward change, no cppflags necessary.

9 years agobuild: ldflags conversion: libflac.
Andre Noll [Fri, 13 Sep 2013 05:55:25 +0000 (05:55 +0000)]
build: ldflags conversion: libflac.

This converts the handling of the libflac linker flags, just like
the previous patches did for other libraries.

9 years agobuild: ldflags conversion: libmad.
Andre Noll [Fri, 13 Sep 2013 05:52:57 +0000 (05:52 +0000)]
build: ldflags conversion: libmad.

Usual conversion from per-executable variables in to
per-library autoconf output variable + per-target LDFLAGS setting.

9 years agobuild: ldflags conversion: libfaad.
Andre Noll [Fri, 13 Sep 2013 05:47:41 +0000 (05:47 +0000)]
build: ldflags conversion: libfaad.

This adds the linker flags for libfaad to LDFLAGS in
for those targets that need it. This avoids some duplication in No cppflags conversion in this patch.

9 years agobuild: ldflags/cppflags conversion: libopus.
Andre Noll [Fri, 13 Sep 2013 05:42:58 +0000 (05:42 +0000)]
build: ldflags/cppflags conversion: libopus.

Again, the --with-opus-headers option was ignored completely. In fact
opus_cppflags was not even mentioned in

Fix this and also convert opus_ldflags as usual.

9 years agobuild: cppflags/ldflags conversion: libspeex.
Andre Noll [Fri, 13 Sep 2013 05:36:22 +0000 (05:36 +0000)]
build: cppflags/ldflags conversion: libspeex.

This fixes the --with-speex-headers option, which has never worked,
by adding the speex_cppflags output variable and including the given
flags in CPPFLAGS for the three objects that need it.

The straight-forward conversion for speex linker flags is also
performed in this patch.

9 years agobuild: ldflags conversion: libvorbis.
Andre Noll [Fri, 13 Sep 2013 05:31:09 +0000 (05:31 +0000)]
build: ldflags conversion: libvorbis.

Same rationale as the previous patch, this time with vorbis_ldflags.

9 years agobuild: ldflags conversion: libogg.
Andre Noll [Fri, 13 Sep 2013 05:24:07 +0000 (05:24 +0000)]
build: ldflags conversion: libogg.

The next step on the way to the removing the per-executable ldflags
variables.  This sets ogg_ldflags in, creates an output
variable from it, and adds it to LDFLAGS in for all
executables that need it.

9 years agobuild: cppflags/ldflags conversion: libid3tag
Andre Noll [Fri, 13 Sep 2013 05:12:58 +0000 (05:12 +0000)]
build: cppflags/ldflags conversion: libid3tag

This removes the rule for mp3_afh.o so that this object will instead
be created by means of the generic rule. To make this work, CPPFLAGS is
modified for this target to include suitable cpp options for libid3tag
as determined during configure.

Similarly, the linker flags for libid3tag are removed from
server_ldflags, afh_ldflags, play_ldflags, recv_ldflags and
play_ldflags, and appropriate linker flags are added to LDFLAGS for
all executables that need it.

9 years agobuild: Remove duplicates from $all_objs.
Andre Noll [Fri, 13 Sep 2013 03:13:38 +0000 (03:13 +0000)]
build: Remove duplicates from $all_objs.

In $all_objs is defined as the concatenation of the
object lists of all executables. This variable is used to determine
the set of dependency files to include. Since the concatenation
contains common objects more than once, we currently include common
dependencies multiple times.

This is not a problem, but it may slow down the build. The make sort
function removes duplicate words, so by sorting $all_objs we make
sure to include each dependency file only once.

9 years agobuild: Remove inactive DEBUG_CPPFLAGS.
Andre Noll [Fri, 13 Sep 2013 02:35:23 +0000 (02:35 +0000)]
build: Remove inactive DEBUG_CPPFLAGS.

These were commented out for some years, and don't really add any

9 years agobuild: Replace by error2.c.
Andre Noll [Fri, 13 Sep 2013 01:41:15 +0000 (01:41 +0000)]
build: Replace by error2.c.

The C code is much faster than the old perl script. Since the resulting
executable runs on the build system, the compiler for this system
must be called to compile error2.c. The new HOSTCC variable takes
care of this.

With this patch applied, the only remaining dependencies on perl are
help2man and autoconf.

9 years agobuild: Fix filter output of configure summary.
Andre Noll [Sat, 26 Oct 2013 05:26:01 +0000 (07:26 +0200)]
build: Fix filter output of configure summary.

The $filters variable contained newlines, which made the output
rather ugly.

9 years agobuild: Convert remaining object lists to one object per line format.
Andre Noll [Sat, 26 Oct 2013 05:24:31 +0000 (07:24 +0200)]
build: Convert remaining object lists to one object per line format.

This makes patches easier to read and eases conflict handling.

9 years agobuild: Separate curses detection from gui configuration.
Andre Noll [Sun, 8 Sep 2013 01:11:16 +0000 (01:11 +0000)]
build: Separate curses detection from gui configuration.

It's cleaner to separate feature/library detection from the logic
that decides whether an executable can be built.

This patch creates a separate section for para_gui which contains
the list of all objects for para_gui and sets $build_gui to either
"yes" or "no", depending on whether a usable curses library was found.

9 years agobuild: Move down fade section.
Andre Noll [Fri, 6 Sep 2013 01:39:20 +0000 (01:39 +0000)]
build: Move down fade section.

The logic which checks whether an executable can be build on the
given system should come after the tests for features and libraries.
The section for the para_fade executable violates this rule, so move
it down to where it belongs.

9 years agobuild: Add object "cmdline" suffix only once.
Andre Noll [Sun, 8 Sep 2013 01:10:56 +0000 (01:10 +0000)]
build: Add object "cmdline" suffix only once.

This is equivalent, but it is both simpler and less error-prone than
calling add_cmdline() for each check. Change all affected assignments
to the one-line-per-object format while we're at it.

9 years agoINSTALL: Add an example for cross-compiling.
Andre Noll [Thu, 5 Sep 2013 03:51:19 +0000 (03:51 +0000)]
INSTALL: Add an example for cross-compiling.

These are the commands I use to compile paraslash on the raspberry pi.

9 years agobuild: Fix make install for cross builds.
Andre Noll [Fri, 30 Aug 2013 05:02:06 +0000 (05:02 +0000)]
build: Fix make install for cross builds.

make install discards symbols from executables by using the -s option
to the install command. If no install command was detected at configure
time, the install-sh script shipped in the paraslash source tree is
used instead.

This is currently broken for cross-builds because install -s runs the
native strip command by default but the cross-strip is required here.

Both the install script and the install command from gnu coreutils
support custom strip commands, but the syntax for specifying these are
different. A decent install program is available at least on FreeBSD,
NetBSD, MacOS and Linux, so let's just kill the script and use the
--strip-command option of the install program to allow the user to
specify a suitable cross-strip.

9 years agobuild: Generate man pages directly from ggo files.
Andre Noll [Fri, 30 Aug 2013 00:10:41 +0000 (00:10 +0000)]
build: Generate man pages directly from ggo files.

Currently all man pages are created by help2man which executes the
para_xxx binaries just compiled with the --detailed-help and --version
options given to obtain the input for the man page to create.

The obvious shortcoming of this approach is that it simply does not
work when cross-compiling. There is another disadvantage though: Since
the man page file (para_xxx.1) depends on the executable (para_xxx),
any code change causes all affected man pages to be recreated, even
if nothing has changed that would alter the man page content.

The good news is that gengetopt can create the help output without
generating or compiling any code. The bad news is that help2man
insists on executing a program with --help and --version to get the

This commit teaches Makefile to create a dummy shell script for each
executable which accepts the above options and runs gengetopt on the
.ggo file to obtain the help text.

This makes cross-compiling possible and shortens rebuild times since
with the patch applied, the man page is only recreated when the ggo
file changes.

9 years agobuild: Remove fnmatch, malloc, realloc tests.
Andre Noll [Sat, 31 Aug 2013 04:19:53 +0000 (04:19 +0000)]
build: Remove fnmatch, malloc, realloc tests.

These cause more harm than good. When cross-compiling for the arm-based
rpi, weird rpc_malloc link failures showed up. Removing the tests
solves the problem.

9 years agobuild: Make crypto optional.
Andre Noll [Thu, 29 Aug 2013 22:57:11 +0000 (22:57 +0000)]
build: Make crypto optional.

Now that all three executables that need a crypto library have been
made optional, it is no longer a fatal error if no library was found.
This patch makes the build succeed in this case, albeit para_server,
para_audiod and para_client will not be built.

9 years agobuild: Make audiod optional.
Andre Noll [Thu, 29 Aug 2013 21:42:43 +0000 (21:42 +0000)]
build: Make audiod optional.

The previous two commits made para_server and para_client depend
on crypto support. This patch does the same thing for para_audiod.
It adds a section that sets $build_audiod to yes or no, depending
on whether a crypto library was detected. This clears the path to
making crypto support optional.

9 years agobuild: Build para_client only if crypto lib was found.
Andre Noll [Thu, 29 Aug 2013 21:09:45 +0000 (21:09 +0000)]
build: Build para_client only if crypto lib was found.

This creates a separate section for para_client, similar to the one
for para_server that was added in the previous patch.

The new section sets $build_client to either yes or no, depending on
whether a crypto library (openssl nor gcrypt) was found by the tests
performed earlier. This test is always true at the moment since we
abort anyway if neither library was detected. But this is about to
change, so..

9 years agobuild: Create a separate section for para_server.
Andre Noll [Thu, 29 Aug 2013 20:56:33 +0000 (20:56 +0000)]
build: Create a separate section for para_server.

The new section is added after osl and crypto detection has been
performed. We only build para_server if both libosl and a crypto
library was found.

This check is not necessary at the moment since we abort earlier if
neither openssl nor gcrypt was detected, but it will eventually allow
to make crypto support optional.

9 years agobuild: Compute $all_errlist_objs.
Andre Noll [Thu, 29 Aug 2013 20:52:56 +0000 (20:52 +0000)]
build: Compute $all_errlist_objs.

It is less error-prone to compute this value once after feature
detection than to update the list of all objects in each test.

We now also make sure that no object is listed more than once.