summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorGereon Kremer <gereon.kremer@cs.rwth-aachen.de>2021-03-31 21:16:05 +0200
committerGitHub <noreply@github.com>2021-03-31 19:16:05 +0000
commitb7210ed60d517aebb25c23a2f407ee59562587dd (patch)
tree082a225b399f5db85d3cda3dfe0c410090244433 /cmake
parenta779d33c559e5e494e71ca1a0c744d0275b31b5c (diff)
Refactor SymFPU dependency (#6218)
This PR refactors the contrib script to download SymFPU to a cmake external project.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindSymFPU.cmake47
1 files changed, 43 insertions, 4 deletions
diff --git a/cmake/FindSymFPU.cmake b/cmake/FindSymFPU.cmake
index 47a047ce0..da8beac99 100644
--- a/cmake/FindSymFPU.cmake
+++ b/cmake/FindSymFPU.cmake
@@ -9,12 +9,51 @@
## directory for licensing information.
##
# Find SymFPU
-# SymFPU_FOUND - system has SymFPU lib
-# SymFPU_INCLUDE_DIR - the SymFPU include directory
+# SymFPU_FOUND - should always be true
+# SymFPU - interface target for the SymFPU headers
find_path(SymFPU_INCLUDE_DIR NAMES symfpu/core/unpackedFloat.h)
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(SymFPU DEFAULT_MSG SymFPU_INCLUDE_DIR)
+if(SymFPU_INCLUDE_DIR)
+ # Found SymFPU to be installed system-wide
+ set(SymFPU_FOUND_SYSTEM TRUE)
+else()
+ set(SymFPU_FOUND_SYSTEM FALSE)
+ include(ExternalProject)
+ include(deps-helper)
+ set(SymFPU_COMMIT "8fbe139bf0071cbe0758d2f6690a546c69ff0053")
+
+ ExternalProject_Add(
+ SymFPU-EP
+ PREFIX ${DEPS_PREFIX}
+ URL https://github.com/martin-cs/symfpu/archive/${SymFPU_COMMIT}.tar.gz
+ URL_HASH SHA1=9e00045130b93e3c2a46ce73a1b5b6451340dc46
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/core
+ <INSTALL_DIR>/include/symfpu/core
+ COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/utils
+ <INSTALL_DIR>/include/symfpu/utils
+ )
+
+ set(SymFPU_INCLUDE_DIR "${DEPS_BASE}/include/")
+endif()
+
+set(SymFPU_FOUND TRUE)
+
+add_library(SymFPU INTERFACE IMPORTED GLOBAL)
+set_target_properties(
+ SymFPU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SymFPU_INCLUDE_DIR}"
+)
+
+mark_as_advanced(SymFPU_FOUND)
+mark_as_advanced(SymFPU_FOUND_SYSTEM)
mark_as_advanced(SymFPU_INCLUDE_DIR)
+
+if(SymFPU_FOUND_SYSTEM)
+ message(STATUS "Found SymFPU: ${SymFPU_INCLUDE_DIR}")
+else()
+ message(STATUS "Building SymFPU: ${SymFPU_INCLUDE_DIR}")
+ add_dependencies(SymFPU SymFPU-EP)
+endif()
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback