# This Makefile was generated by the Makefile Generator # of the TTCN-3 Test Executor version 11.1.0 # for root (root@8644c636c977) on Thu Dec 4 17:43:04 2025 # Copyright (c) 2000-2025 Ericsson Telecom AB # The following make commands are available: # - make, make all Builds the executable test suite. # - make archive Archives all source files. # - make check Checks the semantics of TTCN-3 and ASN.1modules. # - make port Generates test port and external class skeletons. # - make clean Removes all generated files. # - make compile Translates TTCN-3 and ASN.1 modules to C++. # - make dep Creates/updates dependency list. # - make executable Builds the executable test suite. # - make library Builds the library archive. # - make objects Builds the object files without linking the executable. # - make shared_objects Builds the shared object files without linking the executable. # - make preprocess Preprocess TTCN-3 files. # WARNING! This Makefile can be used with GNU make only. # Other versions of make may report syntax errors in it. # # Do NOT touch this line... # .PHONY: all shared_objects executable library objects check port clean dep archive preprocess .SUFFIXES: .d # # Set these variables... # ifndef TTCN3_DIR ifneq (,$(wildcard /usr/include/titan/)) TTCN3_DIR = /usr TTCN3_SUBDIR = /titan else TTCN3_DIR = /usr TTCN3_SUBDIR = endif endif # Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) PLATFORM = LINUX # Your C++ compiler: # (if you change the platform, you may need to change the compiler) CXX = env CCACHE_SLOPPINESS=time_macros ccache g++ # C preprocessor used for TTCN-3 files: CPP = cpp # Flags for the C++ preprocessor (and makedepend as well): CPPFLAGS = -D$(PLATFORM) -DMAKEDEPEND_RUN -DUSE_SCTP -DLKSCTP_MULTIHOMING_ENABLED -DAS_USE_SSL -I$(TTCN3_DIR)/include$(TTCN3_SUBDIR) # Flags for dependency generation CXXDEPFLAGS = -MM # Flags for preprocessing TTCN-3 files: CPPFLAGS_TTCN3 = -DIPA_EMULATION_CTRL -DRAN_EMULATION_RANAP -DSTATSD_HAVE_VTY -DUSE_MTP3_DISTRIBUTOR # Flags for the C++ compiler: CXXFLAGS = -fPIC # Flags for the linker: LDFLAGS = -L /usr/lib/titan-fPIC ifeq ($(PLATFORM), WIN32) # Silence linker warnings. LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc endif # Utility to create library files AR = ar ARFLAGS = # Flags for the TTCN-3 and ASN.1 compiler: COMPILER_FLAGS = -L -D -q # Execution mode: (either ttcn3 or ttcn3-parallel) TTCN3_LIB = ttcn3-parallel-dynamic # Lib folder of OpenSSL installation: (lib or lib64) OPENSSL_LIB_DIR = lib # The path of your libxml2 installation: # If you do not have your own one, leave it unchanged. XMLDIR = $(TTCN3_DIR) # Directory to store the archived source files: ARCHIVE_DIR = backup # # You may change these variables. Add your files if necessary... # # TTCN-3 modules of this project: TTCN3_MODULES = BSSAP_CodecPort.ttcn BSSAP_Types.ttcn ConnHdlr.ttcn DNS_Helpers.ttcn GSM_Types.ttcn General_Types.ttcn HNBAP_Templates.ttcn HNBAP_Types.ttcn HNBGW_Tests.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_Types.ttcn IPL4asp_Functions.ttcn IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IuUP_Emulation.ttcn IuUP_Types.ttcn Iuh_CodecPort.ttcn Iuh_CodecPort_CtrlFunct.ttcn Iuh_Emulation.ttcn Iuh_Types.ttcn L3_Common.ttcn L3_Templates.ttcn M3UA_Emulation.ttcn M3UA_Types.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn MGCP_Templates.ttcn MGCP_Types.ttcn MTP3asp_PortType.ttcn MTP3asp_Types.ttcn Misc_Helpers.ttcn MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn Mutex.ttcn Native_Functions.ttcn Osmocom_CTRL_Adapter.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Types.ttcn Osmocom_Types.ttcn Osmocom_VTY_Functions.ttcn PFCP_CodecPort.ttcn PFCP_CodecPort_CtrlFunct.ttcn PFCP_Emulation.ttcn PFCP_Templates.ttcn PFCP_Types.ttcn RANAP_CodecPort.ttcn RANAP_Templates.ttcn RANAP_Types.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_Emulation.ttcn RTP_Types.ttcn RUA_Emulation.ttcn RUA_Templates.ttcn RUA_Types.ttcn SCCP_Emulation.ttcn SCCP_Templates.ttcn SCCP_Types.ttcn SCCPasp_Types.ttcn SCTP_Templates.ttcn SCTPasp_PortType.ttcn SCTPasp_Types.ttcn SDP_Templates.ttcn SDP_Types.ttcn Socket_API_Definitions.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_Types.ttcn TCCConversion_Functions.ttcn TCCEncoding_Functions.ttcn TCCInterface_Functions.ttcn TELNETasp_PortType.ttcn UD_PortType.ttcn UD_Types.ttcn TTCN3_MODULES_TO_SPLIT = BSSAP_CodecPort.ttcn BSSAP_Types.ttcn ConnHdlr.ttcn DNS_Helpers.ttcn GSM_Types.ttcn General_Types.ttcn HNBAP_Templates.ttcn HNBAP_Types.ttcn HNBGW_Tests.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_Types.ttcn IPL4asp_Functions.ttcn IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IuUP_Emulation.ttcn IuUP_Types.ttcn Iuh_CodecPort.ttcn Iuh_CodecPort_CtrlFunct.ttcn Iuh_Emulation.ttcn Iuh_Types.ttcn L3_Common.ttcn L3_Templates.ttcn M3UA_Emulation.ttcn M3UA_Types.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn MGCP_Templates.ttcn MGCP_Types.ttcn MTP3asp_PortType.ttcn MTP3asp_Types.ttcn Misc_Helpers.ttcn MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn Mutex.ttcn Native_Functions.ttcn Osmocom_CTRL_Adapter.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Types.ttcn Osmocom_Types.ttcn Osmocom_VTY_Functions.ttcn PFCP_CodecPort.ttcn PFCP_CodecPort_CtrlFunct.ttcn PFCP_Emulation.ttcn PFCP_Templates.ttcn PFCP_Types.ttcn RANAP_CodecPort.ttcn RANAP_Templates.ttcn RANAP_Types.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_Emulation.ttcn RTP_Types.ttcn RUA_Emulation.ttcn RUA_Templates.ttcn RUA_Types.ttcn SCCP_Emulation.ttcn SCCP_Templates.ttcn SCCP_Types.ttcn SCCPasp_Types.ttcn SCTP_Templates.ttcn SCTPasp_PortType.ttcn SCTPasp_Types.ttcn SDP_Templates.ttcn SDP_Types.ttcn Socket_API_Definitions.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_Types.ttcn TCCConversion_Functions.ttcn TCCEncoding_Functions.ttcn TCCInterface_Functions.ttcn TELNETasp_PortType.ttcn UD_PortType.ttcn UD_Types.ttcn # TTCN-3 modules to preprocess: TTCN3_PP_MODULES = IPA_Emulation.ttcnpp RAN_Adapter.ttcnpp RAN_Emulation.ttcnpp SCCP_Adapter.ttcnpp SCCP_Mapping.ttcnpp StatsD_Checker.ttcnpp # Files to include in TTCN-3 preprocessed modules: TTCN3_INCLUDES = # ASN.1 modules of this project: ASN1_MODULES = HNBAP_CommonDataTypes.asn HNBAP_Constants.asn HNBAP_Containers.asn HNBAP_IEs.asn HNBAP_PDU_Contents.asn HNBAP_PDU_Descriptions.asn RANAP_CommonDataTypes.asn RANAP_Constants.asn RANAP_Containers.asn RANAP_IEs.asn RANAP_PDU_Contents.asn RANAP_PDU_Descriptions.asn RUA_CommonDataTypes.asn RUA_Constants.asn RUA_Containers.asn RUA_IEs.asn RUA_PDU_Contents.asn RUA_PDU_Descriptions.asn ASN1_MODULES_TO_SPLIT = HNBAP_CommonDataTypes.asn HNBAP_Constants.asn HNBAP_Containers.asn HNBAP_IEs.asn HNBAP_PDU_Contents.asn HNBAP_PDU_Descriptions.asn RANAP_CommonDataTypes.asn RANAP_Constants.asn RANAP_Containers.asn RANAP_IEs.asn RANAP_PDU_Contents.asn RANAP_PDU_Descriptions.asn RUA_CommonDataTypes.asn RUA_Constants.asn RUA_Containers.asn RUA_IEs.asn RUA_PDU_Contents.asn RUA_PDU_Descriptions.asn # TTCN-3 source files generated by the C preprocessor: PREPROCESSED_TTCN3_MODULES = IPA_Emulation.ttcn RAN_Adapter.ttcn RAN_Emulation.ttcn SCCP_Adapter.ttcn SCCP_Mapping.ttcn StatsD_Checker.ttcn PREPROCESSED_TTCN3_MODULES_TO_SPLIT = IPA_Emulation.ttcn RAN_Adapter.ttcn RAN_Emulation.ttcn SCCP_Adapter.ttcn SCCP_Mapping.ttcn StatsD_Checker.ttcn # C++ source & header files generated from the TTCN-3 & ASN.1 modules of # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) BSSAP_CodecPort_part_1.cc BSSAP_CodecPort_part_2.cc BSSAP_CodecPort_part_3.cc BSSAP_CodecPort_part_4.cc BSSAP_CodecPort_part_5.cc BSSAP_CodecPort_part_6.cc BSSAP_CodecPort_part_7.cc BSSAP_Types_part_1.cc BSSAP_Types_part_2.cc BSSAP_Types_part_3.cc BSSAP_Types_part_4.cc BSSAP_Types_part_5.cc BSSAP_Types_part_6.cc BSSAP_Types_part_7.cc ConnHdlr_part_1.cc ConnHdlr_part_2.cc ConnHdlr_part_3.cc ConnHdlr_part_4.cc ConnHdlr_part_5.cc ConnHdlr_part_6.cc ConnHdlr_part_7.cc DNS_Helpers_part_1.cc DNS_Helpers_part_2.cc DNS_Helpers_part_3.cc DNS_Helpers_part_4.cc DNS_Helpers_part_5.cc DNS_Helpers_part_6.cc DNS_Helpers_part_7.cc GSM_Types_part_1.cc GSM_Types_part_2.cc GSM_Types_part_3.cc GSM_Types_part_4.cc GSM_Types_part_5.cc GSM_Types_part_6.cc GSM_Types_part_7.cc General_Types_part_1.cc General_Types_part_2.cc General_Types_part_3.cc General_Types_part_4.cc General_Types_part_5.cc General_Types_part_6.cc General_Types_part_7.cc HNBAP_Templates_part_1.cc HNBAP_Templates_part_2.cc HNBAP_Templates_part_3.cc HNBAP_Templates_part_4.cc HNBAP_Templates_part_5.cc HNBAP_Templates_part_6.cc HNBAP_Templates_part_7.cc HNBAP_Types_part_1.cc HNBAP_Types_part_2.cc HNBAP_Types_part_3.cc HNBAP_Types_part_4.cc HNBAP_Types_part_5.cc HNBAP_Types_part_6.cc HNBAP_Types_part_7.cc HNBGW_Tests_part_1.cc HNBGW_Tests_part_2.cc HNBGW_Tests_part_3.cc HNBGW_Tests_part_4.cc HNBGW_Tests_part_5.cc HNBGW_Tests_part_6.cc HNBGW_Tests_part_7.cc IPA_CodecPort_part_1.cc IPA_CodecPort_part_2.cc IPA_CodecPort_part_3.cc IPA_CodecPort_part_4.cc IPA_CodecPort_part_5.cc IPA_CodecPort_part_6.cc IPA_CodecPort_part_7.cc IPA_CodecPort_CtrlFunct_part_1.cc IPA_CodecPort_CtrlFunct_part_2.cc IPA_CodecPort_CtrlFunct_part_3.cc IPA_CodecPort_CtrlFunct_part_4.cc IPA_CodecPort_CtrlFunct_part_5.cc IPA_CodecPort_CtrlFunct_part_6.cc IPA_CodecPort_CtrlFunct_part_7.cc IPA_Types_part_1.cc IPA_Types_part_2.cc IPA_Types_part_3.cc IPA_Types_part_4.cc IPA_Types_part_5.cc IPA_Types_part_6.cc IPA_Types_part_7.cc IPL4asp_Functions_part_1.cc IPL4asp_Functions_part_2.cc IPL4asp_Functions_part_3.cc IPL4asp_Functions_part_4.cc IPL4asp_Functions_part_5.cc IPL4asp_Functions_part_6.cc IPL4asp_Functions_part_7.cc IPL4asp_PortType_part_1.cc IPL4asp_PortType_part_2.cc IPL4asp_PortType_part_3.cc IPL4asp_PortType_part_4.cc IPL4asp_PortType_part_5.cc IPL4asp_PortType_part_6.cc IPL4asp_PortType_part_7.cc IPL4asp_Types_part_1.cc IPL4asp_Types_part_2.cc IPL4asp_Types_part_3.cc IPL4asp_Types_part_4.cc IPL4asp_Types_part_5.cc IPL4asp_Types_part_6.cc IPL4asp_Types_part_7.cc IuUP_Emulation_part_1.cc IuUP_Emulation_part_2.cc IuUP_Emulation_part_3.cc IuUP_Emulation_part_4.cc IuUP_Emulation_part_5.cc IuUP_Emulation_part_6.cc IuUP_Emulation_part_7.cc IuUP_Types_part_1.cc IuUP_Types_part_2.cc IuUP_Types_part_3.cc IuUP_Types_part_4.cc IuUP_Types_part_5.cc IuUP_Types_part_6.cc IuUP_Types_part_7.cc Iuh_CodecPort_part_1.cc Iuh_CodecPort_part_2.cc Iuh_CodecPort_part_3.cc Iuh_CodecPort_part_4.cc Iuh_CodecPort_part_5.cc Iuh_CodecPort_part_6.cc Iuh_CodecPort_part_7.cc Iuh_CodecPort_CtrlFunct_part_1.cc Iuh_CodecPort_CtrlFunct_part_2.cc Iuh_CodecPort_CtrlFunct_part_3.cc Iuh_CodecPort_CtrlFunct_part_4.cc Iuh_CodecPort_CtrlFunct_part_5.cc Iuh_CodecPort_CtrlFunct_part_6.cc Iuh_CodecPort_CtrlFunct_part_7.cc Iuh_Emulation_part_1.cc Iuh_Emulation_part_2.cc Iuh_Emulation_part_3.cc Iuh_Emulation_part_4.cc Iuh_Emulation_part_5.cc Iuh_Emulation_part_6.cc Iuh_Emulation_part_7.cc Iuh_Types_part_1.cc Iuh_Types_part_2.cc Iuh_Types_part_3.cc Iuh_Types_part_4.cc Iuh_Types_part_5.cc Iuh_Types_part_6.cc Iuh_Types_part_7.cc L3_Common_part_1.cc L3_Common_part_2.cc L3_Common_part_3.cc L3_Common_part_4.cc L3_Common_part_5.cc L3_Common_part_6.cc L3_Common_part_7.cc L3_Templates_part_1.cc L3_Templates_part_2.cc L3_Templates_part_3.cc L3_Templates_part_4.cc L3_Templates_part_5.cc L3_Templates_part_6.cc L3_Templates_part_7.cc M3UA_Emulation_part_1.cc M3UA_Emulation_part_2.cc M3UA_Emulation_part_3.cc M3UA_Emulation_part_4.cc M3UA_Emulation_part_5.cc M3UA_Emulation_part_6.cc M3UA_Emulation_part_7.cc M3UA_Types_part_1.cc M3UA_Types_part_2.cc M3UA_Types_part_3.cc M3UA_Types_part_4.cc M3UA_Types_part_5.cc M3UA_Types_part_6.cc M3UA_Types_part_7.cc MGCP_CodecPort_part_1.cc MGCP_CodecPort_part_2.cc MGCP_CodecPort_part_3.cc MGCP_CodecPort_part_4.cc MGCP_CodecPort_part_5.cc MGCP_CodecPort_part_6.cc MGCP_CodecPort_part_7.cc MGCP_CodecPort_CtrlFunct_part_1.cc MGCP_CodecPort_CtrlFunct_part_2.cc MGCP_CodecPort_CtrlFunct_part_3.cc MGCP_CodecPort_CtrlFunct_part_4.cc MGCP_CodecPort_CtrlFunct_part_5.cc MGCP_CodecPort_CtrlFunct_part_6.cc MGCP_CodecPort_CtrlFunct_part_7.cc MGCP_Emulation_part_1.cc MGCP_Emulation_part_2.cc MGCP_Emulation_part_3.cc MGCP_Emulation_part_4.cc MGCP_Emulation_part_5.cc MGCP_Emulation_part_6.cc MGCP_Emulation_part_7.cc MGCP_Templates_part_1.cc MGCP_Templates_part_2.cc MGCP_Templates_part_3.cc MGCP_Templates_part_4.cc MGCP_Templates_part_5.cc MGCP_Templates_part_6.cc MGCP_Templates_part_7.cc MGCP_Types_part_1.cc MGCP_Types_part_2.cc MGCP_Types_part_3.cc MGCP_Types_part_4.cc MGCP_Types_part_5.cc MGCP_Types_part_6.cc MGCP_Types_part_7.cc MTP3asp_PortType_part_1.cc MTP3asp_PortType_part_2.cc MTP3asp_PortType_part_3.cc MTP3asp_PortType_part_4.cc MTP3asp_PortType_part_5.cc MTP3asp_PortType_part_6.cc MTP3asp_PortType_part_7.cc MTP3asp_Types_part_1.cc MTP3asp_Types_part_2.cc MTP3asp_Types_part_3.cc MTP3asp_Types_part_4.cc MTP3asp_Types_part_5.cc MTP3asp_Types_part_6.cc MTP3asp_Types_part_7.cc Misc_Helpers_part_1.cc Misc_Helpers_part_2.cc Misc_Helpers_part_3.cc Misc_Helpers_part_4.cc Misc_Helpers_part_5.cc Misc_Helpers_part_6.cc Misc_Helpers_part_7.cc MobileL3_CC_Types_part_1.cc MobileL3_CC_Types_part_2.cc MobileL3_CC_Types_part_3.cc MobileL3_CC_Types_part_4.cc MobileL3_CC_Types_part_5.cc MobileL3_CC_Types_part_6.cc MobileL3_CC_Types_part_7.cc MobileL3_CommonIE_Types_part_1.cc MobileL3_CommonIE_Types_part_2.cc MobileL3_CommonIE_Types_part_3.cc MobileL3_CommonIE_Types_part_4.cc MobileL3_CommonIE_Types_part_5.cc MobileL3_CommonIE_Types_part_6.cc MobileL3_CommonIE_Types_part_7.cc MobileL3_GMM_SM_Types_part_1.cc MobileL3_GMM_SM_Types_part_2.cc MobileL3_GMM_SM_Types_part_3.cc MobileL3_GMM_SM_Types_part_4.cc MobileL3_GMM_SM_Types_part_5.cc MobileL3_GMM_SM_Types_part_6.cc MobileL3_GMM_SM_Types_part_7.cc MobileL3_MM_Types_part_1.cc MobileL3_MM_Types_part_2.cc MobileL3_MM_Types_part_3.cc MobileL3_MM_Types_part_4.cc MobileL3_MM_Types_part_5.cc MobileL3_MM_Types_part_6.cc MobileL3_MM_Types_part_7.cc MobileL3_RRM_Types_part_1.cc MobileL3_RRM_Types_part_2.cc MobileL3_RRM_Types_part_3.cc MobileL3_RRM_Types_part_4.cc MobileL3_RRM_Types_part_5.cc MobileL3_RRM_Types_part_6.cc MobileL3_RRM_Types_part_7.cc MobileL3_SMS_Types_part_1.cc MobileL3_SMS_Types_part_2.cc MobileL3_SMS_Types_part_3.cc MobileL3_SMS_Types_part_4.cc MobileL3_SMS_Types_part_5.cc MobileL3_SMS_Types_part_6.cc MobileL3_SMS_Types_part_7.cc MobileL3_SS_Types_part_1.cc MobileL3_SS_Types_part_2.cc MobileL3_SS_Types_part_3.cc MobileL3_SS_Types_part_4.cc MobileL3_SS_Types_part_5.cc MobileL3_SS_Types_part_6.cc MobileL3_SS_Types_part_7.cc MobileL3_Types_part_1.cc MobileL3_Types_part_2.cc MobileL3_Types_part_3.cc MobileL3_Types_part_4.cc MobileL3_Types_part_5.cc MobileL3_Types_part_6.cc MobileL3_Types_part_7.cc Mutex_part_1.cc Mutex_part_2.cc Mutex_part_3.cc Mutex_part_4.cc Mutex_part_5.cc Mutex_part_6.cc Mutex_part_7.cc Native_Functions_part_1.cc Native_Functions_part_2.cc Native_Functions_part_3.cc Native_Functions_part_4.cc Native_Functions_part_5.cc Native_Functions_part_6.cc Native_Functions_part_7.cc Osmocom_CTRL_Adapter_part_1.cc Osmocom_CTRL_Adapter_part_2.cc Osmocom_CTRL_Adapter_part_3.cc Osmocom_CTRL_Adapter_part_4.cc Osmocom_CTRL_Adapter_part_5.cc Osmocom_CTRL_Adapter_part_6.cc Osmocom_CTRL_Adapter_part_7.cc Osmocom_CTRL_Functions_part_1.cc Osmocom_CTRL_Functions_part_2.cc Osmocom_CTRL_Functions_part_3.cc Osmocom_CTRL_Functions_part_4.cc Osmocom_CTRL_Functions_part_5.cc Osmocom_CTRL_Functions_part_6.cc Osmocom_CTRL_Functions_part_7.cc Osmocom_CTRL_Types_part_1.cc Osmocom_CTRL_Types_part_2.cc Osmocom_CTRL_Types_part_3.cc Osmocom_CTRL_Types_part_4.cc Osmocom_CTRL_Types_part_5.cc Osmocom_CTRL_Types_part_6.cc Osmocom_CTRL_Types_part_7.cc Osmocom_Types_part_1.cc Osmocom_Types_part_2.cc Osmocom_Types_part_3.cc Osmocom_Types_part_4.cc Osmocom_Types_part_5.cc Osmocom_Types_part_6.cc Osmocom_Types_part_7.cc Osmocom_VTY_Functions_part_1.cc Osmocom_VTY_Functions_part_2.cc Osmocom_VTY_Functions_part_3.cc Osmocom_VTY_Functions_part_4.cc Osmocom_VTY_Functions_part_5.cc Osmocom_VTY_Functions_part_6.cc Osmocom_VTY_Functions_part_7.cc PFCP_CodecPort_part_1.cc PFCP_CodecPort_part_2.cc PFCP_CodecPort_part_3.cc PFCP_CodecPort_part_4.cc PFCP_CodecPort_part_5.cc PFCP_CodecPort_part_6.cc PFCP_CodecPort_part_7.cc PFCP_CodecPort_CtrlFunct_part_1.cc PFCP_CodecPort_CtrlFunct_part_2.cc PFCP_CodecPort_CtrlFunct_part_3.cc PFCP_CodecPort_CtrlFunct_part_4.cc PFCP_CodecPort_CtrlFunct_part_5.cc PFCP_CodecPort_CtrlFunct_part_6.cc PFCP_CodecPort_CtrlFunct_part_7.cc PFCP_Emulation_part_1.cc PFCP_Emulation_part_2.cc PFCP_Emulation_part_3.cc PFCP_Emulation_part_4.cc PFCP_Emulation_part_5.cc PFCP_Emulation_part_6.cc PFCP_Emulation_part_7.cc PFCP_Templates_part_1.cc PFCP_Templates_part_2.cc PFCP_Templates_part_3.cc PFCP_Templates_part_4.cc PFCP_Templates_part_5.cc PFCP_Templates_part_6.cc PFCP_Templates_part_7.cc PFCP_Types_part_1.cc PFCP_Types_part_2.cc PFCP_Types_part_3.cc PFCP_Types_part_4.cc PFCP_Types_part_5.cc PFCP_Types_part_6.cc PFCP_Types_part_7.cc RANAP_CodecPort_part_1.cc RANAP_CodecPort_part_2.cc RANAP_CodecPort_part_3.cc RANAP_CodecPort_part_4.cc RANAP_CodecPort_part_5.cc RANAP_CodecPort_part_6.cc RANAP_CodecPort_part_7.cc RANAP_Templates_part_1.cc RANAP_Templates_part_2.cc RANAP_Templates_part_3.cc RANAP_Templates_part_4.cc RANAP_Templates_part_5.cc RANAP_Templates_part_6.cc RANAP_Templates_part_7.cc RANAP_Types_part_1.cc RANAP_Types_part_2.cc RANAP_Types_part_3.cc RANAP_Types_part_4.cc RANAP_Types_part_5.cc RANAP_Types_part_6.cc RANAP_Types_part_7.cc RTP_CodecPort_part_1.cc RTP_CodecPort_part_2.cc RTP_CodecPort_part_3.cc RTP_CodecPort_part_4.cc RTP_CodecPort_part_5.cc RTP_CodecPort_part_6.cc RTP_CodecPort_part_7.cc RTP_CodecPort_CtrlFunct_part_1.cc RTP_CodecPort_CtrlFunct_part_2.cc RTP_CodecPort_CtrlFunct_part_3.cc RTP_CodecPort_CtrlFunct_part_4.cc RTP_CodecPort_CtrlFunct_part_5.cc RTP_CodecPort_CtrlFunct_part_6.cc RTP_CodecPort_CtrlFunct_part_7.cc RTP_Emulation_part_1.cc RTP_Emulation_part_2.cc RTP_Emulation_part_3.cc RTP_Emulation_part_4.cc RTP_Emulation_part_5.cc RTP_Emulation_part_6.cc RTP_Emulation_part_7.cc RTP_Types_part_1.cc RTP_Types_part_2.cc RTP_Types_part_3.cc RTP_Types_part_4.cc RTP_Types_part_5.cc RTP_Types_part_6.cc RTP_Types_part_7.cc RUA_Emulation_part_1.cc RUA_Emulation_part_2.cc RUA_Emulation_part_3.cc RUA_Emulation_part_4.cc RUA_Emulation_part_5.cc RUA_Emulation_part_6.cc RUA_Emulation_part_7.cc RUA_Templates_part_1.cc RUA_Templates_part_2.cc RUA_Templates_part_3.cc RUA_Templates_part_4.cc RUA_Templates_part_5.cc RUA_Templates_part_6.cc RUA_Templates_part_7.cc RUA_Types_part_1.cc RUA_Types_part_2.cc RUA_Types_part_3.cc RUA_Types_part_4.cc RUA_Types_part_5.cc RUA_Types_part_6.cc RUA_Types_part_7.cc SCCP_Emulation_part_1.cc SCCP_Emulation_part_2.cc SCCP_Emulation_part_3.cc SCCP_Emulation_part_4.cc SCCP_Emulation_part_5.cc SCCP_Emulation_part_6.cc SCCP_Emulation_part_7.cc SCCP_Templates_part_1.cc SCCP_Templates_part_2.cc SCCP_Templates_part_3.cc SCCP_Templates_part_4.cc SCCP_Templates_part_5.cc SCCP_Templates_part_6.cc SCCP_Templates_part_7.cc SCCP_Types_part_1.cc SCCP_Types_part_2.cc SCCP_Types_part_3.cc SCCP_Types_part_4.cc SCCP_Types_part_5.cc SCCP_Types_part_6.cc SCCP_Types_part_7.cc SCCPasp_Types_part_1.cc SCCPasp_Types_part_2.cc SCCPasp_Types_part_3.cc SCCPasp_Types_part_4.cc SCCPasp_Types_part_5.cc SCCPasp_Types_part_6.cc SCCPasp_Types_part_7.cc SCTP_Templates_part_1.cc SCTP_Templates_part_2.cc SCTP_Templates_part_3.cc SCTP_Templates_part_4.cc SCTP_Templates_part_5.cc SCTP_Templates_part_6.cc SCTP_Templates_part_7.cc SCTPasp_PortType_part_1.cc SCTPasp_PortType_part_2.cc SCTPasp_PortType_part_3.cc SCTPasp_PortType_part_4.cc SCTPasp_PortType_part_5.cc SCTPasp_PortType_part_6.cc SCTPasp_PortType_part_7.cc SCTPasp_Types_part_1.cc SCTPasp_Types_part_2.cc SCTPasp_Types_part_3.cc SCTPasp_Types_part_4.cc SCTPasp_Types_part_5.cc SCTPasp_Types_part_6.cc SCTPasp_Types_part_7.cc SDP_Templates_part_1.cc SDP_Templates_part_2.cc SDP_Templates_part_3.cc SDP_Templates_part_4.cc SDP_Templates_part_5.cc SDP_Templates_part_6.cc SDP_Templates_part_7.cc SDP_Types_part_1.cc SDP_Types_part_2.cc SDP_Types_part_3.cc SDP_Types_part_4.cc SDP_Types_part_5.cc SDP_Types_part_6.cc SDP_Types_part_7.cc Socket_API_Definitions_part_1.cc Socket_API_Definitions_part_2.cc Socket_API_Definitions_part_3.cc Socket_API_Definitions_part_4.cc Socket_API_Definitions_part_5.cc Socket_API_Definitions_part_6.cc Socket_API_Definitions_part_7.cc StatsD_CodecPort_part_1.cc StatsD_CodecPort_part_2.cc StatsD_CodecPort_part_3.cc StatsD_CodecPort_part_4.cc StatsD_CodecPort_part_5.cc StatsD_CodecPort_part_6.cc StatsD_CodecPort_part_7.cc StatsD_CodecPort_CtrlFunct_part_1.cc StatsD_CodecPort_CtrlFunct_part_2.cc StatsD_CodecPort_CtrlFunct_part_3.cc StatsD_CodecPort_CtrlFunct_part_4.cc StatsD_CodecPort_CtrlFunct_part_5.cc StatsD_CodecPort_CtrlFunct_part_6.cc StatsD_CodecPort_CtrlFunct_part_7.cc StatsD_Types_part_1.cc StatsD_Types_part_2.cc StatsD_Types_part_3.cc StatsD_Types_part_4.cc StatsD_Types_part_5.cc StatsD_Types_part_6.cc StatsD_Types_part_7.cc TCCConversion_Functions_part_1.cc TCCConversion_Functions_part_2.cc TCCConversion_Functions_part_3.cc TCCConversion_Functions_part_4.cc TCCConversion_Functions_part_5.cc TCCConversion_Functions_part_6.cc TCCConversion_Functions_part_7.cc TCCEncoding_Functions_part_1.cc TCCEncoding_Functions_part_2.cc TCCEncoding_Functions_part_3.cc TCCEncoding_Functions_part_4.cc TCCEncoding_Functions_part_5.cc TCCEncoding_Functions_part_6.cc TCCEncoding_Functions_part_7.cc TCCInterface_Functions_part_1.cc TCCInterface_Functions_part_2.cc TCCInterface_Functions_part_3.cc TCCInterface_Functions_part_4.cc TCCInterface_Functions_part_5.cc TCCInterface_Functions_part_6.cc TCCInterface_Functions_part_7.cc TELNETasp_PortType_part_1.cc TELNETasp_PortType_part_2.cc TELNETasp_PortType_part_3.cc TELNETasp_PortType_part_4.cc TELNETasp_PortType_part_5.cc TELNETasp_PortType_part_6.cc TELNETasp_PortType_part_7.cc UD_PortType_part_1.cc UD_PortType_part_2.cc UD_PortType_part_3.cc UD_PortType_part_4.cc UD_PortType_part_5.cc UD_PortType_part_6.cc UD_PortType_part_7.cc UD_Types_part_1.cc UD_Types_part_2.cc UD_Types_part_3.cc UD_Types_part_4.cc UD_Types_part_5.cc UD_Types_part_6.cc UD_Types_part_7.cc $(TTCN3_PP_MODULES:.ttcnpp=.cc) IPA_Emulation_part_1.cc IPA_Emulation_part_2.cc IPA_Emulation_part_3.cc IPA_Emulation_part_4.cc IPA_Emulation_part_5.cc IPA_Emulation_part_6.cc IPA_Emulation_part_7.cc RAN_Adapter_part_1.cc RAN_Adapter_part_2.cc RAN_Adapter_part_3.cc RAN_Adapter_part_4.cc RAN_Adapter_part_5.cc RAN_Adapter_part_6.cc RAN_Adapter_part_7.cc RAN_Emulation_part_1.cc RAN_Emulation_part_2.cc RAN_Emulation_part_3.cc RAN_Emulation_part_4.cc RAN_Emulation_part_5.cc RAN_Emulation_part_6.cc RAN_Emulation_part_7.cc SCCP_Adapter_part_1.cc SCCP_Adapter_part_2.cc SCCP_Adapter_part_3.cc SCCP_Adapter_part_4.cc SCCP_Adapter_part_5.cc SCCP_Adapter_part_6.cc SCCP_Adapter_part_7.cc SCCP_Mapping_part_1.cc SCCP_Mapping_part_2.cc SCCP_Mapping_part_3.cc SCCP_Mapping_part_4.cc SCCP_Mapping_part_5.cc SCCP_Mapping_part_6.cc SCCP_Mapping_part_7.cc StatsD_Checker_part_1.cc StatsD_Checker_part_2.cc StatsD_Checker_part_3.cc StatsD_Checker_part_4.cc StatsD_Checker_part_5.cc StatsD_Checker_part_6.cc StatsD_Checker_part_7.cc $(ASN1_MODULES:.asn=.cc) HNBAP_CommonDataTypes_part_1.cc HNBAP_CommonDataTypes_part_2.cc HNBAP_CommonDataTypes_part_3.cc HNBAP_CommonDataTypes_part_4.cc HNBAP_CommonDataTypes_part_5.cc HNBAP_CommonDataTypes_part_6.cc HNBAP_CommonDataTypes_part_7.cc HNBAP_Constants_part_1.cc HNBAP_Constants_part_2.cc HNBAP_Constants_part_3.cc HNBAP_Constants_part_4.cc HNBAP_Constants_part_5.cc HNBAP_Constants_part_6.cc HNBAP_Constants_part_7.cc HNBAP_Containers_part_1.cc HNBAP_Containers_part_2.cc HNBAP_Containers_part_3.cc HNBAP_Containers_part_4.cc HNBAP_Containers_part_5.cc HNBAP_Containers_part_6.cc HNBAP_Containers_part_7.cc HNBAP_IEs_part_1.cc HNBAP_IEs_part_2.cc HNBAP_IEs_part_3.cc HNBAP_IEs_part_4.cc HNBAP_IEs_part_5.cc HNBAP_IEs_part_6.cc HNBAP_IEs_part_7.cc HNBAP_PDU_Contents_part_1.cc HNBAP_PDU_Contents_part_2.cc HNBAP_PDU_Contents_part_3.cc HNBAP_PDU_Contents_part_4.cc HNBAP_PDU_Contents_part_5.cc HNBAP_PDU_Contents_part_6.cc HNBAP_PDU_Contents_part_7.cc HNBAP_PDU_Descriptions_part_1.cc HNBAP_PDU_Descriptions_part_2.cc HNBAP_PDU_Descriptions_part_3.cc HNBAP_PDU_Descriptions_part_4.cc HNBAP_PDU_Descriptions_part_5.cc HNBAP_PDU_Descriptions_part_6.cc HNBAP_PDU_Descriptions_part_7.cc RANAP_CommonDataTypes_part_1.cc RANAP_CommonDataTypes_part_2.cc RANAP_CommonDataTypes_part_3.cc RANAP_CommonDataTypes_part_4.cc RANAP_CommonDataTypes_part_5.cc RANAP_CommonDataTypes_part_6.cc RANAP_CommonDataTypes_part_7.cc RANAP_Constants_part_1.cc RANAP_Constants_part_2.cc RANAP_Constants_part_3.cc RANAP_Constants_part_4.cc RANAP_Constants_part_5.cc RANAP_Constants_part_6.cc RANAP_Constants_part_7.cc RANAP_Containers_part_1.cc RANAP_Containers_part_2.cc RANAP_Containers_part_3.cc RANAP_Containers_part_4.cc RANAP_Containers_part_5.cc RANAP_Containers_part_6.cc RANAP_Containers_part_7.cc RANAP_IEs_part_1.cc RANAP_IEs_part_2.cc RANAP_IEs_part_3.cc RANAP_IEs_part_4.cc RANAP_IEs_part_5.cc RANAP_IEs_part_6.cc RANAP_IEs_part_7.cc RANAP_PDU_Contents_part_1.cc RANAP_PDU_Contents_part_2.cc RANAP_PDU_Contents_part_3.cc RANAP_PDU_Contents_part_4.cc RANAP_PDU_Contents_part_5.cc RANAP_PDU_Contents_part_6.cc RANAP_PDU_Contents_part_7.cc RANAP_PDU_Descriptions_part_1.cc RANAP_PDU_Descriptions_part_2.cc RANAP_PDU_Descriptions_part_3.cc RANAP_PDU_Descriptions_part_4.cc RANAP_PDU_Descriptions_part_5.cc RANAP_PDU_Descriptions_part_6.cc RANAP_PDU_Descriptions_part_7.cc RUA_CommonDataTypes_part_1.cc RUA_CommonDataTypes_part_2.cc RUA_CommonDataTypes_part_3.cc RUA_CommonDataTypes_part_4.cc RUA_CommonDataTypes_part_5.cc RUA_CommonDataTypes_part_6.cc RUA_CommonDataTypes_part_7.cc RUA_Constants_part_1.cc RUA_Constants_part_2.cc RUA_Constants_part_3.cc RUA_Constants_part_4.cc RUA_Constants_part_5.cc RUA_Constants_part_6.cc RUA_Constants_part_7.cc RUA_Containers_part_1.cc RUA_Containers_part_2.cc RUA_Containers_part_3.cc RUA_Containers_part_4.cc RUA_Containers_part_5.cc RUA_Containers_part_6.cc RUA_Containers_part_7.cc RUA_IEs_part_1.cc RUA_IEs_part_2.cc RUA_IEs_part_3.cc RUA_IEs_part_4.cc RUA_IEs_part_5.cc RUA_IEs_part_6.cc RUA_IEs_part_7.cc RUA_PDU_Contents_part_1.cc RUA_PDU_Contents_part_2.cc RUA_PDU_Contents_part_3.cc RUA_PDU_Contents_part_4.cc RUA_PDU_Contents_part_5.cc RUA_PDU_Contents_part_6.cc RUA_PDU_Contents_part_7.cc RUA_PDU_Descriptions_part_1.cc RUA_PDU_Descriptions_part_2.cc RUA_PDU_Descriptions_part_3.cc RUA_PDU_Descriptions_part_4.cc RUA_PDU_Descriptions_part_5.cc RUA_PDU_Descriptions_part_6.cc RUA_PDU_Descriptions_part_7.cc GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(TTCN3_PP_MODULES:.ttcnpp=.hh) $(ASN1_MODULES:.asn=.hh) # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = SDP_parse_.tab.c lex.SDP_parse_.c IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc IuUP_EncDec.cc Iuh_CodecPort_CtrlFunctDef.cc Native_FunctionDefs.cc RTP_CodecPort_CtrlFunctDef.cc RTP_EncDec.cc SCTPasp_PT.cc SDP_EncDec.cc StatsD_CodecPort_CtrlFunctdef.cc TCCConversion.cc TCCEncoding.cc TCCInterface.cc TELNETasp_PT.cc HNBAP_EncDec.cc RUA_EncDec.cc RANAP_EncDec.cc MGCP_CodecPort_CtrlFunctDef.cc UD_PT.cc PFCP_CodecPort_CtrlFunctDef.cc USER_HEADERS = SDP_parse_.tab.h IPL4asp_PT.hh SCTPasp_PT.hh TELNETasp_PT.hh UD_PT.hh # Shared object files of this project: SHARED_OBJECTS = $(GENERATED_SOURCES:.cc=.so) SDP_parse_.tab.so lex.SDP_parse_.so IPA_CodecPort_CtrlFunctDef.so IPL4asp_PT.so IPL4asp_discovery.so IuUP_EncDec.so Iuh_CodecPort_CtrlFunctDef.so Native_FunctionDefs.so RTP_CodecPort_CtrlFunctDef.so RTP_EncDec.so SCTPasp_PT.so SDP_EncDec.so StatsD_CodecPort_CtrlFunctdef.so TCCConversion.so TCCEncoding.so TCCInterface.so TELNETasp_PT.so HNBAP_EncDec.so RUA_EncDec.so RANAP_EncDec.so MGCP_CodecPort_CtrlFunctDef.so UD_PT.so PFCP_CodecPort_CtrlFunctDef.so # Object files of this project that are needed for the executable test suite: OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) USER_OBJECTS = SDP_parse_.tab.o lex.SDP_parse_.o IPA_CodecPort_CtrlFunctDef.o IPL4asp_PT.o IPL4asp_discovery.o IuUP_EncDec.o Iuh_CodecPort_CtrlFunctDef.o Native_FunctionDefs.o RTP_CodecPort_CtrlFunctDef.o RTP_EncDec.o SCTPasp_PT.o SDP_EncDec.o StatsD_CodecPort_CtrlFunctdef.o TCCConversion.o TCCEncoding.o TCCInterface.o TELNETasp_PT.o HNBAP_EncDec.o RUA_EncDec.o RANAP_EncDec.o MGCP_CodecPort_CtrlFunctDef.o UD_PT.o PFCP_CodecPort_CtrlFunctDef.o DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) # Other files of the project (Makefile, configuration files, etc.) # that will be added to the archived source files: OTHER_FILES = Makefile # The name of the executable test suite: EXECUTABLE = HNBGW_Tests LIBRARY = lib$(EXECUTABLE).so TARGET = $(EXECUTABLE) # # Do not modify these unless you know what you are doing... # Platform specific additional libraries: # SOLARIS_LIBS = -lsocket -lnsl -lxml2 SOLARIS8_LIBS = -lsocket -lnsl -lxml2 LINUX_LIBS = -lxml2 -lsctp -lfftranscode -lssl -lpthread FREEBSD_LIBS = -lxml2 WIN32_LIBS = -lxml2 # # Rules for building the executable... # all: $(TARGET) ; shared_objects: $(SHARED_OBJECTS) ; executable: $(EXECUTABLE) ; library: $(LIBRARY) ; objects: $(OBJECTS) compile; $(EXECUTABLE): $(SHARED_OBJECTS) @echo ' CCLD $@' @if $(CXX) $(LDFLAGS) -o $@ -Wl,--no-as-needed $^ \ -L$(TTCN3_DIR)/lib$(TTCN3_SUBDIR) -l$(TTCN3_LIB) \ -L$(OPENSSL_DIR)/$(OPENSSL_LIB_DIR) -lcrypto \ -L$(XMLDIR)/lib $($(PLATFORM)_LIBS); \ then : ; else $(TTCN3_DIR)/bin/titanver $(OBJECTS); exit 1; fi $(LIBRARY): $(OBJECTS) @echo ' CCLD $@' @$(CXX) -shared -o $@ $(OBJECTS) .cc.o .c.o: @echo ' CC $@' @$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< .cc.d .c.d: @echo ' DEP ' '$<'; set -e; \ $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ [ -s $@ ] || rm -f $@ %.so: %.o @echo ' CCLD $@' @$(CXX) -shared -o $@ $< %.ttcn: %.ttcnpp $(TTCN3_INCLUDES) @echo ' PP $@' @$(CPP) -x c -nostdinc $(CPPFLAGS_TTCN3) $< $@ preprocess: $(PREPROCESSED_TTCN3_MODULES) ; $(GENERATED_SOURCES) $(GENERATED_HEADERS): compile @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi check: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ port: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) @echo ' TTCN *.ttcn *.asn' @$(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ \ - $(filter-out $(TTCN3_MODULES_TO_SPLIT) $(PREPROCESSED_TTCN3_MODULES_TO_SPLIT) $(ASN1_MODULES_TO_SPLIT), $?) \ -U 8 $(filter $(TTCN3_MODULES_TO_SPLIT) $(PREPROCESSED_TTCN3_MODULES_TO_SPLIT) $(ASN1_MODULES_TO_SPLIT), $?) touch $@ clean: -$(RM) $(EXECUTABLE) $(LIBRARY) $(OBJECTS) -$(RM) $(GENERATED_HEADERS) -$(RM) $(GENERATED_SOURCES) -$(RM) $(SHARED_OBJECTS) -$(RM) $(PREPROCESSED_TTCN3_MODULES) -$(RM) tags *.log -$(RM) compile $(DEPFILES) dep: $(GENERATED_SOURCES) $(USER_SOURCES) ; ifeq ($(findstring n,$(MAKEFLAGS)),) ifeq ($(filter clean check port compile archive diag preprocess,$(MAKECMDGOALS)),) -include $(DEPFILES) endif endif archive: mkdir -p $(ARCHIVE_DIR) tar -cvhf - $(TTCN3_MODULES) $(TTCN3_PP_MODULES) \ $(TTCN3_INCLUDES) $(ASN1_MODULES) \ $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz diag: $(TTCN3_DIR)/bin/compiler -v 2>&1 $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 $(CXX) -v 2>&1 @echo TTCN3_DIR=$(TTCN3_DIR) @echo OPENSSL_DIR=$(OPENSSL_DIR) @echo OPENSSL_LIB_DIR=$(OPENSSL_LIB_DIR) @echo XMLDIR=$(XMLDIR) @echo PLATFORM=$(PLATFORM) # # Add your rules here if necessary... #