cmake: add support for building services with config files
This commit is contained in:
@@ -9,6 +9,36 @@ function(bsp_reset)
|
||||
COMMAND_ERROR_IS_FATAL ANY)
|
||||
endfunction(bsp_reset)
|
||||
|
||||
function(bsp_add_file)
|
||||
set(options)
|
||||
set(one_value_args ID SRC_PATH DEST_DIR)
|
||||
set(multi_value_args)
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}")
|
||||
|
||||
set(target_name ${arg_ID})
|
||||
set(bsp_target_name _bsp-${target_name})
|
||||
|
||||
get_property(bsp_targets GLOBAL PROPERTY bsp_target_list)
|
||||
list(LENGTH bsp_targets nr_bsp_targets)
|
||||
if (${nr_bsp_targets} GREATER 0)
|
||||
math(EXPR serialiser_index "${nr_bsp_targets}-1")
|
||||
list(GET bsp_targets ${serialiser_index} serialiser)
|
||||
endif ()
|
||||
|
||||
add_custom_target(${bsp_target_name}
|
||||
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
|
||||
add-binary ${bsp_manifest} ${target_name}
|
||||
${arg_DEST_DIR} ${arg_SRC_PATH}
|
||||
COMMENT "Preparing bsp component: ${target_name}"
|
||||
DEPENDS ${arg_SRC_PATH} ${serialiser})
|
||||
|
||||
set_property(GLOBAL PROPERTY bsp_target_list ${bsp_targets} ${bsp_target_name})
|
||||
endfunction(bsp_add_file)
|
||||
|
||||
function(bsp_add_library)
|
||||
set(options)
|
||||
set(one_value_args NAME HEADER_DIR LIB_DIR)
|
||||
@@ -70,6 +100,40 @@ function(bsp_add_program)
|
||||
set_property(GLOBAL PROPERTY bsp_target_list ${bsp_targets} ${bsp_target_name})
|
||||
endfunction(bsp_add_program)
|
||||
|
||||
function(bsp_add_service)
|
||||
set(options)
|
||||
set(one_value_args NAME BIN_DIR SVC_DIR)
|
||||
set(multi_value_args)
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}")
|
||||
|
||||
set(target_name ${arg_NAME})
|
||||
set(bsp_target_name _bsp-${target_name})
|
||||
|
||||
get_property(bsp_targets GLOBAL PROPERTY bsp_target_list)
|
||||
get_property(cfg_file TARGET ${arg_NAME} PROPERTY service_cfg_path)
|
||||
list(LENGTH bsp_targets nr_bsp_targets)
|
||||
if (${nr_bsp_targets} GREATER 0)
|
||||
math(EXPR serialiser_index "${nr_bsp_targets}-1")
|
||||
list(GET bsp_targets ${serialiser_index} serialiser)
|
||||
endif ()
|
||||
|
||||
add_custom_target(${bsp_target_name}
|
||||
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
|
||||
add-binary ${bsp_manifest} ${target_name}
|
||||
${arg_BIN_DIR} $<TARGET_FILE:${target_name}>
|
||||
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
|
||||
add-binary ${bsp_manifest} ${target_name}-cfg
|
||||
${arg_SVC_DIR} ${cfg_file}
|
||||
COMMENT "Preparing bsp component: ${target_name}"
|
||||
DEPENDS ${target_name} ${serialiser})
|
||||
|
||||
set_property(GLOBAL PROPERTY bsp_target_list ${bsp_targets} ${bsp_target_name})
|
||||
endfunction(bsp_add_service)
|
||||
|
||||
function(bsp_finalise)
|
||||
set(options)
|
||||
set(one_value_args BOOTSTRAP_PROGRAM DEST_DIR BSP_NAME)
|
||||
|
||||
@@ -155,6 +155,40 @@ function(sysroot_add_program)
|
||||
set_property(GLOBAL PROPERTY sysroot_target_list ${sysroot_targets} ${sysroot_target_name})
|
||||
endfunction(sysroot_add_program)
|
||||
|
||||
function(sysroot_add_service)
|
||||
set(options)
|
||||
set(one_value_args NAME BIN_DIR SVC_DIR)
|
||||
set(multi_value_args)
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}")
|
||||
|
||||
set(target_name ${arg_NAME})
|
||||
set(sysroot_target_name _sysroot-${target_name})
|
||||
|
||||
get_property(sysroot_targets GLOBAL PROPERTY sysroot_target_list)
|
||||
get_property(cfg_file TARGET ${arg_NAME} PROPERTY service_cfg_path)
|
||||
list(LENGTH sysroot_targets nr_sysroot_targets)
|
||||
if (${nr_sysroot_targets} GREATER 0)
|
||||
math(EXPR serialiser_index "${nr_sysroot_targets}-1")
|
||||
list(GET sysroot_targets ${serialiser_index} serialiser)
|
||||
endif ()
|
||||
|
||||
add_custom_target(${sysroot_target_name}
|
||||
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||
add-binary ${sysroot_manifest} ${target_name}
|
||||
${arg_BIN_DIR} $<TARGET_FILE:${target_name}>
|
||||
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||
add-binary ${sysroot_manifest} ${target_name}-cfg
|
||||
${arg_SVC_DIR} ${cfg_file}
|
||||
COMMENT "Preparing sysroot component: ${target_name}"
|
||||
DEPENDS ${target_name} ${serialiser})
|
||||
|
||||
set_property(GLOBAL PROPERTY sysroot_target_list ${sysroot_targets} ${sysroot_target_name})
|
||||
endfunction(sysroot_add_service)
|
||||
|
||||
function(sysroot_add_file)
|
||||
set(options)
|
||||
set(one_value_args ID SRC_PATH DEST_DIR)
|
||||
|
||||
@@ -32,6 +32,29 @@ function(rosetta_add_executable)
|
||||
DESTINATION ${arg_SYSROOT_PATH})
|
||||
endfunction(rosetta_add_executable)
|
||||
|
||||
function(rosetta_add_service)
|
||||
set(options)
|
||||
set(one_value_args NAME CFG_FILE)
|
||||
set(multi_value_args SOURCES)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||
"${options}"
|
||||
"${one_value_args}"
|
||||
"${multi_value_args}")
|
||||
|
||||
set(exec_name ${arg_NAME})
|
||||
get_property(programs GLOBAL PROPERTY rosetta_program_list)
|
||||
set_property(GLOBAL PROPERTY rosetta_program_list ${programs} ${exec_name})
|
||||
|
||||
message(STATUS "Building service ${exec_name}")
|
||||
add_executable(${exec_name} ${arg_SOURCES})
|
||||
|
||||
set_target_properties(${exec_name} PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
service_cfg_path ${arg_CFG_FILE})
|
||||
install(TARGETS ${exec_name}
|
||||
DESTINATION ${arg_SYSROOT_PATH})
|
||||
endfunction(rosetta_add_service)
|
||||
|
||||
function(rosetta_add_library)
|
||||
set(options STATIC SHARED)
|
||||
set(one_value_args NAME)
|
||||
|
||||
Reference in New Issue
Block a user