Commit 1fb88a5a06dc86325da2588be02dee841b6f4da8

Thomas de Grivel 2020-01-09T15:35:37

more modular build

diff --git a/Makefile.am b/Makefile.am
index 0fc5650..64b7d70 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -6,9 +6,6 @@ CLEANFILES =
 include_HEADERS =
 lib_LTLIBRARIES =
 
-AM_CPPFLAGS = ${local_cppflags}
-AM_LDFLAGS = ${local_ldflags} -L./.libs
-
 if DEBUG
 AM_CFLAGS = -DDEBUG -O0 -ggdb
 else
@@ -16,7 +13,7 @@ AM_CFLAGS = -DNDEBUG -O2
 endif
 
 lib_LTLIBRARIES += librtbuf.la
-librtbuf_la_LIBADD = -ldata
+librtbuf_la_LIBADD = ${LIBRTBUF_LIBS}
 librtbuf_la_SOURCES = \
 	symbol.c \
 	rtbuf_type.c \
@@ -29,6 +26,13 @@ include_HEADERS += \
 	rtbuf_proc.h \
 	rtbuf.h
 
+if ENABLE_LIBDATA
+librtbuf_la_SOURCES += \
+	data.c
+include_HEADERS += \
+	data.h
+endif
+
 if ENABLE_RTBUF
 bin_PROGRAMS += rtbuf
 rtbuf_LDADD = ${RTBUF_LIBS} librtbuf.la
@@ -37,8 +41,16 @@ rtbuf_SOURCES = \
 	rtbuf_cli.c
 include_HEADERS += \
 	rtbuf_lib.h
-endif
 
+if ENABLE_CLI
+rtbuf_SOURCES += \
+	cli.c
+include_HEADERS += \
+	cli.h
+endif #	ENABLE_CLI
+endif # ENABLE_RTBUF
+
+if ENABLE_MUSIC
 rtbuf_music_type: rtbuf_music_type.c rtbuf_music.h
 	${CC} ${CFLAGS} ${CPPFLAGS} -o rtbuf_music_type rtbuf_music_type.c
 rtbuf_music_type.h: rtbuf_music_type
@@ -52,6 +64,7 @@ librtbuf_music_la_SOURCES = \
 include_HEADERS += \
 	rtbuf_music.h \
 	rtbuf_music_type.h
+endif # ENABLE_MUSIC
 
 if ENABLE_SIGNAL
 rtbuf_signal_type: rtbuf_signal_type.c rtbuf_signal.h
@@ -71,7 +84,7 @@ librtbuf_signal_la_SOURCES = \
 include_HEADERS += \
 	rtbuf_signal.h \
 	rtbuf_signal_type.h
-endif
+endif # ENABLE_SIGNAL
 
 lib_LTLIBRARIES += librtbuf_dynamic.la
 librtbuf_dynamic_la_LIBADD = -lm librtbuf_signal.la librtbuf.la
@@ -114,7 +127,7 @@ librtbuf_sndio_la_SOURCES = \
 include_HEADERS += \
 	rtbuf_sndio.h \
 	rtbuf_sndio_type.h
-endif
+endif # ENABLE_SNDIO
 
 if ENABLE_GLFW3
 lib_LTLIBRARIES += librtbuf_glfw3.la
@@ -126,21 +139,4 @@ librtbuf_glfw3_la_SOURCES = \
 	rtbuf_glfw3_oscilloscope.c
 include_HEADERS += \
 	rtbuf_glfw3.h
-endif
-
-deps_headers = ${include_HEADERS}
-deps_sources = \
-	${librtbuf_la_SOURCES} \
-	${rtbuf_SOURCES} \
-	${rtbuf_signal_type_SOURCES} \
-	${librtbuf_signal_la_SOURCES} \
-	${rtbuf_sndio_type_SOURCES} \
-	${librtbuf_sndio_la_SOURCES} \
-	${librtbuf_glfw3_la_SOURCES}
-
-dependencies.mk: ${deps_headers} ${deps_sources}
-	${CC} ${CPPFLAGS} ${CFLAGS} -M *.c > dependencies.mk.1
-	sed -e 's/^\(.*\)[.]o:/\1.$$(OBJEXT) \1.lo:/' dependencies.mk.1 > dependencies.mk.2
-	rm dependencies.mk.1
-	mv dependencies.mk.2 dependencies.mk
-CLEANFILES += dependencies.mk.1 dependencies.mk.2
+endif # ENABLE_GLFW3
diff --git a/configure.ac b/configure.ac
index bf67a21..7085ea8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,26 +29,46 @@ if test -d /usr/lib; then
   LDFLAGS="$LDFLAGS -L/usr/lib"
 fi
 
+enable_libdata=true
 AC_SEARCH_LIBS([libdata_init], [data],
-               [LIBRTBUF_LIBS="$LIBRTBUF_LIBS -ldata"],
-               [if test x"$enable_rtbuf" = x"true"; then
-                  AC_MSG_ERROR([missing libdata for rtbuf"])
+               [LIBRTBUF_LIBS="$LIBRTBUF_LIBS -ldata"
+                enable_libdata=false],
+               [if test x"$with_external_libdata" = x"true"; then
+                  AC_MSG_ERROR([missing libdata for rtbuf])
                 fi])
+AM_CONDITIONAL([ENABLE_LIBDATA], [test x"$enable_libdata" = x"true"])
 
-enable_rtbuf=true
-AM_CONDITIONAL([ENABLE_RTBUF], [test x"$enable_rtbuf" = x"true"])
+enable_cli=true
 AC_SEARCH_LIBS([cli_init], [cli],
-               [RTBUF_LIBS="$RTBUF_LIBS -lcli"],
-               [if test x"$enable_rtbuf" = x"true"; then
-                  AC_MSG_ERROR([missing libcli for rtbuf"])
+               [RTBUF_LIBS="$RTBUF_LIBS -lcli"
+                enable_cli=false],
+               [if test x"$with_external_libcli" = x"true"; then
+                  AC_MSG_ERROR([missing libcli for rtbuf])
                 fi])
+AM_CONDITIONAL([ENABLE_CLI], [test x"$enable_cli" = x"true"])
+
+enable_rtbuf=true
+AM_CONDITIONAL([ENABLE_RTBUF], [test x"$enable_rtbuf" = x"true"])
+
 AC_SEARCH_LIBS([pthread_create], [pthread],
                [RTBUF_LIBS="$RTBUF_LIBS -lpthread"],
                [if test x"$enable_rtbuf" = x"true"; then
-                  AC_MSG_ERROR([missing libpthread for rtbuf"])
+                  AC_MSG_ERROR([missing libpthread for rtbuf])
                 fi])
 AC_SUBST([RTBUF_LIBS])
 
+AC_CHECK_LIB([readline], [readline],
+             [RTBUF_LIBS="$RTBUF_LIBS -lreadline"],
+             AC_MSG_ERROR(missing readline library for rtbuf))
+
+AC_CHECK_LIB([termcap], [tputs],
+             [RTBUF_LIBS="$RTBUF_LIBS -ltermcap"],
+             AC_MSG_ERROR(missing termcap library for rtbuf))
+
+AM_CONDITIONAL([ENABLE_RTBUF], [test x"$enable_rtbuf" = x"true"])
+
+enable_music=true
+AM_CONDITIONAL([ENABLE_MUSIC], [test x"$enable_music" = x"true"])
 MUSIC_LIBS="-lm"
 AC_SUBST([MUSIC_LIBS])