diff --git a/cmake/modules/UseABICheck.cmake b/cmake/modules/UseABICheck.cmake index 9ed39da0ee..024921b453 100644 --- a/cmake/modules/UseABICheck.cmake +++ b/cmake/modules/UseABICheck.cmake @@ -16,9 +16,15 @@ MACRO(ABICHECK _libname) configure_file(../abi-descriptor.template abi-descriptor.xml) # discover and substitute list of include directories for ABI compatibility # checks - file(GLOB HEADERS *.h) - file(MAKE_DIRECTORY ${ABICHECK_TMPDIR}) - file(COPY ${HEADERS} ${CMAKE_SOURCE_DIR}/ws_symbol_export.h DESTINATION ${ABICHECK_TMPDIR}) + file(GLOB ABICHECK_HEADERS RELATIVE ${CMAKE_CURRENT_BINARY_DIR} *.h) + set(ABICHECK_HEADERS ${ABICHECK_HEADERS} ${CMAKE_SOURCE_DIR}/ws_symbol_export.h) add_custom_target(dumpabi-${_libname} DEPENDS ${_libname}.abi.tar.gz) set_target_properties(dumpabi-${_libname} PROPERTIES FOLDER "Auxilary") + if (WIN32) + set(ABI_COPY_COMMAND xcopy) + set(ABI_COPY_FLAGS /d) + else() + set(ABI_COPY_COMMAND cp) + set(ABI_COPY_FLAGS) + endif() ENDMACRO() diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index e6bd96fceb..cbf752def1 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -1757,7 +1757,7 @@ endif() ABICHECK(libwireshark) -file(GLOB EPAN_HEADERS *.h) +set(TOP_LEVEL_HEADERS ${CMAKE_BINARY_DIR}/config.h ${CMAKE_SOURCE_DIR}/color.h ${CMAKE_SOURCE_DIR}/register.h) file(GLOB CRYPT_HEADERS crypt/*.h) file(GLOB COMPRESS_HEADERS compress/*.h) file(GLOB DFILTER_HEADERS dfilter/*.h ../tools/lemon/cppmagic.h) @@ -1765,28 +1765,27 @@ file(GLOB D_HEADERS dissectors/*.h) file(GLOB FTYPES_HEADERS ftypes/*.h) file(GLOB WMEM_HEADERS wmem/*.h) file(GLOB NGHTTP2_HEADERS nghttp2/*.h) -file(MAKE_DIRECTORY ${ABICHECK_TMPDIR} - ${ABICHECK_TMPDIR}/epan - ${ABICHECK_TMPDIR}/crypt - ${ABICHECK_TMPDIR}/compress - ${ABICHECK_TMPDIR}/dfilter - ${ABICHECK_TMPDIR}/dissectors - ${ABICHECK_TMPDIR}/ftypes - ${ABICHECK_TMPDIR}/wmem - ${ABICHECK_TMPDIR}/nghttp2) - -file(COPY ../color.h ../register.h DESTINATION ${ABICHECK_TMPDIR}) -file(COPY ${HEADERS} DESTINATION ${ABICHECK_TMPDIR}/epan) -file(COPY ${CRYPT_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/crypt) -file(COPY ${COMPRESS_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/compress) -file(COPY ${DFILTER_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/dfilter) -file(COPY ${D_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/dissectors) -file(COPY ${FTYPES_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/ftypes) -file(COPY ${WMEM_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/wmem) -file(COPY ${NGHTTP2_HEADERS} DESTINATION ${ABICHECK_TMPDIR}/nghttp2) add_custom_command(OUTPUT libwireshark.abi.tar.gz - COMMAND cp ../config.h ${ABICHECK_TMPDIR} + COMMAND ${CMAKE_COMMAND} -E remove_directory ${ABICHECK_TMPDIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/epan + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/crypt + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/compress + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dfilter + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/dissectors + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/ftypes + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/wmem + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR}/nghttp2 + COMMAND ${ABI_COPY_COMMAND} ${TOP_LEVEL_HEADERS} ${ABICHECK_TMPDIR} ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${ABICHECK_HEADERS} ${ABICHECK_TMPDIR}/epan ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${CRYPT_HEADERS} ${ABICHECK_TMPDIR}/crypt ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${COMPRESS_HEADERS} ${ABICHECK_TMPDIR}/compress ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${DFILTER_HEADERS} ${ABICHECK_TMPDIR}/dfilter ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${D_HEADERS} ${ABICHECK_TMPDIR}/dissectors ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${FTYPES_HEADERS} ${ABICHECK_TMPDIR}/ftypes ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${WMEM_HEADERS} ${ABICHECK_TMPDIR}/wmem ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${NGHTTP2_HEADERS} ${ABICHECK_TMPDIR}/nghttp2 ${ABI_COPY_FLAGS} COMMAND rm -f ${ABICHECK_TMPDIR}/dissectors/x11-extension-implementation.h ${ABICHECK_TMPDIR}/dissectors/packet-rtps.h ${ABICHECK_TMPDIR}/dissectors/x11-glx-render-enum.h @@ -1794,12 +1793,13 @@ add_custom_command(OUTPUT libwireshark.abi.tar.gz ${ABICHECK_TMPDIR}/dissectors/packet-idmp.h COMMAND ${ABICHECK_COMMAND} COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwireshark/libwireshark_* ${CMAKE_CURRENT_BINARY_DIR}/libwireshark.abi.tar.gz - COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps ${ABICHECK_TMPDIR}/config.h - ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/* - ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/compress/* - ${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/* - ${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/* - ${ABICHECK_TMPDIR}/nghttp2/* + COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps +# COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps ${ABICHECK_TMPDIR}/config.h +# ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/* +# ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/compress/* +# ${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/* +# ${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/* +# ${ABICHECK_TMPDIR}/nghttp2/* DEPENDS ${HEADERS} ${CRYPT_HEADERS} ${COMPRESS_HEADERS} ${DFILTER_HEADERS} ${D_HEADERS} ${FTYPES_HEADERS} ${WMEM_HEADERS} ${NGHTTP2_HEADERS} epan) diff --git a/wiretap/CMakeLists.txt b/wiretap/CMakeLists.txt index cc7f5c2026..458bd70c7f 100644 --- a/wiretap/CMakeLists.txt +++ b/wiretap/CMakeLists.txt @@ -131,10 +131,13 @@ endif() ABICHECK(libwiretap) add_custom_command(OUTPUT libwiretap.abi.tar.gz - COMMAND cp ../config.h ${ABICHECK_TMPDIR}/ + COMMAND ${CMAKE_COMMAND} -E remove_directory ${ABICHECK_TMPDIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR} + COMMAND ${ABI_COPY_COMMAND} ../config.h ${ABICHECK_TMPDIR}/ ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${ABICHECK_HEADERS} ${ABICHECK_TMPDIR}/ ${ABI_COPY_FLAGS} COMMAND ${ABICHECK_COMMAND} COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwiretap/libwiretap_* ${CMAKE_CURRENT_BINARY_DIR}/libwiretap.abi.tar.gz - COMMAND rm -rf ${ABICHECK_TMPDIR}/* ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps + COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps DEPENDS ${HEADERS} wiretap) target_link_libraries(wiretap ${wiretap_LIBS}) diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt index d21dac6fb0..2d0de5af01 100644 --- a/wsutil/CMakeLists.txt +++ b/wsutil/CMakeLists.txt @@ -234,10 +234,13 @@ endif() ABICHECK(libwsutil) add_custom_command(OUTPUT libwsutil.abi.tar.gz - COMMAND cp ../config.h ${ABICHECK_TMPDIR}/ + COMMAND ${CMAKE_COMMAND} -E remove_directory ${ABICHECK_TMPDIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${ABICHECK_TMPDIR} + COMMAND ${ABI_COPY_COMMAND} ../config.h ${ABICHECK_TMPDIR}/ ${ABI_COPY_FLAGS} + COMMAND ${ABI_COPY_COMMAND} ${ABICHECK_HEADERS} ${ABICHECK_TMPDIR}/ ${ABI_COPY_FLAGS} COMMAND ${ABICHECK_COMMAND} COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwsutil/libwsutil_* ${CMAKE_CURRENT_BINARY_DIR}/libwsutil.abi.tar.gz - COMMAND rm -rf ${ABICHECK_TMPDIR}/* ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps + COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps DEPENDS ${HEADERS} wsutil) target_link_libraries(wsutil ${wsutil_LIBS})