mirror of
https://github.com/SimoneN64/Kaizen.git
synced 2025-04-02 10:41:53 -04:00
94 lines
3.2 KiB
CMake
94 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
|
|
# Enable DOWNLOAD_EXTRACT_TIMESTAMP
|
|
if(POLICY CMP0135)
|
|
cmake_policy(SET CMP0135 NEW)
|
|
endif()
|
|
|
|
include(ExternalProject)
|
|
find_library(libyaml
|
|
NAMES libyaml yaml
|
|
REQUIRED)
|
|
set(CMOCKA_LIB_FILE "${CMAKE_CURRENT_BINARY_DIR}/extern/src/cmocka_ext-build/src/libcmocka.a")
|
|
|
|
ExternalProject_Add(cmocka_ext
|
|
PREFIX extern
|
|
URL "https://cmocka.org/files/1.1/cmocka-1.1.7.tar.xz"
|
|
URL_HASH SHA256=810570eb0b8d64804331f82b29ff47c790ce9cd6b163e98d47a4807047ecad82
|
|
CONFIGURE_COMMAND cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ../cmocka_ext/
|
|
BUILD_COMMAND cmake --build . --config Release
|
|
BUILD_BYPRODUCTS "${CMOCKA_LIB_FILE}"
|
|
INSTALL_COMMAND ""
|
|
)
|
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
set(LIBCYAML_VARIANT "debug")
|
|
else()
|
|
set(LIBCYAML_VARIANT "release")
|
|
endif()
|
|
|
|
set(LIBCYAML_LIB_FILE "${CMAKE_CURRENT_BINARY_DIR}/extern/src/libcyaml_ext/build/${LIBCYAML_VARIANT}/libcyaml.a")
|
|
ExternalProject_Add(libcyaml_ext
|
|
PREFIX extern
|
|
URL "https://github.com/tlsa/libcyaml/archive/refs/tags/v1.4.2.tar.gz"
|
|
URL_HASH SHA256=3211b2a0589ebfe02c563c96adce9246c0787be2af30353becbbd362998d16dc
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND make VARIANT=${LIBCYAML_VARIANT} PKG_CONFIG=pkg-config
|
|
BUILD_BYPRODUCTS "${LIBCYAML_LIB_FILE}"
|
|
BUILD_IN_SOURCE true
|
|
INSTALL_COMMAND ""
|
|
)
|
|
set(CMOCKA_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/extern/src/cmocka_ext/include)
|
|
set(LIBCYAML_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/extern/src/libcyaml_ext/include)
|
|
add_library(cmocka STATIC IMPORTED)
|
|
add_library(libcyaml STATIC IMPORTED)
|
|
set_target_properties(cmocka PROPERTIES IMPORTED_LOCATION "${CMOCKA_LIB_FILE}")
|
|
set_target_properties(libcyaml PROPERTIES IMPORTED_LOCATION "${LIBCYAML_LIB_FILE}")
|
|
|
|
set(CSTEST_INCLUDE_DIR ${CSTEST_DIR}/include)
|
|
file(GLOB CSTEST_SRC ${CSTEST_DIR}/src/*.c)
|
|
add_executable(cstest ${CSTEST_SRC})
|
|
add_library(libcstest STATIC ${CSTEST_SRC})
|
|
add_dependencies(cstest cmocka_ext)
|
|
add_dependencies(cstest libcyaml_ext)
|
|
target_link_libraries(cstest PUBLIC capstone cmocka libcyaml ${libyaml})
|
|
target_link_libraries(libcstest PUBLIC capstone cmocka libcyaml ${libyaml})
|
|
target_include_directories(cstest PRIVATE
|
|
${PROJECT_SOURCE_DIR}/include>
|
|
${CSTEST_INCLUDE_DIR}
|
|
${CMOCKA_INCLUDE_DIR}
|
|
${LIBCYAML_INCLUDE_DIR}
|
|
)
|
|
target_include_directories(libcstest PRIVATE
|
|
${PROJECT_SOURCE_DIR}/include>
|
|
${CSTEST_INCLUDE_DIR}
|
|
${CMOCKA_INCLUDE_DIR}
|
|
${LIBCYAML_INCLUDE_DIR}
|
|
)
|
|
|
|
# Unit tests for cstest
|
|
set(CSTEST_TEST_DIR ${CSTEST_DIR}/test/)
|
|
add_subdirectory(${CSTEST_TEST_DIR})
|
|
|
|
# Test targets
|
|
add_test(MCTests
|
|
cstest ${PROJECT_SOURCE_DIR}/tests/MC
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
)
|
|
add_test(DetailTests
|
|
cstest ${PROJECT_SOURCE_DIR}/tests/details
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
)
|
|
add_test(IssueTests
|
|
cstest ${PROJECT_SOURCE_DIR}/tests/issues
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
)
|
|
add_test(FeaturesTests
|
|
cstest ${PROJECT_SOURCE_DIR}/tests/features
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
)
|
|
|
|
|
|
if(CAPSTONE_INSTALL)
|
|
install(TARGETS cstest EXPORT capstone-targets DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
endif()
|