Skip to content

Commit ad58f7a

Browse files
committed
Add autotools build scripts and new shairplay program
1 parent f926f8a commit ad58f7a

File tree

11 files changed

+571
-0
lines changed

11 files changed

+571
-0
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@
66
project.xcworkspace
77
xcuserdata
88

9+
# autotools
10+
Makefile
11+
*.lo
12+
*.in
13+
.deps
14+
.libs
15+
*.la
16+
*.a
17+
918
# SCons specific
1019
build
1120
.sconf_temp

Makefile.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SUBDIRS = include src
2+
3+
ACLOCAL_AMFLAGS = -I m4
4+

autogen.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
autoreconf -vif

configure.ac

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# -*- Autoconf -*-
2+
# Process this file with autoconf to produce a configure script.
3+
4+
AC_PREREQ(2.61)
5+
AC_INIT([shairplay], [0.9.0], [[email protected]])
6+
AC_CONFIG_MACRO_DIR([m4])
7+
AC_CONFIG_SRCDIR([src/shairplay.c])
8+
AC_CONFIG_HEADER([config.h])
9+
AM_INIT_AUTOMAKE([foreign])
10+
11+
# Checks for programs.
12+
AC_PROG_CC
13+
AC_PROG_LIBTOOL
14+
15+
# Checks for libraries.
16+
17+
# Checks for header files.
18+
AC_HEADER_STDC
19+
20+
# Checks for typedefs, structures, and compiler characteristics.
21+
22+
# Checks for library functions.
23+
24+
25+
26+
# Custom check for os, similar to webkit
27+
AC_MSG_CHECKING([for native Win32])
28+
case "$host" in
29+
*-*-mingw*)
30+
os_win32=yes
31+
;;
32+
*)
33+
os_win32=no
34+
;;
35+
esac
36+
AC_MSG_RESULT([$os_win32])
37+
38+
case "$host" in
39+
*-*-linux*)
40+
os_linux=yes
41+
;;
42+
*-*-freebsd*)
43+
os_freebsd=yes
44+
;;
45+
*-*-darwin*)
46+
os_darwin=yes
47+
;;
48+
esac
49+
50+
case "$host_os" in
51+
gnu* | linux* | k*bsd*-gnu)
52+
os_gnu=yes
53+
;;
54+
*)
55+
os_gnu=no
56+
;;
57+
esac
58+
59+
# OS conditionals
60+
AM_CONDITIONAL([OS_WIN32],[test "$os_win32" = "yes"])
61+
AM_CONDITIONAL([OS_UNIX],[test "$os_win32" = "no"])
62+
AM_CONDITIONAL([OS_LINUX],[test "$os_linux" = "yes"])
63+
AM_CONDITIONAL([OS_GNU],[test "$os_gnu" = "yes"])
64+
AM_CONDITIONAL([OS_FREEBSD],[test "$os_freebsd" = "yes"])
65+
66+
# Custom check for libao
67+
PKG_CHECK_MODULES([libao], [ao >= 1.1.0], [HAVE_LIBAO=1], [HAVE_LIBAO=0])
68+
AM_CONDITIONAL([USE_LIBAO], [test "$HAVE_LIBAO" -eq 1])
69+
70+
71+
72+
AC_CONFIG_FILES(
73+
[Makefile]
74+
[include/Makefile]
75+
[src/Makefile]
76+
[src/lib/Makefile]
77+
[src/lib/alac/Makefile]
78+
[src/lib/crypto/Makefile]
79+
)
80+
AC_OUTPUT

include/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nobase_include_HEADERS = shairplay/dnssd.h shairplay/raop.h

m4/pkg.m4

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
2+
#
3+
# Copyright © 2004 Scott James Remnant <[email protected]>.
4+
#
5+
# This program is free software; you can redistribute it and/or modify
6+
# it under the terms of the GNU General Public License as published by
7+
# the Free Software Foundation; either version 2 of the License, or
8+
# (at your option) any later version.
9+
#
10+
# This program is distributed in the hope that it will be useful, but
11+
# WITHOUT ANY WARRANTY; without even the implied warranty of
12+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13+
# General Public License for more details.
14+
#
15+
# You should have received a copy of the GNU General Public License
16+
# along with this program; if not, write to the Free Software
17+
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18+
#
19+
# As a special exception to the GNU General Public License, if you
20+
# distribute this file as part of a program that contains a
21+
# configuration script generated by Autoconf, you may include it under
22+
# the same distribution terms that you use for the rest of that program.
23+
24+
# PKG_PROG_PKG_CONFIG([MIN-VERSION])
25+
# ----------------------------------
26+
AC_DEFUN([PKG_PROG_PKG_CONFIG],
27+
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
28+
m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
29+
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
30+
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
31+
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
32+
fi
33+
if test -n "$PKG_CONFIG"; then
34+
_pkg_min_version=m4_default([$1], [0.9.0])
35+
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
36+
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
37+
AC_MSG_RESULT([yes])
38+
else
39+
AC_MSG_RESULT([no])
40+
PKG_CONFIG=""
41+
fi
42+
43+
fi[]dnl
44+
])# PKG_PROG_PKG_CONFIG
45+
46+
# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
47+
#
48+
# Check to see whether a particular set of modules exists. Similar
49+
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
50+
#
51+
#
52+
# Similar to PKG_CHECK_MODULES, make sure that the first instance of
53+
# this or PKG_CHECK_MODULES is called, or make sure to call
54+
# PKG_CHECK_EXISTS manually
55+
# --------------------------------------------------------------
56+
AC_DEFUN([PKG_CHECK_EXISTS],
57+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
58+
if test -n "$PKG_CONFIG" && \
59+
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
60+
m4_ifval([$2], [$2], [:])
61+
m4_ifvaln([$3], [else
62+
$3])dnl
63+
fi])
64+
65+
66+
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
67+
# ---------------------------------------------
68+
m4_define([_PKG_CONFIG],
69+
[if test -n "$$1"; then
70+
pkg_cv_[]$1="$$1"
71+
elif test -n "$PKG_CONFIG"; then
72+
PKG_CHECK_EXISTS([$3],
73+
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
74+
[pkg_failed=yes])
75+
else
76+
pkg_failed=untried
77+
fi[]dnl
78+
])# _PKG_CONFIG
79+
80+
# _PKG_SHORT_ERRORS_SUPPORTED
81+
# -----------------------------
82+
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
83+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
84+
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
85+
_pkg_short_errors_supported=yes
86+
else
87+
_pkg_short_errors_supported=no
88+
fi[]dnl
89+
])# _PKG_SHORT_ERRORS_SUPPORTED
90+
91+
92+
# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
93+
# [ACTION-IF-NOT-FOUND])
94+
#
95+
#
96+
# Note that if there is a possibility the first call to
97+
# PKG_CHECK_MODULES might not happen, you should be sure to include an
98+
# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
99+
#
100+
#
101+
# --------------------------------------------------------------
102+
AC_DEFUN([PKG_CHECK_MODULES],
103+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
104+
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
105+
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
106+
107+
pkg_failed=no
108+
AC_MSG_CHECKING([for $1])
109+
110+
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
111+
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
112+
113+
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
114+
and $1[]_LIBS to avoid the need to call pkg-config.
115+
See the pkg-config man page for more details.])
116+
117+
if test $pkg_failed = yes; then
118+
_PKG_SHORT_ERRORS_SUPPORTED
119+
if test $_pkg_short_errors_supported = yes; then
120+
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
121+
else
122+
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
123+
fi
124+
# Put the nasty error message in config.log where it belongs
125+
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
126+
127+
ifelse([$4], , [AC_MSG_ERROR(dnl
128+
[Package requirements ($2) were not met:
129+
130+
$$1_PKG_ERRORS
131+
132+
Consider adjusting the PKG_CONFIG_PATH environment variable if you
133+
installed software in a non-standard prefix.
134+
135+
_PKG_TEXT
136+
])],
137+
[AC_MSG_RESULT([no])
138+
$4])
139+
elif test $pkg_failed = untried; then
140+
ifelse([$4], , [AC_MSG_FAILURE(dnl
141+
[The pkg-config script could not be found or is too old. Make sure it
142+
is in your PATH or set the PKG_CONFIG environment variable to the full
143+
path to pkg-config.
144+
145+
_PKG_TEXT
146+
147+
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
148+
[$4])
149+
else
150+
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
151+
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
152+
AC_MSG_RESULT([yes])
153+
ifelse([$3], , :, [$3])
154+
fi[]dnl
155+
])# PKG_CHECK_MODULES

src/Makefile.am

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
SUBDIRS = lib
2+
3+
AM_CPPFLAGS = -I$(top_srcdir)/include
4+
5+
if USE_LIBAO
6+
bin_PROGRAMS = shairplay
7+
shairplay_SOURCES = shairplay.c
8+
shairplay_LDADD = lib/libshairplay.la
9+
shairplay_CFLAGS =
10+
shairplay_LDFLAGS = -static-libtool-libs
11+
12+
shairplay_CFLAGS += $(libao_CFLAGS)
13+
shairplay_LDADD += $(libao_LIBS)
14+
endif

src/lib/Makefile.am

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
SUBDIRS = crypto alac
2+
3+
AM_CPPFLAGS = -I$(top_srcdir)/include/shairplay
4+
5+
lib_LTLIBRARIES = libshairplay.la
6+
libshairplay_la_SOURCES = base64.c base64.h digest.c digest.h dnssd.c dnssdint.h http_parser.c http_parser.h http_request.c http_request.h http_response.c http_response.h httpd.c httpd.h logger.c logger.h netutils.c netutils.h raop.c raop_buffer.c raop_buffer.h raop_rtp.c raop_rtp.h rsakey.c rsakey.h rsapem.c rsapem.h sdp.c sdp.h utils.c utils.h compat.h memalign.h sockets.h threads.h
7+
8+
# This library depends on 3rd party libraries
9+
libshairplay_la_LIBADD = crypto/libcrypto.la alac/libalac.la
10+
libshairplay_la_LDFLAGS = -version-info 0:0:0
11+
if OS_WIN32
12+
libshairplay_la_LDFLAGS += -no-undefined -lws2_32 -lwinmm
13+
endif

src/lib/alac/Makefile.am

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
noinst_LTLIBRARIES = libalac.la
2+
libalac_la_SOURCES = alac.c alac.h stdint_win.h

src/lib/crypto/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
noinst_LTLIBRARIES = libcrypto.la
2+
libcrypto_la_SOURCES = bigint.c bigint.h bigint_impl.h aes.c hmac.c md5.c rc4.c sha1.c crypto.h os_port.h config.h
3+

0 commit comments

Comments
 (0)