-PROJECT(NLOPT)\r
-\r
#==============================================================================\r
# NLOPT CMake file\r
# \r
# 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
\r
+if (NOT DEFINED CMAKE_BUILD_TYPE)\r
+ set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type")\r
+endif ()\r
\r
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)\r
-INCLUDE(CheckIncludeFiles)\r
-INCLUDE(CheckFunctionExists)\r
-INCLUDE(CheckTypeSize)\r
+project (nlopt C)\r
\r
+list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)\r
\r
-#==============================================================================\r
-# COMPILATION CHECKINGS and CONFIGURATION GENERATION\r
-#==============================================================================\r
-CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)\r
-CHECK_INCLUDE_FILES( string.h HAVE_STRING_H)\r
-CHECK_INCLUDE_FILES( strings.h HAVE_STRINGS_H)\r
-CHECK_INCLUDE_FILES( sys/stat.h HAVE_SYS_STAT_H)\r
-CHECK_INCLUDE_FILES( inttypes.h HAVE_INTTYPES_H)\r
-CHECK_INCLUDE_FILES( memory.h HAVE_MEMORY_H)\r
-CHECK_INCLUDE_FILES( stdlib.h HAVE_STDLIB_H)\r
-CHECK_INCLUDE_FILES( stdint.h HAVE_STDINT_H)\r
-\r
-CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)\r
-CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)\r
-CHECK_INCLUDE_FILES( sys/types.h HAVE_SYS_TYPES_H)\r
-\r
-CHECK_FUNCTION_EXISTS( isinf HAVE_ISINF)\r
-CHECK_FUNCTION_EXISTS( isinf HAVE_ISNAN)\r
-CHECK_FUNCTION_EXISTS( gettimeofday HAVE_GETTIMEOFDAY)\r
-CHECK_FUNCTION_EXISTS( qsort_r HAVE_QSORT_R)\r
-CHECK_FUNCTION_EXISTS( time HAVE_TIME)\r
-CHECK_FUNCTION_EXISTS( copysign HAVE_COPYSIGN)\r
-\r
-CHECK_TYPE_SIZE(uint32_t UINT32_T)\r
-IF(NOT HAVE_UINT32_T)\r
- IF(MSVC)\r
- SET(uint32_t "unsigned int")\r
- SET(SIZEOF_UNSIGNED_INT 4)\r
- ENDIF(MSVC)\r
-ENDIF(NOT HAVE_UINT32_T)\r
+option (WITH_CXX "enable cxx routines" OFF)\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" ON)\r
+option (BUILD_GUILE "build guile bindings" ON)\r
+option (USE_SWIG "use SWIG to build bindings" ON)\r
+\r
+set (NLOPT_SUFFIX)\r
+if (WITH_CXX)\r
+ set (NLOPT_SUFFIX _cxx)\r
+endif ()\r
+\r
+if (WITH_CXX OR BUILD_PYTHON)\r
+ enable_language (CXX)\r
+endif ()\r
+\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_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
+\r
+\r
+set (CMAKE_INSTALL_RPATH ${INSTALL_LIB_DIR})\r
+set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)\r
+if(POLICY CMP0042)\r
+ # Set MACOSX_RPATH to ON\r
+ cmake_policy(SET CMP0042 NEW)\r
+endif()\r
+\r
+include (CheckIncludeFiles)\r
+include (CheckFunctionExists)\r
+include (CheckTypeSize)\r
+include (CheckCCompilerFlag)\r
\r
#==============================================================================\r
-# LOOK FOR THE VERSION NUMBER IN configure.ac\r
+# COMPILATION CHECKINGS and CONFIGURATION GENERATION\r
#==============================================================================\r
+check_include_file (dlfcn.h HAVE_DLFCN_H)\r
+check_include_file (getopt.h HAVE_GETOPT_H)\r
+check_include_file (unistd.h HAVE_UNISTD_H)\r
+check_include_file (string.h HAVE_STRING_H)\r
+check_include_file (strings.h HAVE_STRINGS_H)\r
+check_include_file (inttypes.h HAVE_INTTYPES_H)\r
+check_include_file (memory.h HAVE_MEMORY_H)\r
+check_include_file (stdlib.h HAVE_STDLIB_H)\r
+check_include_file (stdint.h HAVE_STDINT_H)\r
+check_include_file (time.h HAVE_TIME_H)\r
+check_include_file (sys/types.h HAVE_SYS_TYPES_H)\r
+check_include_file (sys/stat.h HAVE_SYS_STAT_H)\r
+check_include_file (sys/time.h HAVE_SYS_TIME_H)\r
+if (HAVE_TIME_H AND HAVE_SYS_TIME_H)\r
+ set (TIME_WITH_SYS_TIME TRUE)\r
+endif ()\r
+check_function_exists (getpid HAVE_GETPID)\r
+check_function_exists (syscall HAVE_GETTID_SYSCALL)\r
+check_function_exists (isinf HAVE_ISINF)\r
+check_function_exists (isnan HAVE_ISNAN)\r
+check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)\r
+check_function_exists (qsort_r HAVE_QSORT_R)\r
+check_function_exists (time HAVE_TIME)\r
+check_function_exists (copysign HAVE_COPYSIGN)\r
+check_type_size ("uint32_t" SIZEOF_UINT32_T)\r
+set (HAVE_UINT32_T ${SIZEOF_UINT32_T})\r
+check_type_size ("unsigned int" SIZEOF_UNSIGNED_INT)\r
+check_type_size ("unsigned long" SIZEOF_UNSIGNED_LONG)\r
\r
-FILE( READ configure.ac CONFIG_AUTOMAKE )\r
-\r
-STRING( REGEX MATCH "AC_INIT\\(nlopt, ([0-9]+\\.[0-9]+\\.?[0-9]*)" NLOPT_AUTOMAKE_LINE_VERSION "${CONFIG_AUTOMAKE}") \r
+if (NOT DEFINED HAVE_FPCLASSIFY)\r
+ message(STATUS "Looking for fpclassify")\r
+ file (WRITE ${CMAKE_BINARY_DIR}/fpclassify.c "#include <math.h>\n")\r
+ file (APPEND ${CMAKE_BINARY_DIR}/fpclassify.c "int main(void) {\n")\r
+ file (APPEND ${CMAKE_BINARY_DIR}/fpclassify.c "if (!fpclassify(3.14159)) fpclassify(2.7183);\n")\r
+ file (APPEND ${CMAKE_BINARY_DIR}/fpclassify.c " return 0; }\n")\r
+ try_compile (HAVE_FPCLASSIFY\r
+ ${CMAKE_BINARY_DIR}/build_fpclassify\r
+ ${CMAKE_BINARY_DIR}/fpclassify.c\r
+ CMAKE_FLAGS -DLINK_LIBRARIES=m)\r
+ message(STATUS "Looking for fpclassify - ${HAVE_FPCLASSIFY}")\r
+endif ()\r
\r
-#---------------------------------\r
-# If version matches 'X.X.X'\r
-#---------------------------------\r
-IF(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")\r
- STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+\\.[0-9]*.*" "\\1" NLOPT_MAJOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}") \r
- STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+)\\.[0-9]*.*" "\\1" NLOPT_MINOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}") \r
- STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" NLOPT_BUGFIX_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}") \r
-#---------------------------------\r
-# Else (consider that version matches 'X.X')\r
-#---------------------------------\r
-ELSE(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")\r
- STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+.*" "\\1" NLOPT_MAJOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}") \r
- STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+).*" "\\1" NLOPT_MINOR_VERSION "${NLOPT_AUTOMAKE_LINE_VERSION}") \r
- SET (NLOPT_BUGFIX_VERSION "0")\r
-ENDIF(${NLOPT_AUTOMAKE_LINE_VERSION} MATCHES ".*[0-9]+\\.[0-9]+\\.[0-9]+")\r
+option (WITH_THREADLOCAL "check thread local keyword" ON)\r
+if (WITH_THREADLOCAL AND NOT DEFINED HAVE_THREAD_LOCAL_STORAGE)\r
+ foreach (_THREADLOCAL_KEY "__thread" "__declspec(thread)")\r
+ unset (HAVE_THREAD_LOCAL_STORAGE CACHE)\r
+ check_c_source_compiles("\r
+ ${_THREADLOCAL_KEY} int tls;\r
\r
-MESSAGE(STATUS "NLOPT: Version number ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_BUGFIX_VERSION} found in configure.ac" )\r
+ int main(void) {\r
+ return 0;\r
+ }" HAVE_THREAD_LOCAL_STORAGE)\r
+ if (${HAVE_THREAD_LOCAL_STORAGE})\r
+ set (THREADLOCAL ${_THREADLOCAL_KEY})\r
+ endif ()\r
+ endforeach()\r
+endif ()\r
\r
+#==============================================================================\r
+# version\r
+#==============================================================================\r
+set (NLOPT_MAJOR_VERSION "2")\r
+set (NLOPT_MINOR_VERSION "5")\r
+set (NLOPT_BUGFIX_VERSION "0")\r
+set (NLOPT_VERSION_STRING ${NLOPT_MAJOR_VERSION}.${NLOPT_MINOR_VERSION}.${NLOPT_BUGFIX_VERSION})\r
+message (STATUS "NLopt version ${NLOPT_VERSION_STRING}")\r
\r
#==============================================================================\r
# CREATE 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}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE)\r
\r
+# pkgconfig file\r
+if (UNIX OR MINGW)\r
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/nlopt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/nlopt.pc @ONLY)\r
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/nlopt.pc DESTINATION ${RELATIVE_INSTALL_LIB_DIR}/pkgconfig)\r
+endif ()\r
\r
#==============================================================================\r
# INCLUDE DIRECTORIES\r
#==============================================================================\r
-SET(${INCLUDE_DIRECTORIES} "")\r
-INCLUDE_DIRECTORIES (\r
- ${CMAKE_CURRENT_SOURCE_DIR}\r
- ${CMAKE_CURRENT_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
- slsqp\r
- esch\r
- api )\r
+set (${INCLUDE_DIRECTORIES} "")\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
+ slsqp\r
+ esch\r
+ api)\r
\r
\r
#==============================================================================\r
# nlopt LIBRARY TARGET (SHARED OR STATIC)\r
#==============================================================================\r
\r
-SET ( NLOPT_HEADERS \r
- api/nlopt.h api/nlopt.hpp api/nlopt.f\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
- 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
- )\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
+endif ()\r
\r
-OPTION(BUILD_SHARED_LIBS "Build NLOPT as a shared library" OFF )\r
\r
if (BUILD_SHARED_LIBS)\r
- ADD_DEFINITIONS(-DNLOPT_DLL)\r
- ADD_DEFINITIONS(-DNLOPT_DLL_EXPORT )\r
- \r
- if (NOT CMAKE_INSTALL_PREFIX MATCHES "^/usr")\r
- set (CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})\r
- set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)\r
- endif ()\r
+ add_definitions (-DNLOPT_DLL)\r
+ add_definitions (-DNLOPT_DLL_EXPORT)\r
endif ()\r
\r
-INSTALL ( FILES ${NLOPT_HEADERS} DESTINATION include )\r
+install (FILES ${NLOPT_HEADERS} DESTINATION include)\r
\r
-ADD_LIBRARY (nlopt ${NLOPT_SOURCES} )\r
+set (nlopt_lib nlopt${NLOPT_SUFFIX})\r
+add_library (${nlopt_lib} ${NLOPT_SOURCES})\r
+set_target_properties (${nlopt_lib} PROPERTIES SOVERSION 0)\r
+set_target_properties (${nlopt_lib} PROPERTIES VERSION 0.9.0)\r
\r
-# parse configure.ac for lib version\r
-STRING( REGEX MATCH "SHARED_VERSION_INFO=\"[0-9]+:[0-9]+:[0-9]+\"" _VERSION_INFO_LINE "${CONFIG_AUTOMAKE}") \r
-IF (_VERSION_INFO_LINE)\r
- STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"([0-9]+):[0-9]+:[0-9]+\"" "\\1" _VERSION_INFO_CURRENT "${_VERSION_INFO_LINE}") \r
- STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"[0-9]+:([0-9]+):[0-9]+\"" "\\1" _VERSION_INFO_REVISION "${_VERSION_INFO_LINE}") \r
- STRING( REGEX REPLACE "SHARED_VERSION_INFO=\"[0-9]+:[0-9]+:([0-9]+)\"" "\\1" _VERSION_INFO_AGE "${_VERSION_INFO_LINE}") \r
- MATH(EXPR _INFO_SOVERSION "${_VERSION_INFO_CURRENT} - ${_VERSION_INFO_AGE} ")\r
- SET(_INFO_VERSION "${_INFO_SOVERSION}.${_VERSION_INFO_AGE}.${_VERSION_INFO_REVISION}")\r
- SET_TARGET_PROPERTIES(nlopt PROPERTIES SOVERSION ${_INFO_SOVERSION})\r
- SET_TARGET_PROPERTIES(nlopt PROPERTIES VERSION ${_INFO_VERSION} )\r
-ENDIF ()\r
+# pass -fPIC in case swig module is built with static library\r
+if (NOT BUILD_SHARED_LIBS)\r
+ check_c_compiler_flag (-fPIC HAS_FPIC)\r
+ if (HAS_FPIC)\r
+ set (CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")\r
+ set (CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}")\r
+ endif ()\r
+endif ()\r
\r
-INSTALL ( TARGETS nlopt\r
- RUNTIME DESTINATION bin\r
- LIBRARY DESTINATION lib${LIB_SUFFIX}\r
- ARCHIVE DESTINATION lib${LIB_SUFFIX}\r
+install ( TARGETS ${nlopt_lib}\r
+ EXPORT NLoptLibraryDepends\r
+ RUNTIME DESTINATION ${RELATIVE_INSTALL_BIN_DIR}\r
+ LIBRARY DESTINATION ${RELATIVE_INSTALL_LIB_DIR}\r
+ ARCHIVE DESTINATION ${RELATIVE_INSTALL_LIB_DIR}\r
)\r
\r
+add_subdirectory (api)\r
+\r
+if (BUILD_PYTHON)\r
+ find_package (PythonInterp)\r
+ find_package (PythonLibs)\r
+ find_package (NumPy)\r
+endif ()\r
+\r
+if (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
+\r
+ 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
+\r
+endif ()\r
+\r
+if (BUILD_GUILE)\r
+ find_package (Guile)\r
+endif ()\r
+\r
+if (USE_SWIG)\r
+ find_package (SWIG)\r
+endif ()\r
+\r
add_subdirectory (swig)\r
+\r
+if (BUILD_OCTAVE)\r
+ find_package (Octave)\r
+endif ()\r
+\r
+if (BUILD_MATLAB)\r
+ find_package (Matlab)\r
+endif ()\r
+\r
+if (OCTAVE_FOUND OR Matlab_FOUND)\r
+ add_subdirectory (octave)\r
+endif ()\r
+\r
+enable_testing ()\r
+add_subdirectory (test)\r
+\r
+set (CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")\r
+set (CPACK_PACKAGE_VERSION_MAJOR "${NLOPT_MAJOR_VERSION}")\r
+set (CPACK_PACKAGE_VERSION_MINOR "${NLOPT_MINOR_VERSION}")\r
+set (CPACK_PACKAGE_VERSION_PATCH "${NLOPT_BUGFIX_VERSION}")\r
+set (CPACK_SOURCE_GENERATOR "TBZ2;TGZ" )\r
+set (CPACK_BINARY_STGZ "OFF" )\r
+set (CPACK_BINARY_TBZ2 "ON" )\r
+set (CPACK_BINARY_TGZ "ON" )\r
+set (CPACK_BINARY_TZ "OFF" )\r
+set (CPACK_SOURCE_IGNORE_FILES ".git;/build;.*~;${CPACK_SOURCE_IGNORE_FILES}")\r
+\r
+set (CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${NLOPT_VERSION_STRING})\r
+\r
+include (CPack)\r
+\r
+# configuration files\r
+export (TARGETS ${nlopt_lib} FILE ${PROJECT_BINARY_DIR}/NLoptLibraryDepends.cmake)\r
+\r
+# Install the export set for use with the install-tree\r
+install(EXPORT NLoptLibraryDepends\r
+ DESTINATION ${RELATIVE_INSTALL_CMAKE_DIR}\r
+ COMPONENT Development)\r
+\r
+# Create a NLOPTConfig.cmake file for the use from the install tree\r
+# and install it\r
+set (NLOPT_LIBRARIES ${nlopt_lib})\r
+\r
+set (NLOPT_CMAKE_DIR "${INSTALL_CMAKE_DIR}")\r
+file (RELATIVE_PATH rel_include_dir "${NLOPT_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")\r
+list (APPEND RELATIVE_NLOPT_INCLUDE_DIRS ${rel_include_dir})\r
+\r
+file (RELATIVE_PATH rel_lib_dir "${NLOPT_CMAKE_DIR}" "${INSTALL_LIB_DIR}")\r
+list (APPEND RELATIVE_NLOPT_LIB_DIR ${rel_lib_dir})\r
+\r
+configure_file (cmake/NLoptConfig.cmake.in NLoptConfig.cmake @ONLY)\r
+configure_file (cmake/NLoptConfigVersion.cmake.in NLoptConfigVersion.cmake @ONLY)\r
+install (FILES\r
+ ${CMAKE_CURRENT_BINARY_DIR}/NLoptConfig.cmake\r
+ ${CMAKE_CURRENT_BINARY_DIR}/NLoptConfigVersion.cmake\r
+ DESTINATION ${RELATIVE_INSTALL_CMAKE_DIR}\r
+ COMPONENT Development)\r
+\r