TODO netlogon_user_flags_ntlmv2_enabled
[wireshark-sm.git] / epan / dissectors / pidl / CMakeLists.txt
blobb993de18b2a5090bfeb032629bd786c8034549ad
1 # CMakeLists.txt
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
11         atsvc
12         browser
13         clusapi
14         dnsserver
15         dfs
16         drsuapi
17         dssetup
18         efs
19         eventlog
20         frsrpc
21         frstrans
22         fsrvp
23         initshutdown
24         iwbemlevel1login
25         iwbemloginclientid
26         iwbemloginclientidex
27         iwbemservices
28         lsa
29         mapi
30         mdssvc
31         misc
32         nspi
33         rcg
34         rfr
35         samr
36         srvsvc
37         svcctl
38         winreg
39         winspool
40         witness
41         wkssvc
42         wzcsvc
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
65         srvsvc/srvsvc.idl
67 set(PIDL_DISSECTOR_clusapi_EXTRA_DEPS
68         winreg/winreg.idl
69         misc/misc.idl
71 set(PIDL_DISSECTOR_drsuapi_EXTRA_DEPS
72         misc/misc.idl
73         lsa/lsa.idl
74         samr/samr.idl
76 set(PIDL_DISSECTOR_dssetup_EXTRA_DEPS
77         misc/misc.idl
79 set(PIDL_DISSECTOR_eventlog_EXTRA_DEPS
80         idl_types.h
82 set(PIDL_DISSECTOR_frsrpc_EXTRA_DEPS
83         misc/misc.idl
84         idl_types.h
86 set(PIDL_DISSECTOR_frstrans_EXTRA_DEPS
87         misc/misc.idl
88         idl_types.h
90 set(PIDL_DISSECTOR_fsrvp_EXTRA_DEPS
91         idl_types.h
93 set(PIDL_DISSECTOR_initshutdown_EXTRA_DEPS
94         lsa/lsa.idl
95         idl_types.h
97 set(PIDL_DISSECTOR_iwbemlevel1login_EXTRA_DEPS
98         idl_types.h
100 set(PIDL_DISSECTOR_iwbemloginclientid_EXTRA_DEPS
101         idl_types.h
103 set(PIDL_DISSECTOR_iwbemloginclientidex_EXTRA_DEPS
104         idl_types.h
106 set(PIDL_DISSECTOR_iwbemservices_EXTRA_DEPS
107         idl_types.h
109 set(PIDL_DISSECTOR_lsa_EXTRA_DEPS
110         idl_types.h
112 set(PIDL_DISSECTOR_mapi_EXTRA_DEPS
113         idl_types.h
114         nspi/nspi.idl
115         mapicodes_enum.h
116         mapitags_enum.h
118 set(PIDL_DISSECTOR_mdssvc_EXTRA_DEPS
119         misc/misc.idl
121 set(PIDL_DISSECTOR_misc_EXTRA_DEPS
122         idl_types.h
124 set(PIDL_DISSECTOR_nspi_EXTRA_DEPS
125         idl_types.h
126         mapicodes_enum.h
127         mapitags_enum.h
129 set(PIDL_DISSECTOR_rcg_EXTRA_DEPS
130         idl_types.h
132 set(PIDL_DISSECTOR_rfr_EXTRA_DEPS
133         idl_types.h
134         mapicodes_enum.h
136 set(PIDL_DISSECTOR_samr_EXTRA_DEPS
137         idl_types.h
138         misc/misc.idl
139         lsa/lsa.idl
141 set(PIDL_DISSECTOR_srvsvc_EXTRA_DEPS
142         idl_types.h
144 set(PIDL_DISSECTOR_winreg_EXTRA_DEPS
145         misc/misc.idl
147 set(PIDL_DISSECTOR_winspool_EXTRA_DEPS
148         idl_types.h
149         misc/misc.idl
150         winreg/winreg.idl
151         # Wireshark supplies the spoolss elements through a hand-written dissector
152         #spoolss/spoolss.idl
154 set(PIDL_DISSECTOR_witness_EXTRA_DEPS
155         misc/misc.idl
156         idl_types.h
158 set(PIDL_DISSECTOR_wkssvc_EXTRA_DEPS
159         lsa/lsa.idl
160         srvsvc/srvsvc.idl
161         idl_types.h
164 set(PIDL_DISSECTOR_TARGETS)
166 foreach(PROTOCOL_NAME IN LISTS PIDL_DISSECTOR_NAMES)
167         #
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.
172         #
173         set(INCLUDE_DIRS "")
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})
179                 endif()
180         endforeach()
181         #
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.
185         #
186         add_custom_command(
187                 OUTPUT packet-dcerpc-${PROTOCOL_NAME}-stamp
188                 COMMAND "${PERL_EXECUTABLE}"
189                         "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
190                         --ws-parser
191                         --outputdir ../..
192                         ${INCLUDE_DIRS}
193                         --
194                         ${PROTOCOL_NAME}.idl
195                 COMMAND
196                         "${CMAKE_COMMAND}" -E touch
197                         "${CMAKE_CURRENT_BINARY_DIR}/packet-dcerpc-${PROTOCOL_NAME}-stamp"
198                 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}"
199                 DEPENDS
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}
205                 VERBATIM
206                 COMMAND_EXPAND_LISTS
207         )
208         add_custom_target(generate_dissector-dcerpc-${PROTOCOL_NAME}
209                 DEPENDS packet-dcerpc-${PROTOCOL_NAME}-stamp
210         )
211         set_target_properties(generate_dissector-dcerpc-${PROTOCOL_NAME}
212                 PROPERTIES FOLDER "Generated Dissectors/PIDL"
213         )
214         list(APPEND PIDL_DISSECTOR_TARGETS
215                 generate_dissector-dcerpc-${PROTOCOL_NAME}
216         )
217 endforeach()
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
227 # Local variables:
228 # c-basic-offset: 4
229 # tab-width: 4
230 # indent-tabs-mode: t
231 # End:
233 # vi: set shiftwidth=4 tabstop=4 noexpandtab:
234 # :indentSize=4:tabSize=4:noTabs=false: