CMake: Copy multiple data files at a time.

Copy the DTD, DIAMETER, RADIUS, and profile files all at once instead of
individually.

Change-Id: I7c75c4a784956b998a82fd627dd17843820096ff
Reviewed-on: https://code.wireshark.org/review/25439
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Gerald Combs 2018-01-23 12:05:10 -08:00 committed by Anders Broman
parent 59c958d7cb
commit 99b7776d5f
1 changed files with 94 additions and 11 deletions

View File

@ -1979,16 +1979,6 @@ endif(LUA_FOUND AND ENABLE_LUA)
# TODO shouldn't this use full (relative) paths instead of glob patterns?
list(APPEND DATA_FILES_SRC
"dtds/*.dtd"
"radius/README.radius_dictionary"
"radius/custom.includes"
"radius/dictionary"
"radius/dictionary.*"
"diameter/*.dtd"
"diameter/*.xml"
"profiles/*/*"
"tpncp/tpncp.dat"
"wimaxasncp/*.dtd"
"wimaxasncp/*.xml"
@ -2010,8 +2000,101 @@ foreach(_data_file ${_data_files})
list(APPEND copy_data_files_depends "${DATAFILE_DIR}/${_data_file}")
endforeach()
if(CMAKE_VERSION VERSION_LESS "3.5")
# To bad -u / --update is a GNU extension.
set (MULTI_COPY_COMMAND cp)
else()
set (MULTI_COPY_COMMAND ${CMAKE_COMMAND} -E copy_if_different)
endif()
add_custom_command(
OUTPUT "${DATAFILE_DIR}/dtds" "${DATAFILE_DIR}/diameter" "${DATAFILE_DIR}/radius"
COMMAND ${CMAKE_COMMAND} -E make_directory
"${DATAFILE_DIR}/dtds"
"${DATAFILE_DIR}/diameter"
"${DATAFILE_DIR}/radius"
)
file(GLOB _dtds_src_files RELATIVE "${CMAKE_SOURCE_DIR}" "dtds/*.dtd")
set (_dtds_data_files)
foreach(_data_file ${_dtds_src_files})
list(APPEND _dtds_data_files "${DATAFILE_DIR}/${_data_file}")
endforeach()
add_custom_command(
OUTPUT ${_dtds_data_files}
COMMAND ${MULTI_COPY_COMMAND}
${_dtds_src_files}
"${DATAFILE_DIR}/dtds"
VERBATIM
DEPENDS "${DATAFILE_DIR}/dtds"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
file(GLOB _diameter_src_files RELATIVE "${CMAKE_SOURCE_DIR}"
diameter/*.dtd
diameter/*.xml
)
set (_diameter_data_files)
foreach(_data_file ${_diameter_src_files})
list(APPEND _diameter_data_files "${DATAFILE_DIR}/${_data_file}")
endforeach()
add_custom_command(
OUTPUT ${_diameter_data_files}
COMMAND ${MULTI_COPY_COMMAND}
${_diameter_src_files}
"${DATAFILE_DIR}/diameter"
VERBATIM
DEPENDS "${DATAFILE_DIR}/diameter"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
file(GLOB _radius_src_files RELATIVE "${CMAKE_SOURCE_DIR}"
radius/README.radius_dictionary
radius/custom.includes
radius/dictionary
radius/dictionary.*
)
set (_radius_data_files)
foreach(_data_file ${_radius_src_files})
list(APPEND _radius_data_files "${DATAFILE_DIR}/${_data_file}")
endforeach()
add_custom_command(
OUTPUT ${_radius_data_files}
COMMAND ${MULTI_COPY_COMMAND}
${_radius_src_files}
"${DATAFILE_DIR}/radius"
VERBATIM
DEPENDS "${DATAFILE_DIR}/radius"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
file(GLOB _profiles_src_files RELATIVE "${CMAKE_SOURCE_DIR}" profiles/*/*)
set (_profiles_data_files)
foreach(_data_file ${_profiles_src_files})
list(APPEND _profiles_data_files "${DATAFILE_DIR}/${_data_file}")
endforeach()
add_custom_command(
OUTPUT ${_profiles_data_files}
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_SOURCE_DIR}/profiles" "${DATAFILE_DIR}/profiles"
)
list(APPEND copy_data_files_depends
${_dtds_data_files}
${_diameter_data_files}
${_radius_data_files}
${_profiles_data_files}
)
# Copy files including ${INSTALL_FILES} and ${INSTALL_DIRS} to ${DATAFILE_DIR}
add_custom_target(copy_data_files ALL DEPENDS ${copy_data_files_depends})
add_custom_target(copy_data_files ALL DEPENDS ${copy_data_files_depends} )
set_target_properties(copy_data_files PROPERTIES FOLDER "Copy Tasks")
if( (BUILD_wireshark AND QT_FOUND) OR (BUILD_wireshark_gtk AND GTK_FOUND) )