Commit d28635ac authored by Denis Filatov's avatar Denis Filatov
Browse files

construct asn1 file list dynamically. Check presense.

parent 02a12d3b
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -12,6 +12,14 @@ ifeq (,$(TTCN3_DIR))
 $(error TTCN3_DIR shall be defined in config.mk)
endif

ifeq (,$(ASN1C))
 ifneq (,$(ASN1C_PATH))
  ASN1C := $(ASN1C_PATH)/asn1c/.libs/asn1c -S $(ASN1C_PATH)/skeletons
 else
  ASN1C := asn1c
 endif
endif

export ASN1C_PATH

first: all
@@ -26,8 +34,8 @@ $$(foreach I, $$(includes), $$(eval all_includes += $$(if $$(filter /%, $$(I)),
$$(foreach M, $$(modules),  $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(TOPDIR)/$$(M), $(1)/$$(M)))))
endef

all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src $(TOPDIR)/ccsrc/Framework /usr/include/jsoncpp
defines  += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS)  AS_USE_SSL
all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src /usr/include/jsoncpp /usr/include/libxml2
defines  += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS)  AS_USE_SSL _GNU_SOURCE
libs     += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs

ifeq (Windows_NT,$(OS))
@@ -49,8 +57,8 @@ $(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS)))
outdir := $(TOPDIR)/build/$(ATS)
bindir := $(TOPDIR)/bin

sources     := $(sort $(all_sources))
includes    := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) /usr/include/libxml2 $(NPCAP_INCLUDE)
sources     := $(all_sources)
includes    := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) $(NPCAP_INCLUDE)

ifeq (Windows_NT,$(OS))
  EXE=.exe
@@ -114,11 +122,11 @@ t3d: all
	@echo -e "TTCN-3 doc generation done..."
	@echo -e "Output file is located here: $(outdir)/t3d.out"

$(outdir) $(bindir):
$(outdir) $(outdir)/asn1 $(bindir):
	mkdir -p $@

$(bindir)/$(ATS)$(EXE): $(outdir)/../asn1/libItsAsn.a $(gen_objects) $(cc_objects) 
	g++ -g -O0 -std=c++17 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/../asn1/libItsAsn.a $(libs)
$(bindir)/$(ATS)$(EXE): $(outdir)/asn1/libItsAsn.a $(gen_objects) $(cc_objects) 
	g++ -g -O0 -std=c++17 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/asn1/libItsAsn.a $(libs)

$(gen_objects) :%.o :%.cc
	g++ -g -O0 -std=c++17 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
@@ -139,9 +147,16 @@ $(outdir)/.generate: Makefile $(tt_sources)
$(bindir)/libItsAsn.so: $(outdir)/asn1/libItsAsn.so
	cp -f $< $@

$(outdir)/../asn1/libItsAsn.a: FORCE
	mkdir -p $(outdir)/../asn1
	$(MAKE) -C $(outdir)/../asn1 -f ../../asn1/Makefile
$(outdir)/asn1/libItsAsn.a: $(asn_sources) $(asn1_sources) libasn1.mk Makefile
	mkdir -p $(outdir)/asn1
	echo TOP_DIR   := ../../..                                               >$(outdir)/asn1/Makefile
	echo ASN_PDU   := $(pdu)                                                >>$(outdir)/asn1/Makefile
	echo ASN_FILES := \\                                                    >>$(outdir)/asn1/Makefile
	for n in $(asn_sources) $(asn1_sources); do echo "        $$n \\"; done >>$(outdir)/asn1/Makefile
	echo                                                                    >>$(outdir)/asn1/Makefile
	cat libasn1.mk                                                          >>$(outdir)/asn1/Makefile
	$(MAKE) -C $(outdir)/asn1
	touch $@

$(foreach S, $(ttcn_sources),  $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc,  $(S))): $(S)))
$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S)))

asn1/PsidGroupPermissions.c.diff

deleted100644 → 0
+0 −35
Original line number Diff line number Diff line
--- PsidGroupPermissions.c-orig	2018-08-23 15:50:25.762030100 +0200
+++ PsidGroupPermissions.c	2018-09-10 16:47:19.921571200 +0200
@@ -51,6 +51,22 @@
 	*st = 0;
 	return 0;
 }
+static int asn_DFL_5_cmp_0(const void *sptr) {
+	uint8_t def_buf[] = { 0 };
+	BIT_STRING_t def = { &def_buf[0], 1, 7 };
+	return BIT_STRING_compare(&asn_DEF_EndEntityType, sptr, &def);
+}
+
+static int asn_DFL_5_set_0(void **sptr) {
+	BIT_STRING_t * st = *(BIT_STRING_t **)sptr;
+	if (!st) {
+		st = (*sptr = CALLOC(1, sizeof(*st)));
+		if (!st) return -1;
+	}
+	OCTET_STRING_fromBuf((OCTET_STRING_t *)st, "\x0", 1);
+	return 0;
+}
+
 asn_TYPE_member_t asn_MBR_PsidGroupPermissions_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct PsidGroupPermissions, subjectPermissions),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
@@ -87,7 +103,8 @@
 		&asn_DEF_EndEntityType,
 		0,
 		{ 0, 0, 0 },
-		0, 0, /* No default value */
+		asn_DFL_5_cmp_0,
+		asn_DFL_5_set_0,
 		"eeType"
 		},
 };
+13 −7
Original line number Diff line number Diff line
#include <asn1/asn_application.h>

#include "asn1_recode_per.hh"
#include "asn1_recoder.hh"

#include <TTCN3.hh>

@@ -12,7 +12,7 @@ static int asn1c_collect_encoded_data(const void *buffer, size_t size, void *app
}
}

int asn1_recode_per::recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf) {
int asn1_recoder::recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf) {
  int            rc  = -1;
  void *         ptr = NULL;
  asn_dec_rval_t rc_d;
@@ -30,16 +30,22 @@ int asn1_recode_per::recode(const asn_TYPE_descriptor_s &td, int from, int to, T
  return rc;
}

int asn1_recode_per::ber2per(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) { return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_CANONICAL_PER, buf); }
int asn1_recoder::ber2per(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) 
{
  return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_CANONICAL_PER, buf);
}

int asn1_recode_per::per2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) { return recode(td, (int)ATS_UNALIGNED_BASIC_PER, (int)ATS_DER, buf); }
int asn1_recoder::per2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) 
{
  return recode(td, (int)ATS_UNALIGNED_BASIC_PER, (int)ATS_DER, buf);
}

/*int asn1_recode_oer::ber2oer(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
int asn1_recoder::ber2oer(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
{
  return recode(td, (int)ATS_XER, (int)ATS_CANONICAL_OER, buf);
}

int asn1_recode_oer::oer2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
int asn1_recoder::oer2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
{
  return recodeOer(td, (int)ATS_BASIC_OER, (int)ATS_XER, buf);
  }*/
}
+3 −1
Original line number Diff line number Diff line
@@ -19,9 +19,11 @@ class TTCN_Typedescriptor_t; //! Forward declaration of TITAN class

struct asn_TYPE_descriptor_s; //! Forward declaration of asn1c class

class asn1_recode_per {
class asn1_recoder {
protected:
  int ber2per(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int per2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int ber2oer(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int oer2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf);
}; // End of class asn1_recode_per
+1 −1
Original line number Diff line number Diff line
sources := asn1_recode_per.cc 
sources := asn1_recoder.cc 
includes := .
Loading