diff --git a/Makefile b/Makefile
index 7c75793..8d969e6 100644
--- a/Makefile
+++ b/Makefile
@@ -11,14 +11,18 @@
## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
## THIS SOFTWARE.
-all: build
-
build:
${MAKE} -C ${PWD}/librtbuf
${MAKE} -C ${PWD}/lib
${MAKE} -C ${PWD}/cli
${MAKE} -C ${PWD}/gtk3
+all:
+ ${MAKE} -C ${PWD}/librtbuf all
+ ${MAKE} -C ${PWD}/lib all
+ ${MAKE} -C ${PWD}/cli all
+ ${MAKE} -C ${PWD}/gtk3 all
+
clean:
${MAKE} -C ${PWD}/librtbuf clean
${MAKE} -C ${PWD}/lib clean
diff --git a/cli/Makefile b/cli/Makefile
index ba8fe49..fcd8f13 100644
--- a/cli/Makefile
+++ b/cli/Makefile
@@ -11,11 +11,36 @@
## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
## THIS SOFTWARE.
-all: rtbuf
+build: librtbuf_cli.la librtbuf_cli.a rtbuf
+
+all:
+ ${MAKE} build
+ if [ "x${HAVE_GCOV}" = "xYes" ]; then ${MAKE} cov; fi
+ ${MAKE} debug
+ if [ "x${HAVE_ASAN}" = "xYes" ]; then ${MAKE} asan; fi
+
+asan: rtbuf_asan
clean:
rm -rf .libs *.o *.lo *.la rtbuf *.gcno *.gcna *.gcda
+cov: rtbuf_cov
+
+debug: rtbuf_debug
+
+librtbuf_cli.a: librtbuf_cli.la
+ cp .libs/librtbuf_cli.a ./
+
+librtbuf_cli_asan.a: librtbuf_cli_asan.la
+ cp .libs/librtbuf_cli_asan.a ./
+
+librtbuf_cli_cov.a: librtbuf_cli_cov.la
+ cp .libs/librtbuf_cli_cov.a ./
+
+librtbuf_cli_debug.a: librtbuf_cli_debug.la
+ cp .libs/librtbuf_cli_debug.a ./
+
.PHONY: all clean
include config.mk
+include sources.mk
diff --git a/cli/configure b/cli/configure
index 18c275c..599fa79 100755
--- a/cli/configure
+++ b/cli/configure
@@ -14,15 +14,15 @@
set -e
-export SRC_TOP="$(pwd)/.."
+SRC_TOP="$(dirname "$PWD")"
-. ../config.subr
+. "${SRC_TOP}/config.subr"
# Targets
LIB=librtbuf_cli.la
-LIB_ASAN=librtbuf_cli.asan.la
-LIB_COV=librtbuf_cli.cov.la
-LIB_DEBUG=librtbuf_cli.debug.la
+LIB_ASAN=librtbuf_cli_asan.la
+LIB_COV=librtbuf_cli_cov.la
+LIB_DEBUG=librtbuf_cli_debug.la
PROG=rtbuf
PROG_ASAN=rtbuf_asan
@@ -57,12 +57,13 @@ CPPFLAGS="${CPPFLAGS:=}"
ENV_CFLAGS="${CFLAGS:=}"
DEFAULT_CFLAGS="-O2 -pipe -fPIC"
LDFLAGS="${LDFLAGS:=}"
-LIBS="${LIBS:=-lm}"
+LIBS="${LIBS:=}"
# Common config for all targets
CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+LIBS="$LIBS -lpthread -lreadline"
config_asan
config_gnu
pkg_config libbsd-overlay
@@ -70,24 +71,28 @@ pkg_config libbsd-overlay
# Address Sanitizer config
CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
LDFLAGS_ASAN="$LDFLAGS"
-LIBS_ASAN="$LIBS"
+LIBS_ASAN="$LIBS ${SRC_TOP}/librtbuf/librtbuf_asan.la"
+PROG_LIBS_ASAN="librtbuf_cli_asan.la"
# Coverage config
CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
LDFLAGS_COV="$LDFLAGS"
-LIBS_COV="$LIBS"
+LIBS_COV="$LIBS ${SRC_TOP}/librtbuf/librtbuf_cov.la"
+PROG_LIBS_COV="librtbuf_cli_cov.la"
# Debug config
CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
LDFLAGS_DEBUG="$LDFLAGS"
-LIBS_DEBUG="$LIBS"
+LIBS_DEBUG="$LIBS ${SRC_TOP}/librtbuf/librtbuf_debug.la"
+PROG_LIBS_DEBUG="librtbuf_cli_debug.la"
# Main config
if [ "x$ENV_CFLAGS" = "x" ]; then
CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
CFLAGS="$CFLAGS -DNDEBUG"
-LIBS="$LIBS"
+LIBS="$LIBS ${SRC_TOP}/librtbuf/librtbuf.la"
+PROG_LIBS="$LIBS librtbuf_cli.la"
echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
@@ -95,18 +100,22 @@ echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo "PROG_LIBS = $PROG_LIBS" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo "PROG_LIBS_ASAN = $PROG_LIBS_ASAN" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo "PROG_LIBS_COV = $PROG_LIBS_COV" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
+echo "PROG_LIBS_DEBUG = $PROG_LIBS_DEBUG" >> ${CONFIG_MK}
# Library
echo >> ${CONFIG_MK}
@@ -125,11 +134,6 @@ echo >> ${CONFIG_MK}
echo "$LIB_DEBUG: $LIB_OBJECTS_DEBUG" >> ${CONFIG_MK}
echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_DEBUG} ${LIB_OBJECTS_DEBUG} \${LIBS_DEBUG} -o ${LIB_DEBUG}" >> ${CONFIG_MK}
-echo >> ${CONFIG_MK}
-echo "install: ${LIB}" >> ${CONFIG_MK}
-echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${LIBDIR}" >> ${CONFIG_MK}
-echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 ${LIB} \${LIBDIR}" >> ${CONFIG_MK}
-
for SRC in $LIB_SOURCES; do
echo >> ${CONFIG_MK}
SRC_LO="$(c2ext .main.lo "$SRC")"
@@ -154,25 +158,20 @@ done
# Program
echo >> ${CONFIG_MK}
-echo "$PROG: $PROG_OBJECTS" >> ${CONFIG_MK}
-echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS} ${PROG_OBJECTS} \${LIBS} -o ${PROG} -rpath ${LIBDIR}" >> ${CONFIG_MK}
+echo "$PROG: $PROG_OBJECTS $LIB" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS} ${PROG_OBJECTS} \${PROG_LIBS} -o ${PROG} -rpath ${LIBDIR}" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
-echo "$PROG_ASAN: $PROG_OBJECTS_ASAN" >> ${CONFIG_MK}
-echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_ASAN} ${PROG_OBJECTS_ASAN} \${LIBS_ASAN} -o ${PROG_ASAN}" >> ${CONFIG_MK}
+echo "$PROG_ASAN: $PROG_OBJECTS_ASAN $LIB_ASAN" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_ASAN} ${PROG_OBJECTS_ASAN} \${PROG_LIBS_ASAN} -o ${PROG_ASAN}" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
-echo "$PROG_COV: $PROG_OBJECTS_COV" >> ${CONFIG_MK}
-echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_COV} ${PROG_OBJECTS_COV} \${LIBS_COV} -o ${PROG_COV}" >> ${CONFIG_MK}
+echo "$PROG_COV: $PROG_OBJECTS_COV $LIB_COV" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_COV} ${PROG_OBJECTS_COV} \${PROG_LIBS_COV} -o ${PROG_COV}" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
-echo "$PROG_DEBUG: $PROG_OBJECTS_DEBUG" >> ${CONFIG_MK}
-echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_DEBUG} ${PROG_OBJECTS_DEBUG} \${LIBS_DEBUG} -o ${PROG_DEBUG}" >> ${CONFIG_MK}
-
-echo >> ${CONFIG_MK}
-echo "install: ${PROG}" >> ${CONFIG_MK}
-echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${BINDIR}" >> ${CONFIG_MK}
-echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 ${PROG} \${BINDIR}" >> ${CONFIG_MK}
+echo "$PROG_DEBUG: $PROG_OBJECTS_DEBUG $LIB_DEBUG" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_DEBUG} ${PROG_OBJECTS_DEBUG} \${PROG_LIBS_DEBUG} -o ${PROG_DEBUG}" >> ${CONFIG_MK}
for SRC in $PROG_SOURCES; do
echo >> ${CONFIG_MK}
diff --git a/cli/rtbuf_cli.c b/cli/rtbuf_cli.c
index b4bf82a..c253862 100644
--- a/cli/rtbuf_cli.c
+++ b/cli/rtbuf_cli.c
@@ -38,7 +38,7 @@ int rtbuf_cli_libs (int argc, const char *argv[])
printf("Listing %i libraries :\n", n);
while (i < g_rtbuf_lib_alloc.n && n > 0) {
if (g_rtbuf_lib[i].path[0]) {
- rtbuf_lib_print(&g_rtbuf_lib[i]);
+ rtbuf_lib_print(g_rtbuf_lib + i);
n--;
}
i++;
@@ -69,6 +69,7 @@ int rtbuf_cli_load (int argc, const char *argv[])
printf("load failed\n");
return -1;
}
+ rtbuf_lib_print(lib);
return 0;
}
@@ -82,7 +83,7 @@ int rtbuf_cli_buffers (int argc, const char *argv[])
printf("Listing %i buffers :\n", n);
while (i < RTBUF_MAX && n > 0) {
if (g_rtbuf[i].data) {
- rtbuf_print_long(i);
+ rtbuf_print_long(g_rtbuf + i);
printf("\n");
n--;
}
@@ -98,7 +99,7 @@ int rtbuf_cli_buffer (int argc, const char *argv[])
return rtbuf_err("usage: buffer N");
if ((i = rtbuf_find(argv[1])) < 0)
return rtbuf_err("buffer not found");
- rtbuf_print_long(i);
+ rtbuf_print_long(g_rtbuf + i);
return 0;
}
@@ -309,22 +310,23 @@ int rtbuf_cli_exit (int argc, const char *argv[])
}
s_cli_function rtbuf_cli_functions[] = {
- { "libs", 0, rtbuf_cli_libs },
- { "lib", 1, rtbuf_cli_lib },
- { "load", 1, rtbuf_cli_load },
- { "buffers", 0, rtbuf_cli_buffers },
+ { "bind", 4, rtbuf_cli_bind },
{ "buffer", 1, rtbuf_cli_buffer },
- { "new", 2, rtbuf_cli_new },
+ { "buffers", 0, rtbuf_cli_buffers },
{ "delete", 1, rtbuf_cli_delete },
- { "bind", 4, rtbuf_cli_bind },
- { "unbind", 1, rtbuf_cli_unbind },
- { "unbind", 2, rtbuf_cli_unbind },
+ { "exit", 0, rtbuf_cli_exit },
+ { "h", 0, rtbuf_cli_help },
+ { "help", 0, rtbuf_cli_help },
{ "let", -1, rtbuf_cli_let },
+ { "lib", 1, rtbuf_cli_lib },
+ { "libs", 0, rtbuf_cli_libs },
+ { "load", 1, rtbuf_cli_load },
+ { "new", 1, rtbuf_cli_new },
+ { "new", 3, rtbuf_cli_new },
{ "start", 0, rtbuf_cli_start_ },
{ "stop", 0, rtbuf_cli_stop_ },
- { "h", 0, rtbuf_cli_help },
- { "help", 0, rtbuf_cli_help },
- { "exit", 0, rtbuf_cli_exit },
+ { "unbind", 1, rtbuf_cli_unbind },
+ { "unbind", 2, rtbuf_cli_unbind },
{ 0, 0, 0 }
};
diff --git a/cli/rtbuf_cli_main.c b/cli/rtbuf_cli_main.c
index adf49b7..469ee70 100644
--- a/cli/rtbuf_cli_main.c
+++ b/cli/rtbuf_cli_main.c
@@ -15,11 +15,14 @@
#include "../librtbuf/rtbuf.h"
#include "rtbuf_cli.h"
+void rtbuf_cli_new_cb (s_rtbuf *rtb);
+
int main (int argc, char *argv[])
{
int res = 0;
symbols_init();
librtbuf_init();
+ g_rtbuf_new_cb = rtbuf_cli_new_cb;
assert(g_rtbuf);
repl_init();
rtbuf_cli_args(argc, argv);
@@ -28,3 +31,8 @@ int main (int argc, char *argv[])
librtbuf_shutdown();
return res;
}
+
+void rtbuf_cli_new_cb (s_rtbuf *rtbuf)
+{
+ rtbuf_print(rtbuf);
+}
diff --git a/cli/rtbuf_debug b/cli/rtbuf_debug
new file mode 100755
index 0000000..b489544
Binary files /dev/null and b/cli/rtbuf_debug differ
diff --git a/cli/sources.mk b/cli/sources.mk
new file mode 100644
index 0000000..4f45cfe
--- /dev/null
+++ b/cli/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+LIB_SOURCES = cli.c rtbuf_cli.c
+PROG_SOURCES = rtbuf_cli_main.c
diff --git a/cli/sources.sh b/cli/sources.sh
new file mode 100644
index 0000000..b8f3f01
--- /dev/null
+++ b/cli/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+LIB_SOURCES='cli.c rtbuf_cli.c '
+PROG_SOURCES='rtbuf_cli_main.c'
diff --git a/cli/update_sources b/cli/update_sources
old mode 100644
new mode 100755
index 91597fc..9e98c6f
--- a/cli/update_sources
+++ b/cli/update_sources
@@ -1,12 +1,14 @@
#!/bin/sh
-. ../config.subr
+SRC_TOP="$(dirname "$PWD")"
+
+. "${SRC_TOP}/config.subr"
echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
LIB_SOURCES="$(ls *.c | grep -Fv rtbuf_cli_main.c)"
-LIB_SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+LIB_SOURCES="$(echo "$LIB_SOURCES" | tr '\n' ' ')"
echo "LIB_SOURCES = $LIB_SOURCES" >> ${SOURCES_MK}
echo "LIB_SOURCES='$LIB_SOURCES'" >> ${SOURCES_SH}
diff --git a/config.subr b/config.subr
index bdd1e51..8118a92 100644
--- a/config.subr
+++ b/config.subr
@@ -14,7 +14,7 @@
set -e
-echo "$(basename "$PWD")/$(basename "$0")"
+echo "$(echo "$PWD/" | sed -e "s|^${SRC_TOP}/||")$(basename "$0")"
o_rule() {
"$CC" $CPPFLAGS $CFLAGS -M "$1" || { echo "$1" | sed -e 's/^\(.*\)\.c$/\1.o: \1.c/'; }
@@ -138,7 +138,7 @@ require_pkg_config() {
update_config_mk() {
if ! cmp "${CONFIG_MK}" config.mk >/dev/null 2>&1; then
mv "${CONFIG_MK}" config.mk
- echo "-> $(basename "$PWD")/config.mk"
+ echo "-> $(echo "$PWD" | sed -e "s|^${SRC_TOP}/||")/config.mk"
else
rm "${CONFIG_MK}"
fi
@@ -147,7 +147,7 @@ update_config_mk() {
update_sources_mk() {
if ! cmp "${SOURCES_MK}" sources.mk >/dev/null 2>&1; then
mv "${SOURCES_MK}" sources.mk
- echo "-> $(basename "$PWD")/sources.mk"
+ echo "-> $(echo "$PWD" | sed -e "s|^${SRC_TOP}/||")/sources.mk"
else
rm "${SOURCES_MK}"
fi
@@ -156,7 +156,7 @@ update_sources_mk() {
update_sources_sh() {
if ! cmp "${SOURCES_SH}" sources.sh >/dev/null 2>&1; then
mv "${SOURCES_SH}" sources.sh
- echo "-> $(basename "$PWD")/sources.sh"
+ echo "-> $(echo "$PWD" | sed -e "s|^${SRC_TOP}/||")/sources.sh"
else
rm "${SOURCES_SH}"
fi
@@ -175,11 +175,18 @@ VER=0.4
echo "VER = $VER" >> ${CONFIG_MK}
echo "SRC_TOP = $SRC_TOP" >> ${CONFIG_MK}
+if [ "x$AR" = "x" ]; then
+ if which ar >/dev/null 2>&1; then
+ AR=ar
+ fi
+fi
if [ "x$CC" = "x" ]; then
- if test -n $(which cc); then
+ if which cc >/dev/null 2>&1; then
CC=cc
- elif test -n $(which gcc); then
+ elif which gcc >/dev/null 2>&1; then
CC=gcc
+ elif which egcc >/dev/null 2>&1; then
+ CC=egcc
fi
fi
echo "CC = $CC" >> ${CONFIG_MK}
@@ -187,17 +194,17 @@ echo "CC = $CC" >> ${CONFIG_MK}
if [ "x$GCOV" = "x" ]; then
if which gcov >/dev/null 2>&1; then
GCOV=gcov
- HAVE_GCOV=true
+ HAVE_GCOV=Yes
elif which egcov >/dev/null 2>&1; then
GCOV=egcov
- HAVE_GCOV=true
+ HAVE_GCOV=No
fi
- HAVE_GCOV=false
+ HAVE_GCOV=No
else
- HAVE_GCOV=true
+ HAVE_GCOV=Yes
fi
echo "HAVE_GCOV = $HAVE_GCOV" >> ${CONFIG_MK}
-if ${HAVE_GCOV}; then
+if [ "x${HAVE_GCOV}" = "xYes" ]; then
echo "GCOV = $GCOV" >> ${CONFIG_MK}
fi
@@ -235,17 +242,17 @@ fi
echo "GROUP = $GROUP" >> ${CONFIG_MK}
if [ "x$BINDIR" = "x" ]; then
- BINDIR=${PREFIX}/bin
+ BINDIR="${PREFIX}/bin"
fi
echo "BINDIR = $BINDIR" >> ${CONFIG_MK}
if [ "x$LIBDIR" = "x" ]; then
- LIBDIR=${PREFIX}/lib
+ LIBDIR="${PREFIX}/lib"
fi
echo "LIBDIR = $LIBDIR" >> ${CONFIG_MK}
if [ "x$RTBUF_LIBDIR" = "x" ]; then
- RTBUF_LIBDIR=${LIBDIR}/rtbuf/${VER}
+ RTBUF_LIBDIR="${LIBDIR}/rtbuf/${VER}"
fi
echo "RTBUF_LIBDIR = $RTBUF_LIBDIR" >> ${CONFIG_MK}
@@ -255,11 +262,10 @@ rtbuf_library() {
LIBRARIES=
- echo sources: "'$SOURCES'"
for SRC in $SOURCES; do
- SRC_LO="$(c2lo "$SRC")"
+ SRC_LO="$(c2ext .main.lo "$SRC")"
echo >> ${CONFIG_MK}
- lo_rule "$SRC" >> ${CONFIG_MK}
+ ext_rule .main.lo "$SRC" >> ${CONFIG_MK}
echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS} -c $SRC -o $SRC_LO" >> ${CONFIG_MK}
SRC_LA="$(c2la "$SRC")"
echo >> ${CONFIG_MK}
diff --git a/configure b/configure
index 7493915..c1ab33f 100755
--- a/configure
+++ b/configure
@@ -14,7 +14,7 @@
set -e
-export RTBUF_SRC_TOP="$(pwd)/.."
+export SRC_TOP="$PWD"
PREFIX="${PREFIX:-/usr/local}"
if [ "x$1" = "x--prefix" ]; then
@@ -23,7 +23,7 @@ if [ "x$1" = "x--prefix" ]; then
fi
export PREFIX
-. ./config.subr
+. "${SRC_TOP}/config.subr"
RTBUF_DIRS="librtbuf lib cli gtk3"
RTBUF_CONFIGURES="$(find . -name configure -or -name update_sources | tr '\n' ' ')"
diff --git a/gtk3/Makefile b/gtk3/Makefile
index 20a2e3d..6cb28c0 100644
--- a/gtk3/Makefile
+++ b/gtk3/Makefile
@@ -11,12 +11,24 @@
## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
## THIS SOFTWARE.
-CLEANFILES=
+CLEANFILES = .libs *.o *.lo *.la rtbuf_gtk3 rtbuf_gtk3_asan rtbuf_gtk3_cov rtbuf_gtk3_debug *.gcno *.gcna *.gcda
-all: rtbuf-gtk3
+build: rtbuf_gtk3
+
+all:
+ ${MAKE} build
+ if [ "x${HAVE_GCOV}" = "xYes" ]; then ${MAKE} cov; fi
+ ${MAKE} debug
+ if [ "x${HAVE_ASAN}" = "xYes" ]; then ${MAKE} asan; fi
+
+asan: rtbuf_gtk3_asan
clean:
- rm -rf .libs *.o *.lo *.la rtbuf-gtk3 ${CLEANFILES} *.gcno *.gcna *.gcda
+ rm -rf ${CLEANFILES}
+
+cov: rtbuf_gtk3_cov
+
+debug: rtbuf_gtk3_debug
rtbuf_gtk3_UI = \
rtbuf_gtk3_input_widget.ui \
@@ -32,3 +44,4 @@ CLEANFILES = rtbuf_gtk3_resources.c
.PHONY: all clean
include config.mk
+include sources.mk
diff --git a/gtk3/configure b/gtk3/configure
index 9b7844a..60678e2 100755
--- a/gtk3/configure
+++ b/gtk3/configure
@@ -14,57 +14,143 @@
set -e
-. ../config.subr
+SRC_TOP="$(dirname "$PWD")"
-PROG=rtbuf-gtk3
+. "${SRC_TOP}/config.subr"
-touch rtbuf_gtk3_resources.c
+# Targets
+PROG=rtbuf_gtk3
+PROG_ASAN=rtbuf_gtk3_asan
+PROG_COV=rtbuf_gtk3_cov
+PROG_DEBUG=rtbuf_gtk3_debug
-SOURCES="$(ls *.c | tr '\n' ' ')"
-echo "SOURCES = $SOURCES" >> ${CONFIG_MK}
+# Sources
+. ./sources.sh
-OBJECTS="$(c2o "$SOURCES")"
-echo "OBJECTS = $OBJECTS" >> ${CONFIG_MK}
+PROG_OBJECTS="$(c2ext .main.lo "$PROG_SOURCES")"
+PROG_OBJECTS_ASAN="$(c2ext .asan.lo "$PROG_SOURCES")"
+PROG_OBJECTS_COV="$(c2ext .cov.lo "$PROG_SOURCES")"
+PROG_OBJECTS_DEBUG="$(c2ext .debug.lo "$PROG_SOURCES")"
-if test -d /usr/local/include; then
- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
- CPPFLAGS="$CPPFLAGS $(pkg-config --cflags-only-I gtk+-3.0)"
-fi
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "PROG_OBJECTS = $PROG_OBJECTS" >> ${CONFIG_MK}
+echo "PROG_OBJECTS_ASAN = $PROG_OBJECTS_ASAN" >> ${CONFIG_MK}
+echo "PROG_OBJECTS_COV = $PROG_OBJECTS_COV" >> ${CONFIG_MK}
+echo "PROG_OBJECTS_DEBUG = $PROG_OBJECTS_DEBUG" >> ${CONFIG_MK}
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c11 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+LIBS="$LIBS -lpthread -lreadline"
+config_asan
+config_gnu
+pkg_config libbsd-overlay
+pkg_config gtk+-3.0
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS $SRC_TOP/cli/librtbuf_cli_asan.la"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS $SRC_TOP/cli/librtbuf_cli_cov.la"
+
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS $SRC_TOP/cli/librtbuf_cli_debug.la"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror"
-CFLAGS="$CFLAGS $(pkg-config --cflags-only-other gtk+-3.0)"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+LIBS="$LIBS $SRC_TOP/cli/librtbuf_cli.la"
-LDFLAGS="$LDFLAGS -pthread"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS=""
-LIBS="$LIBS ../librtbuf/librtbuf.la"
-LIBS="$LIBS ../cli/librtbuf_cli.la"
-LIBS="$LIBS $(pkg-config --libs gtk+-3.0)"
-LIBS="$LIBS -lm"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
-for SRC in $SOURCES; do
- SRC_O=$(c2o $SRC)
- echo >> ${CONFIG_MK}
- o_rule $SRC >> ${CONFIG_MK}
- echo " \${CC} \${CPPFLAGS} \${CFLAGS} -c $SRC -o $SRC_O" >> ${CONFIG_MK}
-done
+# Program
+PROG=rtbuf_gtk3
+
+touch rtbuf_gtk3_resources.c
echo >> ${CONFIG_MK}
-echo "$PROG: $OBJECTS" >> ${CONFIG_MK}
-echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS} ${OBJECTS} ${LIBS} -o $PROG" >> ${CONFIG_MK}
+echo "$PROG: $PROG_OBJECTS" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS} ${PROG_OBJECTS} \${LIBS} -o ${PROG} -rpath ${LIBDIR}" >> ${CONFIG_MK}
echo >> ${CONFIG_MK}
+echo "$PROG_ASAN: $PROG_OBJECTS_ASAN" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_ASAN} ${PROG_OBJECTS_ASAN} \${LIBS_ASAN} -o ${PROG_ASAN}" >> ${CONFIG_MK}
+
+echo >> ${CONFIG_MK}
+echo "$PROG_COV: $PROG_OBJECTS_COV" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_COV} ${PROG_OBJECTS_COV} \${LIBS_COV} -o ${PROG_COV}" >> ${CONFIG_MK}
+
+echo >> ${CONFIG_MK}
+echo "$PROG_DEBUG: $PROG_OBJECTS_DEBUG" >> ${CONFIG_MK}
+echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_DEBUG} ${PROG_OBJECTS_DEBUG} \${LIBS_DEBUG} -o ${PROG_DEBUG}" >> ${CONFIG_MK}
+
+echo >> ${CONFIG_MK}
+echo "install: ${PROG}" >> ${CONFIG_MK}
+echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${BINDIR}" >> ${CONFIG_MK}
+echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 ${PROG} \${BINDIR}" >> ${CONFIG_MK}
+
+for SRC in $PROG_SOURCES; do
+ echo >> ${CONFIG_MK}
+ SRC_LO="$(c2ext .main.lo "$SRC")"
+ ext_rule .main.lo "$SRC" >> ${CONFIG_MK}
+ echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS} -c $SRC -o $SRC_LO" >> ${CONFIG_MK}
+
+ echo >> ${CONFIG_MK}
+ SRC_ASAN_LO="$(c2ext .asan.lo "$SRC")"
+ ext_rule .asan.lo "$SRC" >> ${CONFIG_MK}
+ echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS_ASAN} -c $SRC -o $SRC_ASAN_LO" >> ${CONFIG_MK}
+
+ echo >> ${CONFIG_MK}
+ SRC_COV_LO="$(c2ext .cov.lo "$SRC")"
+ ext_rule .cov.lo "$SRC" >> ${CONFIG_MK}
+ echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS_COV} -c $SRC -o $SRC_COV_LO" >> ${CONFIG_MK}
+
+ echo >> ${CONFIG_MK}
+ SRC_DEBUG_LO="$(c2ext .debug.lo "$SRC")"
+ ext_rule .debug.lo "$SRC" >> ${CONFIG_MK}
+ echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS_DEBUG} -c $SRC -o $SRC_DEBUG_LO" >> ${CONFIG_MK}
+done
+
+# Install
+echo >> ${CONFIG_MK}
echo "install: $PROG" >> ${CONFIG_MK}
echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${BINDIR}" >> ${CONFIG_MK}
echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 $PROG \${BINDIR}/$PROG" >> ${CONFIG_MK}
+update_config_mk
+
rm rtbuf_gtk3_resources.c
diff --git a/gtk3/rtbuf_gtk3 b/gtk3/rtbuf_gtk3
new file mode 100755
index 0000000..92df277
--- /dev/null
+++ b/gtk3/rtbuf_gtk3
@@ -0,0 +1,210 @@
+#! /bin/sh
+
+# rtbuf_gtk3 - temporary wrapper script for .libs/rtbuf_gtk3
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# The rtbuf_gtk3 program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=""
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='2.4.2'
+ notinst_deplibs=' /home/dx/c/rtbuf/rtbuf/lib/librtbuf_signal.la /home/dx/c/rtbuf/rtbuf/cli/librtbuf_cli.la /home/dx/c/rtbuf/rtbuf/librtbuf/librtbuf.la'
+else
+ # When we are sourced in execute mode, $file and $ECHO are already set.
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ file="$0"
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+ ECHO="print -r --"
+ fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string --lt-
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's /usr/local/bin/libtool value, followed by no.
+lt_option_debug=
+func_parse_lt_options ()
+{
+ lt_script_arg0=$0
+ shift
+ for lt_opt
+ do
+ case "$lt_opt" in
+ --lt-debug) lt_option_debug=1 ;;
+ --lt-dump-script)
+ lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'`
+ test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=.
+ lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'`
+ cat "$lt_dump_D/$lt_dump_F"
+ exit 0
+ ;;
+ --lt-*)
+ $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+
+ # Print the debug banner immediately:
+ if test -n "$lt_option_debug"; then
+ echo "rtbuf_gtk3:rtbuf_gtk3:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2
+ fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+ lt_dump_args_N=1;
+ for lt_arg
+ do
+ $ECHO "rtbuf_gtk3:rtbuf_gtk3:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg"
+ lt_dump_args_N=`expr $lt_dump_args_N + 1`
+ done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+
+ if test -n "$lt_option_debug"; then
+ $ECHO "rtbuf_gtk3:rtbuf_gtk3:${LINENO}: newargv[0]: $progdir/$program" 1>&2
+ func_lt_dump_args ${1+"$@"} 1>&2
+ fi
+ exec "$progdir/$program" ${1+"$@"}
+
+ $ECHO "$0: cannot exec $program $*" 1>&2
+ exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from $@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+ case " $* " in
+ *\ --lt-*)
+ for lt_wr_arg
+ do
+ case $lt_wr_arg in
+ --lt-*) ;;
+ *) set x "$@" "$lt_wr_arg"; shift;;
+ esac
+ shift
+ done ;;
+ esac
+ func_exec_program_core ${1+"$@"}
+}
+
+ # Parse options
+ func_parse_lt_options "$0" ${1+"$@"}
+
+ # Find the directory that this script lives in.
+ thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
+ test "x$thisdir" = "x$file" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
+ while test -n "$file"; do
+ destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'`
+
+ # If there was a directory component, then change thisdir.
+ if test "x$destdir" != "x$file"; then
+ case "$destdir" in
+ [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+ *) thisdir="$thisdir/$destdir" ;;
+ esac
+ fi
+
+ file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'`
+ file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+ if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+ # special case for '.'
+ if test "$thisdir" = "."; then
+ thisdir=`pwd`
+ fi
+ # remove .libs from thisdir
+ case "$thisdir" in
+ *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;;
+ .libs ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=`cd "$thisdir" && pwd`
+ test -n "$absdir" && thisdir="$absdir"
+
+ program='rtbuf_gtk3'
+ progdir="$thisdir/.libs"
+
+
+ if test -f "$progdir/$program"; then
+ # Add our own library path to LD_LIBRARY_PATH
+ LD_LIBRARY_PATH="/usr/local/lib:/usr/X11R6/lib:/home/dx/c/rtbuf/rtbuf/lib/.libs:/home/dx/c/rtbuf/rtbuf/cli/.libs:/home/dx/c/rtbuf/rtbuf/librtbuf/.libs:$LD_LIBRARY_PATH"
+
+ # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'`
+
+ export LD_LIBRARY_PATH
+
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ # Run the actual program with our arguments.
+ func_exec_program ${1+"$@"}
+ fi
+ else
+ # The program doesn't exist.
+ $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2
+ $ECHO "This script is just a wrapper for $program." 1>&2
+ $ECHO "See the libtool documentation for more information." 1>&2
+ exit 1
+ fi
+fi
diff --git a/gtk3/rtbuf_gtk3_rtbuf.c b/gtk3/rtbuf_gtk3_rtbuf.c
index 9204380..9685808 100644
--- a/gtk3/rtbuf_gtk3_rtbuf.c
+++ b/gtk3/rtbuf_gtk3_rtbuf.c
@@ -54,7 +54,7 @@ void rtbuf_gtk_rtbuf_menu (RtbufWidget *widget, GdkEvent *event)
signal,
0,
NULL,
- G_CALLBACK(rtbuf_gtk_rtbuf_rename),
+ (gpointer) rtbuf_gtk_rtbuf_rename,
NULL);
g_signal_connect_swapped(G_OBJECT(rename), "activate",
G_CALLBACK(rtbuf_gtk_rtbuf_rename),
@@ -64,7 +64,7 @@ void rtbuf_gtk_rtbuf_menu (RtbufWidget *widget, GdkEvent *event)
signal,
0,
NULL,
- G_CALLBACK(rtbuf_gtk_rtbuf_delete),
+ (gpointer) rtbuf_gtk_rtbuf_delete,
NULL);
g_signal_connect_swapped(G_OBJECT(delete), "activate",
G_CALLBACK(rtbuf_gtk_rtbuf_delete),
diff --git a/gtk3/sources.mk b/gtk3/sources.mk
new file mode 100644
index 0000000..24a2168
--- /dev/null
+++ b/gtk3/sources.mk
@@ -0,0 +1,2 @@
+# sources.mk generated by update_sources
+PROG_SOURCES = list.c queue.c rtbuf_gtk3.c rtbuf_gtk3_connection.c rtbuf_gtk3_input.c rtbuf_gtk3_input_widget.c rtbuf_gtk3_library.c rtbuf_gtk3_output.c rtbuf_gtk3_output_widget.c rtbuf_gtk3_rtbuf.c rtbuf_gtk3_rtbuf_info.c rtbuf_gtk3_widget.c stack.c rtbuf_gtk3_resources.c
diff --git a/gtk3/sources.sh b/gtk3/sources.sh
new file mode 100644
index 0000000..aad2e34
--- /dev/null
+++ b/gtk3/sources.sh
@@ -0,0 +1,2 @@
+# sources.sh generated by update_sources
+PROG_SOURCES='list.c queue.c rtbuf_gtk3.c rtbuf_gtk3_connection.c rtbuf_gtk3_input.c rtbuf_gtk3_input_widget.c rtbuf_gtk3_library.c rtbuf_gtk3_output.c rtbuf_gtk3_output_widget.c rtbuf_gtk3_rtbuf.c rtbuf_gtk3_rtbuf_info.c rtbuf_gtk3_widget.c stack.c rtbuf_gtk3_resources.c '
diff --git a/gtk3/update_sources b/gtk3/update_sources
new file mode 100755
index 0000000..e04c7d6
--- /dev/null
+++ b/gtk3/update_sources
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$PWD")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+PROG_SOURCES="$(ls *.c) rtbuf_gtk3_resources.c"
+PROG_SOURCES="$(echo "$PROG_SOURCES" | tr '\n' ' ')"
+echo "PROG_SOURCES = $PROG_SOURCES" >> ${SOURCES_MK}
+echo "PROG_SOURCES='$PROG_SOURCES'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/Makefile b/lib/Makefile
index 494efb1..6a045d0 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -11,12 +11,12 @@
## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
## THIS SOFTWARE.
-CLEANFILES =
+CLEANFILES = .libs *.o *.lo *.la *.gcno *.gcna *.gcda
all: types libraries subdirs
clean: subdirs-clean
- rm -rf .libs *.o *.lo *.la ${CLEANFILES} *.gcno *.gcna *.gcda
+ rm -rf ${CLEANFILES}
install: libraries-install subdirs-install
diff --git a/lib/configure b/lib/configure
index 951c6ef..c2b2daa 100755
--- a/lib/configure
+++ b/lib/configure
@@ -14,52 +14,87 @@
set -e
-. ../config.subr
-
-LIB_SRCDIR="$(dirname $0)"
-
-SOURCES="$(ls *.c | grep -Ev '_type.c$' | tr '\n' ' ')"
-
-DIRS="$(ls -d */)"
-
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+SRC_TOP="$(dirname "$PWD")"
+
+. "${SRC_TOP}/config.subr"
+
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+pkg_config libbsd-overlay
+config_portaudio
+config_sndio
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
+
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-
-LIBS=""
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
-check_libbsd
-check_portaudio
-check_sndio
-
-if test "x$HAVE_LIBBSD" = "xYes"; then
- CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE -D__USE_MISC"
-fi
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
+echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
-if ! test "x$HAVE_SNDIO" = "xYes"; then
+if [ "x$HAVE_SNDIO" != "xYes" ]; then
DIRS="$(echo "$DIRS" | grep -v sndio)"
fi
-if ! test "x$HAVE_PORTAUDIO" = "xYes"; then
+if [ "x$HAVE_PORTAUDIO" != "xYes" ]; then
DIRS="$(echo "$DIRS" | grep -v portaudio)"
fi
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
-echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-echo "LIBS = $LIBS" >> ${CONFIG_MK}
-
TYPES=
type_prog music
-if test "x$HAVE_PORTAUDIO" = "xYes"; then
+if [ "x$HAVE_PORTAUDIO" = "xYes" ]; then
type_prog portaudio
fi
type_prog reverb
type_prog signal
-if test "x$HAVE_SNDIO" = "xYes"; then
+if [ "x$HAVE_SNDIO" = "xYes" ]; then
type_prog sndio
fi
type_prog synth
@@ -69,9 +104,9 @@ echo "types:${TYPES}" >> ${CONFIG_MK}
LIBRARIES=
for SRC in $SOURCES; do
- SRC_LO="$(c2lo "$SRC")"
+ SRC_LO="$(c2ext .main.lo "$SRC")"
echo >> ${CONFIG_MK}
- lo_rule "$SRC" >> ${CONFIG_MK}
+ ext_rule .main.lo "$SRC" >> ${CONFIG_MK}
echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS} -c $SRC -o $SRC_LO" >> ${CONFIG_MK}
SRC_LA="librtbuf_$(c2la "$SRC")"
@@ -120,3 +155,5 @@ done
echo >> ${CONFIG_MK}
echo ".PHONY: types libraries install subdirs subdirs-clean subdirs-install" >> ${CONFIG_MK}
+
+update_config_mk
diff --git a/lib/dynamic/configure b/lib/dynamic/configure
index d494e5b..99b624c 100755
--- a/lib/dynamic/configure
+++ b/lib/dynamic/configure
@@ -14,27 +14,71 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
-if test -d /usr/local/include; then
- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
-fi
-CPPFLAGS="$CPPFLAGS"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+pkg_config libbsd-overlay
+pkg_config libffi
+pkg_config libmd
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS="../librtbuf_signal.la ../../librtbuf/librtbuf.la"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library dynamic
+
+update_config_mk
diff --git a/lib/dynamic/sources.mk b/lib/dynamic/sources.mk
new file mode 100644
index 0000000..c45b390
--- /dev/null
+++ b/lib/dynamic/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = limiter.c
+DIRS =
diff --git a/lib/dynamic/sources.sh b/lib/dynamic/sources.sh
new file mode 100644
index 0000000..15e3bb6
--- /dev/null
+++ b/lib/dynamic/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='limiter.c '
+DIRS=''
diff --git a/lib/dynamic/update_sources b/lib/dynamic/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/dynamic/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/glfw3/configure b/lib/glfw3/configure
index 1d03133..3e7a421 100755
--- a/lib/glfw3/configure
+++ b/lib/glfw3/configure
@@ -14,33 +14,75 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
require_pkg_config
+config_asan
+config_gnu
+pkg_config gl
+pkg_config glfw3
+pkg_config libbsd-overlay
+pkg_config libffi
+pkg_config libmd
-CPPFLAGS="$CPPFLAGS $(pkg-config --cflags-only-I glfw3)"
-CPPFLAGS="$CPPFLAGS -DGL_SILENCE_DEPRECATION=1"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
+
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-CFLAGS="$CFLAGS $(pkg-config --cflags-only-other glfw3)"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_music.la"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS=""
-LIBS="$LIBS $(pkg-config --libs glfw3)"
-LIBS="$LIBS $(pkg-config --libs gl)"
-LIBS="$LIBS ../librtbuf_music.la"
-LIBS="$LIBS ../librtbuf_signal.la"
-LIBS="$LIBS ../../librtbuf/librtbuf.la"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library glfw3
+
+update_config_mk
diff --git a/lib/glfw3/sources.mk b/lib/glfw3/sources.mk
new file mode 100644
index 0000000..c45d216
--- /dev/null
+++ b/lib/glfw3/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = keyboard.c oscilloscope.c
+DIRS =
diff --git a/lib/glfw3/sources.sh b/lib/glfw3/sources.sh
new file mode 100644
index 0000000..ec4434b
--- /dev/null
+++ b/lib/glfw3/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='keyboard.c oscilloscope.c '
+DIRS=''
diff --git a/lib/glfw3/update_sources b/lib/glfw3/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/glfw3/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/portaudio/configure b/lib/portaudio/configure
index 834ee49..e3ac114 100755
--- a/lib/portaudio/configure
+++ b/lib/portaudio/configure
@@ -14,32 +14,69 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="input.c output.c"
+. "${SRC_TOP}/config.subr"
-LIB_SRCDIR="$(dirname "$0")/.."
+. ./sources.sh
-require_pkg_config
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
-CPPFLAGS="$CPPFLAGS"
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+config_portaudio
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
-fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
-LIBS=""
-LIBS="$LIBS ../../librtbuf/librtbuf.la"
-LIBS="$LIBS ../librtbuf_signal.la"
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
-check_portaudio
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
+fi
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library portaudio
+
+update_config_mk
diff --git a/lib/portaudio/sources.mk b/lib/portaudio/sources.mk
new file mode 100644
index 0000000..386987f
--- /dev/null
+++ b/lib/portaudio/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = config.c input.c output.c
+DIRS =
diff --git a/lib/portaudio/sources.sh b/lib/portaudio/sources.sh
new file mode 100644
index 0000000..7899ab2
--- /dev/null
+++ b/lib/portaudio/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='config.c input.c output.c '
+DIRS=''
diff --git a/lib/portaudio/update_sources b/lib/portaudio/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/portaudio/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/reverb/configure b/lib/reverb/configure
index 9de74d7..19a395f 100755
--- a/lib/reverb/configure
+++ b/lib/reverb/configure
@@ -14,24 +14,68 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
-CPPFLAGS="$CPPFLAGS"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
+
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS="../../librtbuf/librtbuf.la ../librtbuf_signal.la"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library reverb
+
+update_config_mk
diff --git a/lib/reverb/sources.mk b/lib/reverb/sources.mk
new file mode 100644
index 0000000..18f93a6
--- /dev/null
+++ b/lib/reverb/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = fdn4.c
+DIRS =
diff --git a/lib/reverb/sources.sh b/lib/reverb/sources.sh
new file mode 100644
index 0000000..d94ba26
--- /dev/null
+++ b/lib/reverb/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='fdn4.c '
+DIRS=''
diff --git a/lib/reverb/update_sources b/lib/reverb/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/reverb/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/signal/configure b/lib/signal/configure
index a9c026e..2671bc4 100755
--- a/lib/signal/configure
+++ b/lib/signal/configure
@@ -14,28 +14,69 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
-if test -d /usr/local/include; then
- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
-fi
-CPPFLAGS="$CPPFLAGS"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+LIBS="$LIBS -lm"
+config_asan
+config_gnu
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-CFLAGS="$CFLAGS -D_DEFAULT_SOURCE -D__USE_MISC"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS="../../librtbuf/librtbuf.la ../librtbuf_signal.la -lm"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library signal
+
+update_config_mk
diff --git a/lib/signal/sources.mk b/lib/signal/sources.mk
new file mode 100644
index 0000000..866ae40
--- /dev/null
+++ b/lib/signal/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = bandpass2.c delay.c equalizer10.c flanger.c hipass.c hipass2.c hipass3.c hipass4.c hipass5.c lowpass.c lowpass2.c lowpass3.c lowpass4.c lowpass5.c sawtooth.c sinus.c square.c
+DIRS =
diff --git a/lib/signal/sources.sh b/lib/signal/sources.sh
new file mode 100644
index 0000000..a4ad0da
--- /dev/null
+++ b/lib/signal/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='bandpass2.c delay.c equalizer10.c flanger.c hipass.c hipass2.c hipass3.c hipass4.c hipass5.c lowpass.c lowpass2.c lowpass3.c lowpass4.c lowpass5.c sawtooth.c sinus.c square.c '
+DIRS=''
diff --git a/lib/signal/update_sources b/lib/signal/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/signal/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/sndio/configure b/lib/sndio/configure
index cf4723a..c867bce 100755
--- a/lib/sndio/configure
+++ b/lib/sndio/configure
@@ -14,29 +14,73 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
-CPPFLAGS="$CPPFLAGS"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+. ./sources.sh
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+config_sndio
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
+
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-check_sndio
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
+echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
if test "x$HAVE_SNDIO" = "xYes"; then
rtbuf_library sndio
- LIBS="-lsndio ../librtbuf_signal.la"
- echo "LIBS = $LIBS" >> ${CONFIG_MK}
else
echo "libraries:" >> ${CONFIG_MK}
fi
+
+update_config_mk
diff --git a/lib/sndio/sources.mk b/lib/sndio/sources.mk
new file mode 100644
index 0000000..30bf0ff
--- /dev/null
+++ b/lib/sndio/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = check_sndio.c config.c input.c output.c
+DIRS =
diff --git a/lib/sndio/sources.sh b/lib/sndio/sources.sh
new file mode 100644
index 0000000..65607b5
--- /dev/null
+++ b/lib/sndio/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='check_sndio.c config.c input.c output.c '
+DIRS=''
diff --git a/lib/sndio/update_sources b/lib/sndio/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/sndio/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/sources.mk b/lib/sources.mk
new file mode 100644
index 0000000..f6a2e88
--- /dev/null
+++ b/lib/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = music.c reverb.c signal.c sndio.c
+DIRS = dynamic/ glfw3/ portaudio/ reverb/ signal/ sndio/ synth/
diff --git a/lib/sources.sh b/lib/sources.sh
new file mode 100644
index 0000000..ec0aca6
--- /dev/null
+++ b/lib/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='music.c reverb.c signal.c sndio.c '
+DIRS='dynamic/ glfw3/ portaudio/ reverb/ signal/ sndio/ synth/ '
diff --git a/lib/synth/configure b/lib/synth/configure
index f0eb8b1..39065c8 100755
--- a/lib/synth/configure
+++ b/lib/synth/configure
@@ -14,30 +14,69 @@
set -e
-. ../../config.subr
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
-SOURCES="$(ls *.c | tr '\n' ' ')"
+. "${SRC_TOP}/config.subr"
-if test -d /usr/local/include; then
- CPPFLAGS="$CPPFLAGS -I/usr/local/include"
-fi
-CPPFLAGS="$CPPFLAGS"
-echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+. ./sources.sh
+
+# Default config
+CPPFLAGS="${CPPFLAGS:=}"
+ENV_CFLAGS="${CFLAGS:=}"
+DEFAULT_CFLAGS="-O2 -pipe -fPIC"
+LDFLAGS="${LDFLAGS:=}"
+LIBS="${LIBS:=-lm}"
+
+# Common config for all targets
+CFLAGS="$CFLAGS -W -Wall -Werror -std=c99 -pedantic"
+CPPFLAGS="$CPPFLAGS -DRTBUF_LIBDIR=\\\"${RTBUF_LIBDIR}\\\""
+CPPFLAGS="$CPPFLAGS -DVER=\\\"${VER}\\\""
+config_asan
+config_gnu
+
+# Address Sanitizer config
+CFLAGS_ASAN="$CFLAGS -fsanitize=address -O1 -fno-omit-frame-pointer -g"
+LDFLAGS_ASAN="$LDFLAGS"
+LIBS_ASAN="$LIBS"
+
+# Coverage config
+CFLAGS_COV="$CFLAGS -ftest-coverage -fprofile-arcs"
+LDFLAGS_COV="$LDFLAGS"
+LIBS_COV="$LIBS"
-if [ x"$DEBUG" = x"yes" ]; then
- CFLAGS="$CFLAGS -DDEBUG -O0 -ggdb"
-else
- CFLAGS="$CFLAGS -DNDEBUG -O3"
+# Debug config
+CFLAGS_DEBUG="$CFLAGS -DDEBUG -O0 -ggdb"
+LDFLAGS_DEBUG="$LDFLAGS"
+LIBS_DEBUG="$LIBS"
+
+# Main config
+if [ "x$ENV_CFLAGS" = "x" ]; then
+ CFLAGS="$CFLAGS $DEFAULT_CFLAGS"
fi
-CFLAGS="$CFLAGS -W -Wall -Werror -std=c89 -pedantic"
-echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
+CFLAGS="$CFLAGS -DNDEBUG"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_music.la"
+LIBS="$LIBS $SRC_TOP/lib/librtbuf_signal.la"
+LIBS="$LIBS $SRC_TOP/librtbuf/librtbuf.la"
+echo "HAVE_ASAN = $HAVE_ASAN" >> ${CONFIG_MK}
+echo "CPPFLAGS = $CPPFLAGS" >> ${CONFIG_MK}
+echo "CFLAGS = $CFLAGS" >> ${CONFIG_MK}
echo "LDFLAGS = $LDFLAGS" >> ${CONFIG_MK}
-
-LIBS=""
-LIBS="$LIBS ../librtbuf_music.la"
-LIBS="$LIBS ../librtbuf_signal.la"
-LIBS="$LIBS ../../librtbuf/librtbuf.la"
+echo "LIB_OBJECTS = $LIB_OBJECTS" >> ${CONFIG_MK}
echo "LIBS = $LIBS" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_ASAN = $CFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LDFLAGS_ASAN = $LDFLAGS_ASAN" >> ${CONFIG_MK}
+echo "LIBS_ASAN = $LIBS_ASAN" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_COV = $CFLAGS_COV" >> ${CONFIG_MK}
+echo "LDFLAGS_COV = $LDFLAGS_COV" >> ${CONFIG_MK}
+echo "LIBS_COV = $LIBS_COV" >> ${CONFIG_MK}
+echo >> ${CONFIG_MK}
+echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
+echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
rtbuf_library synth
+
+update_config_mk
diff --git a/lib/synth/sources.mk b/lib/synth/sources.mk
new file mode 100644
index 0000000..c4ffdab
--- /dev/null
+++ b/lib/synth/sources.mk
@@ -0,0 +1,3 @@
+# sources.mk generated by update_sources
+SOURCES = adsr.c synth.c
+DIRS =
diff --git a/lib/synth/sources.sh b/lib/synth/sources.sh
new file mode 100644
index 0000000..87175d7
--- /dev/null
+++ b/lib/synth/sources.sh
@@ -0,0 +1,3 @@
+# sources.sh generated by update_sources
+SOURCES='adsr.c synth.c '
+DIRS=''
diff --git a/lib/synth/update_sources b/lib/synth/update_sources
new file mode 100755
index 0000000..412d180
--- /dev/null
+++ b/lib/synth/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$(dirname "$PWD")")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+#DIRS="$(ls -d */)"
+DIRS=""
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/lib/update_sources b/lib/update_sources
new file mode 100755
index 0000000..8d5ca70
--- /dev/null
+++ b/lib/update_sources
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+SRC_TOP="$(dirname "$PWD")"
+
+. "${SRC_TOP}/config.subr"
+
+echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
+echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
+
+SOURCES="$(ls *.c | grep -Ev '_type.c$')"
+SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+echo "SOURCES = $SOURCES" >> ${SOURCES_MK}
+echo "SOURCES='$SOURCES'" >> ${SOURCES_SH}
+
+DIRS="$(ls -d */)"
+DIRS="$(echo "$DIRS" | tr '\n' ' ')"
+echo "DIRS = $DIRS" >> ${SOURCES_MK}
+echo "DIRS='$DIRS'" >> ${SOURCES_SH}
+
+update_sources_mk
+update_sources_sh
diff --git a/librtbuf/Makefile b/librtbuf/Makefile
index 43e7f6c..f001295 100644
--- a/librtbuf/Makefile
+++ b/librtbuf/Makefile
@@ -22,11 +22,11 @@ build: librtbuf.la librtbuf.a
all:
${MAKE} build
- if ${HAVE_GCOV}; then ${MAKE} cov; fi
+ if [ "x${HAVE_GCOV}" = "xYes" ]; then ${MAKE} cov; fi
${MAKE} debug
- if ${HAVE_ASAN}; then ${MAKE} asan; fi
+ if [ "x${HAVE_ASAN}" = "xYes" ]; then ${MAKE} asan; fi
-asan: librtbuf.asan.la librtbuf.asan.a
+asan: librtbuf_asan.la librtbuf_asan.a
clean:
rm -rf ${CLEANFILES}
@@ -34,9 +34,9 @@ clean:
clean_cov:
rm -rf ${CLEANFILES_COV}
-cov: librtbuf.cov.la librtbuf.cov.a
+cov: librtbuf_cov.la librtbuf_cov.a
-debug: librtbuf.debug.la librtbuf.debug.a
+debug: librtbuf_debug.la librtbuf_debug.a
distclean:
rm -rf ${DISTCLEANFILES}
@@ -47,14 +47,14 @@ gcovr:
librtbuf.a: librtbuf.la
cp .libs/librtbuf.a ./
-librtbuf.asan.a: librtbuf.asan.la
- cp .libs/librtbuf.asan.a ./
+librtbuf_asan.a: librtbuf_asan.la
+ cp .libs/librtbuf_asan.a ./
-librtbuf.cov.a: librtbuf.cov.la
- cp .libs/librtbuf.cov.a ./
+librtbuf_cov.a: librtbuf_cov.la
+ cp .libs/librtbuf_cov.a ./
-librtbuf.debug.a: librtbuf.debug.la
- cp .libs/librtbuf.debug.a ./
+librtbuf_debug.a: librtbuf_debug.la
+ cp .libs/librtbuf_debug.a ./
include config.mk
include sources.mk
diff --git a/librtbuf/configure b/librtbuf/configure
index 8942132..ec64265 100755
--- a/librtbuf/configure
+++ b/librtbuf/configure
@@ -14,15 +14,15 @@
set -e
-export RTBUF_SRC_TOP="$(pwd)/.."
+SRC_TOP="$(dirname "$PWD")"
-. ../config.subr
+. "${SRC_TOP}/config.subr"
# Targets
LIB=librtbuf.la
-LIB_ASAN=librtbuf.asan.la
-LIB_COV=librtbuf.cov.la
-LIB_DEBUG=librtbuf.debug.la
+LIB_ASAN=librtbuf_asan.la
+LIB_COV=librtbuf_cov.la
+LIB_DEBUG=librtbuf_debug.la
# Sources
. ./sources.sh
@@ -95,6 +95,7 @@ echo "CFLAGS_DEBUG = $CFLAGS_DEBUG" >> ${CONFIG_MK}
echo "LDFLAGS_DEBUG = $LDFLAGS_DEBUG" >> ${CONFIG_MK}
echo "LIBS_DEBUG = $LIBS_DEBUG" >> ${CONFIG_MK}
+# Library
echo >> ${CONFIG_MK}
echo "$LIB: $LIB_OBJECTS" >> ${CONFIG_MK}
echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS} ${LIB_OBJECTS} \${LIBS} -o ${LIB} -rpath ${LIBDIR}" >> ${CONFIG_MK}
@@ -111,11 +112,6 @@ echo >> ${CONFIG_MK}
echo "$LIB_DEBUG: $LIB_OBJECTS_DEBUG" >> ${CONFIG_MK}
echo " ${LIBTOOL} --tag=CC --mode=link \${CC} \${LDFLAGS_DEBUG} ${LIB_OBJECTS_DEBUG} \${LIBS_DEBUG} -o ${LIB_DEBUG}" >> ${CONFIG_MK}
-echo >> ${CONFIG_MK}
-echo "install: ${LIB}" >> ${CONFIG_MK}
-echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${LIBDIR}" >> ${CONFIG_MK}
-echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 ${LIB} \${LIBDIR}" >> ${CONFIG_MK}
-
for SRC in $LIB_SOURCES; do
echo >> ${CONFIG_MK}
SRC_LO="$(c2ext .main.lo "$SRC")"
@@ -138,4 +134,10 @@ for SRC in $LIB_SOURCES; do
echo " ${LIBTOOL} --tag=CC --mode=compile \${CC} \${CPPFLAGS} \${CFLAGS_DEBUG} -c $SRC -o $SRC_DEBUG_LO" >> ${CONFIG_MK}
done
+# Install
+echo >> ${CONFIG_MK}
+echo "install: ${LIB}" >> ${CONFIG_MK}
+echo " \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0755 -d \${LIBDIR}" >> ${CONFIG_MK}
+echo " \${LIBTOOL} --tag=CC --mode=install \${INSTALL} -o \${OWNER} -g \${GROUP} -m 0644 ${LIB} \${LIBDIR}" >> ${CONFIG_MK}
+
update_config_mk
diff --git a/librtbuf/rtbuf.c b/librtbuf/rtbuf.c
index b337ee8..2545685 100644
--- a/librtbuf/rtbuf.c
+++ b/librtbuf/rtbuf.c
@@ -560,48 +560,54 @@ int rtbuf_out_int (s_rtbuf *rtb, unsigned int out, int default_value)
return default_value;
}
-void rtbuf_print (unsigned int i)
-{
- assert(i < RTBUF_MAX);
- printf("#<rtbuf %u>", i);
- fflush(stdout);
-}
-
-void rtbuf_print_long_in (s_rtbuf *rtb, unsigned int j)
-{
- assert(rtb);
- assert(rtb->proc);
- assert(j < rtb->proc->in_n);
- assert(rtb->proc->in[j].name);
- assert(rtb->proc->in[j].type);
- assert(rtb->proc->in[j].type->name);
- printf("\n in %i %s:%s", j, rtb->proc->in[j].name,
- rtb->proc->in[j].type->name);
- if (rtb->in[j].rtb >= 0) {
- s_rtbuf *target = &g_rtbuf[rtb->in[j].rtb];
- unsigned int target_out = rtb->in[j].out;
+void rtbuf_print (const s_rtbuf *rtbuf)
+{
+ unsigned int i;
+ if (rtbuf >= g_rtbuf &&
+ (i = rtbuf - g_rtbuf) < RTBUF_MAX)
+ printf("#<rtbuf %i %s>\n", i, rtbuf->proc->lib->name);
+ else
+ printf("#<rtbuf %p %s>\n", (void*) rtbuf, rtbuf->proc->lib->name);
+}
+
+void rtbuf_print_long_in (const s_rtbuf *rtbuf, unsigned int j)
+{
+ assert(rtbuf);
+ assert(rtbuf->proc);
+ assert(j < rtbuf->proc->in_n);
+ assert(rtbuf->proc->in[j].name);
+ assert(rtbuf->proc->in[j].type);
+ assert(rtbuf->proc->in[j].type->name);
+ printf("\n in %i %s:%s", j, rtbuf->proc->in[j].name,
+ rtbuf->proc->in[j].type->name);
+ if (rtbuf->in[j].rtb >= 0) {
+ s_rtbuf *target = &g_rtbuf[rtbuf->in[j].rtb];
+ unsigned int target_out = rtbuf->in[j].out;
printf (" = ");
- rtbuf_print(rtb->in[j].rtb);
+ rtbuf_print(g_rtbuf + rtbuf->in[j].rtb);
printf(" out %u %s:%s", target_out,
target->proc->out[target_out].name,
target->proc->out[target_out].type->name);
}
}
-void rtbuf_print_long (unsigned int i)
+void rtbuf_print_long (const s_rtbuf *rtbuf)
{
- s_rtbuf *rtb;
s_rtbuf_proc *proc;
+ int i;
unsigned int j = 0;
assert(i < RTBUF_MAX);
- rtb = &g_rtbuf[i];
- proc = rtb->proc;
- printf("#<rtbuf %i", i);
+ proc = rtbuf->proc;
+ if (rtbuf >= g_rtbuf &&
+ (i = rtbuf - g_rtbuf) < RTBUF_MAX)
+ printf("#<rtbuf %i", i);
+ else
+ printf("#<rtbuf %p", (void*) rtbuf);
printf(" %s", proc->lib->name);
- if (rtb->data) {
- printf(" %d", rtb->refc);
+ if (rtbuf->data) {
+ printf(" %d", rtbuf->refc);
while (j < proc->in_n)
- rtbuf_print_long_in(rtb, j++);
+ rtbuf_print_long_in(rtbuf, j++);
j = 0;
while (j < proc->out_n) {
printf("\n out %i %s:%s", j, proc->out[j].name,
@@ -619,7 +625,7 @@ void rtbuf_print_sorted ()
while (i < g_rtbuf_sorted_n) {
if (i)
printf(" ");
- rtbuf_print(g_rtbuf_sorted[i]);
+ rtbuf_print(g_rtbuf + g_rtbuf_sorted[i]);
i++;
}
printf("\n");
diff --git a/librtbuf/rtbuf.h b/librtbuf/rtbuf.h
index 21dc2a0..76b2253 100644
--- a/librtbuf/rtbuf.h
+++ b/librtbuf/rtbuf.h
@@ -212,8 +212,8 @@ void rtbuf_sort ();
int rtbuf_start ();
int rtbuf_run ();
void rtbuf_stop ();
-void rtbuf_print (unsigned int i);
-void rtbuf_print_long (unsigned int i);
+void rtbuf_print (const s_rtbuf *rtbuf);
+void rtbuf_print_long (const s_rtbuf *rtbuf);
void rtbuf_print_sorted ();
int rtbuf_out_int (s_rtbuf *rtb, unsigned int out, int default_value);
diff --git a/librtbuf/rtbuf_var.c b/librtbuf/rtbuf_var.c
index 7d3f8da..126a196 100644
--- a/librtbuf/rtbuf_var.c
+++ b/librtbuf/rtbuf_var.c
@@ -102,7 +102,7 @@ void rtbuf_var_print (const s_rtbuf_var *v)
fflush(stdout);
break;
case RTBUF_VAR_RTBUF:
- rtbuf_print_long(v->index);
+ rtbuf_print_long(g_rtbuf + v->index);
break;
default:
assert(0);
diff --git a/librtbuf/sources.mk b/librtbuf/sources.mk
index 1c6ec58..f5071ab 100644
--- a/librtbuf/sources.mk
+++ b/librtbuf/sources.mk
@@ -1,3 +1,2 @@
# sources.mk generated by update_sources
-SOURCES = data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c
-LO_SOURCES = data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c
+LIB_SOURCES = data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c
diff --git a/librtbuf/sources.sh b/librtbuf/sources.sh
index ee23088..20df59a 100644
--- a/librtbuf/sources.sh
+++ b/librtbuf/sources.sh
@@ -1,3 +1,2 @@
# sources.sh generated by update_sources
-SOURCES='data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c '
-LO_SOURCES='data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c '
+LIB_SOURCES='data.c rtbuf.c rtbuf_lib.c rtbuf_proc.c rtbuf_type.c rtbuf_var.c symbol.c '
diff --git a/librtbuf/update_sources b/librtbuf/update_sources
index 9ad0510..c7fd4bb 100755
--- a/librtbuf/update_sources
+++ b/librtbuf/update_sources
@@ -1,12 +1,14 @@
#!/bin/sh
-. ../config.subr
+SRC_TOP="$(dirname "$PWD")"
+
+. "${SRC_TOP}/config.subr"
echo "# sources.mk generated by update_sources" > ${SOURCES_MK}
echo "# sources.sh generated by update_sources" > ${SOURCES_SH}
LIB_SOURCES="$(ls *.c)"
-LIB_SOURCES="$(echo "$SOURCES" | tr '\n' ' ')"
+LIB_SOURCES="$(echo "$LIB_SOURCES" | tr '\n' ' ')"
echo "LIB_SOURCES = $LIB_SOURCES" >> ${SOURCES_MK}
echo "LIB_SOURCES='$LIB_SOURCES'" >> ${SOURCES_SH}