From 770bd069ed3a0ecfcf60c48ca87e5bb820f04f23 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Sat, 11 Apr 2009 10:15:12 -0400 Subject: [PATCH] Build system improvements for common tools Allows building shared or static libraries using autotools and provides a pkg-config file to simplify inclusion into other parts of the project (or other projects in the future) For now, we will statically link the collection library and INI parser. --- .gitignore | 9 +++++++++ common/Makefile.am | 2 +- common/collection/Makefile.am | 16 +++++++++------- common/collection/collection.pc.in | 11 +++++++++++ common/configure.ac | 2 +- common/ini/Makefile.am | 16 +++++++++------- common/ini/ini_config.pc.in | 11 +++++++++++ common/trace/Makefile.am | 1 + 8 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 common/collection/collection.pc.in create mode 100644 common/ini/ini_config.pc.in create mode 100644 common/trace/Makefile.am diff --git a/.gitignore b/.gitignore index 3b784ff..76a1c38 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,15 @@ Makefile cscope.out *.so *.so.[0-9].[0-9].[0-9] +*.a +*.la +*.lo +aclocal.m4 +.deps +.libs *.html *.[0-9] *.pc +autom4te.cache +libtool +stamp-h1 diff --git a/common/Makefile.am b/common/Makefile.am index b06c0e7..ea23cb9 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -1 +1 @@ -SUBDIRS = collection ini +SUBDIRS = collection ini trace diff --git a/common/collection/Makefile.am b/common/collection/Makefile.am index bdc1111..a47f8f9 100644 --- a/common/collection/Makefile.am +++ b/common/collection/Makefile.am @@ -4,14 +4,16 @@ TRACE_LEVEL=@TRACE_VAR@ topdir=.. AM_CPPFLAGS = -Wall -I$(topdir) -I$(topdir)/trace $(TRACE_LEVEL) -# Build static libraty -noinst_LIBRARIES = libcollection.a -libcollection_a_SOURCES = collection.c collection_tools.c collection.h trace.h collection_tools.h collection_class.h +# Set up the pkg-config file +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = collection.pc -# Build shared library - reserved for future -# lib_LTLIBRARIES = libcollection.la -# libcollection_la_SOURCES = collection.c collection_tools.c collection.h trace.h collection_tools.h collection_class.h +# Build libraty +lib_LTLIBRARIES = libcollection.la +libcollection_la_SOURCES = collection.c collection_tools.c collection_tools.h collection_class.h +include_HEADERS = collection.h collection_tools.h +# Build unit test noinst_PROGRAMS = collection_ut collection_ut_SOURCES = collection_ut.c -collection_ut_LDADD = libcollection.a -lm -lz +collection_ut_LDADD = libcollection.la -lm -lz diff --git a/common/collection/collection.pc.in b/common/collection/collection.pc.in new file mode 100644 index 0000000..6e0d5cd --- /dev/null +++ b/common/collection/collection.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: collection +Description: A data-type to collect large amounts of data in an easily manipulated structure +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lcollection +Cflags: -I${includedir} +URL: http://fedorahosted.org/sssd/ diff --git a/common/configure.ac b/common/configure.ac index 941125d..8804b4d 100644 --- a/common/configure.ac +++ b/common/configure.ac @@ -17,7 +17,7 @@ AC_ARG_ENABLE([trace], AS_IF([test ["$trace_level" -gt "0"] -a ["$trace_level" -lt "8"] ],[AC_SUBST([TRACE_VAR],["-DTRACE_LEVEL=$trace_level"])]) -AC_CONFIG_FILES([Makefile collection/Makefile ini/Makefile]) +AC_CONFIG_FILES([Makefile collection/Makefile collection/collection.pc ini/Makefile ini/ini_config.pc trace/Makefile]) AC_OUTPUT diff --git a/common/ini/Makefile.am b/common/ini/Makefile.am index a673aec..962172f 100644 --- a/common/ini/Makefile.am +++ b/common/ini/Makefile.am @@ -4,14 +4,16 @@ TRACE_LEVEL=@TRACE_VAR@ topdir=.. AM_CPPFLAGS = -Wall -I$(topdir) -I$(topdir)/trace -I$(topdir)/collection $(TRACE_LEVEL) -# Build static libraty -noinst_LIBRARIES = libini_config.a -libini_config_a_SOURCES = ini_config.c collection.h trace.h collection_tools.h collection_class.h ini_config.h +# Set up the pkg-config file +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = ini_config.pc -# Build shared library -#lib_LTLIBRARIES = libini.la -#libini_la_SOURCES = ini_config.c collection.h trace.h collection_tools.h collection_class.h ini_config.h +# Build library +lib_LTLIBRARIES = libini_config.la +libini_config_la_SOURCES = ini_config.c collection.h collection_tools.h collection_class.h +include_HEADERS = ini_config.h +# Build unit test noinst_PROGRAMS = ini_config_ut ini_config_ut_SOURCES = ini_config_ut.c -ini_config_ut_LDADD = libini_config.a -lm -lz ../collection/libcollection.a +ini_config_ut_LDADD = libini_config.la -lm -lz ../collection/libcollection.la \ No newline at end of file diff --git a/common/ini/ini_config.pc.in b/common/ini/ini_config.pc.in new file mode 100644 index 0000000..a6bf2ef --- /dev/null +++ b/common/ini/ini_config.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: ini_config +Description: Library to process config files in INI format into a libcollection data structure +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lini_config +Cflags: -I${includedir} +URL: http://fedorahosted.org/sssd/ diff --git a/common/trace/Makefile.am b/common/trace/Makefile.am new file mode 100644 index 0000000..489a9d9 --- /dev/null +++ b/common/trace/Makefile.am @@ -0,0 +1 @@ +include_HEADERS = trace.h -- 1.6.0.6