this repo has no description
1# - Try to find Gurobi
2# Once done this will define
3# GUROBI_FOUND - System has GUROBI
4# GUROBI_INCLUDE_DIRS - The GUROBI include directories
5# GUROBI_LIBRARIES - The libraries needed to use GUROBI
6# GUROBI_COMPILE_FLAGS - The definitions required to compile with GUROBI
7# User can set Gurobi_ROOT to the preferred installation prefix
8
9option(GUROBI_PLUGIN "Build Gurobi binding as a plugin" ON)
10
11set(GUROBI_COMPILE_FLAGS "-fPIC -fno-strict-aliasing -fexceptions")
12
13set(GUROBI_VERSIONS 913 912 911 910 903 902 901 900 811 810 801 752 702)
14
15foreach(VERSION ${GUROBI_VERSIONS})
16 list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64")
17 list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64")
18 list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win64")
19 list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win32")
20 list(APPEND GUROBI_DEFAULT_LOC "/Library/gurobi${VERSION}/mac64")
21
22 string(SUBSTRING ${VERSION} 0 2 VERSION)
23 list(APPEND GUROBI_LIB_NAMES gurobi${VERSION})
24endforeach(VERSION)
25
26find_path(GUROBI_INCLUDE gurobi_c.h
27 PATHS $ENV{GUROBI_HOME}
28 HINTS ${GUROBI_DEFAULT_LOC}
29 PATH_SUFFIXES include)
30
31if(NOT "${GUROBI_INCLUDE}" STREQUAL "GUROBI_INCLUDE-NOTFOUND")
32 file(READ "${GUROBI_INCLUDE}/gurobi_c.h" GUROBI_CONFIG)
33 string(REGEX MATCH "\#define GRB_VERSION_MAJOR +([0-9]+)" _ "${GUROBI_CONFIG}")
34 set(GRB_VERSION_MAJOR "${CMAKE_MATCH_1}")
35 string(REGEX MATCH "\#define GRB_VERSION_MINOR +([0-9]+)" _ "${GUROBI_CONFIG}")
36 set(GRB_VERSION_MINOR "${CMAKE_MATCH_1}")
37 string(REGEX MATCH "\#define GRB_VERSION_TECHNICAL +([0-9]+)" _ "${GUROBI_CONFIG}")
38 set(GRB_VERSION_TECHNICAL "${CMAKE_MATCH_1}")
39 set(GUROBI_VERSION "${GRB_VERSION_MAJOR}.${GRB_VERSION_MINOR}.${GRB_VERSION_TECHNICAL}")
40 unset(GUROBI_CONFIG)
41endif()
42
43if(GUROBI_PLUGIN)
44 include(CheckIncludeFiles)
45 # TODO: Cleanup this mess
46 check_include_files(dlfcn.h HAS_DLFCN_H)
47 check_include_files(Windows.h HAS_WINDOWS_H)
48 if(HAS_DLFCN_H)
49 find_library(GUROBI_LIBRARY dl)
50 elseif(HAS_WINDOWS_H)
51 set(GUROBI_LIBRARY ${GUROBI_INCLUDE})
52 endif()
53else()
54 foreach(GUROBI_LIB ${GUROBI_LIB_NAMES})
55 find_library(GUROBI_LIBRARY NAMES ${GUROBI_LIB}
56 HINTS $ENV{GUROBI_HOME}
57 PATHS ${GUROBI_DEFAULT_LOC}
58 PATH_SUFFIXES lib)
59 if(NOT "${GUROBI_LIBRARY}" STREQUAL "GUROBI_LIBRARY-NOTFOUND")
60 break()
61 endif()
62 endforeach(GUROBI_LIB)
63endif()
64
65include(FindPackageHandleStandardArgs)
66# handle the QUIETLY and REQUIRED arguments and set GUROBI_FOUND to TRUE
67# if all listed variables are TRUE
68find_package_handle_standard_args(Gurobi
69 FOUND_VAR GUROBI_FOUND
70 REQUIRED_VARS GUROBI_INCLUDE GUROBI_LIBRARY
71 VERSION_VAR GUROBI_VERSION
72 FAIL_MESSAGE "Could NOT find Gurobi, use GUROBI_ROOT to hint its location"
73)
74
75if(GUROBI_PLUGIN AND HAS_WINDOWS_H AND NOT HAS_DLFCN_H)
76 unset(GUROBI_LIBRARY)
77endif()
78
79mark_as_advanced(GUROBI_INCLUDE GUROBI_LIBRARY)
80
81set(GUROBI_LIBRARIES ${GUROBI_LIBRARY})
82set(GUROBI_INCLUDE_DIRS ${GUROBI_INCLUDE})