3 #==============================================================================
\r
6 # NLopt is a free/open-source library for nonlinear optimization, providing
\r
7 # a common interface for a number of different free optimization routines
\r
8 # available online as well as original implementations of various other
\r
10 # WEBSITE: http://ab-initio.mit.edu/wiki/index.php/NLopt
\r
11 # AUTHOR: Steven G. Johnson
\r
13 # This CMakeLists.txt file was created to compile NLOPT with the CMAKE utility.
\r
14 # Benoit Scherrer, 2010 CRL, Harvard Medical School
\r
15 # Copyright (c) 2008-2009 Children's Hospital Boston
\r
16 #==============================================================================
\r
19 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
\r
20 INCLUDE(CheckIncludeFiles)
\r
21 INCLUDE(CheckFunctionExists)
\r
22 INCLUDE(CheckTypeSize)
\r
25 #==============================================================================
\r
26 # COMPILATION CHECKINGS and CONFIGURATION GENERATION
\r
27 #==============================================================================
\r
28 CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)
\r
29 CHECK_INCLUDE_FILES( string.h HAVE_STRING_H)
\r
30 CHECK_INCLUDE_FILES( strings.h HAVE_STRINGS_H)
\r
31 CHECK_INCLUDE_FILES( sys/stat.h HAVE_SYS_STAT_H)
\r
32 CHECK_INCLUDE_FILES( inttypes.h HAVE_INTTYPES_H)
\r
33 CHECK_INCLUDE_FILES( memory.h HAVE_MEMORY_H)
\r
34 CHECK_INCLUDE_FILES( stdlib.h HAVE_STDLIB_H)
\r
35 CHECK_INCLUDE_FILES( stdint.h HAVE_STDINT_H)
\r
37 CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)
\r
38 CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)
\r
39 CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)
\r
41 CHECK_FUNCTION_EXISTS( isinf HAVE_ISINF)
\r
42 CHECK_FUNCTION_EXISTS( isinf HAVE_ISNAN)
\r
43 CHECK_FUNCTION_EXISTS( gettimeofday HAVE_GETTIMEOFDAY)
\r
44 CHECK_FUNCTION_EXISTS( qsort_r HAVE_QSORT_R)
\r
45 CHECK_FUNCTION_EXISTS( time HAVE_TIME)
\r
46 CHECK_FUNCTION_EXISTS( copysign HAVE_COPYSIGN)
\r
48 CHECK_TYPE_SIZE(uint32_t UINT32_T)
\r
49 IF(NOT HAVE_UINT32_T)
\r
51 SET(uint32_t "unsigned int")
\r
52 SET(SIZEOF_UNSIGNED_INT 4)
\r
54 ENDIF(NOT HAVE_UINT32_T)
\r
56 #==============================================================================
\r
57 # LOOK FOR THE VERSION NUMBER IN configure.ac
\r
58 #==============================================================================
\r
60 FILE( READ configure.ac CONFIG_AUTOMAKE )
\r
62 STRING( REGEX MATCH "AC_INIT\\(nlopt, ([0-9]+\\.[0-9]+\\.?[0-9]*)" NLOPT_AUTOMAKE_LINE_VERSION "${CONFIG_AUTOMAKE}")
\r
64 #---------------------------------
\r
65 # If version matches 'X.X.X'
\r
66 #---------------------------------
\r
67 IF(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")
\r
68 STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+\\.[0-9]*.*" "\\1" NLOPT_MAJOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}")
\r
69 STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+)\\.[0-9]*.*" "\\1" NLOPT_MINOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}")
\r
70 STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" NLOPT_BUGFIX_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}")
\r
71 #---------------------------------
\r
72 # Else (consider that version matches 'X.X')
\r
73 #---------------------------------
\r
74 ELSE(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")
\r
75 STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+.*" "\\1" NLOPT_MAJOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}")
\r
76 STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+).*" "\\1" NLOPT_MINOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}")
\r
77 SET (NLOPT_BUGFIX_VERSION "0")
\r
78 ENDIF(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")
\r
80 MESSAGE(STATUS "NLOPT: Version number ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_BUGFIX_VERSION} found in configure.ac" )
\r
83 #==============================================================================
\r
85 #==============================================================================
\r
87 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE )
\r
90 #==============================================================================
\r
91 # INCLUDE DIRECTORIES
\r
92 #==============================================================================
\r
93 SET(${INCLUDE_DIRECTORIES} "")
\r
94 INCLUDE_DIRECTORIES (
\r
95 ${CMAKE_CURRENT_SOURCE_DIR}
\r
96 ${CMAKE_CURRENT_BINARY_DIR}
\r
117 #==============================================================================
\r
118 # nlopt LIBRARY TARGET (SHARED OR STATIC)
\r
119 #==============================================================================
\r
121 SET ( NLOPT_HEADERS
\r
122 api/nlopt.h api/nlopt.hpp api/nlopt.f
\r
125 SET ( NLOPT_SOURCES
\r
126 direct/DIRect.c direct/direct_wrap.c direct/DIRserial.c direct/DIRsubrout.c direct/direct-internal.h direct/direct.h
\r
127 cdirect/cdirect.c cdirect/hybrid.c cdirect/cdirect.h
\r
128 praxis/praxis.c praxis/praxis.h
\r
129 luksan/plis.c luksan/plip.c luksan/pnet.c luksan/mssubs.c luksan/pssubs.c luksan/luksan.h
\r
130 crs/crs.c crs/crs.h
\r
131 mlsl/mlsl.c mlsl/mlsl.h
\r
132 mma/mma.c mma/mma.h mma/ccsa_quadratic.c
\r
133 cobyla/cobyla.c cobyla/cobyla.h
\r
134 newuoa/newuoa.c newuoa/newuoa.h
\r
135 neldermead/nldrmd.c neldermead/neldermead.h neldermead/sbplx.c
\r
136 auglag/auglag.c auglag/auglag.h
\r
137 bobyqa/bobyqa.c bobyqa/bobyqa.h
\r
138 isres/isres.c isres/isres.h
\r
139 slsqp/slsqp.c slsqp/slsqp.h
\r
140 esch/esch.c esch/esch.h
\r
141 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
142 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
143 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
146 OPTION(BUILD_SHARED_LIBS "Build NLOPT as a shared library" OFF )
\r
148 IF(BUILD_SHARED_LIBS)
\r
149 ADD_DEFINITIONS(-DNLOPT_DLL)
\r
150 ADD_DEFINITIONS(-DNLOPT_DLL_EXPORT )
\r
151 ENDIF(BUILD_SHARED_LIBS)
\r
153 INSTALL ( FILES ${NLOPT_HEADERS} DESTINATION include )
\r
155 ADD_LIBRARY (nlopt ${NLOPT_SOURCES} )
\r
157 # parse configure.ac for lib version
\r
158 STRING( REGEX MATCH "SHARED_VERSION_INFO=\"[0-9]+:[0-9]+:[0-9]+\"" _VERSION_INFO_LINE "${CONFIG_AUTOMAKE}")
\r
159 IF (_VERSION_INFO_LINE)
\r
160 STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"([0-9]+):[0-9]+:[0-9]+\"" "\\1" _VERSION_INFO_CURRENT "${_VERSION_INFO_LINE}")
\r
161 STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"[0-9]+:([0-9]+):[0-9]+\"" "\\1" _VERSION_INFO_REVISION "${_VERSION_INFO_LINE}")
\r
162 STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"[0-9]+:[0-9]+:([0-9]+)\"" "\\1" _VERSION_INFO_AGE "${_VERSION_INFO_LINE}")
\r
163 MATH(EXPR _INFO_SOVERSION "${_VERSION_INFO_CURRENT} - ${_VERSION_INFO_AGE} ")
\r
164 SET(_INFO_VERSION "${_INFO_SOVERSION}.${_VERSION_INFO_AGE}.${_VERSION_INFO_REVISION}")
\r
165 SET_TARGET_PROPERTIES(nlopt PROPERTIES SOVERSION ${_INFO_SOVERSION})
\r
166 SET_TARGET_PROPERTIES(nlopt PROPERTIES VERSION ${_INFO_VERSION} )
\r
169 INSTALL ( TARGETS nlopt
\r
170 RUNTIME DESTINATION bin
\r
171 LIBRARY DESTINATION lib${LIB_SUFFIX}
\r
172 ARCHIVE DESTINATION lib${LIB_SUFFIX}
\r
175 add_subdirectory (swig)
\r