Run abicheck commands at compile time.

The CMake dumpbabi targets collectively copy over 800 files. Do
that when when we build the actual targets instead of at configure
time. Hopefully this will speed up initial CMake runs.

Change-Id: I6e4d691e24c73ea05d638a0f897f570541c84e38
Reviewed-on: https://code.wireshark.org/review/10052
Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
Gerald Combs 2015-08-15 17:05:17 -07:00
parent 8d1a5498fb
commit c643cbfb81
4 changed files with 46 additions and 34 deletions

View File

@ -16,9 +16,15 @@ MACRO(ABICHECK _libname)
configure_file(../abi-descriptor.template abi-descriptor.xml) configure_file(../abi-descriptor.template abi-descriptor.xml)
# discover and substitute list of include directories for ABI compatibility # discover and substitute list of include directories for ABI compatibility
# checks # checks
file(GLOB HEADERS *.h) file(GLOB ABICHECK_HEADERS RELATIVE ${CMAKE_CURRENT_BINARY_DIR} *.h)
file(MAKE_DIRECTORY ${ABICHECK_TMPDIR}) set(ABICHECK_HEADERS ${ABICHECK_HEADERS} ${CMAKE_SOURCE_DIR}/ws_symbol_export.h)
file(COPY ${HEADERS} ${CMAKE_SOURCE_DIR}/ws_symbol_export.h DESTINATION ${ABICHECK_TMPDIR})
add_custom_target(dumpabi-${_libname} DEPENDS ${_libname}.abi.tar.gz) add_custom_target(dumpabi-${_libname} DEPENDS ${_libname}.abi.tar.gz)
set_target_properties(dumpabi-${_libname} PROPERTIES FOLDER "Auxilary") 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() ENDMACRO()

View File

@ -1757,7 +1757,7 @@ endif()
ABICHECK(libwireshark) 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 CRYPT_HEADERS crypt/*.h)
file(GLOB COMPRESS_HEADERS compress/*.h) file(GLOB COMPRESS_HEADERS compress/*.h)
file(GLOB DFILTER_HEADERS dfilter/*.h ../tools/lemon/cppmagic.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 FTYPES_HEADERS ftypes/*.h)
file(GLOB WMEM_HEADERS wmem/*.h) file(GLOB WMEM_HEADERS wmem/*.h)
file(GLOB NGHTTP2_HEADERS nghttp2/*.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 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 COMMAND rm -f ${ABICHECK_TMPDIR}/dissectors/x11-extension-implementation.h
${ABICHECK_TMPDIR}/dissectors/packet-rtps.h ${ABICHECK_TMPDIR}/dissectors/packet-rtps.h
${ABICHECK_TMPDIR}/dissectors/x11-glx-render-enum.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 ${ABICHECK_TMPDIR}/dissectors/packet-idmp.h
COMMAND ${ABICHECK_COMMAND} COMMAND ${ABICHECK_COMMAND}
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwireshark/libwireshark_* ${CMAKE_CURRENT_BINARY_DIR}/libwireshark.abi.tar.gz 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 COMMAND rm -rf ${ABICHECK_TMPDIR} ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps
${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/* # COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps ${ABICHECK_TMPDIR}/config.h
${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/compress/* # ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/crypt/*
${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/* # ${ABICHECK_TMPDIR}/epan/* ${ABICHECK_TMPDIR}/compress/*
${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/* # ${ABICHECK_TMPDIR}/dfilter/* ${ABICHECK_TMPDIR}/dissectors/*
${ABICHECK_TMPDIR}/nghttp2/* # ${ABICHECK_TMPDIR}/ftypes/* ${ABICHECK_TMPDIR}/wmem/*
# ${ABICHECK_TMPDIR}/nghttp2/*
DEPENDS ${HEADERS} DEPENDS ${HEADERS}
${CRYPT_HEADERS} ${COMPRESS_HEADERS} ${DFILTER_HEADERS} ${D_HEADERS} ${CRYPT_HEADERS} ${COMPRESS_HEADERS} ${DFILTER_HEADERS} ${D_HEADERS}
${FTYPES_HEADERS} ${WMEM_HEADERS} ${NGHTTP2_HEADERS} epan) ${FTYPES_HEADERS} ${WMEM_HEADERS} ${NGHTTP2_HEADERS} epan)

View File

@ -131,10 +131,13 @@ endif()
ABICHECK(libwiretap) ABICHECK(libwiretap)
add_custom_command(OUTPUT libwiretap.abi.tar.gz 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 ${ABICHECK_COMMAND}
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwiretap/libwiretap_* ${CMAKE_CURRENT_BINARY_DIR}/libwiretap.abi.tar.gz 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) DEPENDS ${HEADERS} wiretap)
target_link_libraries(wiretap ${wiretap_LIBS}) target_link_libraries(wiretap ${wiretap_LIBS})

View File

@ -234,10 +234,13 @@ endif()
ABICHECK(libwsutil) ABICHECK(libwsutil)
add_custom_command(OUTPUT libwsutil.abi.tar.gz 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 ${ABICHECK_COMMAND}
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/libwsutil/libwsutil_* ${CMAKE_CURRENT_BINARY_DIR}/libwsutil.abi.tar.gz 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) DEPENDS ${HEADERS} wsutil)
target_link_libraries(wsutil ${wsutil_LIBS}) target_link_libraries(wsutil ${wsutil_LIBS})