# Benoit Scherrer, 2010 CRL, Harvard Medical School\r
# Copyright (c) 2008-2009 Children's Hospital Boston \r
#==============================================================================\r
-cmake_minimum_required (VERSION 2.6)\r
+cmake_minimum_required (VERSION 2.8.5)\r
\r
if (NOT DEFINED CMAKE_BUILD_TYPE)\r
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type")\r
option (BUILD_SHARED_LIBS "Build NLOPT as a shared library" ON)\r
option (BUILD_PYTHON "build python bindings" ON)\r
option (BUILD_OCTAVE "build octave bindings" ON)\r
-option (BUILD_MATLAB "build matlab bindings" OFF)\r
+option (BUILD_MATLAB "build matlab bindings" ON)\r
option (BUILD_GUILE "build guile bindings" ON)\r
option (USE_SWIG "use SWIG to build bindings" ON)\r
\r
set (NLOPT_SUFFIX _cxx)\r
endif ()\r
\r
-if (WITH_CXX OR BUILD_PYTHON)\r
+if (WITH_CXX OR BUILD_PYTHON OR BUILD_GUILE OR BUILD_OCTAVE)\r
enable_language (CXX)\r
endif ()\r
\r
+include (GNUInstallDirs)\r
\r
# Offer the user the choice of overriding the installation directories\r
-set (INSTALL_LIB_DIR lib${LIB_SUFFIX} CACHE PATH "Installation directory for libraries")\r
-set (INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")\r
-set (INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")\r
-set (INSTALL_DATA_DIR share/nlopt CACHE PATH "Installation directory for data files")\r
+set (INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries")\r
+set (INSTALL_BIN_DIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables")\r
+set (INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Installation directory for header files")\r
+set (INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}/nlopt CACHE PATH "Installation directory for data files")\r
+set (INSTALL_MAN_DIR ${CMAKE_INSTALL_MANDIR} CACHE PATH "Installation directory for man documentation")\r
set (INSTALL_CMAKE_DIR ${INSTALL_LIB_DIR}/cmake/nlopt CACHE PATH "Installation directory for cmake config files")\r
\r
# Make relative paths absolute (needed later on)\r
-foreach(p LIB BIN INCLUDE DATA CMAKE)\r
- set(var INSTALL_${p}_DIR)\r
- set(RELATIVE_INSTALL_${p}_DIR ${INSTALL_${p}_DIR})\r
- if(NOT IS_ABSOLUTE "${${var}}")\r
- set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")\r
- endif()\r
-endforeach()\r
+foreach (p LIB BIN INCLUDE DATA CMAKE)\r
+ set (var INSTALL_${p}_DIR)\r
+ set (RELATIVE_INSTALL_${p}_DIR ${INSTALL_${p}_DIR})\r
+ if (NOT IS_ABSOLUTE "${${var}}")\r
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")\r
+ endif ()\r
+endforeach ()\r
\r
\r
set (CMAKE_INSTALL_RPATH ${INSTALL_LIB_DIR})\r
include (CheckFunctionExists)\r
include (CheckTypeSize)\r
include (CheckCCompilerFlag)\r
+include (CheckCXXSymbolExists)\r
+include (CheckCXXCompilerFlag)\r
\r
#==============================================================================\r
# COMPILATION CHECKINGS and CONFIGURATION GENERATION\r
endforeach()\r
endif ()\r
\r
+if (WITH_CXX OR BUILD_PYTHON OR BUILD_GUILE OR BUILD_OCTAVE)\r
+ check_cxx_symbol_exists (_LIBCPP_VERSION string SYSTEM_HAS_LIBCPP)\r
+ if (SYSTEM_HAS_LIBCPP)\r
+ check_cxx_compiler_flag ("-std=c++11" SUPPORTS_STDCXX11)\r
+ if (SUPPORTS_STDCXX11)\r
+ set (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")\r
+ endif ()\r
+ endif ()\r
+endif ()\r
+\r
#==============================================================================\r
# version\r
#==============================================================================\r
include_directories (\r
${CMAKE_BINARY_DIR}/api\r
${CMAKE_BINARY_DIR}\r
- stogo \r
- util \r
- direct \r
- cdirect \r
- praxis \r
- luksan \r
- crs \r
- mlsl \r
- mma \r
- cobyla \r
- newuoa \r
- neldermead \r
- auglag \r
- bobyqa \r
- isres \r
+ stogo\r
+ util\r
+ direct\r
+ cdirect\r
+ praxis\r
+ luksan\r
+ crs\r
+ mlsl\r
+ mma\r
+ cobyla\r
+ newuoa\r
+ neldermead\r
+ auglag\r
+ bobyqa\r
+ isres\r
slsqp\r
esch\r
api)\r
# nlopt LIBRARY TARGET (SHARED OR STATIC)\r
#==============================================================================\r
\r
-SET ( NLOPT_HEADERS \r
+set (NLOPT_HEADERS \r
api/nlopt.h ${CMAKE_BINARY_DIR}/api/nlopt.hpp ${CMAKE_BINARY_DIR}/api/nlopt.f\r
)\r
\r
-SET ( NLOPT_SOURCES \r
- direct/DIRect.c direct/direct_wrap.c direct/DIRserial.c direct/DIRsubrout.c direct/direct-internal.h direct/direct.h\r
- cdirect/cdirect.c cdirect/hybrid.c cdirect/cdirect.h\r
- praxis/praxis.c praxis/praxis.h\r
- luksan/plis.c luksan/plip.c luksan/pnet.c luksan/mssubs.c luksan/pssubs.c luksan/luksan.h\r
- crs/crs.c crs/crs.h\r
- mlsl/mlsl.c mlsl/mlsl.h\r
- mma/mma.c mma/mma.h mma/ccsa_quadratic.c\r
- cobyla/cobyla.c cobyla/cobyla.h\r
- newuoa/newuoa.c newuoa/newuoa.h \r
- neldermead/nldrmd.c neldermead/neldermead.h neldermead/sbplx.c \r
- auglag/auglag.c auglag/auglag.h\r
- bobyqa/bobyqa.c bobyqa/bobyqa.h\r
- isres/isres.c isres/isres.h \r
- slsqp/slsqp.c slsqp/slsqp.h \r
- esch/esch.c esch/esch.h\r
- api/general.c api/options.c api/optimize.c api/deprecated.c api/nlopt-internal.h api/nlopt.h api/f77api.c api/f77funcs.h api/f77funcs_.h api/nlopt.hpp api/nlopt-in.hpp\r
- util/mt19937ar.c util/sobolseq.c util/soboldata.h util/timer.c util/stop.c util/nlopt-util.h util/redblack.c util/redblack.h util/qsort_r.c util/rescale.c \r
- )\r
+set (NLOPT_SOURCES \r
+ direct/DIRect.c direct/direct_wrap.c direct/DIRserial.c direct/DIRsubrout.c direct/direct-internal.h direct/direct.h\r
+ cdirect/cdirect.c cdirect/hybrid.c cdirect/cdirect.h\r
+ praxis/praxis.c praxis/praxis.h\r
+ luksan/plis.c luksan/plip.c luksan/pnet.c luksan/mssubs.c luksan/pssubs.c luksan/luksan.h\r
+ crs/crs.c crs/crs.h\r
+ mlsl/mlsl.c mlsl/mlsl.h\r
+ mma/mma.c mma/mma.h mma/ccsa_quadratic.c\r
+ cobyla/cobyla.c cobyla/cobyla.h\r
+ newuoa/newuoa.c newuoa/newuoa.h\r
+ neldermead/nldrmd.c neldermead/neldermead.h neldermead/sbplx.c \r
+ auglag/auglag.c auglag/auglag.h\r
+ bobyqa/bobyqa.c bobyqa/bobyqa.h\r
+ isres/isres.c isres/isres.h\r
+ slsqp/slsqp.c slsqp/slsqp.h\r
+ esch/esch.c esch/esch.h\r
+ api/general.c api/options.c api/optimize.c api/deprecated.c api/nlopt-internal.h api/nlopt.h api/f77api.c api/f77funcs.h api/f77funcs_.h api/nlopt.hpp api/nlopt-in.hpp\r
+ util/mt19937ar.c util/sobolseq.c util/soboldata.h util/timer.c util/stop.c util/nlopt-util.h util/redblack.c util/redblack.h util/qsort_r.c util/rescale.c\r
+)\r
\r
if (WITH_CXX)\r
list (APPEND NLOPT_SOURCES stogo/global.cc stogo/linalg.cc stogo/local.cc stogo/stogo.cc stogo/tools.cc stogo/global.h stogo/linalg.h stogo/local.h stogo/stogo_config.h stogo/stogo.h stogo/tools.h)\r
add_definitions (-DNLOPT_DLL_EXPORT)\r
endif ()\r
\r
-install (FILES ${NLOPT_HEADERS} DESTINATION include)\r
+install (FILES ${NLOPT_HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR})\r
\r
set (nlopt_lib nlopt${NLOPT_SUFFIX})\r
add_library (${nlopt_lib} ${NLOPT_SOURCES})\r
endif ()\r
\r
if (BUILD_MATLAB)\r
- cmake_minimum_required (VERSION 3.3) # for the matlab_add_mex macro\r
find_package (Matlab)\r
endif ()\r
\r