Locating libconfig from CMake-based projects
authorThomas Fischer <fischer@unix-ag.uni-kl.de>
Wed, 14 Oct 2015 18:46:35 +0000 (20:46 +0200)
committerThomas Fischer <fischer@unix-ag.uni-kl.de>
Wed, 14 Oct 2015 18:46:35 +0000 (20:46 +0200)
Configuration files for CMake are provided to simplify
locating libconfig from within project that use CMake
as their build system.
Separate configuration files are provided for C and C++
builds.

In a CMakeLists.txt file, use the following commands to
locate libconfig:

- To locate the library, use either
    find_package(libconfig)
  or
    find_package(libconfig++)

- The include directories are available as variables
    LIBCONFIG_INCLUDE_DIRS
  and
    LIBCONFIG++_INCLUDE_DIRS
  respectively, and can be used like this:
    include_directories(${LIBCONFIG++_INCLUDE_DIRS})

- Link to libconfig using variables
    LIBCONFIG_LIBRARIES
  and
    LIBCONFIG++_LIBRARIES
  respectively, by writing:
    target_link_libraries(${PROJECT_NAME}
      ${LIBCONFIG++_LIBRARIES}
    )

ChangeLog
configure
configure.ac
debian/libconfig++9-dev.install
debian/libconfig9-dev.install
lib/Makefile.am
lib/Makefile.in
lib/libconfig++Config.cmake.in [new file with mode: 0644]
lib/libconfigConfig.cmake.in [new file with mode: 0644]
libconfig.spec.in

index d2497ec..28edb75 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-10-14  Thomas Fischer <fischer@unix-ag.uni-kl.de>
+
+       * configure, configure.ac, debian/libconfig++9-dev.install,
+         debian/libconfig9-dev.install, lib/Makefile.am, lib/Makefile.in,
+         lib/libconfig++Config.cmake.in, lib/libconfigConfig.cmake.in,
+         libconfig.spec.in - locating libconfig in CMake-based projects
+
 2015-08-14  Mark Lindner  <markl@neuromancer>
 
        * lib/wincompat.h - Fixed Windows portability issue
index 5a1c67e..d1ddd40 100755 (executable)
--- a/configure
+++ b/configure
@@ -16896,7 +16896,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile lib/Makefile lib/libconfig.pc lib/libconfig++.pc doc/Makefile examples/Makefile examples/c/Makefile examples/c++/Makefile tinytest/Makefile tests/Makefile libconfig.spec"
+ac_config_files="$ac_config_files Makefile lib/Makefile lib/libconfig.pc lib/libconfig++.pc lib/libconfigConfig.cmake lib/libconfig++Config.cmake doc/Makefile examples/Makefile examples/c/Makefile examples/c++/Makefile tinytest/Makefile tests/Makefile libconfig.spec"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -18027,6 +18027,8 @@ do
     "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
     "lib/libconfig.pc") CONFIG_FILES="$CONFIG_FILES lib/libconfig.pc" ;;
     "lib/libconfig++.pc") CONFIG_FILES="$CONFIG_FILES lib/libconfig++.pc" ;;
+    "lib/libconfigConfig.cmake") CONFIG_FILES="$CONFIG_FILES lib/libconfigConfig.cmake" ;;
+    "lib/libconfig++Config.cmake") CONFIG_FILES="$CONFIG_FILES lib/libconfig++Config.cmake" ;;
     "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
     "examples/c/Makefile") CONFIG_FILES="$CONFIG_FILES examples/c/Makefile" ;;
