浏览代码

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
Alex Neundorf 14 年之前
父节点
当前提交
bf07375264
共有 3 个文件被更改,包括 55 次插入1 次删除
  1. 1 1
      Modules/CMakeFindPackageMode.cmake
  2. 1 0
      Utilities/CMakeLists.txt
  3. 53 0
      Utilities/cmake.m4

+ 1 - 1
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

+ 1 - 0
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 )

+ 53 - 0
Utilities/cmake.m4

@@ -0,0 +1,53 @@
+dnl ============================================================================
+dnl   CMake - Cross Platform Makefile Generator
+dnl   Copyright 2011 Matthias Kretz, [email protected]
+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
+])