blob: c87453ab3eb96d9a96049e6f0880b62599594993 [file] [log] [blame] [edit]
#
# CMakeLists.txt for "lp_solve_5.5.2.0_source.tar.gz"
#
# Copyright 2012-2013 Benjamin Eikel
# Copyright 2018 yumetodo <yume-wikijp@live.jp>
# License: Public Domain
#
cmake_minimum_required(VERSION 2.8.12)
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(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
option(LIB_TYPE "STATIC or SHARED" SHARED)
# Set up install directories
include(GNUInstallDirs)
set(CMAKE_INSTALL_CMAKECONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/lpsolve)
add_library(lpsolve55 ${LIB_TYPE}
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()
include (CheckLibraryExists)
check_library_exists(m ceil "" HAVE_LIBM)
if (HAVE_LIBM)
target_link_libraries (lpsolve55 PUBLIC m)
endif ()
check_library_exists(dl dlopen "" HAVE_LIBDL)
if (HAVE_LIBDL)
target_link_libraries (lpsolve55 PUBLIC dl)
endif ()
# Set version of library
set_target_properties(lpsolve55 PROPERTIES VERSION ${LPSOLVE_VERSION}
SOVERSION ${LPSOLVE_VERSION_MAJOR})
# Install the library
install(TARGETS lpsolve55 EXPORT lpsolve55-export
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
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 lpsolve55-export 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})
# lpsolve front-end
if(${LIB_TYPE} STREQUAL "STATIC")
add_executable (lp_solve lp_solve/lp_solve.c)
target_include_directories(lp_solve PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
target_link_libraries (lp_solve PUBLIC lpsolve55)
install (TARGETS lp_solve DESTINATION bin)
endif()
# for xxx-config.cmake
install(EXPORT lpsolve55-export
FILE lpsolve55-config.cmake
DESTINATION share/cmake/lpsolve55/
EXPORT_LINK_INTERFACE_LIBRARIES)