summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2011-08-09 23:51:38 (GMT)
committerAlex Neundorf <neundorf@kde.org>2011-08-11 20:43:33 (GMT)
commitbf0737526419936915a9f2c14f06bff556d1fcd4 (patch)
tree017dd25484a305d18a29fbd0a2a31b11a43a188f
parentb0e357824c0ddf1a57db7742da3d5f3f90af97d2 (diff)
downloadCMake-bf0737526419936915a9f2c14f06bff556d1fcd4.zip
CMake-bf0737526419936915a9f2c14f06bff556d1fcd4.tar.gz
CMake-bf0737526419936915a9f2c14f06bff556d1fcd4.tar.bz2
Add a cmake.m4 for using cmake in autoconf projects instead of pkgconfig
This file has been written today from scratch by Matthias Kretz and it BSD-licensed. Alex
-rw-r--r--Modules/CMakeFindPackageMode.cmake2
-rw-r--r--Utilities/CMakeLists.txt1
-rw-r--r--Utilities/cmake.m453
3 files changed, 55 insertions, 1 deletions
diff --git a/Modules/CMakeFindPackageMode.cmake b/Modules/CMakeFindPackageMode.cmake
index 3e5cb49..3e7376c 100644
--- a/Modules/CMakeFindPackageMode.cmake
+++ b/Modules/CMakeFindPackageMode.cmake
@@ -1,4 +1,4 @@
-# COMPILER_ID = GNU/Intel/etc.
+# COMPILER_ID = GNU/Intel/Clang/MSVC, etc.
# LANGUAGE = C/CXX/Fortan/ASM
# MODE = EXIST/COMPILE/LINK
# NAME = name of the package
diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt
index 8b3e7f6..85db367 100644
--- a/Utilities/CMakeLists.txt
+++ b/Utilities/CMakeLists.txt
@@ -126,6 +126,7 @@ ADD_CUSTOM_COMMAND(
INSTALL_FILES(${CMAKE_MAN_DIR}/man1 FILES ${MAN_FILES})
INSTALL_FILES(${CMAKE_DOC_DIR} FILES ${HTML_FILES} ${TEXT_FILES})
+INSTALL_FILES(share/aclocal FILES cmake.m4)
# Drive documentation generation.
ADD_CUSTOM_TARGET(documentation ALL DEPENDS ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/cmake.txt )
diff --git a/Utilities/cmake.m4 b/Utilities/cmake.m4
new file mode 100644
index 0000000..a374a3b
--- /dev/null
+++ b/Utilities/cmake.m4
@@ -0,0 +1,53 @@
+dnl ============================================================================
+dnl CMake - Cross Platform Makefile Generator
+dnl Copyright 2011 Matthias Kretz, kretz@kde.org
+dnl
+dnl Distributed under the OSI-approved BSD License (the "License");
+dnl see accompanying file Copyright.txt for details.
+dnl
+dnl This software is distributed WITHOUT ANY WARRANTY; without even the
+dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+dnl See the License for more information.
+dnl ============================================================================
+
+AC_DEFUN([CMAKE_FIND_BINARY],
+[AC_ARG_VAR([CMAKE_BINARY], [path to the cmake binary])dnl
+
+if test "x$ac_cv_env_CMAKE_BINARY_set" != "xset"; then
+ AC_PATH_TOOL([CMAKE_BINARY], [cmake])dnl
+fi
+])dnl
+
+# $1: package name
+# $2: language (e.g. C/CXX/Fortran)
+# $3: The compiler ID, defaults to GNU.
+# Possible values are: GNU, Intel, Clang, SunPro, HP, XL, VisualAge, PGI,
+# PathScale, Cray, SCO, MIPSpro, MSVC
+# $4: optional extra arguments to cmake, e.g. "-DCMAKE_SIZEOF_VOID_P=8"
+# $5: optional path to cmake binary
+AC_DEFUN([CMAKE_FIND_PACKAGE], [
+AC_REQUIRE([CMAKE_FIND_BINARY])dnl
+
+AC_ARG_VAR([$1][_][$2][FLAGS], [$2 compiler flags for $1. This overrides the cmake output])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1. This overrides the cmake output])dnl
+
+failed=false
+AC_MSG_CHECKING([for $1])
+if test -n "$1[]_$2[]FLAGS"; then
+ $1[]_$2[]FLAGS=`$CMAKE_BINARY --find-package "-DNAME=$1" "-DCOMPILER_ID=m4_default([$3], [GNU])" "-DLANGUAGE=$2" -DMODE=COMPILE $4` || failed=true
+fi
+if test -n "$1[]_LIBS"; then
+ $1[]_LIBS=`$CMAKE_BINARY --find-package "-DNAME=$1" "-DCOMPILER_ID=m4_default([$3], [GNU])" "-DLANGUAGE=$2" -DMODE=LINK $4` || failed=true
+fi
+
+if $failed; then
+ unset $1[]_$2[]FLAGS
+ unset $1[]_LIBS
+
+ AC_MSG_RESULT([no])
+ $6
+else
+ AC_MSG_RESULT([yes])
+ $5
+fi[]dnl
+])