42 lines
1.9 KiB
CMake
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})
|