53 lines
1.5 KiB
CMake
53 lines
1.5 KiB
CMake
|
|
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_misc_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}")
|
||
|
|
|
||
|
|
message(STATUS "Building service ${arg_NAME}")
|
||
|
|
add_custom_target(${arg_NAME})
|
||
|
|
|
||
|
|
set_target_properties(${arg_NAME} PROPERTIES
|
||
|
|
service_cfg_path ${arg_CFG_FILE})
|
||
|
|
endfunction(rosetta_add_misc_service)
|
||
|
|
|
||
|
|
function(rosetta_service_add_file)
|
||
|
|
set(options)
|
||
|
|
set(one_value_args NAME SRC_FILE DEST_DIR)
|
||
|
|
set(multi_value_args)
|
||
|
|
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||
|
|
"${options}"
|
||
|
|
"${one_value_args}"
|
||
|
|
"${multi_value_args}")
|
||
|
|
|
||
|
|
get_property(file_list TARGET ${arg_NAME} PROPERTY service_file_list)
|
||
|
|
set(file_list ${file_list} ${arg_SRC_FILE} ${arg_DEST_DIR})
|
||
|
|
set_property(TARGET ${arg_NAME} PROPERTY service_file_list ${file_list})
|
||
|
|
endfunction(rosetta_service_add_file)
|