chiark / gitweb /
Allow to modify Python & octave site dir
[nlopt.git] / CMakeLists.txt
index 848d29a65b9ab63875229826606cf683816efd9d..ddcaa060f4242e835cfc42c784fde95e0a7e456d 100644 (file)
@@ -12,7 +12,7 @@
 # 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
@@ -35,16 +35,18 @@ if (WITH_CXX)
   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
@@ -68,6 +70,8 @@ include (CheckIncludeFiles)
 include (CheckFunctionExists)\r
 include (CheckTypeSize)\r
 include (CheckCCompilerFlag)\r
+include (CheckCXXSymbolExists)\r
+include (CheckCXXCompilerFlag)\r
 \r
 #==============================================================================\r
 # COMPILATION CHECKINGS and CONFIGURATION GENERATION\r
@@ -130,6 +134,16 @@ if (WITH_THREADLOCAL AND NOT DEFINED HAVE_THREAD_LOCAL_STORAGE)
   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
@@ -140,10 +154,10 @@ set (NLOPT_VERSION_STRING ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_
 message (STATUS "NLopt version ${NLOPT_VERSION_STRING}")\r
 \r
 #==============================================================================\r
-# CREATE config.h\r
+# CREATE nlopt_config.h\r
 #==============================================================================\r
 \r
-configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE)\r
+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/nlopt_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/nlopt_config.h IMMEDIATE)\r
 \r
 # pkgconfig file\r
 if (UNIX OR MINGW)\r
@@ -216,7 +230,7 @@ if (BUILD_SHARED_LIBS)
   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
@@ -247,7 +261,7 @@ if (BUILD_PYTHON)
   find_package (NumPy)\r
 endif ()\r
 \r
-if (PYTHONINTERP_FOUND)\r
+if (NOT DEFINED INSTALL_PYTHON_DIR AND PYTHONINTERP_FOUND)\r
   execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print(sysconfig.get_python_lib(plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}'))"\r
                     OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH\r
                     OUTPUT_STRIP_TRAILING_WHITESPACE )\r
@@ -255,7 +269,7 @@ if (PYTHONINTERP_FOUND)
   get_filename_component (_ABS_PYTHON_MODULE_PATH ${_ABS_PYTHON_MODULE_PATH} ABSOLUTE)\r
   file (RELATIVE_PATH _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})\r
 \r
-  set (PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH})\r
+  set (INSTALL_PYTHON_DIR ${_REL_PYTHON_MODULE_PATH})\r
 \r
 endif ()\r
 \r