diff --git a/configure.ac b/configure.ac index f33b057dde..672e063534 100644 --- a/configure.ac +++ b/configure.ac @@ -1,3 +1,19 @@ +m4_define([libunivalue_major_version], [1]) +m4_define([libunivalue_minor_version], [1]) +m4_define([libunivalue_micro_version], [1]) +m4_define([libunivalue_interface_age], [1]) +# If you need a modifier for the version number. +# Normally empty, but can be used to make "fixup" releases. +m4_define([libunivalue_extraversion], []) + +dnl libtool versioning from libunivalue +m4_define([libunivalue_current], [m4_eval(100 * libunivalue_minor_version + libunivalue_micro_version - libunivalue_interface_age)]) +m4_define([libunivalue_binary_age], [m4_eval(100 * libunivalue_minor_version + libunivalue_micro_version)]) +m4_define([libunivalue_revision], [libunivalue_interface_age]) +m4_define([libunivalue_age], [m4_eval(libunivalue_binary_age - libunivalue_interface_age)]) +m4_define([libunivalue_version], [libunivalue_major_version().libunivalue_minor_version().libunivalue_micro_version()libunivalue_extraversion()]) + + AC_INIT([univalue], [0.0.2], [http://github.com/jgarzik/univalue/]) @@ -6,6 +22,22 @@ AC_CONFIG_SRCDIR([lib/univalue.cpp]) AM_INIT_AUTOMAKE([gnu]) AC_CONFIG_HEADERS([univalue-config.h]) +LIBUNIVALUE_MAJOR_VERSION=libunivalue_major_version +LIBUNIVALUE_MINOR_VERSION=libunivalue_minor_version +LIBUNIVALUE_MICRO_VERSION=libunivalue_micro_version +LIBUNIVALUE_INTERFACE_AGE=libunivalue_interface_age + +# ABI version +# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +LIBUNIVALUE_CURRENT=libunivalue_current +LIBUNIVALUE_REVISION=libunivalue_revision +LIBUNIVALUE_AGE=libunivalue_age + +AC_SUBST(LIBUNIVALUE_CURRENT) +AC_SUBST(LIBUNIVALUE_REVISION) +AC_SUBST(LIBUNIVALUE_AGE) + +LT_INIT AC_PROG_CXX AC_PROG_CC @@ -23,6 +55,11 @@ PKG_PROG_PKG_CONFIG AC_LANG_PUSH([C++]) -AC_CONFIG_FILES([lib/Makefile test/Makefile Makefile]) +AC_CONFIG_FILES([ + lib/Makefile + test/Makefile + Makefile + lib/libunivalue.pc + lib/libunivalue-uninstalled.pc]) AC_OUTPUT diff --git a/lib/Makefile.am b/lib/Makefile.am index a287dc6f42..aa4a134e5c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,13 +1,17 @@ include_HEADERS = univalue.h univalue_escapes.h -lib_LIBRARIES = libunivalue.a +lib_LTLIBRARIES = libunivalue.la -libunivalue_a_SOURCES = \ +libunivalue_la_SOURCES = \ univalue.cpp \ univalue_read.cpp \ univalue_write.cpp +libunivalue_la_LDFLAGS = \ + -version-info $(LIBUNIVALUE_CURRENT):$(LIBUNIVALUE_REVISION):$(LIBUNIVALUE_AGE) \ + -no-undefined + noinst_PROGRAMS = gen gen_SOURCES = gen.cpp diff --git a/lib/libunivalue-uninstalled.pc.in b/lib/libunivalue-uninstalled.pc.in new file mode 100644 index 0000000000..b7f53e875e --- /dev/null +++ b/lib/libunivalue-uninstalled.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libunivalue +Description: libunivalue, C++ universal value object and JSON library +Version: @VERSION@ +Libs: ${pc_top_builddir}/${pcfiledir}/libunivalue.la diff --git a/lib/libunivalue.pc.in b/lib/libunivalue.pc.in new file mode 100644 index 0000000000..358a2d5f73 --- /dev/null +++ b/lib/libunivalue.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libunivalue +Description: libunivalue, C++ universal value object and JSON library +Version: @VERSION@ +Libs: -L${libdir} -lunivalue +Cflags: -I${includedir} diff --git a/test/Makefile.am b/test/Makefile.am index b28ec57614..8896975464 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -4,7 +4,7 @@ TESTS = unitester noinst_PROGRAMS = unitester unitester_SOURCES = unitester.cpp -unitester_LDADD = ../lib/libunivalue.a +unitester_LDADD = ../lib/libunivalue.la unitester_CXXFLAGS = -I$(top_srcdir)/lib -DJSON_TEST_SRC=\"$(top_srcdir)/test\" EXTRA_DIST = \