Skip to content

Commit cf3d08e

Browse files
Updated FEBioConfig.cmake. SDKs now include FEBioConfig.cmake
1 parent d274146 commit cf3d08e

4 files changed

Lines changed: 104 additions & 37 deletions

File tree

FEBioConfig.cmake

Lines changed: 92 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,27 @@ cmake_minimum_required(VERSION 3.15)
1313
# FEBio::FEBioRVE
1414
# FEBio::FECore
1515
# FEBio::FEImgLib
16-
# FEBio::NumCore
17-
#
18-
# FEBio::FEBioPlot (static)
19-
# FEBio::FEBioTest (static)
20-
# FEBio::FEBioXML (static)
21-
# FEBio::XML (static)
16+
# FEBio::FEBioPlot
17+
# FEBio::FEBioTest
18+
# FEBio::FEBioXML
2219
# ------------------------------------------------------------------------------
2320

2421
# ------------------------------------------------------------------------------
2522
# Libraries
2623
# ------------------------------------------------------------------------------
2724

28-
set(_FEBIO_SHARED_LIBS
29-
FEAMR
30-
FEBioLib
25+
set(_FEBIO_LIBS
26+
FECore
3127
FEBioMech
32-
FEBioOpt
28+
FEBioMix
29+
FEBioFluid
3330
FEBioRVE
34-
FECore
35-
FEImgLib
36-
NumCore
37-
)
38-
39-
set(_FEBIO_STATIC_LIBS
4031
FEBioPlot
41-
FEBioTest
4232
FEBioXML
43-
XML
33+
FEBioLib
34+
FEAMR
35+
FEBioOpt
36+
FEImgLib
4437
)
4538

4639
# ------------------------------------------------------------------------------
@@ -64,16 +57,27 @@ if(_FEBIO_IS_SOURCE_TREE)
6457
# This is the default build output directory
6558
set(_FEBIO_LIB_DIR "${_FEBIO_PREFIX}/build")
6659

67-
# Try to find the build directory by searching for febioxml
60+
# Try to find the build directory by searching for fecore
6861
file(GLOB _MATCHED_DIRS LIST_DIRECTORIES true "${_FEBIO_PREFIX}/*build*")
6962

7063
if(_MATCHED_DIRS)
64+
65+
if(WIN32)
66+
set(_LIB_NAME "fecore.lib")
67+
elseif(APPLE)
68+
set(_LIB_NAME "libfecore.dylib")
69+
else()
70+
set(_LIB_NAME "libfecore.so")
71+
endif()
72+
73+
7174
foreach(dir IN LISTS _MATCHED_DIRS)
72-
find_library(_test
73-
NAMES febioxml
75+
find_file(_test
76+
NAMES ${_LIB_NAME}
7477
PATHS ${dir}
7578
PATH_SUFFIXES lib lib/Release Release/lib Debug/lib lib/Debug
76-
NO_DEFAULT_PATH)
79+
NO_DEFAULT_PATH
80+
)
7781

7882
if(_test)
7983
set(_FEBIO_LIB_DIR "${dir}")
@@ -96,9 +100,10 @@ endif()
96100
# Helper to locate libraries
97101
# ------------------------------------------------------------------------------
98102

99-
function(_febio_find_library out_release out_debug out_fallback libname is_static)
103+
function(_febio_find_library out_release out_debug out_min_size out_rel_deb out_fallback libname)
100104
string(TOLOWER ${libname} _lib_lc)
101105

106+
# Find release version
102107
find_library(_TEMP
103108
NAMES ${_lib_lc}
104109
PATHS ${_FEBIO_LIB_DIR}
@@ -112,6 +117,7 @@ function(_febio_find_library out_release out_debug out_fallback libname is_stati
112117
endif()
113118
unset(_TEMP CACHE)
114119

120+
# Find debug version
115121
find_library(_TEMP
116122
NAMES ${_lib_lc}
117123
PATHS ${_FEBIO_LIB_DIR}
@@ -125,6 +131,35 @@ function(_febio_find_library out_release out_debug out_fallback libname is_stati
125131
endif()
126132
unset(_TEMP CACHE)
127133

134+
# Find min size version
135+
find_library(_TEMP
136+
NAMES ${_lib_lc}
137+
PATHS ${_FEBIO_LIB_DIR}
138+
PATH_SUFFIXES lib lib/MinSizeRel MinSizeRel/lib MinSizeRel
139+
NO_DEFAULT_PATH)
140+
141+
string(REGEX MATCH "MinSizeRel" _is_min_size ${_TEMP})
142+
143+
if(_is_min_size)
144+
set(${out_min_size} "${_TEMP}" PARENT_SCOPE)
145+
endif()
146+
unset(_TEMP CACHE)
147+
148+
# Find rel with deb info version
149+
find_library(_TEMP
150+
NAMES ${_lib_lc}
151+
PATHS ${_FEBIO_LIB_DIR}
152+
PATH_SUFFIXES lib lib/RelWithDebInfo RelWithDebInfo/lib RelWithDebInfo
153+
NO_DEFAULT_PATH)
154+
155+
string(REGEX MATCH "RelWithDebInfo" _is_rel_deb ${_TEMP})
156+
157+
if(_is_rel_deb)
158+
set(${out_rel_deb} "${_TEMP}" PARENT_SCOPE)
159+
endif()
160+
unset(_TEMP CACHE)
161+
162+
# Fallback: find any version
128163
find_library(_TEMP
129164
NAMES ${_lib_lc}
130165
PATHS ${_FEBIO_LIB_DIR}
@@ -139,27 +174,18 @@ endfunction()
139174
# Create imported targets
140175
# ------------------------------------------------------------------------------
141176

142-
foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
177+
foreach(lib IN LISTS _FEBIO_LIBS)
143178
if(TARGET "FEBio::${lib}")
144179
continue()
145180
endif()
146181

147-
list(FIND _FEBIO_STATIC_LIBS "${lib}" _static_index)
148-
if(_static_index GREATER -1)
149-
set(_lib_type STATIC)
150-
set(_is_static TRUE)
151-
else()
152-
set(_lib_type SHARED)
153-
set(_is_static FALSE)
154-
endif()
155-
156-
add_library("FEBio::${lib}" ${_lib_type} IMPORTED)
182+
add_library("FEBio::${lib}" SHARED IMPORTED)
157183

158184
set_target_properties("FEBio::${lib}" PROPERTIES
159185
INTERFACE_INCLUDE_DIRECTORIES "${_FEBIO_INCLUDE_DIR}"
160186
)
161187

162-
_febio_find_library(_rel _dbg _fallback "${lib}" "${_is_static}")
188+
_febio_find_library(_rel _dbg _min_size _rel_deb _fallback "${lib}")
163189

164190
if(_rel)
165191
set_target_properties("FEBio::${lib}" PROPERTIES
@@ -170,6 +196,7 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
170196
IMPORTED_IMPLIB_RELEASE "${_rel}"
171197
)
172198

199+
# Use release configuration as default in case not all are found
173200
set_target_properties("FEBio::${lib}" PROPERTIES
174201
IMPORTED_LOCATION "${_rel}"
175202
)
@@ -186,6 +213,34 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
186213
set_target_properties("FEBio::${lib}" PROPERTIES
187214
IMPORTED_IMPLIB_DEBUG "${_dbg}"
188215
)
216+
217+
# Use debug configuration as default if release not found
218+
if(NOT _rel)
219+
set_target_properties("FEBio::${lib}" PROPERTIES
220+
IMPORTED_LOCATION "${_dbg}"
221+
)
222+
set_target_properties("FEBio::${lib}" PROPERTIES
223+
IMPORTED_IMPLIB "${_dbg}"
224+
)
225+
endif()
226+
endif()
227+
228+
if(_min_size)
229+
set_target_properties("FEBio::${lib}" PROPERTIES
230+
IMPORTED_LOCATION_MINSIZEREL "${_min_size}"
231+
)
232+
set_target_properties("FEBio::${lib}" PROPERTIES
233+
IMPORTED_IMPLIB_MINSIZEREL "${_min_size}"
234+
)
235+
endif()
236+
237+
if(_rel_deb)
238+
set_target_properties("FEBio::${lib}" PROPERTIES
239+
IMPORTED_LOCATION_RELWITHDEBINFO "${_rel_deb}"
240+
)
241+
set_target_properties("FEBio::${lib}" PROPERTIES
242+
IMPORTED_IMPLIB_RELWITHDEBINFO "${_rel_deb}"
243+
)
189244
endif()
190245

191246
if(_fallback)
@@ -213,9 +268,9 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
213268

214269
endforeach()
215270

216-
unset(_FEBIO_SHARED_LIBS)
217-
unset(_FEBIO_STATIC_LIBS)
271+
unset(_FEBIO_LIBS)
218272
unset(_FEBIO_PREFIX)
219273
unset(_FEBIO_INCLUDE_DIR)
274+
unset(_FEBIO_LIB_DIR)
220275

221276
set(FEBio_FOUND TRUE)

ci/Linux/create-sdk.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ TARGET_DIR="${TARGET_DIR:-febio4-sdk}"
44
FEBIO_REPO="${FEBIO_REPO:-.}"
55
mkdir -p ${TARGET_DIR}/{include,lib}
66

7+
# Copy in FEBioConfig.cmake
8+
mkdir -p ${TARGET_DIR}/lib/cmake/FEBio
9+
cp $FEBIO_REPO/FEBioConfig.cmake ${TARGET_DIR}/lib/cmake/FEBio
10+
711
sdkDirs=(
812
FECore
913
FEBioMech

ci/Windows/create-sdk.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ mkdir -p ${TARGET_DIR}/{include,lib,bin}
66
mkdir ${TARGET_DIR}/lib/{Release,Debug}
77
mkdir ${TARGET_DIR}/bin/Debug
88

9+
# Copy in FEBioConfig.cmake
10+
mkdir -p ${TARGET_DIR}/lib/cmake/FEBio
11+
cp $FEBIO_REPO/FEBioConfig.cmake ${TARGET_DIR}/lib/cmake/FEBio
12+
913
sdkDirs=(
1014
FECore
1115
FEBioMech

ci/macOS/create-sdk.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ TARGET_DIR="${TARGET_DIR:-febio4-sdk}"
44
FEBIO_REPO="${FEBIO_REPO:-.}"
55
mkdir -p ${TARGET_DIR}/{include,lib}
66

7+
# Copy in FEBioConfig.cmake
8+
mkdir -p ${TARGET_DIR}/lib/cmake/FEBio
9+
cp $FEBIO_REPO/FEBioConfig.cmake ${TARGET_DIR}/lib/cmake/FEBio
10+
711
sdkDirs=(
812
FECore
913
FEBioMech

0 commit comments

Comments
 (0)