Improve building libbacktrace
This commit is contained in:
parent
850e376e62
commit
7889a699e7
1 changed files with 42 additions and 21 deletions
63
3rdparty/CMakeLists.txt
vendored
63
3rdparty/CMakeLists.txt
vendored
|
|
@ -7,30 +7,51 @@ if(PSEMEK_STACKTRACE)
|
||||||
set(LIBBACKTRACE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/libbacktrace")
|
set(LIBBACKTRACE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/libbacktrace")
|
||||||
set(LIBBACKTRACE_INCLUDE_DIR "${LIBBACKTRACE_BUILD_DIR}/include")
|
set(LIBBACKTRACE_INCLUDE_DIR "${LIBBACKTRACE_BUILD_DIR}/include")
|
||||||
set(LIBBACKTRACE_LIBRARY "${LIBBACKTRACE_BUILD_DIR}/.libs/libbacktrace.a")
|
set(LIBBACKTRACE_LIBRARY "${LIBBACKTRACE_BUILD_DIR}/.libs/libbacktrace.a")
|
||||||
|
set(LIBBACKTRACE_CONFIGURED_STAMP "${LIBBACKTRACE_BUILD_DIR}/.configure-success-stamp")
|
||||||
|
|
||||||
if(NOT EXISTS "${LIBBACKTRACE_BUILD_DIR}")
|
if(PSEMEK_PACKAGE_TARGET AND WIN32)
|
||||||
file(COPY "${LIBBACKTRACE_SOURCE_DIR}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
set(LIBBACKTRACE_CONFIGURE_ARGS "--host=x86_64-w64-mingw32" "CC=${CMAKE_C_COMPILER}")
|
||||||
make_directory("${LIBBACKTRACE_INCLUDE_DIR}")
|
elseif(PSEMEK_PACKAGE_TARGET AND ANDROID)
|
||||||
file(COPY "${LIBBACKTRACE_SOURCE_DIR}/backtrace.h" DESTINATION "${LIBBACKTRACE_INCLUDE_DIR}")
|
set(LIBBACKTRACE_CONFIGURE_ARGS "--host=aarch64-none-linux-android34" "CC=${CMAKE_C_COMPILER}" "CFLAGS=--target=aarch64-none-linux-android34")
|
||||||
if(PSEMEK_PACKAGE_TARGET AND WIN32)
|
elseif(APPLE)
|
||||||
execute_process(COMMAND "./configure" "--host=x86_64-w64-mingw32" "CC=${CMAKE_C_COMPILER}" WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}" COMMAND_ECHO STDOUT)
|
set(LIBBACKTRACE_CONFIGURE_ARGS "CC=${CMAKE_C_COMPILER} -isysroot ${CMAKE_OSX_SYSROOT}")
|
||||||
elseif(PSEMEK_PACKAGE_TARGET AND ANDROID)
|
elseif(UNIX)
|
||||||
execute_process(COMMAND "./configure" "--host=aarch64-none-linux-android34" "CC=${CMAKE_C_COMPILER}" "CFLAGS=--target=aarch64-none-linux-android34" WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}" COMMAND_ECHO STDOUT)
|
set(LIBBACKTRACE_CONFIGURE_ARGS "CC=${CMAKE_C_COMPILER}")
|
||||||
elseif(APPLE)
|
else()
|
||||||
execute_process(COMMAND "./configure" "CC=${CMAKE_C_COMPILER} -isysroot ${CMAKE_OSX_SYSROOT}" WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}" COMMAND_ECHO STDOUT)
|
message(FATAL_ERROR "Unknown platform")
|
||||||
elseif(UNIX)
|
|
||||||
execute_process(COMMAND "./configure" "CC=${CMAKE_C_COMPILER}" WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}" COMMAND_ECHO STDOUT)
|
|
||||||
else()
|
|
||||||
message(FATAL "Unknown platform")
|
|
||||||
endif()
|
|
||||||
execute_process(COMMAND "make" WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}" RESULT_VARIABLE LIBBACKTRACE_BUILD_RESULT COMMAND_ECHO STDOUT)
|
|
||||||
if(NOT (${LIBBACKTRACE_BUILD_RESULT} EQUAL 0))
|
|
||||||
message(FATAL_ERROR "libbacktrace build failed")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(libbacktrace INTERFACE)
|
if(NOT EXISTS "${LIBBACKTRACE_CONFIGURED_STAMP}")
|
||||||
|
file(REMOVE_RECURSE "${LIBBACKTRACE_BUILD_DIR}")
|
||||||
|
file(COPY "${LIBBACKTRACE_SOURCE_DIR}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ./configure ${LIBBACKTRACE_CONFIGURE_ARGS}
|
||||||
|
WORKING_DIRECTORY "${LIBBACKTRACE_BUILD_DIR}"
|
||||||
|
RESULT_VARIABLE LIBBACKTRACE_CONFIGURE_RESULT
|
||||||
|
COMMAND_ECHO STDOUT
|
||||||
|
)
|
||||||
|
if(NOT LIBBACKTRACE_CONFIGURE_RESULT EQUAL 0)
|
||||||
|
message(FATAL_ERROR "libbacktrace configure failed")
|
||||||
|
endif()
|
||||||
|
file(WRITE "${LIBBACKTRACE_CONFIGURED_STAMP}" "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(libbacktrace-external
|
||||||
|
SOURCE_DIR "${LIBBACKTRACE_BUILD_DIR}"
|
||||||
|
BUILD_IN_SOURCE 1
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND make
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS "${LIBBACKTRACE_LIBRARY}"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(libbacktrace STATIC IMPORTED GLOBAL)
|
||||||
|
set_target_properties(libbacktrace PROPERTIES IMPORTED_LOCATION "${LIBBACKTRACE_LIBRARY}")
|
||||||
|
file(MAKE_DIRECTORY "${LIBBACKTRACE_INCLUDE_DIR}")
|
||||||
|
file(COPY "${LIBBACKTRACE_SOURCE_DIR}/backtrace.h" DESTINATION "${LIBBACKTRACE_INCLUDE_DIR}")
|
||||||
target_include_directories(libbacktrace INTERFACE "${LIBBACKTRACE_INCLUDE_DIR}")
|
target_include_directories(libbacktrace INTERFACE "${LIBBACKTRACE_INCLUDE_DIR}")
|
||||||
target_link_libraries(libbacktrace INTERFACE "${LIBBACKTRACE_LIBRARY}")
|
add_dependencies(libbacktrace libbacktrace-external)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue