| set(derived_headers_location "${CMAKE_CURRENT_BINARY_DIR}/DerivedHeaders") |
| |
| # Obtain the original headers from their staged location in the build directory. |
| set(original_headers_location "${CMAKE_BINARY_DIR}/include/lldb") |
| set(headers_to_process |
| SBDefines.h |
| lldb-defines.h |
| lldb-enumerations.h |
| lldb-types.h |
| ) |
| |
| file(MAKE_DIRECTORY ${derived_headers_location}) |
| |
| # Take the original headers and convert them RPC as necessary using the conversion script. |
| set(original_headers) |
| set(derived_headers) |
| foreach(header ${headers_to_process}) |
| set(original_header "${original_headers_location}/${header}") |
| |
| get_filename_component(header_filename ${header} NAME) |
| string(REPLACE "lldb-" "lldb-rpc-" rpc_header_filename "${header_filename}") |
| set(derived_header "${derived_headers_location}/${rpc_header_filename}") |
| |
| list(APPEND original_headers "${original_header}") |
| list(APPEND derived_headers "${derived_header}") |
| add_custom_command(OUTPUT ${derived_header} |
| COMMAND ${Python3_EXECUTABLE} ${LLDB_SOURCE_DIR}/scripts/convert-lldb-header-to-rpc-header.py |
| ${original_header} ${derived_header} |
| DEPENDS ${original_header} |
| |
| COMMENT "Creating ${derived_header}" |
| ) |
| endforeach() |
| |
| # Do the same thing for any header files that were autogenerated. |
| set(generated_headers_to_process |
| API/SBLanguages.h |
| ) |
| foreach(header ${generated_headers_to_process}) |
| set(original_header "${LLDB_OBJ_DIR}/include/lldb/${header}") |
| |
| get_filename_component(header_filename ${header} NAME) |
| string(REPLACE "lldb-" "lldb-rpc-" rpc_header_filename "${header_filename}") |
| set(derived_header "${derived_headers_location}/${rpc_header_filename}") |
| |
| list(APPEND original_headers "${original_header}") |
| list(APPEND derived_headers "${derived_header}") |
| add_custom_command(OUTPUT ${derived_header} |
| COMMAND ${CMAKE_COMMAND} -E copy ${original_header} ${derived_header} |
| COMMAND ${Python3_EXECUTABLE} ${LLDB_SOURCE_DIR}/scripts/convert-lldb-header-to-rpc-header.py |
| ${original_header} ${derived_header} |
| DEPENDS lldb-sbapi-dwarf-enums |
| |
| COMMENT "Creating ${derived_header}" |
| ) |
| endforeach() |
| |
| add_custom_target(copy-aux-rpc-headers DEPENDS ${derived_headers}) |
| add_dependencies(copy-aux-rpc-headers liblldb-header-staging) |
| |
| list(APPEND public_headers |
| ${derived_headers_location}/SBDefines.h |
| ${derived_headers_location}/SBLanguages.h |
| ${derived_headers_location}/lldb-rpc-enumerations.h |
| ${derived_headers_location}/lldb-rpc-types.h |
| ${derived_headers_location}/lldb-rpc-defines.h |
| ) |
| |
| # Collect and preprocess headers for the framework bundle |
| set(version_header |
| ${derived_headers_location}/lldb-rpc-defines.h |
| ) |
| |
| function(FixIncludePaths in subfolder out) |
| get_filename_component(base_name ${in} NAME) |
| set(parked_header ${CMAKE_CURRENT_BINARY_DIR}/ParkedHeaders/${subfolder}/${base_name}) |
| set(${out} ${parked_header} PARENT_SCOPE) |
| find_program(unifdef_EXECUTABLE unifdef) |
| |
| add_custom_command(OUTPUT ${parked_header} |
| COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.py |
| -f lldb_rpc -i ${in} -o ${parked_header} -p ${unifdef_EXECUTABLE} --unifdef_guards SWIG |
| DEPENDS ${in} |
| COMMENT "Fixing includes in ${in}" |
| ) |
| endfunction() |
| |
| set(preprocessed_headers) |
| |
| # Apply include-paths fix and any version fix on all headers and park them. |
| foreach(source_header ${public_headers}) |
| FixIncludePaths(${source_header} Headers parked_header) |
| list(APPEND preprocessed_headers ${parked_header}) |
| endforeach() |
| |
| # Wrap header preprocessing in a target, so liblldbrpc can depend on. |
| add_custom_target(liblldbrpc-headers DEPENDS ${preprocessed_headers}) |
| add_dependencies(liblldbrpc-headers copy-aux-rpc-headers liblldb-header-staging) |
| set_target_properties(liblldbrpc-headers PROPERTIES |
| LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ParkedHeaders |
| ) |