Hi, list :) I have finally finished integration of cmake configs into bash-completion. Those configs do pretty much the same things that pkg-config does. The reason for inclusion of cmake configs is that some projects use cmake as a build system and avoid using autotools and pkg-config (most notably CMake itself).
Here is the patch: ------------------------------------------------------ >From b07c113e6746db0d5a2c32d1e91ef90c760987e1 Mon Sep 17 00:00:00 2001 From: Igor Murzov <e-m...@date.by> Date: Mon, 19 Mar 2012 00:49:57 +0400 Subject: [PATCH] Add config for cmake to bash-completion. This will allow projects using cmake to get information about bash-completion. This works much like pkg-config files. --- .gitignore | 2 ++ Makefile.am | 6 ++++++ bash-completion-config-version.cmake.in | 7 +++++++ bash-completion-config.cmake.in | 11 +++++++++++ configure.ac | 11 ++++++++++- 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 bash-completion-config-version.cmake.in create mode 100644 bash-completion-config.cmake.in diff --git a/.gitignore b/.gitignore index 742b7e3..083411e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ doc/*.xml doc/html* bash_completion.sh bash-completion.pc +bash-completion-config.cmake +bash-completion-config-version.cmake diff --git a/Makefile.am b/Makefile.am index dbbba0c..ea49abb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,6 +11,10 @@ profile_DATA = bash_completion.sh pkgconfigdir = $(datadir)/pkgconfig pkgconfig_DATA = bash-completion.pc +cmakeconfigdir = $(libdir)/cmake/$(PACKAGE)/ +cmakeconfig_DATA = bash-completion-config.cmake \ + bash-completion-config-version.cmake + bash_completion.sh: bash_completion.sh.in Makefile sed -e 's|@pkgdatadir[@]|$(pkgdatadir)|' <$(srcdir)/$@.in >$@ @@ -25,3 +29,5 @@ install-data-hook: $(DESTDIR)$(pkgdatadir)/bash_completion > $$tmpfile && \ cat $$tmpfile > $(DESTDIR)$(pkgdatadir)/bash_completion && \ rm $$tmpfile + sed -i -e 's|\$${prefix}|$(prefix)|' \ + $(DESTDIR)$(libdir)/cmake/$(PACKAGE)/bash-completion-config.cmake diff --git a/bash-completion-config-version.cmake.in b/bash-completion-config-version.cmake.in new file mode 100644 index 0000000..265e075 --- /dev/null +++ b/bash-completion-config-version.cmake.in @@ -0,0 +1,7 @@ +set (PACKAGE_VERSION "@VERSION@") +if (NOT ${PACKAGE_FIND_VERSION} VERSION_GREATER ${PACKAGE_VERSION}) + set (PACKAGE_VERSION_COMPATIBLE 1) + if (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION}) + set (PACKAGE_VERSION_EXACT 1) + endif () +endif () diff --git a/bash-completion-config.cmake.in b/bash-completion-config.cmake.in new file mode 100644 index 0000000..402b7b6 --- /dev/null +++ b/bash-completion-config.cmake.in @@ -0,0 +1,11 @@ +# config file for bash-completion +# http://bash-completion.alioth.debian.org/ + +set (BASH_COMPLETION_VERSION "@VERSION@") + +set (BASH_COMPLETION_PREFIX "@prefix@") +set (BASH_COMPLETION_COMPATDIR "@compatdir@") +set (BASH_COMPLETION_COMPLETIONSDIR "@datarootdir@/@PACKAGE@/completions") +set (BASH_COMPLETION_HELPERSDIR "@datarootdir@/@PACKAGE@/helpers") + +set (BASH_COMPLETION_FOUND "TRUE") diff --git a/configure.ac b/configure.ac index 3dd17c6..23d2b4d 100644 --- a/configure.ac +++ b/configure.ac @@ -4,5 +4,14 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip -Wall -Werror]) AC_PROG_LN_S AC_PROG_MKDIR_P AC_SUBST(compatdir, $sysconfdir/bash_completion.d) -AC_CONFIG_FILES([Makefile completions/Makefile doc/Makefile helpers/Makefile test/Makefile bash-completion.pc]) +AC_CONFIG_FILES([ +Makefile +completions/Makefile +doc/Makefile +helpers/Makefile +test/Makefile +bash-completion.pc +bash-completion-config.cmake +bash-completion-config-version.cmake +]) AC_OUTPUT -- 1.8.2 ------------------------------------------------------ The code is a bit hackish, but i'm not aware of the better way to integrate cmake configs into autotools. So comments are welcome. And here is an example of how to use cmake configs to install completion scripts in the proper path: ------------------------------------------------------ CMakeLists.txt | 7 ++++++ completion/CMakeLists.txt | 3 +++ completion/kcov.bash | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 completion/CMakeLists.txt create mode 100644 completion/kcov.bash diff --git a/CMakeLists.txt b/CMakeLists.txt index 727e907..66be76f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,10 @@ endif(NOT CMAKE_BUILD_TYPE) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) find_package (PkgConfig REQUIRED) +find_package (bash-completion) +if (NOT BASH_COMPLETION_FOUND) + message (WARNING "Failed to find bash-completion.") +endif (NOT BASH_COMPLETION_FOUND) # ==================================== @@ -41,3 +45,6 @@ set (INSTALL_MAN_PATH DESTINATION ${MAN_DIR}) # ==================================== add_subdirectory (src) add_subdirectory (doc) +if (BASH_COMPLETION_FOUND) + add_subdirectory (completion) +endif (BASH_COMPLETION_FOUND) diff --git a/completion/CMakeLists.txt b/completion/CMakeLists.txt new file mode 100644 index 0000000..163ff69 --- /dev/null +++ b/completion/CMakeLists.txt @@ -0,0 +1,3 @@ +install (FILES kcov.bash + DESTINATION ${BASH_COMPLETION_COMPLETIONSDIR} + RENAME ${PROJECT_NAME}) ------------------------------------------------------ -- Igor _______________________________________________ Bash-completion-devel mailing list Bash-completion-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/bash-completion-devel