Skip to content

Commit e9bd18f

Browse files
committed
Don't search default directories. Use absolute paths to specify libraries.
1 parent a262533 commit e9bd18f

File tree

1 file changed

+50
-32
lines changed

1 file changed

+50
-32
lines changed

cmake/CMakeLists.txt

Lines changed: 50 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -142,22 +142,18 @@ ELSE()
142142
MESSAGE(STATUS "Looking for opencascade include files in: ${OCC_INCLUDE_DIR}")
143143
ENDIF()
144144

145-
FIND_FILE(gp_Pnt_hxx "gp_Pnt.hxx" ${OCC_INCLUDE_DIR} /usr/inc /usr/local/inc /usr/local/include/oce)
145+
FIND_FILE(gp_Pnt_hxx "gp_Pnt.hxx" ${OCC_INCLUDE_DIR})
146146
IF(gp_Pnt_hxx)
147147
MESSAGE(STATUS "Header files found")
148148
ELSE()
149149
MESSAGE(FATAL_ERROR "Unable to find header files, aborting")
150150
ENDIF()
151151

152-
SET(OPENCASCADE_LIBRARIES
152+
SET(OPENCASCADE_LIBRARY_NAMES
153153
TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO
154154
TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset
155155
)
156156

157-
IF(MSVC)
158-
ADD_DEBUG_VARIANTS(OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES}" "d")
159-
ENDIF()
160-
161157
IF("${OCC_LIBRARY_DIR}" STREQUAL "")
162158
SET(OCC_LIBRARY_DIR "/usr/lib/" CACHE FILEPATH "Open CASCADE library files")
163159
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
@@ -167,41 +163,53 @@ ELSE()
167163
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
168164
ENDIF()
169165

170-
FIND_LIBRARY(libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
166+
FIND_LIBRARY(libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH)
171167
IF(libTKernel)
172168
MESSAGE(STATUS "Library files found")
173169
ELSE()
174170
MESSAGE(FATAL_ERROR "Unable to find library files, aborting")
175171
ENDIF()
176172

173+
# Use the found libTKernel as a template for all other OCC libraries
174+
foreach(lib ${OPENCASCADE_LIBRARY_NAMES})
175+
string(REPLACE TKernel "${lib}" lib_path "${libTKernel}")
176+
list(APPEND OPENCASCADE_LIBRARIES "${lib_path}")
177+
endforeach()
178+
179+
IF(MSVC)
180+
ADD_DEBUG_VARIANTS(OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES}" "d")
181+
ENDIF()
182+
177183
IF(UNICODE_SUPPORT)
178184
# Find ICU
179185
IF("${ICU_INCLUDE_DIR}" STREQUAL "")
180186
MESSAGE(STATUS "No ICU include directory specified")
181-
ElSE()
182-
SET(ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR}" CACHE FILEPATH "ICU header files")
183187
ENDIF()
184188

185189
IF("${ICU_LIBRARY_DIR}" STREQUAL "")
186190
MESSAGE(STATUS "No ICU library directory specified")
187-
ElSE()
188-
SET(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}" CACHE FILEPATH "ICU library files")
191+
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS ${ICU_LIBRARY_DIR})
192+
ELSE()
193+
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH)
189194
ENDIF()
190195

191-
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib ${ICU_LIBRARY_DIR})
192-
193196
IF(icu)
197+
GET_FILENAME_COMPONENT(ICU_LIBRARY_DIR ${icu} PATH)
198+
194199
ADD_DEFINITIONS(-DHAVE_ICU)
195200
MESSAGE(STATUS "ICU libraries found")
196201
# NOTE icudata appears to be icudt on Windows/MSVC and icudata on others
197202
# dl is included to resolve dlopen and friends symbols
198203
IF(WIN32)
199-
SET(ICU_LIBRARIES icuuc icudt)
204+
FIND_LIBRARY(icudt NAMES icudt PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH)
205+
SET(ICU_LIBRARIES ${icu} ${icudt})
200206
ADD_DEBUG_VARIANTS(ICU_LIBRARIES "${ICU_LIBRARIES}" "d")
201-
# TODO MinGW build would appear to be using dynamic ICU regardless of this definition.
202-
ADD_DEFINITIONS(-DU_STATIC_IMPLEMENTATION) # required for static ICU
207+
# TODO MinGW build would appear to be using dynamic ICU regardless of this definition.
208+
ADD_DEFINITIONS(-DU_STATIC_IMPLEMENTATION) # required for static ICU
203209
ELSE()
204-
SET(ICU_LIBRARIES icuuc icudata dl)
210+
FIND_LIBRARY(icudt NAMES icudata PATHS ${ICU_LIBRARY_DIR} NO_DEFAULT_PATH)
211+
FIND_LIBRARY(dl NAMES dl)
212+
SET(ICU_LIBRARIES ${icu} ${icudt} ${dl})
205213
ENDIF()
206214
ELSE()
207215
MESSAGE(FATAL_ERROR "UNICODE_SUPPORT enabled, but unable to find ICU. Disable UNICODE_SUPPORT or fix ICU paths to proceed.")
@@ -219,9 +227,13 @@ IF(COLLADA_SUPPORT)
219227

220228
IF("${OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
221229
MESSAGE(STATUS "No OpenCOLLADA library directory specified")
222-
FIND_LIBRARY(OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib)
230+
FIND_LIBRARY(OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework
231+
PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib)
223232
GET_FILENAME_COMPONENT(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_FRAMEWORK_LIB} PATH)
224233
ENDIF()
234+
235+
FIND_LIBRARY(OpenCOLLADAFramework NAMES OpenCOLLADAFramework PATHS ${OPENCOLLADA_LIBRARY_DIR} NO_DEFAULT_PATH)
236+
225237
SET(OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
226238

227239
SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter")
@@ -230,13 +242,29 @@ IF(COLLADA_SUPPORT)
230242
IF(COLLADASWStreamWriter_h)
231243
MESSAGE(STATUS "OpenCOLLADA header files found")
232244
ADD_DEFINITIONS(-DWITH_OPENCOLLADA)
233-
SET(OPENCOLLADA_LIBRARIES
245+
SET(OPENCOLLADA_LIBRARY_NAMES
234246
GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader
235-
OpenCOLLADAStreamWriter UTF buffer ftoa pcre
247+
OpenCOLLADAStreamWriter UTF buffer ftoa
236248
)
237-
IF(NOT "${PCRE_LIBRARY_DIR}" STREQUAL "")
249+
250+
# Use the found libTKernel as a template for all other OCC libraries
251+
foreach(lib ${OPENCOLLADA_LIBRARY_NAMES})
252+
string(REPLACE OpenCOLLADAFramework "${lib}" lib_path "${OpenCOLLADAFramework}")
253+
list(APPEND OPENCOLLADA_LIBRARIES "${lib_path}")
254+
endforeach()
255+
256+
IF("${PCRE_LIBRARY_DIR}" STREQUAL "")
257+
find_library(pcre_library NAMES pcre PATHS ${OPENCOLLADA_LIBRARY_DIR})
258+
GET_FILENAME_COMPONENT(PCRE_LIBRARY_DIR ${pcre_library} PATH)
259+
else()
260+
find_library(pcre_library NAMES pcre PATHS ${PCRE_LIBRARY_DIR} NO_DEFAULT_PATH)
261+
endif()
262+
263+
if (${pcre_library})
238264
SET(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_LIBRARY_DIR} ${PCRE_LIBRARY_DIR})
239-
ENDIF()
265+
list(APPEND OPENCOLLADA_LIBRARIES "${pcre_library}")
266+
endif()
267+
240268
IF(MSVC)
241269
ADD_DEBUG_VARIANTS(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES}" "d")
242270
ENDIF()
@@ -317,9 +345,6 @@ ENDIF()
317345
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
318346
${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}
319347
)
320-
if(NOT WIN32)
321-
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} /usr/inc /usr/local/inc /usr/local/include/oce)
322-
endif()
323348

324349
function(files_for_ifc_version IFC_VERSION RESULT_NAME)
325350
set(IFC_PARSE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/ifcparse)
@@ -403,13 +428,6 @@ if(NOT Boost_VERSION LESS 105800)
403428
add_definitions(-DBOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE)
404429
endif()
405430

406-
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DIR} ${OPENCOLLADA_LIBRARY_DIR}
407-
${ICU_LIBRARY_DIR} ${Boost_LIBRARY_DIRS}
408-
)
409-
if(NOT WIN32)
410-
LINK_DIRECTORIES(${LINK_DIRECTORIES} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
411-
endif()
412-
413431
if(BUILD_SHARED_LIBS)
414432
SET(IFCOPENSHELL_LIBRARIES IfcGeom)
415433
else()

0 commit comments

Comments
 (0)