diff options
Diffstat (limited to 'lpsolve-CMakeLists.txt')
-rw-r--r-- | lpsolve-CMakeLists.txt | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/lpsolve-CMakeLists.txt b/lpsolve-CMakeLists.txt new file mode 100644 index 000000000000..41c59463a73e --- /dev/null +++ b/lpsolve-CMakeLists.txt @@ -0,0 +1,142 @@ +# +# CMakeLists.txt for "lp_solve_5.5.2.0_source.tar.gz" +# +# Copyright 2012-2013 Benjamin Eikel +# License: Public Domain +# + +cmake_minimum_required(VERSION 2.8.11) + +if (NOT DEFINED CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type") +endif () + +project(lpsolve C) + +set(LPSOLVE_VERSION_MAJOR 5) +set(LPSOLVE_VERSION_MINOR 5) +set(LPSOLVE_VERSION_PATCH 2) +set(LPSOLVE_VERSION ${LPSOLVE_VERSION_MAJOR}.${LPSOLVE_VERSION_MINOR}.${LPSOLVE_VERSION_PATCH}) + +# Set up install directories +include(GNUInstallDirs) +set(CMAKE_INSTALL_CMAKECONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/lpsolve) + +add_library(lpsolve55 + lp_MDO.c + shared/commonlib.c + shared/mmio.c + shared/myblas.c + ini.c + fortify.c + colamd/colamd.c + lp_rlp.c + lp_crash.c + bfp/bfp_LUSOL/lp_LUSOL.c + bfp/bfp_LUSOL/LUSOL/lusol.c + lp_Hash.c + lp_lib.c + lp_wlp.c + lp_matrix.c + lp_mipbb.c + lp_MPS.c + lp_params.c + lp_presolve.c + lp_price.c + lp_pricePSE.c + lp_report.c + lp_scale.c + lp_simplex.c + lp_SOS.c + lp_utils.c + yacc_read.c +) + +set_property(TARGET lpsolve55 PROPERTY PUBLIC_HEADER + lp_bit.h + lp_crash.h + lp_explicit.h + lp_fortify.h + lp_Hash.h + lp_lib.h + lp_matrix.h + lp_MDO.h + lp_mipbb.h + lp_MPS.h + lp_presolve.h + lp_price.h + lp_pricePSE.h + lp_report.h + lp_rlp.h + lp_scale.h + lp_simplex.h + lp_solveDLL.h + lp_SOS.h + lp_types.h + lp_utils.h + lp_wlp.h +) + +target_include_directories(lpsolve55 PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/shared" + "${CMAKE_CURRENT_SOURCE_DIR}/bfp" + "${CMAKE_CURRENT_SOURCE_DIR}/bfp/bfp_LUSOL" + "${CMAKE_CURRENT_SOURCE_DIR}/bfp/bfp_LUSOL/LUSOL" + "${CMAKE_CURRENT_SOURCE_DIR}/colamd" +) + +target_compile_definitions(lpsolve55 PUBLIC + YY_NEVER_INTERACTIVE + PARSER_LP + INVERSE_ACTIVE=INVERSE_LUSOL + RoleIsExternalInvEngine +) + +if(WIN32) + target_compile_definitions(lpsolve55 PUBLIC + INLINE=static + _USRDLL + WIN32 + ) +endif() + +include(CheckSymbolExists) +check_symbol_exists(isnan math.h HAVE_ISNAN) +if(NOT HAVE_ISNAN) + set_property(TARGET lpsolve55 APPEND PROPERTY COMPILE_DEFINITIONS NOISNAN) +endif() + +# Set version of library +set_target_properties(lpsolve55 PROPERTIES VERSION ${LPSOLVE_VERSION} + SOVERSION ${LPSOLVE_VERSION_MAJOR}) + +# Install the library +install(TARGETS lpsolve55 EXPORT LibraryExport + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lpsolve +) + +# Set include directories for users of this library +target_include_directories(lpsolve55 INTERFACE ${CMAKE_INSTALL_FULL_INCLUDEDIR}/lpsolve) + +# Library export +install(EXPORT LibraryExport DESTINATION ${CMAKE_INSTALL_CMAKECONFIGDIR} FILE lpsolveTargets.cmake) + +# # Create the configuration files +# include(CMakePackageConfigHelpers) +# get_property(LPSOLVE_DEFINITIONS TARGET lpsolve55 PROPERTY COMPILE_DEFINITIONS) +# configure_package_config_file(lpsolveConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/lpsolveConfig.cmake +# INSTALL_DESTINATION ${CMAKE_INSTALL_CMAKECONFIGDIR} +# PATH_VARS CMAKE_INSTALL_CMAKECONFIGDIR +# NO_SET_AND_CHECK_MACRO +# NO_CHECK_REQUIRED_COMPONENTS_MACRO) +# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/lpsolveConfigVersion.cmake +# VERSION ${LPSOLVE_VERSION} +# COMPATIBILITY SameMajorVersion) +# +# # Install the configuration files +# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lpsolveConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/lpsolveConfigVersion.cmake +# DESTINATION ${CMAKE_INSTALL_CMAKECONFIGDIR}) |