mirror of
https://github.com/reactos/CMake.git
synced 2024-12-05 02:06:34 +00:00
168 lines
4.9 KiB
CMake
168 lines
4.9 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindOctave
|
|
----------
|
|
|
|
Finds GNU Octave interpreter, libraries and compilers.
|
|
|
|
Imported targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following :prop_tgt:`IMPORTED` targets:
|
|
|
|
``Octave::Interpreter``
|
|
Octave interpreter (the main program)
|
|
``Octave::Octave``
|
|
include directories and libraries
|
|
|
|
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
``Octave_FOUND``
|
|
Octave interpreter and/or libraries were found
|
|
``Octave_<component>_FOUND``
|
|
Octave <component> specified was found
|
|
|
|
``Octave_EXECUTABLE``
|
|
Octave interpreter
|
|
``Octave_INCLUDE_DIRS``
|
|
include path for mex.h
|
|
``Octave_LIBRARIES``
|
|
octinterp, octave libraries
|
|
|
|
|
|
Cache variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``Octave_INTERP_LIBRARY``
|
|
path to the library octinterp
|
|
``Octave_OCTAVE_LIBRARY``
|
|
path to the liboctave library
|
|
|
|
#]=======================================================================]
|
|
|
|
cmake_policy(VERSION 3.3)
|
|
|
|
unset(Octave_REQUIRED_VARS)
|
|
unset(Octave_Development_FOUND)
|
|
unset(Octave_Interpreter_FOUND)
|
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Interpreter)
|
|
|
|
if(Development IN_LIST Octave_FIND_COMPONENTS)
|
|
find_program(Octave_CONFIG_EXECUTABLE
|
|
NAMES octave-config)
|
|
|
|
if(Octave_CONFIG_EXECUTABLE)
|
|
|
|
execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p BINDIR
|
|
OUTPUT_VARIABLE Octave_BINARY_DIR
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTINCLUDEDIR
|
|
OUTPUT_VARIABLE Octave_INCLUDE_DIR
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
list(APPEND Octave_REQUIRED_VARS ${Octave_INCLUDE_DIR})
|
|
|
|
execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTLIBDIR
|
|
OUTPUT_VARIABLE Octave_LIB1
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p LIBDIR
|
|
OUTPUT_VARIABLE Octave_LIB2
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
find_library(Octave_INTERP_LIBRARY
|
|
NAMES octinterp
|
|
PATHS ${Octave_LIB1} ${Octave_LIB2}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
find_library(Octave_OCTAVE_LIBRARY
|
|
NAMES octave
|
|
PATHS ${Octave_LIB1} ${Octave_LIB2}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
list(APPEND Octave_REQUIRED_VARS ${Octave_OCTAVE_LIBRARY} ${Octave_INTERP_LIBRARY})
|
|
|
|
if(Octave_REQUIRED_VARS)
|
|
set(Octave_Development_FOUND true)
|
|
endif()
|
|
endif(Octave_CONFIG_EXECUTABLE)
|
|
endif()
|
|
|
|
if(Interpreter IN_LIST Octave_FIND_COMPONENTS)
|
|
|
|
find_program(Octave_EXECUTABLE
|
|
NAMES octave)
|
|
|
|
list(APPEND Octave_REQUIRED_VARS ${Octave_EXECUTABLE})
|
|
|
|
endif()
|
|
|
|
if(Octave_EXECUTABLE)
|
|
execute_process(COMMAND ${Octave_EXECUTABLE} -v
|
|
OUTPUT_VARIABLE Octave_VERSION
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
|
|
string(REGEX REPLACE "GNU Octave, version ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" Octave_VERSION_MAJOR ${Octave_VERSION})
|
|
string(REGEX REPLACE "GNU Octave, version [0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" Octave_VERSION_MINOR ${Octave_VERSION})
|
|
string(REGEX REPLACE "GNU Octave, version [0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" Octave_VERSION_PATCH ${Octave_VERSION})
|
|
|
|
set(Octave_VERSION ${Octave_VERSION_MAJOR}.${Octave_VERSION_MINOR}.${Octave_VERSION_PATCH})
|
|
|
|
set(Octave_Interpreter_FOUND true)
|
|
|
|
endif(Octave_EXECUTABLE)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Octave
|
|
REQUIRED_VARS Octave_REQUIRED_VARS
|
|
VERSION_VAR Octave_VERSION
|
|
HANDLE_COMPONENTS)
|
|
|
|
|
|
if(Octave_Development_FOUND)
|
|
set(Octave_LIBRARIES ${Octave_INTERP_LIBRARY} ${Octave_OCTAVE_LIBRARY})
|
|
set(Octave_INCLUDE_DIRS ${Octave_INCLUDE_DIR})
|
|
|
|
if(NOT TARGET Octave::Octave)
|
|
add_library(Octave::Octave UNKNOWN IMPORTED)
|
|
set_target_properties(Octave::Octave PROPERTIES
|
|
IMPORTED_LOCATION ${Octave_OCTAVE_LIBRARY}
|
|
INTERFACE_INCLUDE_DIRECTORIES ${Octave_INCLUDE_DIR}
|
|
)
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
if(Octave_Interpreter_FOUND)
|
|
if(NOT TARGET Octave::Interpreter)
|
|
add_executable(Octave::Interpreter IMPORTED)
|
|
set_target_properties(Octave::Interpreter PROPERTIES
|
|
IMPORTED_LOCATION ${Octave_EXECUTABLE}
|
|
VERSION ${Octave_VERSION})
|
|
endif()
|
|
endif()
|
|
|
|
mark_as_advanced(
|
|
Octave_CONFIG_EXECUTABLE
|
|
Octave_INTERP_LIBRARY
|
|
Octave_OCTAVE_LIBRARY
|
|
Octave_INCLUDE_DIR
|
|
Octave_VERSION_MAJOR
|
|
Octave_VERSION_MINOR
|
|
Octave_VERSION_PATCH
|
|
)
|