############################################################################## # Copyright (c) 2000-2016 Ericsson Telecom AB # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # Baji, Laszlo # Balasko, Jeno # Baranyi, Botond # Kovacs, Ferenc # Raduly, Csaba # ############################################################################## TOPDIR := ../.. include ../../Makefile.regression ORIG ?= . ifdef SRCDIR ORIGSRC := $(ABS_SRC) #$(warning yes SRC, $(ORIGSRC)) else ORIGSRC := $(ORIG) #$(warning no SRC, $(ORIGSRC)) endif # 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 check clean dep objects preprocess .SUFFIXES: .d # # Set these variables... # # C preprocessor used for TTCN-3 files: CPP = cpp # Flags for the C++ preprocessor (and makedepend as well): CPPFLAGS += -D$(PLATFORM) # Flags for the C++ compiler: (-Wall already in) CXXFLAGS += -g -W -Wformat=2 # Flags for the linker: #LDFLAGS += -g -rdynamic WIN32_LIBS += -liconv FREEBSD_LIBS += -liconv # Local flags for Titan (can be overridden from the environment or commandline) TTCNFLAGS += -b -r -x # Flags for the TTCN-3 and ASN.1 compiler # (common flags already set in Makefile.regression) COMPILER_FLAGS += $(TTCNFLAGS) # $(sort ) also eliminates duplicates COMPILER_FLAGS := $(sort $(COMPILER_FLAGS)) # Execution mode: (either ttcn3 or ttcn3-parallel) TTCN3_LIB := ttcn3$(RT2_SUFFIX)$(DYNAMIC_SUFFIX) # # You may change these variables. Add your files if necessary... # # TTCN-3 modules to preprocess: TTCN3_PP_MODULES := $(wildcard $(ORIGSRC)/../TTCNandXML/*.ttcnpp) # Files to include in TTCN-3 preprocessed modules: TTCN3_INCLUDES := $(TOP_SRC)/XML/macros.ttcnin # ASN.1 modules of this project: ASN1_MODULES := # TTCN-3 source files generated by the C preprocessor: PREPROCESSED_TTCN3_MODULES := $(TTCN3_PP_MODULES:.ttcnpp=.ttcn) # TTCN-3 modules of this project: ALL_TTCN3_MODULES := $(wildcard $(ORIGSRC)/../TTCNandXML/*.ttcn) # Eliminate preprocessed modules TTCN3_MODULES := $(filter-out $(PREPROCESSED_TTCN3_MODULES), $(ALL_TTCN3_MODULES)) TTCN3_MODULES += $(TOP_SRC)/iconv/converter.ttcn # C++ source & header files generated from the TTCN-3 & ASN.1 modules of # this project: GENERATED_SOURCES := $(notdir $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc)) GENERATED_HEADERS := $(GENERATED_SOURCES:.cc=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES := iconver.cc Flatten.cc USER_HEADERS := $(USER_SOURCES:.cc=.hh) # Object files of this project that are needed for the executable test suite: OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o) # The name of the executable test suite: TARGET = TTCNandXML$(RT2_SUFFIX)$(EXESUFFIX) # # Rules for building the executable... # all: $(TARGET) ; target: $(TARGET) ; objects: $(OBJECTS) ; ifeq ($(findstring dynamic,$(TTCN3_LIB)),) # not dynamic CORELIB_BINARY := $(TTCN3_DIR)/lib/lib$(TTCN3_LIB).a else CORELIB_BINARY := $(TTCN3_DIR)/lib/lib$(TTCN3_LIB).so endif $(TARGET): $(OBJECTS) $(CORELIB_BINARY) $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) \ -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \ -L$(OPENSSL_DIR)/lib -lcrypto \ $($(PLATFORM)_LIBS) \ || $(TTCN3_DIR)/bin/titanver $(OBJECTS) .cc.o .c.o: @echo '(C++)' $<; $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< .cc.d .c.d: @echo Creating dependency file for '$<'; set -e; \ $(CXX) -MM $(CPPFLAGS) $(CXXFLAGS) $< \ | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ [ -s $@ ] || rm -f $@ %.ttcn: %.ttcnpp $(TTCN3_INCLUDES) $(CPP) -x c -nostdinc $(CPPFLAGS_TTCN3) $< $@ preprocess: $(PREPROCESSED_TTCN3_MODULES) ; $(GENERATED_SOURCES) $(GENERATED_HEADERS): compile @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi # ############################################################################ # compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) $(firstword $(TTCN3_COMPILER)) $(TTCN3_COMPILER) $(COMPILER_FLAGS) $(filter-out $(TTCN3_COMPILER), $^) touch $@ clean: -$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \ $(GENERATED_SOURCES) $(PREPROCESSED_TTCN3_MODULES) compile \ tags *.log *.stackdump distclean: clean -$(RM) $(DEPFILES) # # Add your rules here if necessary... # install: @echo You cannot be serious! re: rm -f compile RUN := $(shell which colortitan 2>/dev/null) ifeq ($(firstword $(RUN)),no) # stupid /bin/which on Solaris writes errors to stdout instead of stderr RUN := endif run: $(TARGET) config.cfg $(RUN) ./$^ debug: $(MAKE) run RUN='gdb --args' vpath %.cc $(TOP_SRC)/iconv dep: ; DEPFILES := $(OBJECTS:.o=.d) ifeq (,$(findstring n,$(MAKEFLAGS))) ifeq (,$(filter clean distclean,$(MAKECMDGOALS))) -include $(DEPFILES) endif endif ifdef SRCDIR $(foreach src, $(USER_SOURCES), $(eval vpath $(src) $(ABS_SRC))) endif