-
Notifications
You must be signed in to change notification settings - Fork 132
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add in FindTinyXML2 for systems that don't have it.
Signed-off-by: Chris Lalancette <[email protected]>
- Loading branch information
1 parent
f2a2ce5
commit 2383a0a
Showing
3 changed files
with
82 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
--- | ||
name: urdfdom ROS2 CI | ||
name: urdfdom ROS 2 CI | ||
|
||
on: | ||
push: | ||
|
@@ -8,7 +8,7 @@ on: | |
jobs: | ||
|
||
build_ros2: | ||
name: ROS2 CI | ||
name: ROS 2 CI | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: ros-tooling/[email protected] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# TinyXML2_FOUND | ||
# TinyXML2_INCLUDE_DIRS | ||
# TinyXML2_LIBRARIES | ||
|
||
# try to find the CMake config file for TinyXML2 first | ||
if(NOT TinyXML2_FOUND) | ||
find_package(TinyXML2 CONFIG QUIET) | ||
endif() | ||
if(TinyXML2_FOUND) | ||
message(STATUS "Found TinyXML2 via Config file: ${TinyXML2_DIR}") | ||
if(NOT TINYXML2_LIBRARY) | ||
# in this case, we're probably using TinyXML2 version 5.0.0 or greater | ||
# in which case tinyxml2 is an exported target and we should use that | ||
if(TARGET tinyxml2) | ||
set(TINYXML2_LIBRARY tinyxml2) | ||
elseif(TARGET tinyxml2::tinyxml2) | ||
set(TINYXML2_LIBRARY tinyxml2::tinyxml2) | ||
elseif(TinyXML2_FIND_REQUIRED) | ||
message(FATAL_ERROR "Unable to determine target for TinyXML2") | ||
endif() | ||
list(APPEND TinyXML2_TARGETS ${TINYXML2_LIBRARY}) | ||
else() | ||
# Only perform that logic once | ||
if(NOT TARGET tinyxml2::tinyxml2) | ||
# TINYXML2_LIBRARY is composed of debug;<path\to\debug.lib>;optimized;<path\to\release.lib> | ||
# we have to extract the appropriate component based on the current configuration. | ||
list(LENGTH TINYXML2_LIBRARY TINYXML_LIBRARY_LIST_LENGTH) | ||
if(NOT ${TINYXML_LIBRARY_LIST_LENGTH} EQUAL 4) | ||
message(FATAL_ERROR "Unable to extract the library file path from ${TINYXML2_LIBRARY}") | ||
endif() | ||
if(CMAKE_BUILD_TYPE MATCHES DEBUG) | ||
list(GET TINYXML2_LIBRARY 0 ASSERT_DEBUG) | ||
if(NOT ${ASSERT_DEBUG} STREQUAL "debug") | ||
message(FATAL_ERROR "could not parse debug library path from ${TINYXML2_LIBRARY}") | ||
endif() | ||
list(GET TINYXML2_LIBRARY 1 TINYXML2_LIBRARY_PATH) | ||
else() | ||
list(GET TINYXML2_LIBRARY 2 ASSERT_OPTIMIZED) | ||
if(NOT ${ASSERT_OPTIMIZED} STREQUAL "optimized") | ||
message(FATAL_ERROR "could not parse library path from ${TINYXML2_LIBRARY}") | ||
endif() | ||
list(GET TINYXML2_LIBRARY 3 TINYXML2_LIBRARY_PATH) | ||
endif() | ||
if(NOT EXISTS ${TINYXML2_LIBRARY_PATH}) | ||
message(FATAL_ERROR "library file path ${TINYXML2_LIBRARY_PATH} does not exist") | ||
endif() | ||
|
||
add_library(tinyxml2::tinyxml2 UNKNOWN IMPORTED) | ||
set_property(TARGET tinyxml2::tinyxml2 PROPERTY IMPORTED_LOCATION ${TINYXML2_LIBRARY_PATH}) | ||
set_property(TARGET tinyxml2::tinyxml2 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${TINYXML2_INCLUDE_DIR}) | ||
list(APPEND TinyXML2_TARGETS tinyxml2::tinyxml2) | ||
endif() | ||
endif() | ||
else() | ||
find_path(TINYXML2_INCLUDE_DIR NAMES tinyxml2.h) | ||
|
||
find_library(TINYXML2_LIBRARY tinyxml2) | ||
|
||
include(FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args(TinyXML2 DEFAULT_MSG TINYXML2_LIBRARY TINYXML2_INCLUDE_DIR) | ||
|
||
mark_as_advanced(TINYXML2_INCLUDE_DIR TINYXML2_LIBRARY) | ||
|
||
if(NOT TARGET tinyxml2::tinyxml2) | ||
add_library(tinyxml2::tinyxml2 UNKNOWN IMPORTED) | ||
set_property(TARGET tinyxml2::tinyxml2 PROPERTY IMPORTED_LOCATION ${TINYXML2_LIBRARY}) | ||
set_property(TARGET tinyxml2::tinyxml2 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${TINYXML2_INCLUDE_DIR}) | ||
list(APPEND TinyXML2_TARGETS tinyxml2::tinyxml2) | ||
endif() | ||
endif() | ||
|
||
# Set mixed case INCLUDE_DIRS and LIBRARY variables from upper case ones. | ||
if(NOT TinyXML2_INCLUDE_DIRS) | ||
set(TinyXML2_INCLUDE_DIRS ${TINYXML2_INCLUDE_DIR}) | ||
endif() | ||
if(NOT TinyXML2_LIBRARIES) | ||
set(TinyXML2_LIBRARIES ${TINYXML2_LIBRARY}) | ||
endif() |