# This Makefile was generated by the Makefile Generator
# of the TTCN-3 Test Executor version 9.0.0
# for root (root@114173dc6707) on Mon Dec 22 14:23:04 2025

# Copyright (c) 2000-2023 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 =  -DBSSGP_EM_L3 -DIPA_EMULATION_CTRL -DNS_EMULATION_FR -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 -U 8 -D -q

# Execution mode: (either ttcn3 or ttcn3-parallel)
TTCN3_LIB = ttcn3-parallel-dynamic

# 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 = AF_PACKET_PortType.ttcn AF_PACKET_PortTypes.ttcn BSSGP_Types.ttcn FrameRelay_CodecPort.ttcn FrameRelay_Emulation.ttcn FrameRelay_Types.ttcn GBProxy_Tests.ttcn GSM_Types.ttcn General_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_Types.ttcn IPL4asp_Functions.ttcn IPL4asp_PortType.ttcn IPL4asp_Types.ttcn L3_Common.ttcn L3_Templates.ttcn LLC_Templates.ttcn LLC_Types.ttcn M3UA_Emulation.ttcn M3UA_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 NS_Provider_FR.ttcn NS_Provider_IPL4.ttcn NS_Types.ttcn Native_Functions.ttcn Osmocom_CTRL_Adapter.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Types.ttcn Osmocom_Gb_Types.ttcn Osmocom_Types.ttcn Osmocom_VTY_Functions.ttcn Q931_Types.ttcn Q933_Types.ttcn SCCP_Emulation.ttcn SCCP_Types.ttcn SCCPasp_Types.ttcn SCTPasp_PortType.ttcn SCTPasp_Types.ttcn SNDCP_Types.ttcn Socket_API_Definitions.ttcn TCCConversion_Functions.ttcn TCCInterface_Functions.ttcn TELNETasp_PortType.ttcn

# TTCN-3 modules to preprocess:
TTCN3_PP_MODULES = BSSGP_Emulation.ttcnpp IPA_Emulation.ttcnpp NS_Emulation.ttcnpp RAW_NS.ttcnpp SCCP_Mapping.ttcnpp

# Files to include in TTCN-3 preprocessed modules:
TTCN3_INCLUDES =

# ASN.1 modules of this project:
ASN1_MODULES =

# TTCN-3 source files generated by the C preprocessor:
PREPROCESSED_TTCN3_MODULES = BSSGP_Emulation.ttcn IPA_Emulation.ttcn NS_Emulation.ttcn RAW_NS.ttcn SCCP_Mapping.ttcn

# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
# this project:
GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) AF_PACKET_PortType_part_1.cc AF_PACKET_PortType_part_2.cc AF_PACKET_PortType_part_3.cc AF_PACKET_PortType_part_4.cc AF_PACKET_PortType_part_5.cc AF_PACKET_PortType_part_6.cc AF_PACKET_PortType_part_7.cc AF_PACKET_PortTypes_part_1.cc AF_PACKET_PortTypes_part_2.cc AF_PACKET_PortTypes_part_3.cc AF_PACKET_PortTypes_part_4.cc AF_PACKET_PortTypes_part_5.cc AF_PACKET_PortTypes_part_6.cc AF_PACKET_PortTypes_part_7.cc BSSGP_Types_part_1.cc BSSGP_Types_part_2.cc BSSGP_Types_part_3.cc BSSGP_Types_part_4.cc BSSGP_Types_part_5.cc BSSGP_Types_part_6.cc BSSGP_Types_part_7.cc FrameRelay_CodecPort_part_1.cc FrameRelay_CodecPort_part_2.cc FrameRelay_CodecPort_part_3.cc FrameRelay_CodecPort_part_4.cc FrameRelay_CodecPort_part_5.cc FrameRelay_CodecPort_part_6.cc FrameRelay_CodecPort_part_7.cc FrameRelay_Emulation_part_1.cc FrameRelay_Emulation_part_2.cc FrameRelay_Emulation_part_3.cc FrameRelay_Emulation_part_4.cc FrameRelay_Emulation_part_5.cc FrameRelay_Emulation_part_6.cc FrameRelay_Emulation_part_7.cc FrameRelay_Types_part_1.cc FrameRelay_Types_part_2.cc FrameRelay_Types_part_3.cc FrameRelay_Types_part_4.cc FrameRelay_Types_part_5.cc FrameRelay_Types_part_6.cc FrameRelay_Types_part_7.cc GBProxy_Tests_part_1.cc GBProxy_Tests_part_2.cc GBProxy_Tests_part_3.cc GBProxy_Tests_part_4.cc GBProxy_Tests_part_5.cc GBProxy_Tests_part_6.cc GBProxy_Tests_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 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 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 LLC_Templates_part_1.cc LLC_Templates_part_2.cc LLC_Templates_part_3.cc LLC_Templates_part_4.cc LLC_Templates_part_5.cc LLC_Templates_part_6.cc LLC_Templates_part_7.cc LLC_Types_part_1.cc LLC_Types_part_2.cc LLC_Types_part_3.cc LLC_Types_part_4.cc LLC_Types_part_5.cc LLC_Types_part_6.cc LLC_Types_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 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 NS_Provider_FR_part_1.cc NS_Provider_FR_part_2.cc NS_Provider_FR_part_3.cc NS_Provider_FR_part_4.cc NS_Provider_FR_part_5.cc NS_Provider_FR_part_6.cc NS_Provider_FR_part_7.cc NS_Provider_IPL4_part_1.cc NS_Provider_IPL4_part_2.cc NS_Provider_IPL4_part_3.cc NS_Provider_IPL4_part_4.cc NS_Provider_IPL4_part_5.cc NS_Provider_IPL4_part_6.cc NS_Provider_IPL4_part_7.cc NS_Types_part_1.cc NS_Types_part_2.cc NS_Types_part_3.cc NS_Types_part_4.cc NS_Types_part_5.cc NS_Types_part_6.cc NS_Types_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_Gb_Types_part_1.cc Osmocom_Gb_Types_part_2.cc Osmocom_Gb_Types_part_3.cc Osmocom_Gb_Types_part_4.cc Osmocom_Gb_Types_part_5.cc Osmocom_Gb_Types_part_6.cc Osmocom_Gb_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 Q931_Types_part_1.cc Q931_Types_part_2.cc Q931_Types_part_3.cc Q931_Types_part_4.cc Q931_Types_part_5.cc Q931_Types_part_6.cc Q931_Types_part_7.cc Q933_Types_part_1.cc Q933_Types_part_2.cc Q933_Types_part_3.cc Q933_Types_part_4.cc Q933_Types_part_5.cc Q933_Types_part_6.cc Q933_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_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 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 SNDCP_Types_part_1.cc SNDCP_Types_part_2.cc SNDCP_Types_part_3.cc SNDCP_Types_part_4.cc SNDCP_Types_part_5.cc SNDCP_Types_part_6.cc SNDCP_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 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 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 $(TTCN3_PP_MODULES:.ttcnpp=.cc) BSSGP_Emulation_part_1.cc BSSGP_Emulation_part_2.cc BSSGP_Emulation_part_3.cc BSSGP_Emulation_part_4.cc BSSGP_Emulation_part_5.cc BSSGP_Emulation_part_6.cc BSSGP_Emulation_part_7.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 NS_Emulation_part_1.cc NS_Emulation_part_2.cc NS_Emulation_part_3.cc NS_Emulation_part_4.cc NS_Emulation_part_5.cc NS_Emulation_part_6.cc NS_Emulation_part_7.cc RAW_NS_part_1.cc RAW_NS_part_2.cc RAW_NS_part_3.cc RAW_NS_part_4.cc RAW_NS_part_5.cc RAW_NS_part_6.cc RAW_NS_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 $(ASN1_MODULES:.asn=.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 = AF_PACKET_PT.cc BSSGP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc LLC_EncDec.cc Native_FunctionDefs.cc SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc TELNETasp_PT.cc
USER_HEADERS = AF_PACKET_PT.hh IPL4asp_PT.hh SCTPasp_PT.hh TELNETasp_PT.hh

# Shared object files of this project:
SHARED_OBJECTS = $(GENERATED_SOURCES:.cc=.so) $(USER_SOURCES:.cc=.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 = $(USER_SOURCES:.cc=.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 = GBProxy_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 -lsctp -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)/lib -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) $^ - $?
	touch $@

clean:
	-$(RM) $(EXECUTABLE) $(LIBRARY) $(OBJECTS)
	-$(RM) $(GENERATED_HEADERS)
	-$(RM) $(GENERATED_SOURCES)
	-$(RM) $(SHARED_OBJECTS)
	-$(RM) $(PREPROCESSED_TTCN3_MODULES)
	-$(RM) compile $(DEPFILES)
	-$(RM) tags *.log

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 XMLDIR=$(XMLDIR)
	@echo PLATFORM=$(PLATFORM)

#
# Add your rules here if necessary...
#

