200 lines
6.1 KiB
CMake
200 lines
6.1 KiB
CMake
# - Find PHP
|
|
# This module finds if PHP is installed and determines where the include files
|
|
# and libraries are.
|
|
#
|
|
# Note, unlike the FindPHP4 module, this module uses the php-config script to
|
|
# determine information about the installed PHP configuration. For Linux
|
|
# distributions, this script is normally installed as part of some php-dev or
|
|
# php-devel package. See http://php.net/manual/en/install.pecl.php-config.php
|
|
# for php-config documentation.
|
|
#
|
|
# This code sets the following variables:
|
|
# PHP_CONFIG_DIR = directory containing PHP configuration files
|
|
# PHP_CONFIG_EXECUTABLE = full path to the php-config binary
|
|
# PHP_EXECUTABLE = full path to the php binary
|
|
# PHP_EXTENSIONS_DIR = directory containing PHP extensions
|
|
# PHP_EXTENSIONS_INCLUDE_DIR = directory containing PHP extension headers
|
|
# PHP_INCLUDE_DIRS = include directives for PHP development
|
|
# PHP_LIBS = libraries necessary
|
|
# PHP_VERSION_NUMBER = PHP version number in PHP's "vernum" format eg 50303
|
|
# PHP_VERSION_MAJOR = PHP major version number eg 5
|
|
# PHP_VERSION_MINOR = PHP minor version number eg 3
|
|
# PHP_VERSION_PATCH = PHP patch version number eg 3
|
|
# PHP_VERSION_STRING = PHP version string eg 5.3.3-1ubuntu9.3
|
|
# PHP_API = PHP version api string eg 20131226
|
|
# PHP_FOUND = set to TRUE if all of the above has been found.
|
|
#
|
|
|
|
#=============================================================================
|
|
# Copyright 2016 Jerry Jacobs
|
|
# Copyright 2011-2012 Paul Colby
|
|
#
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
# see accompanying file LICENSE.md for details.
|
|
#
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the License for more information.
|
|
#=============================================================================
|
|
# (To distribute this file outside of CMake, substitute the full
|
|
# License text for the above reference.)
|
|
|
|
set(FINDPHP_DEBUG No)
|
|
|
|
find_program(PHP_CONFIG_EXECUTABLE NAMES php-config7 php-config5 php-config4 php-config)
|
|
|
|
if (PHP_CONFIG_EXECUTABLE)
|
|
# PHP_CONFIG_DIR
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --configure-options
|
|
#COMMAND sed -ne "s/^.*--with-config-file-scan-dir=\\([^ ]*\\).*/\\1/p"
|
|
OUTPUT_VARIABLE PHP_CONFIG_DIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# PHP_EXECUTABLE
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --php-binary
|
|
OUTPUT_VARIABLE PHP_EXECUTABLE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# PHP_EXTENSIONS_DIR
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --extension-dir
|
|
OUTPUT_VARIABLE PHP_EXTENSIONS_DIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# PHP_EXTENSIONS_INCLUDE_DIR
|
|
execute_process(COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --include-dir
|
|
OUTPUT_VARIABLE PHP_EXTENSIONS_INCLUDE_DIR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# PHP_INCLUDE_DIRS
|
|
execute_process(COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --includes
|
|
OUTPUT_VARIABLE _PHP_INCLUDE_DIRS
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# Create CMake list from compiler include paths string
|
|
string(REPLACE "-I" ";" PHP_INCLUDE_DIRS ${_PHP_INCLUDE_DIRS})
|
|
|
|
# PHP_LIBS
|
|
execute_process(COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --libs
|
|
OUTPUT_VARIABLE PHP_LIBS
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
|
|
# PHP_VERSION_NUMBER
|
|
execute_process(COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --vernum
|
|
OUTPUT_VARIABLE PHP_VERSION_NUMBER
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# PHP_VERSION_MAJOR
|
|
# TODO sed should be replaced by CMake function(s)
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --vernum
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
COMMAND sed -ne "s/....$//p"
|
|
OUTPUT_VARIABLE PHP_VERSION_MAJOR
|
|
)
|
|
|
|
# PHP_VERSION_MINOR
|
|
# TODO sed should be replaced by CMake function(s)
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --vernum
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
COMMAND sed -ne "s/..$//p"
|
|
COMMAND sed -ne "s/^.0\\?//p"
|
|
OUTPUT_VARIABLE PHP_VERSION_MINOR
|
|
)
|
|
|
|
# PHP_VERSION_PATCH
|
|
# TODO sed should be replaced by CMake function(s)
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --vernum
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
# COMMAND sed -ne "s/^...0\\t\?//p"
|
|
OUTPUT_VARIABLE PHP_VERSION_PATCH
|
|
)
|
|
|
|
# PHP_VERSION_STRING
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} --version
|
|
OUTPUT_VARIABLE PHP_VERSION_STRING
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# PHP_API
|
|
execute_process(
|
|
COMMAND
|
|
${PHP_CONFIG_EXECUTABLE} php-config --phpapi
|
|
OUTPUT_VARIABLE PHP_API
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif(PHP_CONFIG_EXECUTABLE)
|
|
|
|
mark_as_advanced(
|
|
PHP_CONFIG_DIR
|
|
PHP_CONFIG_EXECUTABLE
|
|
PHP_EXECUTABLE
|
|
PHP_EXTENSIONS_DIR
|
|
PHP_EXTENSIONS_INCLUDE_DIR
|
|
PHP_INCLUDE_DIRS
|
|
PHP_LIBS
|
|
PHP_VERSION_MAJOR
|
|
PHP_VERSION_MINOR
|
|
PHP_VERSION_PATCH
|
|
PHP_VERSION_STRING
|
|
PHP_API
|
|
)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
|
|
php
|
|
DEFAULT_MSG
|
|
PHP_VERSION_STRING
|
|
PHP_CONFIG_DIR
|
|
PHP_CONFIG_EXECUTABLE
|
|
PHP_EXECUTABLE
|
|
PHP_EXTENSIONS_DIR
|
|
PHP_EXTENSIONS_INCLUDE_DIR
|
|
PHP_INCLUDE_DIRS
|
|
PHP_LIBS
|
|
PHP_VERSION_NUMBER
|
|
PHP_VERSION_NUMBER
|
|
PHP_VERSION_MAJOR
|
|
PHP_VERSION_MINOR
|
|
PHP_VERSION_PATCH
|
|
PHP_VERSION_STRING
|
|
)
|
|
|
|
# Some handy dev output. Is there a way to enable these in some debug mode?
|
|
if (${FINDPHP_DEBUG})
|
|
message("PHP_FOUND = ${PHP_FOUND}")
|
|
message("PHP_CONFIG_DIR = ${PHP_CONFIG_DIR}")
|
|
message("PHP_CONFIG_EXECUTABLE = ${PHP_CONFIG_EXECUTABLE}")
|
|
message("PHP_EXECUTABLE = ${PHP_EXECUTABLE}")
|
|
message("PHP_EXTENSIONS_DIR = ${PHP_EXTENSIONS_DIR}")
|
|
message("PHP_EXTENSIONS_INCLUDE_DIR = ${PHP_EXTENSIONS_INCLUDE_DIR}")
|
|
message("PHP_INCLUDE_DIRS = ${PHP_INCLUDE_DIRS}")
|
|
message("PHP_LIBS = ${PHP_LIBS}")
|
|
message("PHP_VERSION_NUMBER = ${PHP_VERSION_NUMBER}")
|
|
message("PHP_VERSION_MAJOR = ${PHP_VERSION_MAJOR}")
|
|
message("PHP_VERSION_MINOR = ${PHP_VERSION_MINOR}")
|
|
message("PHP_VERSION_PATCH = ${PHP_VERSION_PATCH}")
|
|
message("PHP_VERSION_STRING = ${PHP_VERSION_STRING}")
|
|
message("PHP_API = ${PHP_API}")
|
|
endif()
|