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