file(GLOB_RECURSE RAPIDJSON_SOURCES "${CMAKE_CURRENT_LIST_DIR}/rapidjson/include/*")
add_library(rapidjson INTERFACE EXCLUDE_FROM_ALL "${RAPIDJSON_SOURCES}")
target_include_directories(rapidjson INTERFACE "${CMAKE_CURRENT_LIST_DIR}/rapidjson/include")

set(LIBBACKTRACE_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/libbacktrace")
set(LIBBACKTRACE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/libbacktrace")
set(LIBBACKTRACE_INCLUDE_DIR "${LIBBACKTRACE_BUILD_DIR}/include")
set(LIBBACKTRACE_LIBRARY "${LIBBACKTRACE_BUILD_DIR}/.libs/libbacktrace.a")

add_custom_command(
	OUTPUT "${LIBBACKTRACE_LIBRARY}"
	COMMAND mkdir -p "${LIBBACKTRACE_BUILD_DIR}"
	COMMAND mkdir -p "${LIBBACKTRACE_INCLUDE_DIR}"
	COMMAND cp -r "${LIBBACKTRACE_SOURCE_DIR}/*" "${LIBBACKTRACE_BUILD_DIR}"
	COMMAND cp "${LIBBACKTRACE_SOURCE_DIR}/backtrace.h" "${LIBBACKTRACE_INCLUDE_DIR}"
	COMMAND cd "${LIBBACKTRACE_BUILD_DIR}" && ./configure
	COMMAND cd "${LIBBACKTRACE_BUILD_DIR}" && make
)

add_library(libbacktrace STATIC IMPORTED GLOBAL)
set_target_properties(libbacktrace PROPERTIES
	IMPORTED_LOCATION "${LIBBACKTRACE_LIBRARY}"
)
target_include_directories(libbacktrace INTERFACE "${LIBBACKTRACE_INCLUDE_DIR}")
