3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
7 # SPDX-License-Identifier: GPL-2.0-or-later
10 set(PIDL_DISSECTOR_NAMES
46 # These can give some (not-fatal) errors building from source:
48 # dnsserver - "dnsserver.idl:159: error: Inline arrays not supported"
49 # eventlog - "eventlog.idl:54: error: Inline arrays not supported"
50 # nspi - "nspi.idl:154: error: Syntax error near '/'"
51 # mapi - includes nspi.idl, so it gets the above error
52 # winspool - we have a hand-written spoolss dissector we use instead of spoolss.idl
54 # XXX - the "Syntax error near '/'" errors show up if cpp doesn't strip
55 # C99/C++ comments and the file in question - nspi.idl - contains
56 # C99/C++ comments, because the parser runs cpp, by default, to strip
57 # comments and proccess #includes. Those errors may cause
58 # packet-dcerpc-nspi.c, and possibly packet-dcerpc-mapi.c not to be
59 # generated. GCC's cpp appears to strip them by default, but Xcode's
60 # cpp, at least as of Xcode 15.2, does not - cc -E does, however,
61 # strip them. (Both of them strip "classic C" /* ... */ comments.)
64 set(PIDL_DISSECTOR_browser_EXTRA_DEPS
67 set(PIDL_DISSECTOR_clusapi_EXTRA_DEPS
71 set(PIDL_DISSECTOR_drsuapi_EXTRA_DEPS
76 set(PIDL_DISSECTOR_dssetup_EXTRA_DEPS
79 set(PIDL_DISSECTOR_eventlog_EXTRA_DEPS
82 set(PIDL_DISSECTOR_frsrpc_EXTRA_DEPS
86 set(PIDL_DISSECTOR_frstrans_EXTRA_DEPS
90 set(PIDL_DISSECTOR_fsrvp_EXTRA_DEPS
93 set(PIDL_DISSECTOR_initshutdown_EXTRA_DEPS
97 set(PIDL_DISSECTOR_iwbemlevel1login_EXTRA_DEPS
100 set(PIDL_DISSECTOR_iwbemloginclientid_EXTRA_DEPS
103 set(PIDL_DISSECTOR_iwbemloginclientidex_EXTRA_DEPS
106 set(PIDL_DISSECTOR_iwbemservices_EXTRA_DEPS
109 set(PIDL_DISSECTOR_lsa_EXTRA_DEPS
112 set(PIDL_DISSECTOR_mapi_EXTRA_DEPS
118 set(PIDL_DISSECTOR_mdssvc_EXTRA_DEPS
121 set(PIDL_DISSECTOR_misc_EXTRA_DEPS
124 set(PIDL_DISSECTOR_nspi_EXTRA_DEPS
129 set(PIDL_DISSECTOR_rcg_EXTRA_DEPS
132 set(PIDL_DISSECTOR_rfr_EXTRA_DEPS
136 set(PIDL_DISSECTOR_samr_EXTRA_DEPS
141 set(PIDL_DISSECTOR_srvsvc_EXTRA_DEPS
144 set(PIDL_DISSECTOR_winreg_EXTRA_DEPS
147 set(PIDL_DISSECTOR_winspool_EXTRA_DEPS
151 # Wireshark supplies the spoolss elements through a hand-written dissector
154 set(PIDL_DISSECTOR_witness_EXTRA_DEPS
158 set(PIDL_DISSECTOR_wkssvc_EXTRA_DEPS
164 set(PIDL_DISSECTOR_TARGETS)
166 foreach(PROTOCOL_NAME IN LISTS PIDL_DISSECTOR_NAMES)
168 # Construct, from the list of extra dependencies for
169 # this dissector, a list of --includedir options
170 # for all the directories in which those dependencies
171 # reside. We add --includedir .. for all targets.
174 list(APPEND INCLUDE_DIRS --includedir ..)
175 foreach(DEPENDENCY in ${PIDL_DISSECTOR_${PROTOCOL_NAME}_EXTRA_DEPS})
176 get_filename_component(PARENT_DIR ${DEPENDENCY} DIRECTORY)
177 if (NOT PARENT_DIR STREQUAL "")
178 list(APPEND INCLUDE_DIRS --includedir ../${PARENT_DIR})
182 # COMMAND_EXPAND_LISTS is required to cause the list
183 # INCLUDE_DIRS to be expanded into a set of individual
184 # arguments to the pidl command.
187 OUTPUT packet-dcerpc-${PROTOCOL_NAME}-stamp
188 COMMAND "${PERL_EXECUTABLE}"
189 "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
196 "${CMAKE_COMMAND}" -E touch
197 "${CMAKE_CURRENT_BINARY_DIR}/packet-dcerpc-${PROTOCOL_NAME}-stamp"
198 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}"
200 "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
201 "${CMAKE_SOURCE_DIR}/tools/pidl/lib/Parse/Pidl/Wireshark/NDR.pm"
202 ${PROTOCOL_NAME}/${PROTOCOL_NAME}.idl
203 ${PROTOCOL_NAME}/${PROTOCOL_NAME}.cnf
204 ${PIDL_DISSECTOR_${PROTOCOL_NAME}_EXTRA_DEPS}
208 add_custom_target(generate_dissector-dcerpc-${PROTOCOL_NAME}
209 DEPENDS packet-dcerpc-${PROTOCOL_NAME}-stamp
211 set_target_properties(generate_dissector-dcerpc-${PROTOCOL_NAME}
212 PROPERTIES FOLDER "Generated Dissectors/PIDL"
214 list(APPEND PIDL_DISSECTOR_TARGETS
215 generate_dissector-dcerpc-${PROTOCOL_NAME}
219 add_custom_target(pidl-dissectors ALL DEPENDS ${PIDL_DISSECTOR_TARGETS})
220 set_target_properties(pidl-dissectors
221 PROPERTIES FOLDER "Generated Dissectors/PIDL"
225 # Editor modelines - https://www.wireshark.org/tools/modelines.html
230 # indent-tabs-mode: t
233 # vi: set shiftwidth=4 tabstop=4 noexpandtab:
234 # :indentSize=4:tabSize=4:noTabs=false: