aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2016-06-16 15:27:25 -0700
committerPeter Wu <peter@lekensteyn.nl>2016-06-27 21:08:45 +0000
commit4add8b6b4523db8966c88d69b7f9710859ec3081 (patch)
tree9c41eaccce1cb1ce3adf9d5ec14eb686d3727b1e
parentb0b2540fbaad26d282a6e335c2b800c056961514 (diff)
cmake: add idl2wrs-dissectors target for DCERPC
Add a callable target such that dissectors can be generated without the AUTOGEN_dcerpc option. Modelled after the pidl CMakeLists.txt file and target. This approach has the advantage over the previous implementation such that the clean target does not remove the packet-dcerpc-X.c files. Change-Id: I3226937eaa76dffa253df9d4f989421d5faa3f3f Reviewed-on: https://code.wireshark.org/review/15989 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r--.gitignore2
-rw-r--r--CMakeOptions.txt1
-rw-r--r--epan/dissectors/CMakeLists.txt41
-rw-r--r--epan/dissectors/dcerpc/CMakeLists.txt58
4 files changed, 56 insertions, 46 deletions
diff --git a/.gitignore b/.gitignore
index 50f541612d..5040f70dc4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@
init.lua
epan/declare_wslua.h
epan/dissectors/dcerpc/idl2wrs
+epan/dissectors/dcerpc/*/packet-dcerpc-*.[hc]
epan/dissectors/mesa
epan/dissectors/xcbproto
epan/dissectors/packet-ncp2222.c
@@ -137,6 +138,7 @@ rules.ninja
.ninja_log
epan/dissectors/asn1/*/*-stamp
epan/dissectors/pidl/*-stamp
+epan/dissectors/dcerpc/*-stamp
# Generated dir #
diff --git a/CMakeOptions.txt b/CMakeOptions.txt
index 1f73fe7b45..8140b642e7 100644
--- a/CMakeOptions.txt
+++ b/CMakeOptions.txt
@@ -18,7 +18,6 @@ option(BUILD_androiddump "Build androiddump" ON)
option(BUILD_sshdump "Build sshdump" ON)
option(BUILD_ciscodump "Build ciscodump" ON)
option(BUILD_randpktdump "Build randpktdump" ON)
-option(AUTOGEN_dcerpc "Autogenerate DCE RPC dissectors" OFF)
option(DISABLE_WERROR "Do not treat warnings as errors" OFF)
option(EXTCAP_ANDROIDDUMP_LIBPCAP "Build androiddump using libpcap" OFF)
diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt
index cafc528791..89b9b7a22c 100644
--- a/epan/dissectors/CMakeLists.txt
+++ b/epan/dissectors/CMakeLists.txt
@@ -22,7 +22,7 @@
ADD_CUSTOM_CMAKE_INCLUDE()
add_subdirectory(asn1 EXCLUDE_FROM_ALL)
-add_subdirectory(dcerpc)
+add_subdirectory(dcerpc EXCLUDE_FROM_ALL)
add_subdirectory(pidl EXCLUDE_FROM_ALL)
include_directories(
@@ -30,45 +30,6 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
)
-if(AUTOGEN_dcerpc)
- foreach(PROTOCOL_NAME ${PIDL_DISSECTOR_AUTOGEN_NAMES})
- list(APPEND PIDL_DISSECTOR_AUTOGEN_SRC
- dcerpc/${PROTOCOL_NAME}/packet-dcerpc-${PROTOCOL_NAME}.c
- )
- endforeach()
-
- foreach(PROTOCOL_NAME ${PIDL_DISSECTOR_AUTOGEN_NAMES})
- set(CUR_PROTO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dcerpc/${PROTOCOL_NAME})
- set(CUR_PROTO_C_FILE packet-dcerpc-${PROTOCOL_NAME}.c)
- set(CUR_PROTO_H_FILE packet-dcerpc-${PROTOCOL_NAME}.h)
- add_custom_command(
- OUTPUT
- ${CUR_PROTO_DIR}/${CUR_PROTO_C_FILE}
- ${CUR_PROTO_DIR}/${CUR_PROTO_H_FILE}
- COMMAND
- idl2wrs ${PROTOCOL_NAME}
- COMMAND
- ${CMAKE_COMMAND} -E copy_if_different ${CUR_PROTO_DIR}/${CUR_PROTO_C_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${CUR_PROTO_C_FILE}
- COMMAND
- ${CMAKE_COMMAND} -E copy_if_different ${CUR_PROTO_DIR}/${CUR_PROTO_H_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${CUR_PROTO_H_FILE}
- WORKING_DIRECTORY
- ${CUR_PROTO_DIR}
- DEPENDS
- ${CUR_PROTO_DIR}/${PROTOCOL_NAME}.idl
- ${CUR_PROTO_DIR}/${PROTOCOL_NAME}.cnf
- ${CUR_PROTO_DIR}/packet-dcerpc-${PROTOCOL_NAME}-template.c
- ${CUR_PROTO_DIR}/packet-dcerpc-${PROTOCOL_NAME}-template.h
- )
- endforeach()
-else()
- foreach(PROTOCOL_NAME ${PIDL_DISSECTOR_AUTOGEN_NAMES})
- set(PIDL_DISSECTOR_AUTOGEN_SRC
- ${PIDL_DISSECTOR_AUTOGEN_SRC}
- packet-dcerpc-${PROTOCOL_NAME}.c
- )
- endforeach()
-endif()
-
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/packet-ncp2222.c
COMMAND ${PYTHON_EXECUTABLE}
diff --git a/epan/dissectors/dcerpc/CMakeLists.txt b/epan/dissectors/dcerpc/CMakeLists.txt
index 276357cb75..53450fdfc8 100644
--- a/epan/dissectors/dcerpc/CMakeLists.txt
+++ b/epan/dissectors/dcerpc/CMakeLists.txt
@@ -19,11 +19,10 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
-set(PIDL_DISSECTOR_AUTOGEN_NAMES
- budb
- butc
- drsuapi
- PARENT_SCOPE
+set(PIDL_DISSECTOR_NAMES
+ budb
+ butc
+ drsuapi
)
set(IDL2WRS_FILES
@@ -47,6 +46,55 @@ set_target_properties(idl2wrs PROPERTIES FOLDER "Executables")
target_link_libraries(idl2wrs ${GLIB2_LIBRARIES})
+foreach(PROTOCOL_NAME IN LISTS PIDL_DISSECTOR_NAMES)
+ # Use a stamp file instead of OUTPUT to packet-dcerpc-X.c to
+ # avoid removing the .c file on clean.
+ add_custom_command(
+ OUTPUT packet-dcerpc-${PROTOCOL_NAME}-stamp
+ COMMAND
+ idl2wrs ${PROTOCOL_NAME}
+ COMMAND
+ "${CMAKE_COMMAND}" -E copy_if_different
+ packet-dcerpc-${PROTOCOL_NAME}.c
+ "${CMAKE_CURRENT_SOURCE_DIR}/../packet-dcerpc-${PROTOCOL_NAME}.c"
+ COMMAND
+ "${CMAKE_COMMAND}" -E copy_if_different
+ packet-dcerpc-${PROTOCOL_NAME}.h
+ "${CMAKE_CURRENT_SOURCE_DIR}/../packet-dcerpc-${PROTOCOL_NAME}.h"
+ COMMAND
+ "${CMAKE_COMMAND}" -E touch
+ "${CMAKE_CURRENT_BINARY_DIR}/packet-dcerpc-${PROTOCOL_NAME}-stamp"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}"
+ DEPENDS
+ "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
+ ${PROTOCOL_NAME}/${PROTOCOL_NAME}.idl
+ ${PROTOCOL_NAME}/${PROTOCOL_NAME}.cnf
+ ${PROTOCOL_NAME}/packet-dcerpc-${PROTOCOL_NAME}-template.h
+ ${PROTOCOL_NAME}/packet-dcerpc-${PROTOCOL_NAME}-template.c
+ VERBATIM
+ )
+ add_custom_target(generate_dissector-dcerpc-${PROTOCOL_NAME}
+ DEPENDS packet-dcerpc-${PROTOCOL_NAME}-stamp
+ )
+ set_target_properties(generate_dissector-dcerpc-${PROTOCOL_NAME}
+ PROPERTIES FOLDER "Generated Dissectors/PIDL"
+ )
+ list(APPEND PIDL_DISSECTOR_TARGETS
+ generate_dissector-dcerpc-${PROTOCOL_NAME}
+ )
+ list(APPEND PIDL_DISSECTOR_SRC
+ packet-dcerpc-${PROTOCOL_NAME}.c
+ )
+endforeach()
+
+set(PIDL_DISSECTOR_AUTOGEN_SRC ${PIDL_DISSECTOR_SRC} PARENT_SCOPE)
+
+# TODO should probably just merge this into pidl-dissectors
+add_custom_target(idl2wrs-dissectors ALL DEPENDS ${PIDL_DISSECTOR_TARGETS})
+set_target_properties(idl2wrs-dissectors
+ PROPERTIES FOLDER "Generated Dissectors/PIDL"
+)
+
#
# Editor modelines - https://www.wireshark.org/tools/modelines.html
#