Browse Source

* removed old web site stuff -- it was essentially the same as ardour's

site, s/ardour/jack/
* added doxygen stuff to build. it's required when making dist, as the html
  is included in the dist for users that don't have doxygen
* made aesthetic improvements to configure.in and the Makefile.am
* improved the checks for fltk and sndfile, and improved the conditional
  compilation of the example clients
* bump to 0.24.1


git-svn-id: svn+ssh://jackaudio.org/trunk/jack@162 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.109.0
wingo 24 years ago
parent
commit
8d273bb7ea
24 changed files with 141 additions and 328 deletions
  1. +25
    -5
      Makefile.am
  2. +44
    -25
      configure.in
  3. +1
    -2
      doc/.cvsignore
  4. +0
    -66
      doc/Makefile
  5. +66
    -0
      doc/Makefile.am
  6. +0
    -4
      doc/compiling.m4
  7. +0
    -4
      doc/configuring.m4
  8. +0
    -4
      doc/contributors.m4
  9. +0
    -4
      doc/download.m4
  10. +0
    -4
      doc/faq.m4
  11. +0
    -4
      doc/features.m4
  12. +0
    -54
      doc/header.html
  13. +0
    -4
      doc/helping.m4
  14. +0
    -7
      doc/index.m4
  15. +0
    -4
      doc/intro.m4
  16. +0
    -85
      doc/issues.m4
  17. +0
    -4
      doc/links.m4
  18. +0
    -4
      doc/mailinglist.m4
  19. +0
    -4
      doc/manual.m4
  20. +0
    -4
      doc/news.m4
  21. +5
    -5
      doc/reference.doxygen.in
  22. +0
    -4
      doc/requirements.m4
  23. +0
    -4
      doc/todo.m4
  24. +0
    -23
      doc/trailer.html

+ 25
- 5
Makefile.am View File

@@ -4,14 +4,30 @@ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure config.h.in \
missing install-sh config.sub ltconfig \
ltmain.sh acinclude.m4

SUBDIRS = jack

EXTRA_PROGRAMS = jack_fltk_client jackrec
if HAVE_DOXYGEN
SUBDIRS = . jack doc
else
SUBDIRS = . jack doc
endif

DIST_SUBDIRS = jack doc

if HAVE_FLTK
FLTK_CLIENT = jack_fltk_client
else
FLTK_CLIENT =
endif

if HAVE_SNDFILE
JACKREC = jackrec
else
JACKREC =
endif

bin_PROGRAMS = jackd jack_simple_client jack_monitor_client \
jack_impulse_grabber jack_connect jack_disconnect @XTRA@
jack_impulse_grabber jack_connect jack_disconnect $(FLTK_CLIENT) $(JACKREC)

AM_CFLAGS = $(JACK_CFLAGS) -DADDON_DIR=\"$(ADDON_DIR)\" @GLIB_CFLAGS@
AM_CFLAGS = $(JACK_CFLAGS) -DADDON_DIR=\"$(ADDON_DIR)\" $(GLIB_CFLAGS)

AM_CXXFLAGS = $(JACK_CFLAGS) -DADDON_DIR=\"$(ADDON_DIR)\"

@@ -35,13 +51,17 @@ jack_monitor_client_SOURCES = monitor_client.c
jack_monitor_client_LDFLAGS = -ldl -lpthread
jack_monitor_client_LDADD = libjack.la

if HAVE_FLTK
jack_fltk_client_SOURCES = fltk_client.cc
jack_fltk_client_LDFLAGS = -L/usr/X11R6/lib -lfltk -lX11 -lXext -ldl -lpthread
jack_fltk_client_LDADD = libjack.la
endif

if HAVE_SNDFILE
jackrec_SOURCES = capture_client.c
jackrec_LDFLAGS = -lsndfile -ldl -lpthread
jackrec_LDADD = libjack.la
endif

jack_impulse_grabber_SOURCES = impulse_grabber.c
jack_impulse_grabber_LDFLAGS = -ldl -lpthread -lm


+ 44
- 25
configure.in View File

@@ -5,7 +5,7 @@ AC_CONFIG_AUX_DIR(.)

JACK_MAJOR_VERSION=0
JACK_MINOR_VERSION=24
JACK_MICRO_VERSION=0
JACK_MICRO_VERSION=1

BETA=

@@ -25,6 +25,8 @@ AM_INIT_AUTOMAKE(jack,${JACK_VERSION})

AC_PROG_CC
AC_PROG_CXX
AC_PROG_LD
AM_PROG_LIBTOOL

JACK_CFLAGS="-g -Wall -D_REENTRANT"
JACK_OPT_CFLAGS="-D_REENTRANT -O6 -Wall -fomit-frame-pointer -ffast-math -fstrength-reduce -funroll-loops -fmove-all-movables"
@@ -35,40 +37,57 @@ AC_ARG_ENABLE(optimize,

AC_SUBST(JACK_CFLAGS)

XTRA=""
# plugins (just jack_alsa.so at the moment) go in the addon dir.

AC_ARG_ENABLE(fltk-client,
[ --enable-fltk-client build the FLTK test client.])
ADDON_DIR=${libdir}/jack
AC_SUBST(ADDON_DIR)

if test "x$enable_fltk_client" != "xno" ; then
AC_CHECK_LIB(fltk,main,
[ XTRA="$XTRA jack_fltk_client" ],
[ AC_MSG_ERROR([*** you cannot build the FLTK client without the FLTK library])],
[ -L/usr/X11R6/lib -lX11 -lXext ])
fi
# jack depends on alsa 0.9 and glib. some example apps depend on libsndfile and fltk.

AM_PATH_GLIB(1.0.0,,[AC_MSG_ERROR([*** JACK requires glib, but it does not appear to be installed])])
AM_PATH_GLIB(1.0.0,
[:],
[AC_MSG_ERROR([*** JACK requires glib, but it does not appear to be installed])]
)

AC_CHECK_LIB(asound,snd_pcm_drop,
[:],
[AC_MSG_ERROR([*** JACK currently requires ALSA (0.9.X) which you don't appear to have])]
)

AC_CHECK_LIB(sndfile,main,
[ XTRA="$XTRA jackrec" ],
[AC_MSG_WARN([*** the jackrec client will be skipped since you do not see to have libsndfile installed])]
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_CHECK_LIB(fltk,main,
[AC_CHECK_HEADER(FL/Fl.H,
[HAVE_FLTK=true],
[HAVE_FLTK=false]
)],
[HAVE_FLTK=false],
[-L/usr/X11R6/lib -lX11 -lXext]
)
AC_LANG_RESTORE
if test $HAVE_FLTK = "false"; then
AC_MSG_WARN([*** no fltk found, the fltk example client will not be built])
fi

AC_SUBST(XTRA)

AC_PROG_LD
AM_PROG_LIBTOOL

ADDON_DIR=${libdir}/jack

AC_SUBST(ADDON_DIR)

dnl check for the libraries we need
AC_CHECK_LIB(sndfile,main,
[AC_CHECK_HEADER(sndfile.h,
[HAVE_SNDFILE=true],
[HAVE_SNDFILE=false]
)],
[HAVE_SNDFILE=false]
)
if test $HAVE_SNDFILE = "false"; then
AC_MSG_WARN([*** no libsndfile found, the jackrec example client will not be built])
fi

# you need doxygen to make dist.
AC_CHECK_PROG(DOXYGEN, doxygen,
[HAVE_DOXYGEN=true],
[HAVE_DOXYGEN=false; AC_MSG_WARN([*** doxygen not found, docs will not be built])]
)

AC_OUTPUT(Makefile jack.pc jack/Makefile)
AM_CONDITIONAL(HAVE_FLTK, $HAVE_FLTK)
AM_CONDITIONAL(HAVE_SNDFILE, $HAVE_SNDFILE)
AM_CONDITIONAL(HAVE_DOXYGEN, $HAVE_DOXYGEN)
AC_OUTPUT(Makefile jack.pc jack/Makefile doc/Makefile doc/reference.doxygen)


+ 1
- 2
doc/.cvsignore View File

@@ -1,2 +1 @@
*.html

*.stamp\nreference.doxygen\nreference

+ 0
- 66
doc/Makefile View File

@@ -1,66 +0,0 @@
WEBSITE = ardour.sourceforge.net

HTML-FILES := index.html \
issues.html \
manual.html \
features.html \
mailinglist.html \
contributors.html \
intro.html \
download.html \
index.html \
news.html \
links.html \
requirements.html \
configuring.html \
helping.html \
compiling.html \
todo.html

user = $(shell whoami)
fullname = $(shell awk -F: '/$(user)/ { print $$5}' /etc/passwd)

%.html: %.m4 header.html trailer.html
m4 -P -E -I. $< > $@
sed -e "s/@LASTMOD@/`date`/" -e "s/@USER@/$(fullname)/" \
< $@ > $@.XXX && mv $@.XXX $@

.PHONY: manual
.PHONY: upload

all: html
install:
@:

html: $(HTML-FILES)

upload: build-updir
cd updir ; \
if [ "`ls`" ] ; then \
(echo "cd /home/groups/j/ja/jackit/htdocs && tar -zxvf - ; exit"; tar cf - *.html | gzip) | \
ssh \$(user)@shell.sourceforge.net; \
cd .. ; \
touch last-upload ; \
fi

upload-images: build-updir
(echo "cd /home/groups/j/ja/jackit/htdocs && tar -zxvf - ; exit"; tar cf - *.png | gzip) | \
ssh \$(user)@shell.sourceforge.net; \

build-updir:
if [ ! -d updir ] ; then mkdir updir ; else rm -rf updir/* ; fi ; \
if [ ! -f last-upload ] ; then touch --date="Jan 1 00:00:01 EST 1970" last-upload; fi ; \
uptime=`ls -l --full-time last-upload | awk '{printf ("%s %s %s %s %s\n", $$6, $$7, $$8, $$9, $$10)}'`; \
tar -chf - --newer="$$uptime" \
--exclude=updir \
--exclude="*.m4" \
--exclude=Makefile \
--exclude=CVS \
--exclude=manual \
--exclude=header.html \
--exclude=trailer.html \
--exclude=last-upload . | (cd updir; tar xf - ) ; \

clean:
rm -f $(HTML-FILES)


+ 66
- 0
doc/Makefile.am View File

@@ -0,0 +1,66 @@
## Process this file with automake to produce Makefile.in

DOX=reference.doxygen

EXTRA_DIST=

DOC_STAMPS=html-build.stamp

DOC_DIR=$(datadir)/doc/jack

all-local: doxygen-build.stamp

doxygen-build.stamp: $(DOX)
@echo '*** Running doxygen ***'
doxygen $(DOX)
touch doxygen-build.stamp

clean-local:
rm -f *~ *.bak $(DOC_STAMPS) || true

distclean-local: clean
rm -f *.stamp || true
if test -d reference; then rm -rf reference; fi

install-data-local:
$(mkinstalldirs) $(DOC_DIR)/reference/html
(installfiles=`echo reference/html/*.html`; \
if test "$$installfiles" = 'reference/html/*.html'; \
then echo '-- Nothing to install' ; \
else \
for i in $$installfiles reference/html/doxygen.gif reference/html/doxygen.css; do \
echo '-- Installing '$$i ; \
$(INSTALL_DATA) $$i $(DOC_DIR)/reference/html; \
done; \
fi)

# we need doxygen stuff built so we can know what to uninstall
uninstall-local: doxygen-build.stamp
(installfiles=`echo reference/html/*.html`; \
if test "$$installfiles" = 'reference/html/*.html'; \
then echo '-- Nothing to uninstall' ; \
else \
for i in $$installfiles reference/html/doxygen.gif reference/html/doxygen.css; do \
echo '-- Unstalling '$$i ; \
rm $(DOC_DIR)/$$i; \
done; \
fi)

#
# Require doxygen when making dist
#
if HAVE_DOXYGEN
dist-check-doxygen:
else
dist-check-doxygen:
@echo "*** doxygen must be installed and enabled in order to make dist"
@false
endif

dist-hook: dist-hook-local dist-check-doxygen
mkdir $(distdir)/reference
mkdir $(distdir)/reference/html
-cp reference/html/*.html reference/html/*.css \
reference/html/*.gif $(distdir)/reference/html

.PHONY : dist-hook-local

+ 0
- 4
doc/compiling.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/configuring.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/contributors.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/download.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/faq.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/features.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 54
doc/header.html View File

@@ -1,54 +0,0 @@
<!-- jackit standard header -->

<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Emacs 20.2">
<TITLE>Ardour</TITLE>
</HEAD>
<BODY>

<table border=0 cellspacing=10 cellpadding=0>
<tr valign="top">

<!-- Sidebar -->
<td>

<a href=http://ardour.sourceforge.net/>
<img border=0 src="jack2.png" alt="JACK audio connection kit"></a>
</p>
</font>

<p align="center">
<ul>
<li><a href="http://sourceforge.net/projects/jackit">Project Page</a>
<li><a href="intro.html">Introduction</a>
<li><a href="features.html">Features</a>
<li><a href="requirements.html">Requirements</a>
<p></p>
<li><a href="news.html">News and History</a>
<p></p>
<li><a href="download.html">Download</a>
<li><a href="compiling.html">Compiling</a>
<li><a href="configuring.html">Configuring</a>
<p></p>
<li><a href="manual.html">Manual</a>
<li><a href="faq.html">FAQ</a>
<p></p>
<li><a href="helping.html">Getting Involved</a>
<li><a href="todo.html">To Do List</a>
<li><a href="mailinglist.html">Mailing Lists</a>
<li><a href="links.html">Links</a>
<li><a href="contributors.html">Contributors</a>
</ul>
</p>
<p>
Web: <a href=http://ardour.sourceforge.net/>http://jackit.sourceforge.net/</a><br>
Email: (MEMBER-ONLY) <a href=mailto:jackit@lists.sourceforge.net>jackit@lists.sourceforge.net</a>
</p>
</td>

<td>
<!-- Main body -->
<div class=mainbody>

<!-- Standard header ends -------------------------------------------------->

+ 0
- 4
doc/helping.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 7
doc/index.m4 View File

@@ -1,7 +0,0 @@
<html>

m4_include(`header.html')

<h2>About JACK</h2>

m4_include(`trailer.html')

+ 0
- 4
doc/intro.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 85
doc/issues.m4 View File

@@ -1,85 +0,0 @@
<html>

m4_include(`header.html')

<h2>Issues to consider when porting programs to JACK</h2>

<h4>Sample bit width assumptions</h4>

A lot existing Linux audio software tends to assume that audio samples
are 8 or 16 bits wide, and uses <code>short</code> to store them. This
does not work with JACK, where all sample data, regardless of the
original data format in which it was obtained (e.g. from disk), is
stored as a floating point value normalized to the range -1.0 to +1.0.

<h4>Channel interleaving assumptions</h4>

Almost all existing Linux audio software assumes that when delivering
a sample stream with more than one channel, the samples should be
interleaved. This does not work with JACK, where all sample streams
are mono.

<h4>Block-on-write or block-on-read assumptions</h4>

Quite a lot of existing Linux audio software tends to be structured
around the blocking behaviour of a call to write(2) or read(2) when
the file descriptor concerned refers to the audio interface. They
often have this structure:

<verbatim>

// Playback

while (1) {
get_sample_date_from_somewhere (buf);
write (audiofd, buf, bufsize);
}

// Capture

while (1) {
read (audiofd, buf, bufsize);
put_sample_data_somewhere (buf);
}

</verbatim>

These structures don't work with JACK, which is entirely callback
driven and moves audio data by copying it to and from memory
locations, not files. Instead, its necessary to define a
<code>process()</code> callback which does this:

<verbatim>

// playback

int
process (nframes_t nframes)
{
get_nframes_of_data_from_somewhere_without_blocking (buf);
sample_t *addr = jack_port_get_buffer (playback_port);
memcpy (addr, buf, nframes * sizeof (sample_t));
}

// capture

int
process (nframes_t nframes)
{
sample_t *addr = jack_port_get_buffer (capture_port);
memcpy (buf, addr, nframes * sizeof (sample_t));
put_nframes_of_data_somewhere_without_blocking (buf);
}

</verbatim>

The code in the <code>process()</code> function should not under
(almost) any circumstances block: that is, it may not read/write data
from/to a file, it may not call malloc(), it may not use
pthread_mutex_lock(), and it should generally avoid system calls. the
<code>process()</code> callback will be executed when the JACK server
decides it should be, and it cannot be used to time other parts of the
program.

m4_include(`trailer.html')


+ 0
- 4
doc/links.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/mailinglist.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/manual.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/news.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

jack.dox → doc/reference.doxygen.in View File

@@ -23,7 +23,7 @@ PROJECT_NAME = Jack
# This could be handy for archiving the generated documentation or
# if some version control system is used.

PROJECT_NUMBER = 0.20.5
PROJECT_NUMBER = @JACK_VERSION@

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -301,7 +301,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.

INPUT = jack/jack.h
INPUT = @top_srcdir@/jack/jack.h

# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
@@ -567,13 +567,13 @@ LATEX_HEADER =
# contain links (just like the HTML output) instead of page references
# This makes the output suitable for online browsing using a pdf viewer.

PDF_HYPERLINKS = NO
PDF_HYPERLINKS = YES

# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
# higher quality PDF documentation.

USE_PDFLATEX = NO
USE_PDFLATEX = YES

# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
@@ -779,7 +779,7 @@ PERL_PATH = /usr/bin/perl
# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
# recommended to install and use dot, since it yield more powerful graphs.

CLASS_DIAGRAMS = YES
CLASS_DIAGRAMS = NO

# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization

+ 0
- 4
doc/requirements.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 4
doc/todo.m4 View File

@@ -1,4 +0,0 @@
<html>

m4_include(`header.html')
m4_include(`trailer.html')

+ 0
- 23
doc/trailer.html View File

@@ -1,23 +0,0 @@
<!-- Standard trailer begins ----------------------------------------------->

<p class="lastmod" align="right">
<br>
<br>
<small>
<i>Last modified: @LASTMOD@ by @USER@</i>
<br><a href="http://www.anybrowser.org/campaign/">[Best Viewed with Any Browser]</a>
</small>
</p>

</div>
</font>

</td></tr>
</table>

<A href="http://sourceforge.net">
<IMG src="http://sourceforge.net/sflogo.php?group_id=2218&type=1" width="88" height="31" border="0"></A>
</td>

</BODY>
</HTML>

Loading…
Cancel
Save