File: FindGLPK.cmake

package info (click to toggle)
openms 2.4.0-real-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 646,136 kB
  • sloc: cpp: 392,260; xml: 215,373; python: 10,976; ansic: 3,325; php: 2,482; sh: 901; ruby: 399; makefile: 141; perl: 85
file content (72 lines) | stat: -rw-r--r-- 2,548 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Taken from lemon library  
# https://lemon.cs.elte.hu/trac/lemon
# License: Boost Software License, Version 1.0

set(GLPK_ROOT_DIR "" CACHE PATH "GLPK root directory")

set(GLPK_REGKEY "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Glpk;InstallPath]")
get_filename_component(GLPK_ROOT_PATH ${GLPK_REGKEY} ABSOLUTE)

find_path(GLPK_INCLUDE_DIR
  glpk.h
  PATHS ${GLPK_REGKEY}/include
  HINTS ${GLPK_ROOT_DIR}/include
)

if (NOT GLPK_LIBRARIES)
	# find library and (optionally) the corresponding debug version
	find_library(GLPK_LIBRARY_RELEASE
		glpk
		PATHS ${GLPK_REGKEY}/lib
		HINTS ${GLPK_ROOT_DIR}/lib
	)

	find_library(GLPK_LIBRARY_DEBUG
		glpkd
		PATHS ${GLPK_REGKEY}/lib
		HINTS ${GLPK_ROOT_DIR}/lib
	)

	include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
	SELECT_LIBRARY_CONFIGURATIONS(GLPK)
endif()

if(GLPK_INCLUDE_DIR AND GLPK_LIBRARY)
  file(READ ${GLPK_INCLUDE_DIR}/glpk.h GLPK_GLPK_H)

  string(REGEX MATCH "define[ ]+GLP_MAJOR_VERSION[ ]+[0-9]+" GLPK_MAJOR_VERSION_LINE "${GLPK_GLPK_H}")
  string(REGEX REPLACE "define[ ]+GLP_MAJOR_VERSION[ ]+([0-9]+)" "\\1" GLPK_VERSION_MAJOR "${GLPK_MAJOR_VERSION_LINE}")

  string(REGEX MATCH "define[ ]+GLP_MINOR_VERSION[ ]+[0-9]+" GLPK_MINOR_VERSION_LINE "${GLPK_GLPK_H}")
  string(REGEX REPLACE "define[ ]+GLP_MINOR_VERSION[ ]+([0-9]+)" "\\1" GLPK_VERSION_MINOR "${GLPK_MINOR_VERSION_LINE}")

  set(GLPK_VERSION_STRING "${GLPK_VERSION_MAJOR}.${GLPK_VERSION_MINOR}")

  if(GLPK_FIND_VERSION)
    if(GLPK_FIND_VERSION_COUNT GREATER 2)
      message(SEND_ERROR "unexpected version string")
    endif(GLPK_FIND_VERSION_COUNT GREATER 2)

    math(EXPR GLPK_REQUESTED_VERSION "${GLPK_FIND_VERSION_MAJOR}*100 + ${GLPK_FIND_VERSION_MINOR}")
    math(EXPR GLPK_FOUND_VERSION "${GLPK_VERSION_MAJOR}*100 + ${GLPK_VERSION_MINOR}")

    if(GLPK_FOUND_VERSION LESS GLPK_REQUESTED_VERSION)
      set(GLPK_PROPER_VERSION_FOUND FALSE)
    else(GLPK_FOUND_VERSION LESS GLPK_REQUESTED_VERSION)
      set(GLPK_PROPER_VERSION_FOUND TRUE)
    endif(GLPK_FOUND_VERSION LESS GLPK_REQUESTED_VERSION)
  else(GLPK_FIND_VERSION)
    set(GLPK_PROPER_VERSION_FOUND TRUE)
  endif(GLPK_FIND_VERSION)
endif(GLPK_INCLUDE_DIR AND GLPK_LIBRARY)

INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLPK DEFAULT_MSG GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_PROPER_VERSION_FOUND)

if(GLPK_FOUND)
  set(GLPK_INCLUDE_DIRS ${GLPK_INCLUDE_DIR})
  set(GLPK_LIBRARIES ${GLPK_LIBRARY})
  set(GLPK_BIN_DIR ${GLPK_ROOT_PATH}/bin)
endif(GLPK_FOUND)

MARK_AS_ADVANCED(GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_BIN_DIR)