diff --git a/CMakeLists.txt b/CMakeLists.txt index 5acc1e4cbc..120d03c959 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) INCLUDE(UseLemon) INCLUDE(UseMakeDissectorReg) INCLUDE(UseMakeTapReg) +INCLUDE(UseAsn2Wrs) # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG diff --git a/asn1/HI2Operations/CMakeLists.txt b/asn1/HI2Operations/CMakeLists.txt index aa3c34fe96..5ba086c840 100644 --- a/asn1/HI2Operations/CMakeLists.txt +++ b/asn1/HI2Operations/CMakeLists.txt @@ -25,15 +25,21 @@ set( PROTOCOL_NAME HI2Operations ) set( ASN_FILE_LIST HI2Operations_ver11.asn - UmtsHI2Operations.asn - TS101909201.asn - PCESP.asn - EN301040.asn + UmtsHI2Operations.asn + TS101909201.asn + PCESP.asn + EN301040.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + ${PROTOCOL_NAME}.cnf ) set( SRC_FILES - ${EXTRA_DIST} - ${EXT_ASN_FILE_LIST} + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} ) set( A2W_FLAGS -b ) @@ -41,41 +47,5 @@ set( A2W_FLAGS -b ) set( EXTRA_CNF ) -set( DISSECTOR ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-${PROTOCOL_NAME}.c ) - -if ( NOT PROTO_OPT ) - set( PROTO_OPT -p ${PROTOCOL_NAME} ) -endif() - -# Don't use packet-${PROTOCOL_NAME}.c instead of generate_dissector, it will -# cause EXCLUDE_FROM_ALL to be ignored. -ADD_CUSTOM_TARGET(generate_dissector ALL - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py - ${A2W_FLAGS} - ${PROTO_OPT} - -c ${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf - -s ${CMAKE_CURRENT_SOURCE_DIR}/packet-${PROTOCOL_NAME}-template - -D ${CMAKE_CURRENT_SOURCE_DIR} - -O ${CMAKE_SOURCE_DIR}/epan/dissectors - ${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE} - DEPENDS - ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py - ${SRC_FILES} - ${EXTRA_CNF} -) - -ADD_CUSTOM_TARGET(generate_export ALL - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py - -E - ${A2W_FLAGS} - ${PROTO_OPT} - -c ${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf - -D ${CMAKE_CURRENT_SOURCE_DIR} - ${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE} - DEPENDS - ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py - ${SRC_FILES} -) +ASN2WRS() diff --git a/asn1/gsm_map/CMakeLists.txt b/asn1/gsm_map/CMakeLists.txt index 1fc4448aed..b90eb3240f 100644 --- a/asn1/gsm_map/CMakeLists.txt +++ b/asn1/gsm_map/CMakeLists.txt @@ -21,3 +21,81 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # +set( PROTOCOL_NAME gsm_map ) + +set( PROTO_OPT _EMPTY_ ) + +#EXPORT_FILES = \ +# $(PROTOCOL_NAME)-exp.cnf + +set( EXT_ASN_FILE_LIST + ../ros/Remote-Operations-Information-Objects.asn +) + +set( DATATYPES_ASN_FILES + MAP-ExtensionDataTypes.asn + MAP-CommonDataTypes.asn + MAP-SS-DataTypes.asn + MAP-ER-DataTypes.asn + MAP-SM-DataTypes.asn + MAP-OM-DataTypes.asn + MAP-MS-DataTypes.asn + MAP-CH-DataTypes.asn + MAP-LCS-DataTypes.asn + MAP-GR-DataTypes.asn +) + +set( OPERATIONS_ASN_FILES + MAP-LocationServiceOperations.asn + MAP-Group-Call-Operations.asn + MAP-ShortMessageServiceOperations.asn + MAP-SupplementaryServiceOperations.asn + MAP-CallHandlingOperations.asn + MAP-OperationAndMaintenanceOperations.asn + MAP-MobileServiceOperations.asn +) + +set( SS_ASN_FILES + SS-DataTypes.asn + SS-Operations.asn +) + +set( PROPRIETARY_ASN_FILES + Ericsson.asn +) + +set( ASN_FILE_LIST + MobileDomainDefinitions.asn + MAP-ApplicationContexts.asn + MAP-SS-Code.asn + MAP-BS-Code.asn + MAP-TS-Code.asn + ${DATATYPES_ASN_FILES} + MAP-DialogueInformation.asn + ${OPERATIONS_ASN_FILES} + MAP-Errors.asn + MAP-Protocol.asn + GSMMAP.asn + ${SS_ASN_FILES} + ${PROPRIETARY_ASN_FILES} +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + packet-${PROTOCOL_NAME}-template.h + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS -b ) + +set( EXTRA_CNF +) + +ASN2WRS() + diff --git a/cmake/modules/UseAsn2Wrs.cmake b/cmake/modules/UseAsn2Wrs.cmake new file mode 100644 index 0000000000..72c4096d07 --- /dev/null +++ b/cmake/modules/UseAsn2Wrs.cmake @@ -0,0 +1,44 @@ +# +# $Id$ +# +MACRO(ASN2WRS) + set( DISSECTOR ${CMAKE_SOURCE_DIR}/epan/dissectors/packet-${PROTOCOL_NAME}.c ) + + if ( NOT PROTO_OPT ) + set( PROTO_OPT -p ${PROTOCOL_NAME} ) + elseif ( PROTO_OPT STREQUAL "_EMPTY_" ) + set( PROTO_OPT ) + endif() + + # Don't use packet-${PROTOCOL_NAME}.c instead of generate_dissector, it will + # cause EXCLUDE_FROM_ALL to be ignored. + ADD_CUSTOM_TARGET(generate_dissector-${PROTOCOL_NAME} ALL + COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py + ${A2W_FLAGS} + ${PROTO_OPT} + -c ${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf + -s ${CMAKE_CURRENT_SOURCE_DIR}/packet-${PROTOCOL_NAME}-template + -D ${CMAKE_CURRENT_SOURCE_DIR} + -O ${CMAKE_SOURCE_DIR}/epan/dissectors + ${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE} + DEPENDS + ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py + ${SRC_FILES} + ${EXTRA_CNF} + ) + + ADD_CUSTOM_TARGET(generate_export-${PROTOCOL_NAME} ALL + COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py + -E + ${A2W_FLAGS} + ${PROTO_OPT} + -c ${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf + -D ${CMAKE_CURRENT_SOURCE_DIR} + ${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE} + DEPENDS + ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py + ${SRC_FILES} + ) +ENDMACRO()