cmake: sysroot: add support for object and binary-only libraries
This commit is contained in:
@@ -30,19 +30,74 @@ function(sysroot_add_library)
|
|||||||
list(GET sysroot_targets ${serialiser_index} serialiser)
|
list(GET sysroot_targets ${serialiser_index} serialiser)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
add_custom_target(${sysroot_target_name}
|
if (arg_HEADER_DIR)
|
||||||
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
add_custom_target(${sysroot_target_name}
|
||||||
add-binary ${sysroot_manifest} ${target_name}
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
${arg_LIB_DIR} $<TARGET_FILE:${target_name}>
|
add-binary ${sysroot_manifest} ${target_name}
|
||||||
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
${arg_LIB_DIR} $<TARGET_FILE:${target_name}>
|
||||||
add-headers ${sysroot_manifest} ${target_name}
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
${arg_HEADER_DIR} ${header_dirs}
|
add-headers ${sysroot_manifest} ${target_name}
|
||||||
COMMENT "Preparing sysroot component: ${target_name}"
|
${arg_HEADER_DIR} ${header_dirs}
|
||||||
DEPENDS ${target_name} ${serialiser})
|
COMMENT "Preparing sysroot component: ${target_name}"
|
||||||
|
DEPENDS ${target_name} ${serialiser})
|
||||||
|
else()
|
||||||
|
add_custom_target(${sysroot_target_name}
|
||||||
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
|
add-binary ${sysroot_manifest} ${target_name}
|
||||||
|
${arg_LIB_DIR} $<TARGET_FILE:${target_name}>
|
||||||
|
COMMENT "Preparing sysroot component: ${target_name}"
|
||||||
|
DEPENDS ${target_name} ${serialiser})
|
||||||
|
endif ()
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY sysroot_target_list ${sysroot_targets} ${sysroot_target_name})
|
set_property(GLOBAL PROPERTY sysroot_target_list ${sysroot_targets} ${sysroot_target_name})
|
||||||
endfunction(sysroot_add_library)
|
endfunction(sysroot_add_library)
|
||||||
|
|
||||||
|
function(sysroot_add_object_library)
|
||||||
|
set(options)
|
||||||
|
set(one_value_args NAME HEADER_DIR LIB_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})
|
||||||
|
meta_target_get_header_directories(TARGET ${target_name} OUT header_dirs)
|
||||||
|
|
||||||
|
get_property(sysroot_targets GLOBAL PROPERTY sysroot_target_list)
|
||||||
|
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 ()
|
||||||
|
|
||||||
|
if (arg_HEADER_DIR)
|
||||||
|
add_custom_target(${sysroot_target_name}
|
||||||
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
|
add-binary ${sysroot_manifest} ${target_name}
|
||||||
|
${arg_LIB_DIR} $<TARGET_OBJECTS:${target_name}>
|
||||||
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
|
add-headers ${sysroot_manifest} ${target_name}
|
||||||
|
${arg_HEADER_DIR} ${header_dirs}
|
||||||
|
COMMENT "Preparing sysroot component: ${target_name}"
|
||||||
|
DEPENDS ${target_name} ${serialiser})
|
||||||
|
else()
|
||||||
|
add_custom_target(${sysroot_target_name}
|
||||||
|
COMMAND ${Python_EXECUTABLE} ${sysroot_tool}
|
||||||
|
add-binary ${sysroot_manifest} ${target_name}
|
||||||
|
${arg_LIB_DIR} $<TARGET_OBJECTS:${target_name}>
|
||||||
|
COMMENT "Preparing sysroot component: ${target_name}"
|
||||||
|
DEPENDS ${target_name} ${serialiser})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
get_property(tmp TARGET ${target_name} PROPERTY SUFFIX)
|
||||||
|
message(STATUS ${tmp})
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY sysroot_target_list ${sysroot_targets} ${sysroot_target_name})
|
||||||
|
endfunction(sysroot_add_object_library)
|
||||||
|
|
||||||
function(sysroot_add_program)
|
function(sysroot_add_program)
|
||||||
set(options)
|
set(options)
|
||||||
set(one_value_args NAME BIN_DIR)
|
set(one_value_args NAME BIN_DIR)
|
||||||
|
|||||||
Reference in New Issue
Block a user