ifeq (,$(ATS)) $(error ATS shall be defined) endif ifeq (,$(TOPDIR)) TOPDIR := . endif #ifeq (,$(TTCN3_DIR)) TTCN3_DIR := /cygdrive/c/Tools/Titan #endif ifeq (,$(OPENSSL_DIR)) OPENSSL_DIR := C:/Tools/OpenSSL/Win64 endif define IncludeModule undefine sources undefine modules undefine includes include $(1)/module.mk $$(foreach S, $$(sources), $$(eval all_sources += $(1)/$$(S))) $$(foreach I, $$(includes), $$(eval all_includes += $(1)/$$(I))) $$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $(1)/$$(M)))) endef all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src $(TOPDIR)/ccsrc/Framework defines := TITAN_RUNTIME_2 _NO_SOFTLINKS_ libs := -L$(TTCN3_DIR)/lib -lttcn3-rt2-parallel -lxml2 -lstdc++fs #ifneq (,$(windir)) # Silence linker warnings. #LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc defines += WIN32 libs += -L $(OPENSSL_DIR)/lib all_includes += $(OPENSSL_DIR)/include libs += /cygdrive/c/windows/system32/npcap/wpcap.dll #endif libs += -lssl -lcrypto $(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS))) outdir := $(TOPDIR)/build sources := $(sort $(all_sources)) includes := $(outdir) $(outdir)/asn1 $(all_includes) /cygdrive/c/PROGRA~1/Npcap/sdk/include EXE=.exe ttcn_sources := $(filter %.ttcn , $(sources)) ttcn3_sources := $(filter %.ttcn3, $(sources)) asn_sources := $(filter %.asn, $(sources)) asn1_sources := $(filter %.asn1, $(sources)) tt_sources := $(ttcn_sources) $(ttcn3_sources) $(asn_sources) $(asn1_sources) cc_sources := $(filter %.cc, $(sources)) gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources)))) gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources)))) gen_asn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.cc, $(asn_sources)))) gen_asn1_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.cc, $(asn1_sources)))) gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) $(gen_asn_sources) $(gen_asn1_sources) gen_objects := $(patsubst %.cc, %.o, $(gen_sources)) cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources)) define GenerateSource $(outdir)/$(notdir $(patsubst %.ttcn %.asn %.ttcn3 %.asn1, %.cc, $1)): $1 endef .PHONY: all FORCE echo all: $(outdir) $(outdir)/$(ATS)$(EXE) echo: @echo -e "all_sources:\n $(addsuffix \n, $(all_sources))" @echo -e "sources:\n $(addsuffix \n, $(sources))" @echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))" @echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))" @echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))" @echo -e "includes:\n $(addsuffix \n, $(includes))" @echo -e "defines: $(addsuffix \n, $(defines))" $(outdir): mkdir -p $@ $(outdir)/$(ATS)$(EXE): $(outdir)/asn1/libItsAsn.so $(gen_objects) $(cc_objects) g++ -g -O0 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/asn1/libItsAsn.so $(libs) $(gen_objects) :%.o :%.cc g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< $(cc_objects) : $(outdir)/%.o : %.cc mkdir -p $(dir $@) g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $< $(gen_sources): $(outdir)/.generate $(outdir)/.generate: Makefile $(tt_sources) $(TTCN3_DIR)/bin/compiler -w -e -L -R -U none -o $(outdir) $(tt_sources) touch $@ $(outdir)/asn1/libItsAsn.so: FORCE mkdir -p $(outdir)/asn1 $(MAKE) -C $(outdir)/asn1 -f ../../asn1/Makefile ASN1C_PATH=../../../../asn1c