chiark / gitweb /
85fc2ea3b7c3f8b6ce91c66896c1d919fb97fbe8
[nlopt.git] / test / CMakeLists.txt
1 add_custom_target (tests)
2
3 # have to add timer.c and mt19937ar.c as symbols are declared extern
4 add_executable (testopt testfuncs.c testfuncs.h testopt.c
5   ${PROJECT_SOURCE_DIR}/src/util/timer.c ${PROJECT_SOURCE_DIR}/src/util/mt19937ar.c ${PROJECT_SOURCE_DIR}/src/util/nlopt-getopt.c)
6 target_link_libraries (testopt ${nlopt_lib})
7 if (NLOPT_CXX)
8   set_target_properties(testopt PROPERTIES LINKER_LANGUAGE CXX)
9 endif ()
10 target_include_directories (testopt PRIVATE ${NLOPT_PRIVATE_INCLUDE_DIRS})
11 add_dependencies (tests testopt)
12
13 foreach (algo_index RANGE 29)# 43
14   foreach (obj_index RANGE 1)# 21
15     set (enable_ TRUE)
16     # cxx stogo
17     if (NOT NLOPT_CXX)
18       if (algo_index STREQUAL 8 OR algo_index STREQUAL 9)
19         set (enable_ FALSE)
20       endif ()
21     endif ()
22     # cxx11 ags
23     if (NOT NLOPT_CXX11 AND algo_index STREQUAL 43)
24       set (enable_ FALSE)
25     endif ()
26     # L-BFGS
27     if (algo_index STREQUAL 10)
28       set (enable_ FALSE)
29     endif ()
30     # LN_NEWUOA_BOUND timeouts on msvc
31     if (algo_index STREQUAL 27)
32       set (enable_ FALSE)
33     endif ()
34     if (enable_)
35       add_test (NAME testopt_algo${algo_index}_obj${obj_index} COMMAND testopt -a ${algo_index} -o ${obj_index})
36       if (CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
37         set_tests_properties (testopt_algo${algo_index}_obj${obj_index} PROPERTIES ENVIRONMENT "PATH=${PROJECT_BINARY_DIR}\\${CMAKE_BUILD_TYPE};$ENV{PATH}")  # to load dll
38       endif ()
39     endif ()
40   endforeach ()
41 endforeach ()
42
43 if (NUMPY_FOUND AND PYTHONLIBS_FOUND AND (SWIG_FOUND OR (EXISTS ${PROJECT_SOURCE_DIR}/src/swig/nlopt-python.cpp)))
44   set (PYINSTALLCHECK_ENVIRONMENT "LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/src/swig"
45                                   "PYTHONPATH=${PROJECT_BINARY_DIR}/src/swig"
46     )
47   add_test (NAME test_python COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_python.py)
48   set_tests_properties (test_python PROPERTIES ENVIRONMENT "${PYINSTALLCHECK_ENVIRONMENT}")
49 endif ()
50
51 if (OCTAVE_FOUND)
52   add_test (NAME test_octave COMMAND ${OCTAVE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_octave.m ${PROJECT_SOURCE_DIR}/src/octave ${PROJECT_BINARY_DIR}/src/octave)
53 endif ()
54
55 if (GUILE_FOUND AND ((SWIG_FOUND AND SWIG_VERSION VERSION_GREATER 2.0.9) OR (EXISTS ${PROJECT_SOURCE_DIR}/src/swig/nlopt-guile.cpp)))
56   set (GUILECHECK_ENVIRONMENT "LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/src/swig"
57                               "GUILE_LOAD_PATH=${PROJECT_BINARY_DIR}/src/swig"
58     )
59   add_test (NAME test_guile COMMAND ${GUILE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_guile.scm)
60   set_tests_properties (test_guile PROPERTIES ENVIRONMENT "${GUILECHECK_ENVIRONMENT}")
61 endif ()