forked from Kitware/CMake
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FindOctave: Add module to find GNU octave
- Loading branch information
Showing
10 changed files
with
228 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
.. cmake-module:: ../../Modules/FindOctave.cmake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
FindOctave | ||
---------- | ||
|
||
* A :module:`FindOctave` module was added to find GNU octave. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
# 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 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
add_test(NAME FindOctave.Test COMMAND | ||
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> | ||
--build-and-test | ||
"${CMake_SOURCE_DIR}/Tests/FindOctave/Test" | ||
"${CMake_BINARY_DIR}/Tests/FindOctave/Test" | ||
${build_generator_args} | ||
--build-project TestFindOctave | ||
--build-options ${build_options} | ||
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
cmake_minimum_required(VERSION 3.3) | ||
project(TestFindOctave CXX) | ||
enable_testing() | ||
|
||
find_package(Octave REQUIRED COMPONENTS Development Interpreter) | ||
|
||
add_definitions(-DCMAKE_EXPECTED_Octave_VERSION=${Octave_VERSION}) | ||
|
||
add_executable(test_tgt main.cpp) | ||
target_link_libraries(test_tgt Octave::Octave) | ||
add_test(NAME test_tgt COMMAND test_tgt) | ||
|
||
add_test(NAME test_tgt_exe | ||
COMMAND Octave::Interpreter -q --eval "runtests('.')" | ||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | ||
|
||
add_executable(test_var main.cpp) | ||
target_include_directories(test_var PRIVATE ${Octave_INCLUDE_DIRS}) | ||
target_link_libraries(test_var PRIVATE ${Octave_LIBRARIES}) | ||
add_test(NAME test_var COMMAND test_var) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#include <iostream> | ||
#include <oct.h> | ||
|
||
// http://www.dm.unibo.it/~achilles/calc/octave.html/Standalone-Programs.html | ||
int main(void) | ||
{ | ||
int n = 2; | ||
Matrix a_matrix = Matrix(n, n); | ||
for (octave_idx_type i = 0; i < n; i++) { | ||
for (octave_idx_type j = 0; j < n; j++) { | ||
a_matrix(i, j) = (i + 1) * 10 + (j + 1); | ||
} | ||
} | ||
|
||
std::cout << a_matrix << std::endl; | ||
|
||
return EXIT_SUCCESS; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
%!assert(true) |