chiark / gitweb /
Use deterministic test seed
[nlopt.git] / CMakeLists.txt
index 636a4611263f0dfefd5269c84ff5dfd4a652c28e..f34bd5d353208b9aea822959dc5172e5a04b001d 100644 (file)
@@ -12,7 +12,7 @@
 # Benoit Scherrer, 2010 CRL, Harvard Medical School
 # Copyright (c) 2008-2009 Children's Hospital Boston
 #==============================================================================
-cmake_minimum_required (VERSION 3.0)
+cmake_minimum_required (VERSION 2.8.11)
 
 if (NOT DEFINED CMAKE_BUILD_TYPE)
   set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type")
@@ -20,9 +20,24 @@ endif ()
 
 project (nlopt)
 
+#==============================================================================
+# version
+set (NLOPT_MAJOR_VERSION "2")
+set (NLOPT_MINOR_VERSION "5")
+set (NLOPT_BUGFIX_VERSION "0")
+set (NLOPT_VERSION_STRING ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_BUGFIX_VERSION})
+message (STATUS "NLopt version ${NLOPT_VERSION_STRING}")
+
+# This is the ABI version number, which differes from the API version above
+# (it indicates ABI compatibility), but they are typically incremented together.
+set(SO_MAJOR 0)
+set(SO_MINOR 9)
+set(SO_PATCH 0)
+#==============================================================================
+
 list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
 
-option (NLOPT_CXX "enable cxx routines" OFF)
+option (NLOPT_CXX "enable cxx routines" ON)
 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)
@@ -31,9 +46,10 @@ 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 ()
 
 include (GNUInstallDirs)
@@ -138,24 +154,20 @@ if (WITH_THREADLOCAL AND NOT DEFINED HAVE_THREAD_LOCAL_STORAGE)
 endif ()
 
 if (NLOPT_CXX OR NLOPT_PYTHON OR NLOPT_GUILE OR NLOPT_OCTAVE)
-  check_cxx_symbol_exists (_LIBCPP_VERSION string SYSTEM_HAS_LIBCPP)
-  if (SYSTEM_HAS_LIBCPP)
+  check_cxx_symbol_exists (__cplusplus ciso646 SYSTEM_HAS_CXX)
+  if (SYSTEM_HAS_CXX)
     check_cxx_compiler_flag ("-std=c++11" SUPPORTS_STDCXX11)
     if (SUPPORTS_STDCXX11)
       set (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
+      if (NLOPT_CXX)
+        set (NLOPT_CXX11 ON)
+      endif ()
     endif ()
+  else()
+    message (FATAL_ERROR "The compiler doesn't support CXX.")
   endif ()
 endif ()
 
-#==============================================================================
-# version
-#==============================================================================
-set (NLOPT_MAJOR_VERSION "2")
-set (NLOPT_MINOR_VERSION "5")
-set (NLOPT_BUGFIX_VERSION "0")
-set (NLOPT_VERSION_STRING ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_BUGFIX_VERSION})
-message (STATUS "NLopt version ${NLOPT_VERSION_STRING}")
-
 #==============================================================================
 # CREATE nlopt_config.h
 #==============================================================================
@@ -202,15 +214,19 @@ if (NLOPT_CXX)
   list (APPEND NLOPT_SOURCES src/algs/stogo/global.cc src/algs/stogo/linalg.cc src/algs/stogo/local.cc src/algs/stogo/stogo.cc src/algs/stogo/tools.cc
         src/algs/stogo/global.h src/algs/stogo/linalg.h src/algs/stogo/local.h src/algs/stogo/stogo_config.h src/algs/stogo/stogo.h src/algs/stogo/tools.h)
 endif ()
+if (NLOPT_CXX11)
+  list (APPEND NLOPT_SOURCES src/algs/ags/data_types.hpp src/algs/ags/evolvent.hpp src/algs/ags/evolvent.cc src/algs/ags/solver.hpp src/algs/ags/solver.cc
+  src/algs/ags/local_optimizer.hpp src/algs/ags/local_optimizer.cc src/algs/ags/ags.h src/algs/ags/ags.cc)
+endif ()
 
 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})
 
-set_target_properties (${nlopt_lib} PROPERTIES SOVERSION 0)
-set_target_properties (${nlopt_lib} PROPERTIES VERSION 0.9.0)
+set_target_properties (${nlopt_lib} PROPERTIES SOVERSION ${SO_MAJOR})
+set_target_properties (${nlopt_lib} PROPERTIES VERSION "${SO_MAJOR}.${SO_MINOR}.${SO_PATCH}")
 
 #==============================================================================
 # INCLUDE DIRECTORIES
@@ -219,6 +235,7 @@ target_include_directories (${nlopt_lib} PRIVATE
   ${PROJECT_BINARY_DIR}/src/api
   ${PROJECT_BINARY_DIR}
   src/algs/stogo
+  src/algs/ags
   src/util
   src/algs/direct
   src/algs/cdirect
@@ -308,8 +325,10 @@ if (OCTAVE_FOUND OR Matlab_FOUND)
   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}")