blob: 6c363f411511a38960bcb5c6e95afc776f219112 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
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 USWIG
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
)
|