index 4cd5205..7867b7d 100644 (file)
@@ -127,6 +127,8 @@ AC_OUTPUT(
        lib/Makefile
        lib/libconfig.pc
        lib/libconfig++.pc
+       lib/libconfigConfig.cmake
+       lib/libconfig++Config.cmake
        doc/Makefile
        examples/Makefile
        examples/c/Makefile
index 642348a..af3e1d8 100644 (file)
@@ -3,3 +3,4 @@ debian/tmp/usr/lib/libconfig++.a
 debian/tmp/usr/lib/libconfig++.so
 debian/tmp/usr/lib/libconfig++.la
 debian/tmp/usr/lib/pkgconfig/libconfig++.pc
+debian/tmp/usr/lib/cmake/libconfig++/libconfig++Config.cmake
index 5b5ce02..f7d6f6b 100644 (file)
@@ -3,3 +3,4 @@ debian/tmp/usr/lib/libconfig.a
 debian/tmp/usr/lib/libconfig.so
 debian/tmp/usr/lib/libconfig.la
 debian/tmp/usr/lib/pkgconfig/libconfig.pc
+debian/tmp/usr/lib/cmake/libconfig/libconfigConfig.cmake
index 6a22494..5242fcb 100644 (file)
@@ -78,3 +78,11 @@ pkgconfig_DATA = libconfig.pc
 if BUILDCXX
 pkgconfig_DATA += libconfig++.pc
 endif
+
+cmakedir = $(libdir)/cmake/libconfig
+cmake_DATA = libconfigConfig.cmake
+
+if BUILDCXX
+cmakeppdir = $(libdir)/cmake/libconfig++
+cmakepp_DATA = libconfig++Config.cmake
+endif
index cce0faf..89c914e 100644 (file)
@@ -90,7 +90,9 @@ subdir = lib
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
        $(top_srcdir)/aux-build/mkinstalldirs \
        $(srcdir)/libconfig.pc.in $(srcdir)/libconfig++.pc.in \
-       scanner.c grammar.h grammar.c $(top_srcdir)/aux-build/depcomp \
+       $(srcdir)/libconfigConfig.cmake.in \
+       $(srcdir)/libconfig++Config.cmake.in scanner.c grammar.h \
+       grammar.c $(top_srcdir)/aux-build/depcomp \
        $(top_srcdir)/aux-build/ylwrap $(am__include_HEADERS_DIST)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
@@ -101,7 +103,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/aux-build/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/ac_config.h
-CONFIG_CLEAN_FILES = libconfig.pc libconfig++.pc
+CONFIG_CLEAN_FILES = libconfig.pc libconfig++.pc libconfigConfig.cmake \
+       libconfig++Config.cmake
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -130,7 +133,8 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" \
+       "$(DESTDIR)$(cmakeppdir)" "$(DESTDIR)$(pkgconfigdir)" \
        "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libconfig___la_LIBADD =
@@ -234,7 +238,7 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-DATA = $(pkgconfig_DATA)
+DATA = $(cmake_DATA) $(cmakepp_DATA) $(pkgconfig_DATA)
 am__include_HEADERS_DIST = libconfig.h libconfig.h++
 HEADERS = $(include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -433,6 +437,10 @@ EXTRA_DIST = \
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libconfig.pc $(am__append_5)
+cmakedir = $(libdir)/cmake/libconfig
+cmake_DATA = libconfigConfig.cmake
+@BUILDCXX_TRUE@cmakeppdir = $(libdir)/cmake/libconfig++
+@BUILDCXX_TRUE@cmakepp_DATA = libconfig++Config.cmake
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -472,6 +480,10 @@ libconfig.pc: $(top_builddir)/config.status $(srcdir)/libconfig.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 libconfig++.pc: $(top_builddir)/config.status $(srcdir)/libconfig++.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libconfigConfig.cmake: $(top_builddir)/config.status $(srcdir)/libconfigConfig.cmake.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libconfig++Config.cmake: $(top_builddir)/config.status $(srcdir)/libconfig++Config.cmake.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
@@ -665,6 +677,48 @@ mostlyclean-libtool:
 
 clean-libtool:
        -rm -rf .libs _libs
+install-cmakeDATA: $(cmake_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \
+       done
+
+uninstall-cmakeDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir)
+install-cmakeppDATA: $(cmakepp_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(cmakepp_DATA)'; test -n "$(cmakeppdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(cmakeppdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(cmakeppdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakeppdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakeppdir)" || exit $$?; \
+       done
+
+uninstall-cmakeppDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(cmakepp_DATA)'; test -n "$(cmakeppdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(cmakeppdir)'; $(am__uninstall_files_from_dir)
 install-pkgconfigDATA: $(pkgconfig_DATA)
        @$(NORMAL_INSTALL)
        @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
@@ -795,7 +849,7 @@ check: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(cmakeppdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: $(BUILT_SOURCES)
@@ -856,7 +910,8 @@ info: info-am
 
 info-am:
 
-install-data-am: install-includeHEADERS install-pkgconfigDATA
+install-data-am: install-cmakeDATA install-cmakeppDATA \
+       install-includeHEADERS install-pkgconfigDATA
 
 install-dvi: install-dvi-am
 
@@ -902,7 +957,8 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+uninstall-am: uninstall-cmakeDATA uninstall-cmakeppDATA \
+       uninstall-includeHEADERS uninstall-libLTLIBRARIES \
        uninstall-pkgconfigDATA
 
 .MAKE: all check install install-am install-strip
@@ -911,17 +967,19 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
        clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
        ctags-am distclean distclean-compile distclean-generic \
        distclean-libtool distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am \
-       install-includeHEADERS install-info install-info-am \
-       install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-       install-pkgconfigDATA install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
-       uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
+       html-am info info-am install install-am install-cmakeDATA \
+       install-cmakeppDATA install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-includeHEADERS install-info \
+       install-info-am install-libLTLIBRARIES install-man install-pdf \
+       install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+       uninstall-cmakeDATA uninstall-cmakeppDATA \
+       uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+       uninstall-pkgconfigDATA
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/lib/libconfig++Config.cmake.in b/lib/libconfig++Config.cmake.in
new file mode 100644 (file)
index 0000000..6f94f41
--- /dev/null
@@ -0,0 +1,7 @@
+set(LIBCONFIG++_FOUND 1)
+set(LIBCONFIG++_VERSION "1.5")
+set(LIBCONFIG++_LIBRARIES "config++")
+set(LIBCONFIG++_LIBRARY_DIRS "@libdir@")
+set(LIBCONFIG++_LDFLAGS "")
+set(LIBCONFIG++_INCLUDE_DIRS "@includedir@")
+set(LIBCONFIG++_CFLAGS "")
diff --git a/lib/libconfigConfig.cmake.in b/lib/libconfigConfig.cmake.in
new file mode 100644 (file)
index 0000000..a79f06e
--- /dev/null
@@ -0,0 +1,7 @@
+set(LIBCONFIG_FOUND 1)
+set(LIBCONFIG_VERSION "1.5")
+set(LIBCONFIG_LIBRARIES "config")
+set(LIBCONFIG_LIBRARY_DIRS "@libdir@")
+set(LIBCONFIG_LDFLAGS "")
+set(LIBCONFIG_INCLUDE_DIRS "@includedir@")
+set(LIBCONFIG_CFLAGS "")
index 22edef2..b67f6a1 100644 (file)
@@ -65,12 +65,16 @@ ldconfig
 %{_infodir}
 %{_includedir}
 %{_libdir}/pkgconfig
+%{_libdir}/cmake/libconfig
+%{_libdir}/cmake/libconfig++
 %{_libdir}/%{name}.a
 %{_libdir}/%{name}.la
 %{_libdir}/%{name}++.a
 %{_libdir}/%{name}++.la
 
 %changelog
+* Wed Oct 14 2015  Thomas Fischer  <fischer@unix-ag.uni-kl.de>  1.5
+- added library directory cmake/libconfig and cmake/libconfig++
 * Wed Aug 19 2007  Deneys S. Maartens  <dsm@tlabs.ac.za>  1.1.3-1
 - create spec file