diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a1560b8..f45df8e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ set(BFDEV_HEADER_PATH ${PROJECT_SOURCE_DIR}/include) set(BFDEV_SOURCE_PATH ${PROJECT_SOURCE_DIR}/src) set(BFDEV_DOCUMENT_PATH ${PROJECT_SOURCE_DIR}/docs) set(BFDEV_GENERATED_PATH ${PROJECT_BINARY_DIR}/generated) +set(BFDEV_EXPORT_PATH ${PROJECT_BINARY_DIR}/export) set(BFDEV_ARCH_PATH ${PROJECT_SOURCE_DIR}/arch/${BFDEV_ARCH}) set(BFDEV_ARCH_HEADER_PATH ${BFDEV_ARCH_PATH}/include) @@ -86,9 +87,30 @@ packed_header( ${BFDEV_HEADER_PATH}/bfdev ) +add_custom_target( + bfdev_export + COMMAND ${CMAKE_COMMAND} -E make_directory + ${BFDEV_EXPORT_PATH} + ${BFDEV_EXPORT_PATH}/bfdev + COMMAND ${CMAKE_COMMAND} -E copy + ${BFDEV_GENERATED_PATH}/bfdev.h + ${BFDEV_EXPORT_PATH} + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${BFDEV_HEADER_PATH}/bfdev + ${BFDEV_ARCH_HEADER_PATH}/bfdev + ${BFDEV_GENERATED_PATH}/bfdev + ${BFDEV_EXPORT_PATH}/bfdev +) + +set_property( + GLOBAL PROPERTY + "BFDEV_INCLUDE_DIRS" + ${BFDEV_EXPORT_PATH} +) + macro(bfdev_dependencies target) add_dependencies( - ${target} + bfdev_export gen-crc8 gen-crc16 gen-crc16be @@ -97,6 +119,11 @@ macro(bfdev_dependencies target) gen-crc64 gen-crc64be ) + + add_dependencies( + ${target} + bfdev_export + ) endmacro() add_library(bfdev_object OBJECT ${BFDEV_LIBRARY}) @@ -141,14 +168,12 @@ if(${CMAKE_PROJECT_NAME} STREQUAL "bfdev") ) install(FILES - ${BFDEV_GENERATED_PATH}/bfdev.h + ${BFDEV_EXPORT_PATH}/bfdev.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install(DIRECTORY - ${BFDEV_HEADER_PATH}/bfdev - ${BFDEV_GENERATED_PATH}/bfdev - ${BFDEV_ARCH_HEADER_PATH}/bfdev + ${BFDEV_EXPORT_PATH}/bfdev DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) diff --git a/bfdev.cmake b/bfdev.cmake new file mode 100644 index 00000000..fe590f99 --- /dev/null +++ b/bfdev.cmake @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright(c) 2025 John Sanpe +# + +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) +add_subdirectory(${CMAKE_CURRENT_LIST_DIR}) + +get_property(BFDEV_INCLUDE_DIRS GLOBAL PROPERTY "BFDEV_INCLUDE_DIRS") +include_directories(${BFDEV_INCLUDE_DIRS}) diff --git a/build.cmake b/build.cmake index 71447a6e..4237fccd 100644 --- a/build.cmake +++ b/build.cmake @@ -62,12 +62,6 @@ set(BFDEV_INCLUDE_DIRS ${BFDEV_ARCH_HEADER_PATH} ) -set_property( - GLOBAL PROPERTY - "BFDEV_INCLUDE_DIRS" - ${BFDEV_INCLUDE_DIRS} -) - include_directories(${BFDEV_INCLUDE_DIRS}) include(${BFDEV_ARCH_PATH}/build.cmake) include(${BFDEV_SOURCE_PATH}/build.cmake) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 62f936d3..efe2f785 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -21,9 +21,8 @@ host_target(gen-crc64be gen-crc64be.c) macro(generate_crctbl proc path name table rows poly trans) add_custom_command( - TARGET ${proc} - POST_BUILD COMMAND - bash -c \" + TARGET ${proc} POST_BUILD + COMMAND bash -c \" mkdir -p ${BFDEV_GENERATED_PATH}/bfdev/crypto && ${PROJECT_BINARY_DIR}/scripts/${proc} ${name} ${table} ${rows} ${poly} ${trans} >