diff options
author | Gereon Kremer <gereon.kremer@cs.rwth-aachen.de> | 2021-03-31 21:16:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-31 19:16:05 +0000 |
commit | b7210ed60d517aebb25c23a2f407ee59562587dd (patch) | |
tree | 082a225b399f5db85d3cda3dfe0c410090244433 /cmake | |
parent | a779d33c559e5e494e71ca1a0c744d0275b31b5c (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.cmake | 47 |
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() |