list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
-option (NLOPT_CXX "enable cxx routines" OFF)
+option (NLOPT_CXX "enable cxx routines" ON)
+option (NLOPT_FORTRAN "enable fortran tests" OFF)
option (BUILD_SHARED_LIBS "Build NLopt as a shared library" ON)
option (NLOPT_PYTHON "build python bindings" ON)
option (NLOPT_OCTAVE "build octave bindings" ON)
option (NLOPT_MATLAB "build matlab bindings" ON)
option (NLOPT_GUILE "build guile bindings" ON)
option (NLOPT_SWIG "use SWIG to build bindings" ON)
-option (NLOPT_LINK_PYTHON "link Python libs" ON)
-set (NLOPT_SUFFIX)
-if (NLOPT_CXX)
- set (NLOPT_SUFFIX _cxx)
+if (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
+ option (NLOPT_TESTS "build unit tests" ON)
+else ()
+ option (NLOPT_TESTS "build unit tests" OFF)
+endif ()
+
+if (NLOPT_FORTRAN)
+ enable_language (Fortran)
endif ()
include (GNUInstallDirs)
# Set MACOSX_RPATH to ON
cmake_policy(SET CMP0042 NEW)
endif()
+if (POLICY CMP0086)
+ # UseSWIG honors SWIG_MODULE_NAME via -module flag
+ cmake_policy(SET CMP0086 NEW)
+endif ()
include (CheckIncludeFiles)
include (CheckFunctionExists)
endif ()
option (WITH_THREADLOCAL "check thread local keyword" ON)
-if (WITH_THREADLOCAL AND NOT DEFINED HAVE_THREAD_LOCAL_STORAGE)
+if (WITH_THREADLOCAL AND NOT DEFINED THREADLOCAL)
foreach (_THREADLOCAL_KEY "__thread" "__declspec(thread)")
unset (HAVE_THREAD_LOCAL_STORAGE CACHE)
check_c_source_compiles("
int main(void) {
return 0;
}" HAVE_THREAD_LOCAL_STORAGE)
- if (${HAVE_THREAD_LOCAL_STORAGE})
- set (THREADLOCAL ${_THREADLOCAL_KEY})
+ if (HAVE_THREAD_LOCAL_STORAGE)
+ set (THREADLOCAL ${_THREADLOCAL_KEY} CACHE STRING "Thread local keyword")
endif ()
endforeach()
endif ()
+
if (NLOPT_CXX OR NLOPT_PYTHON OR NLOPT_GUILE OR NLOPT_OCTAVE)
check_cxx_symbol_exists (__cplusplus ciso646 SYSTEM_HAS_CXX)
if (SYSTEM_HAS_CXX)
install (FILES ${NLOPT_HEADERS} DESTINATION ${RELATIVE_INSTALL_INCLUDE_DIR})
-set (nlopt_lib nlopt${NLOPT_SUFFIX})
+set (nlopt_lib nlopt)
add_library (${nlopt_lib} ${NLOPT_SOURCES})
target_link_libraries (${nlopt_lib} ${M_LIBRARY})
target_include_directories (${nlopt_lib} INTERFACE "$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src/api>" "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
if (BUILD_SHARED_LIBS)
- target_compile_definitions (${nlopt_lib} PUBLIC -DNLOPT_DLL)
- target_compile_definitions (${nlopt_lib} PRIVATE -DNLOPT_DLL_EXPORT)
+ target_compile_definitions (${nlopt_lib} PUBLIC NLOPT_DLL)
+ target_compile_definitions (${nlopt_lib} PRIVATE NLOPT_DLL_EXPORT)
endif ()
# pass -fPIC in case swig module is built with static library
add_subdirectory (src/octave)
endif ()
-enable_testing ()
-add_subdirectory (test)
+if (NLOPT_TESTS)
+ enable_testing ()
+ add_subdirectory (test)
+endif ()
set (CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set (CPACK_PACKAGE_VERSION_MAJOR "${NLOPT_MAJOR_VERSION}")
set (CPACK_PACKAGE_VERSION_MINOR "${NLOPT_MINOR_VERSION}")
set (CPACK_PACKAGE_VERSION_PATCH "${NLOPT_BUGFIX_VERSION}")
set (CPACK_SOURCE_GENERATOR "TBZ2;TGZ" )
-set (CPACK_BINARY_STGZ "OFF" )
-set (CPACK_BINARY_TBZ2 "ON" )
-set (CPACK_BINARY_TGZ "ON" )
-set (CPACK_BINARY_TZ "OFF" )
+set (CPACK_BINARY_STGZ OFF CACHE BOOL "STGZ")
+set (CPACK_BINARY_TBZ2 ON CACHE BOOL "TBZ2")
+set (CPACK_BINARY_TGZ ON CACHE BOOL "TGZ")
+set (CPACK_BINARY_TZ OFF CACHE BOOL "TZ")
set (CPACK_SOURCE_IGNORE_FILES ".git;/build;.*~;${CPACK_SOURCE_IGNORE_FILES}")
set (CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${NLOPT_VERSION_STRING})