Newer
Older
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#(C) https://github.com/capitalaslash/cmake-modules/blob/master/FindLibmesh.cmake
# (BSD - License)
# - Try to find Libmesh
# Once done this will define
#
# LIBMESH_FOUND - Libmesh has been successfully found
# LIBMESH_INCLUDE_DIRS - Libmesh include directories
# LIBMESH_LIBRARIES - Libmesh libraries
# LIBMESH_DEFINITIONS - Libmesh definitions
# LIBMESH_FLAGS - Libmesh flags
# LIBMESH_VERSION_STRING - Libmesh version
#
# Usage:
# find_package(Libmesh)
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE NONE)
endif()
string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE_UPPER)
if(${BUILD_TYPE_UPPER} MATCHES DEBUG)
set(METHOD dbg)
else()
set(METHOD opt)
endif()
set(METHOD opt)
#message(STATUS "linking against ${METHOD} libmesh library")
# required for LIBMESH_DEFINITIONS
find_package(PkgConfig REQUIRED)
set(LIBMESH_DIR LIBMESH_DIR-NOTFOUND CACHE PATH "Libmesh installation directory")
if(LIBMESH_DIR)
set(ENV{PKG_CONFIG_PATH} ${LIBMESH_DIR}/lib/pkgconfig)
message($ENV{PKG_CONFIG_PATH})
endif()
pkg_check_modules(PC_LIBMESH libmesh-${METHOD})
#message(STATUS "PC_LIBMESH_FOUND = ${PC_LIBMESH_FOUND}")
#message(STATUS "PC_LIBMESH_LIBRARIES = ${PC_LIBMESH_LIBRARIES}")
#message(STATUS "PC_LIBMESH_LIBRARY_DIRS = ${PC_LIBMESH_LIBRARY_DIRS}")
# distinguish flags and definitions (-D...)
#message(STATUS "PC_LIBMESH_CFLAGS_OTHER = ${PC_LIBMESH_CFLAGS_OTHER}")
foreach(FLAG ${PC_LIBMESH_CFLAGS_OTHER})
if(${FLAG} MATCHES "^[-][D].+")
set(PC_LIBMESH_CFLAGS_DEFS "${PC_LIBMESH_CFLAGS_DEFS} ${FLAG}")
else()
set(PC_LIBMESH_CFLAGS_FLAGS "${PC_LIBMESH_CFLAGS_FLAGS} ${FLAG}")
endif()
endforeach()
set(LIBMESH_DEFINITIONS ${PC_LIBMESH_CFLAGS_DEFS})
set(LIBMESH_FLAGS ${PC_LIBMESH_CFLAGS_FLAGS})
find_path(LIBMESH_INCLUDE_DIR libmesh/libmesh.h
HINTS ${PC_LIBMESH_INCLUDEDIR} ${PC_LIBMESH_INCLUDE_DIRS}
PATH_SUFFIXES libmesh
)
find_library(LIBMESH_LIBRARY
NAMES mesh_${METHOD} libmesh
HINTS ${PC_LIBMESH_LIBDIR} ${PC_LIBMESH_LIBARY_DIRS}
)
set(LIBMESH_LIBRARIES ${LIBMESH_LIBRARY})
set(LIBMESH_INCLUDE_DIRS ${LIBMESH_INCLUDE_DIR})
find_program( LIBMESH_CONFIG_EXECUTABLE
NAMES libmesh-config
HINTS ${LIBMESH_DIR} $ENV{LIBMESH_DIR}
PATH_SUFFIXES bin
DOC "libmesh-config executable"
)
mark_as_advanced( LIBMESH_CONFIG_EXECUTABLE )
exec_program( ${LIBMESH_CONFIG_EXECUTABLE}
ARGS --include
OUTPUT_VARIABLE LMC_INC_FLAG
RETURN_VALUE LMC_INC_RET
)
string(REPLACE " " ";" LMC_INC_LIST ${LMC_INC_FLAG})
foreach( IPATH ${LMC_INC_LIST} )
string(REGEX REPLACE "^-I" "" IPATH ${IPATH})
string(REGEX REPLACE "//" "/" IPATH ${IPATH})
list(APPEND LM_INC ${IPATH})
endforeach()
set(LIBMESH_INCLUDE_DIRS ${LM_INC})
if(PC_LIBMESH_VERSION)
set(LIBMESH_VERSION_STRING ${PC_LIBMESH_VERSION})
endif()
# handle the QUIETLY and REQUIRED arguments and set LIBMESH_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libmesh
FOUND_VAR LIBMESH_FOUND
REQUIRED_VARS LIBMESH_LIBRARIES LIBMESH_INCLUDE_DIRS LIBMESH_DEFINITIONS
LIBMESH_FLAGS
VERSION_VAR LIBMESH_VERSION_STRING
)
mark_as_advanced(
LIBMESH_INCLUDE_DIR
LIBMESH_LIBRARIES
LIBMESH_CONFIG_EXECUTABLE
)