Files
c_cpp_boilerplate/cmake/FetchLibUnwind.cmake
2024-03-28 11:12:15 -03:00

42 lines
1.9 KiB
CMake

include(ExternalProject)
include(FindAutotools)
set(EXTERNAL_DEP_NAME "libunwind")
ExternalProject_Add(
${EXTERNAL_DEP_NAME}
GIT_REPOSITORY https://github.com/libunwind/libunwind.git
GIT_TAG v1.8.0
GIT_SHALLOW True
UPDATE_DISCONNECTED true
CONFIGURE_HANDLED_BY_BUILD true
BUILD_BYPRODUCTS ${EXTERNAL_DEP_NAME}
PREFIX ${CMAKE_BINARY_DIR}/_deps/
SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-build"
TMP_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-subbuild/tmp"
STAMP_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-subbuild/stamp"
DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-subbuild/download"
INSTALL_DIR "${CMAKE_BINARY_DIR}/_deps/${EXTERNAL_DEP_NAME}-bin"
BUILD_ALWAYS OFF
CONFIGURE_COMMAND autoreconf -i <SOURCE_DIR> && <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
BUILD_COMMAND make -j -C <BINARY_DIR>
INSTALL_COMMAND make install -C <BINARY_DIR>
# TEST_COMMAND make check -C <BINARY_DIR>
)
find_package(LibLZMA REQUIRED)
ExternalProject_Get_Property(${EXTERNAL_DEP_NAME} INSTALL_DIR)
# Hack to make CMake stop whining about folder not existent
file(MAKE_DIRECTORY ${INSTALL_DIR}/include/)
add_library(${EXTERNAL_DEP_NAME}::static INTERFACE IMPORTED GLOBAL)
target_include_directories(${EXTERNAL_DEP_NAME}::static INTERFACE ${INSTALL_DIR}/include/)
target_link_libraries(${EXTERNAL_DEP_NAME}::static INTERFACE ${INSTALL_DIR}/lib/libunwind.a LibLZMA::LibLZMA)
add_dependencies(${EXTERNAL_DEP_NAME}::static ${EXTERNAL_DEP_NAME})
add_library(${EXTERNAL_DEP_NAME}::dynamic INTERFACE IMPORTED GLOBAL)
target_include_directories(${EXTERNAL_DEP_NAME}::dynamic INTERFACE ${INSTALL_DIR}/include/)
target_link_libraries(${EXTERNAL_DEP_NAME}::dynamic INTERFACE ${INSTALL_DIR}/lib/libunwind.so LibLZMA::LibLZMA)
add_dependencies(${EXTERNAL_DEP_NAME}::dynamic ${EXTERNAL_DEP_NAME})