brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 2376e23 Raw
102 lines · plain
1set(derived_headers_location "${CMAKE_CURRENT_BINARY_DIR}/DerivedHeaders")2 3# Obtain the original headers from their staged location in the build directory.4set(original_headers_location "${CMAKE_BINARY_DIR}/include/lldb")5set(headers_to_process6  SBDefines.h7  lldb-defines.h8  lldb-enumerations.h9  lldb-types.h10)11 12file(MAKE_DIRECTORY ${derived_headers_location})13 14# Take the original headers and convert them RPC as necessary using the conversion script.15set(original_headers)16set(derived_headers)17foreach(header ${headers_to_process})18  set(original_header "${original_headers_location}/${header}")19 20  get_filename_component(header_filename ${header} NAME)21  string(REPLACE "lldb-" "lldb-rpc-" rpc_header_filename "${header_filename}")22  set(derived_header "${derived_headers_location}/${rpc_header_filename}")23 24  list(APPEND original_headers "${original_header}")25  list(APPEND derived_headers "${derived_header}")26  add_custom_command(OUTPUT ${derived_header}27    COMMAND ${Python3_EXECUTABLE} ${LLDB_SOURCE_DIR}/scripts/convert-lldb-header-to-rpc-header.py28            ${original_header} ${derived_header}29    DEPENDS ${original_header}30 31    COMMENT "Creating ${derived_header}"32  )33endforeach()34 35# Do the same thing for any header files that were autogenerated.36set(generated_headers_to_process37  API/SBLanguages.h38)39foreach(header ${generated_headers_to_process})40  set(original_header "${LLDB_OBJ_DIR}/include/lldb/${header}")41 42  get_filename_component(header_filename ${header} NAME)43  string(REPLACE "lldb-" "lldb-rpc-" rpc_header_filename "${header_filename}")44  set(derived_header "${derived_headers_location}/${rpc_header_filename}")45 46  list(APPEND original_headers "${original_header}")47  list(APPEND derived_headers "${derived_header}")48  add_custom_command(OUTPUT ${derived_header}49    COMMAND ${CMAKE_COMMAND} -E copy ${original_header} ${derived_header}50    COMMAND ${Python3_EXECUTABLE} ${LLDB_SOURCE_DIR}/scripts/convert-lldb-header-to-rpc-header.py51            ${original_header} ${derived_header}52    DEPENDS lldb-sbapi-dwarf-enums53 54    COMMENT "Creating ${derived_header}"55  )56endforeach()57 58add_custom_target(copy-aux-rpc-headers DEPENDS ${derived_headers})59add_dependencies(copy-aux-rpc-headers liblldb-header-staging)60 61list(APPEND public_headers62  ${derived_headers_location}/SBDefines.h63  ${derived_headers_location}/SBLanguages.h64  ${derived_headers_location}/lldb-rpc-enumerations.h65  ${derived_headers_location}/lldb-rpc-types.h66  ${derived_headers_location}/lldb-rpc-defines.h67)68 69# Collect and preprocess headers for the framework bundle70set(version_header71  ${derived_headers_location}/lldb-rpc-defines.h72)73 74function(FixIncludePaths in subfolder out)75  get_filename_component(base_name ${in} NAME)76  set(parked_header ${CMAKE_CURRENT_BINARY_DIR}/ParkedHeaders/${subfolder}/${base_name})77  set(${out} ${parked_header} PARENT_SCOPE)78  find_program(unifdef_EXECUTABLE unifdef)79 80  add_custom_command(OUTPUT ${parked_header}81    COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.py82            -f lldb_rpc -i ${in} -o ${parked_header} -p ${unifdef_EXECUTABLE} --unifdef_guards SWIG83    DEPENDS ${in}84    COMMENT "Fixing includes in ${in}"85  )86endfunction()87 88set(preprocessed_headers)89 90# Apply include-paths fix and any version fix on all headers and park them.91foreach(source_header ${public_headers})92  FixIncludePaths(${source_header} Headers parked_header)93  list(APPEND preprocessed_headers ${parked_header})94endforeach()95 96# Wrap header preprocessing in a target, so liblldbrpc can depend on.97add_custom_target(liblldbrpc-headers DEPENDS ${preprocessed_headers})98add_dependencies(liblldbrpc-headers copy-aux-rpc-headers liblldb-header-staging)99set_target_properties(liblldbrpc-headers PROPERTIES100  LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ParkedHeaders101)102