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
This commit is contained in:
Alex Neundorf 2011-08-10 01:51:38 +02:00
parent b0e357824c
commit bf07375264
3 changed files with 55 additions and 1 deletions

View File

@ -1,4 +1,4 @@
# COMPILER_ID = GNU/Intel/etc. # COMPILER_ID = GNU/Intel/Clang/MSVC, etc.
# LANGUAGE = C/CXX/Fortan/ASM # LANGUAGE = C/CXX/Fortan/ASM
# MODE = EXIST/COMPILE/LINK # MODE = EXIST/COMPILE/LINK
# NAME = name of the package # NAME = name of the package

View File

@ -126,6 +126,7 @@ ADD_CUSTOM_COMMAND(
INSTALL_FILES(${CMAKE_MAN_DIR}/man1 FILES ${MAN_FILES}) INSTALL_FILES(${CMAKE_MAN_DIR}/man1 FILES ${MAN_FILES})
INSTALL_FILES(${CMAKE_DOC_DIR} FILES ${HTML_FILES} ${TEXT_FILES}) INSTALL_FILES(${CMAKE_DOC_DIR} FILES ${HTML_FILES} ${TEXT_FILES})
INSTALL_FILES(share/aclocal FILES cmake.m4)
# Drive documentation generation. # Drive documentation generation.
ADD_CUSTOM_TARGET(documentation ALL DEPENDS ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/cmake.txt ) ADD_CUSTOM_TARGET(documentation ALL DEPENDS ${DOC_FILES} ${CMake_BINARY_DIR}/Docs/cmake.txt )

53
Utilities/cmake.m4 Normal file
View File

@ -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
])