From 14e21cff8fcabb25779c891448b6351812b2a833 Mon Sep 17 00:00:00 2001 From: ebensza Date: Mon, 1 Aug 2016 12:46:31 +0200 Subject: [PATCH] implemented new code splitting mechanism (split to equal slices) Change-Id: Ifd2fa1b9e2ce3a57f442a08a3ea692c434dced06 Signed-off-by: ebensza --- compiler2/AST.cc | 263 ++++++++++++----- compiler2/Code.cc | 31 ++ compiler2/CodeGenHelper.cc | 275 +++++++++++++++++- compiler2/CodeGenHelper.hh | 15 +- compiler2/TypeCompat.cc | 9 +- compiler2/Type_codegen.cc | 52 +++- compiler2/asn1/AST_asn1.cc | 7 +- compiler2/compiler.1 | 6 +- compiler2/main.cc | 12 +- compiler2/main.hh | 3 +- compiler2/makefile.c | 154 ++++++++-- compiler2/ttcn3/AST_ttcn3.cc | 8 +- compiler2/ttcn3/Attributes.cc | 61 ++-- compiler2/ttcn3/Attributes.hh | 13 +- compiler2/ttcn3/compiler.h | 16 + regression_test/ASN1/Test303/Makefile | 6 + regression_test/ASN1/Test307/Makefile | 6 + regression_test/ASN1/Test308/Makefile | 6 + regression_test/ASN1/Test309/Makefile | 6 + regression_test/ASN1/Test310/Makefile | 6 + regression_test/ASN1/Test330/Makefile | 6 + regression_test/ASN1/Test332/Makefile | 6 + regression_test/ASN1/Test338/Makefile | 6 + regression_test/ASN1/Test340/Makefile | 6 + regression_test/ASN1/Test342/Makefile | 6 + regression_test/ASN1/Test344/Makefile | 6 + regression_test/ASN1/Test346/Makefile | 6 + regression_test/ASN1/Test348/Makefile | 6 + regression_test/ASN1/Test350/Makefile | 6 + regression_test/ASN1/Test352/Makefile | 6 + regression_test/ASN1/Test354/Makefile | 6 + regression_test/ASN1/Test356/Makefile | 6 + regression_test/ASN1/Test358/Makefile | 6 + regression_test/ASN1/Test360/Makefile | 6 + regression_test/ASN1/Test38/Makefile | 6 + regression_test/ASN1/codeGeneration2/Makefile | 6 + regression_test/ASN1/enum1/Makefile | 6 + regression_test/ASN1/enum2/Makefile | 6 + regression_test/ASN1/hyphen/Makefile | 6 + regression_test/ASN1/hyphen/hyphen | 2 +- regression_test/ASN1/keyword/Makefile | 6 + regression_test/ASN1/transformations/Makefile | 6 + regression_test/BER/Makefile | 6 + regression_test/BER_x682/Makefile | 6 + regression_test/BER_x682_wa/Makefile | 6 + regression_test/CRTR00015758/Makefile | 8 +- regression_test/ERC/Makefile | 17 +- regression_test/HQ16404/Makefile | 8 +- regression_test/Makefile.regression | 11 + regression_test/RAW/Annex_E_variants/Makefile | 6 + regression_test/RAW/Examples/Makefile | 6 + regression_test/RAW/HN25015/Makefile | 8 +- regression_test/RAW/HQ26535/Makefile | 8 +- regression_test/RAW/HQ49956/Makefile | 8 +- regression_test/RAW/HS16977/Makefile | 8 +- regression_test/RAW/ustr/Makefile | 8 +- regression_test/XML/AbstractBlock/Makefile | 8 +- regression_test/XML/EXER-whitepaper/Makefile | 6 + regression_test/XML/HM60295/Makefile | 6 + regression_test/XML/HN15589/Makefile | 6 + regression_test/XML/HQ30408/Makefile | 8 +- regression_test/XML/HR49727/Makefile | 8 +- regression_test/XML/HU13380/Makefile | 8 +- regression_test/XML/NegativeTest/Makefile | 8 +- regression_test/XML/TTCNandXML/Makefile | 6 + regression_test/XML/UseNilLong/Makefile | 7 +- regression_test/XML/XER/Makefile | 6 + regression_test/XML/XMLqualif/Makefile | 6 + .../PIPEasp_CNL113334/test/Makefile | 5 + regression_test/XML/XmlWorkflow/bin/prj2mk.pl | 3 +- .../XML/XmlWorkflow/bin2/prj2mk.pl | 3 +- .../XML/xsdConverter/Makefile.converter | 5 + .../acceptance_test/Fibonacci/Makefile | 6 + .../acceptance_test/chinese/Makefile | 6 + .../acceptance_test/comptest/Makefile | 6 + .../acceptance_test/testerlanc/Makefile | 6 + regression_test/all_from/Makefile | 8 +- regression_test/anytype/Makefile | 6 + regression_test/anytypeOper/Makefile | 6 + regression_test/arrayOper/Makefile | 6 + regression_test/assignmentNotation/Makefile | 6 + regression_test/basicStatem/Makefile | 6 + regression_test/bitstrOper/Makefile | 6 + regression_test/boolOper/Makefile | 6 + .../cfgFile/define/macro_reference/Makefile | 5 +- .../cfgFile/define/structured/Makefile | 5 +- .../module_parameters/assignment/Makefile | 5 +- .../cfgFile/module_parameters/concat/Makefile | 5 +- .../module_parameters/references/Makefile | 5 +- .../cfgFile/ordered_include/Makefile | 5 +- .../cfgFile/testport_parameters/Makefile | 5 +- regression_test/charOper/Makefile | 6 + regression_test/charstrOper/Makefile | 6 + regression_test/checkstate/Makefile | 5 + regression_test/commMessage/Makefile | 6 + regression_test/commProcedure/Makefile | 6 + regression_test/compileonly/HT48786/Makefile | 6 + .../compileonly/assignmentNotation/Makefile | 6 + .../compileonly/attribQualif/Makefile | 6 + .../compileonly/circularImport/Makefile | 6 + .../compileonly/circularImport2/Makefile | 6 + .../compileonly/compareImported/Makefile | 6 + .../compileonly/compoundif/Makefile | 6 + .../defaultParamUsageBeforeDecl/Makefile | 6 + .../compileonly/dynamicTemplate/Makefile | 7 + regression_test/compileonly/isbound/Makefile | 6 + .../namedActualParameters/Makefile | 6 + regression_test/compileonly/openType/Makefile | 6 + .../compileonly/openTypeNames/Makefile | 6 + .../optionalAssignCompare/Makefile | 6 + .../compileonly/portConstructor/Makefile | 6 + .../compileonly/selectCase/Makefile | 6 + .../compileonly/styleGuide/Makefile | 6 + .../compileonly/topLevelPdu/Makefile | 6 + .../compileonly/typeInstantiation/Makefile | 6 + regression_test/configOper/Makefile | 6 + regression_test/controlTimer/Makefile | 6 + regression_test/customEncoding/Makefile | 6 + regression_test/defaultOper/Makefile | 6 + regression_test/enumOper/Makefile | 6 + regression_test/floatOper/Makefile | 6 + regression_test/functionReference/Makefile | 6 + regression_test/functionSubref/Makefile | 6 + regression_test/hexstrOper/Makefile | 6 + regression_test/hostid/Makefile | 5 + regression_test/iconv/Makefile | 6 + regression_test/implicitMsgEncoding/Makefile | 6 + regression_test/implicitOmit/Makefile | 8 +- regression_test/intOper/Makefile | 6 + regression_test/ipv6/Makefile | 6 + regression_test/ispresent/Makefile | 6 + regression_test/json/Makefile | 6 + regression_test/junitlogger/Makefile | 6 + regression_test/lazyEval/Makefile | 5 +- regression_test/logFiles/Makefile | 6 + regression_test/logger_control/Makefile | 8 +- .../logger_control/TitanLoggerControl.ttcn | 1 - regression_test/loggerplugin/Makefile | 6 + regression_test/lostTimer/Makefile | 6 + regression_test/macros/Makefile | 6 + regression_test/modifiedTemplate/Makefile | 6 + .../namedActualParameters/Makefile | 6 + regression_test/negativeTest/Makefile | 6 + regression_test/nonMandatoryPar/Makefile | 6 + regression_test/objidOper/Makefile | 6 + regression_test/octetstrOper/Makefile | 6 + regression_test/omitdef/Makefile | 6 + regression_test/pattern_quadruples/Makefile | 6 + regression_test/preCompilerFlags/Makefile | 6 + regression_test/predefFunction/Makefile | 7 + regression_test/profiler/Makefile | 12 + regression_test/recofOper/Makefile | 6 + regression_test/recordOper/Makefile | 6 + regression_test/setOper/Makefile | 6 + regression_test/setofMatch/Makefile | 6 + regression_test/setofOper/Makefile | 6 + regression_test/slider/Makefile | 8 +- regression_test/templateAnytype/Makefile | 6 + regression_test/templateBitstr/Makefile | 6 + regression_test/templateBool/Makefile | 6 + regression_test/templateChar/Makefile | 6 + regression_test/templateCharstr/Makefile | 6 + regression_test/templateEnum/Makefile | 6 + regression_test/templateFloat/Makefile | 6 + regression_test/templateHexstr/Makefile | 6 + regression_test/templateInt/Makefile | 6 + regression_test/templateOctetstr/Makefile | 6 + .../templateOmit/LegacyTests/Makefile | 6 + .../templateOmit/NewTests/Makefile | 6 + regression_test/templateRec/Makefile | 6 + regression_test/templateRecof/Makefile | 6 + regression_test/templateSet/Makefile | 6 + regression_test/templateSetof/Makefile | 6 + regression_test/templateUnicharstr/Makefile | 6 + regression_test/templateUnion/Makefile | 6 + regression_test/testcase_defparam/Makefile | 8 +- regression_test/text2ttcn/Makefile | 4 +- regression_test/transparent/Makefile | 8 +- regression_test/tryCatch/Makefile | 6 + regression_test/ttcn2json/Makefile | 6 + regression_test/typeCompat/Makefile | 6 + regression_test/ucharstrOper/Makefile | 5 + regression_test/uidChars/Makefile | 5 + regression_test/unionOper/Makefile | 6 + regression_test/verdictOper/Makefile | 6 + regression_test/visibility/Makefile | 6 + usrguide/referenceguide.doc | Bin 1924096 -> 1926656 bytes 187 files changed, 1760 insertions(+), 221 deletions(-) delete mode 120000 regression_test/logger_control/TitanLoggerControl.ttcn diff --git a/compiler2/AST.cc b/compiler2/AST.cc index 8268628..fcaf27e 100644 --- a/compiler2/AST.cc +++ b/compiler2/AST.cc @@ -20,6 +20,7 @@ * Kovacs, Ferenc * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * Szalai, Gabor * Zalanyi, Balazs Andor @@ -49,7 +50,7 @@ reffer::reffer(const char*) {} namespace Common { - + // ================================= // ===== Modules // ================================= @@ -356,7 +357,7 @@ namespace Common { if (bits == 0) continue; if (is_nonempty) src = mputstr(src, ",\n"); else { - src = mputstr(src, "static const unsigned char "); + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); is_nonempty = true; } src = mputprintf(src, "%s_bits[] = { ", @@ -395,12 +396,14 @@ namespace Common { if (splitting) hdr = mputstr(hdr, ";\n"); } - void Module::generate_bp_literals(char *&src, char *& /*hdr*/) + void Module::generate_bp_literals(char *&src, char *& hdr) { if (bp_literals.size() == 0) return; for (size_t i = 0; i < bp_literals.size(); i++) { if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const unsigned char "); + else { + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); + } src = mputprintf(src, "%s_elements[] = { ", bp_literals.get_nth_elem(i)->c_str()); const string& str = bp_literals.get_nth_key(i); @@ -427,13 +430,29 @@ namespace Common { } src = mputstr(src, ";\n"); for (size_t i = 0; i < bp_literals.size(); i++) { - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const BITSTRING_template "); + if (i > 0) { + src = mputstr(src, ",\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ",\n"); + } + } + else { + src = mputprintf(src, "%sconst BITSTRING_template ", split_to_slices ? "" : "static "); + if (split_to_slices) { + hdr = mputprintf(hdr, "extern const BITSTRING_template "); + } + } const char *name = bp_literals.get_nth_elem(i)->c_str(); src = mputprintf(src, "%s(%lu, %s_elements)", name, (unsigned long) bp_literals.get_nth_key(i).size(), name); + if (split_to_slices) { + hdr = mputstr(hdr, name); + } } src = mputstr(src, ";\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ";\n"); + } } void Module::generate_hs_literals(char *&src, char *&hdr) @@ -451,7 +470,7 @@ namespace Common { const char *str_ptr = str.c_str(); if (is_nonempty) src = mputstr(src, ",\n"); else { - src = mputstr(src, "static const unsigned char "); + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); is_nonempty = true; } src = mputprintf(src, "%s_nibbles[] = { ", @@ -494,12 +513,15 @@ namespace Common { if (splitting) hdr = mputstr(hdr, ";\n"); } - void Module::generate_hp_literals(char *&src, char *& /*hdr*/) + void Module::generate_hp_literals(char *&src, char *& hdr) { if (hp_literals.size() == 0) return; for (size_t i = 0; i < hp_literals.size(); i++) { - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const unsigned char "); + if (i > 0) { + src = mputstr(src, ",\n"); + } else { + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); + } src = mputprintf(src, "%s_elements[] = { ", hp_literals.get_nth_elem(i)->c_str()); const string& str = hp_literals.get_nth_key(i); @@ -517,13 +539,28 @@ namespace Common { } src = mputstr(src, ";\n"); for (size_t i = 0; i < hp_literals.size(); i++) { - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const HEXSTRING_template "); + if (i > 0) { + src = mputstr(src, ",\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ",\n"); + } + } else { + src = mputprintf(src, "%sconst HEXSTRING_template ", split_to_slices ? "" : "static "); + if (split_to_slices) { + hdr = mputprintf(hdr, "extern const HEXSTRING_template "); + } + } const char *name = hp_literals.get_nth_elem(i)->c_str(); src = mputprintf(src, "%s(%lu, %s_elements)", name, (unsigned long) hp_literals.get_nth_key(i).size(), name); + if (split_to_slices) { + hdr = mputstr(hdr, name); + } } src = mputstr(src, ";\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ";\n"); + } } void Module::generate_os_literals(char *&src, char *&hdr) @@ -542,7 +579,7 @@ namespace Common { const char *str_ptr = str.c_str(); if (is_nonempty) src = mputstr(src, ",\n"); else { - src = mputstr(src, "static const unsigned char "); + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); is_nonempty = true; } src = mputprintf(src, "%s_octets[] = { ", @@ -576,13 +613,16 @@ namespace Common { if (splitting) hdr = mputstr(hdr, ";\n"); } - void Module::generate_op_literals(char *&src, char *& /*hdr*/) + void Module::generate_op_literals(char *&src, char *& hdr) { if (op_literals.size() == 0) return; vector pattern_lens; for(size_t i = 0; i < op_literals.size(); i++) { - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const unsigned short "); + if (i > 0) { + src = mputstr(src, ",\n"); + } else { + src = mputprintf(src, "%sconst unsigned short ", split_to_slices ? "" : "static "); + } src = mputprintf(src, "%s_elements[] = { ", op_literals.get_nth_elem(i)->c_str()); const string& str = op_literals.get_nth_key(i); @@ -610,13 +650,29 @@ namespace Common { } src = mputstr(src, ";\n"); for (size_t i = 0; i < op_literals.size(); i++) { - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const OCTETSTRING_template "); + if (i > 0) { + src = mputstr(src, ",\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ",\n"); + } + } + else { + src = mputprintf(src, "%sconst OCTETSTRING_template ", split_to_slices ? "" : "static "); + if (split_to_slices) { + hdr = mputprintf(hdr, "extern const OCTETSTRING_template "); + } + } const char *name = op_literals.get_nth_elem(i)->c_str(); src = mputprintf(src, "%s(%lu, %s_elements)", name, (unsigned long) *pattern_lens[i], name); + if (split_to_slices) { + hdr = mputstr(hdr, name); + } } src = mputstr(src, ";\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ";\n"); + } for (size_t i = 0; i < pattern_lens.size(); i++) delete pattern_lens[i]; pattern_lens.clear(); } @@ -674,8 +730,12 @@ namespace Common { const string& pattern = pp_literals.get_nth_key(i); size_t pattern_len = pattern.size(); const char *pattern_ptr = pattern.c_str(); - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const unsigned char "); + if (i > 0) { + src = mputstr(src, ",\n"); + } + else { + src = mputprintf(src, "%sconst unsigned char ", split_to_slices ? "" : "static "); + } src = mputprintf(src, "%s[] = { ", pp_literals.get_nth_elem(i)->c_str()); if (pattern_len % 8 != 0) FATAL_ERROR("Module::generate_pp_literals()"); size_t nof_octets = pattern_len / 8; @@ -704,7 +764,7 @@ namespace Common { const char *str_ptr = str.c_str(); if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const Token_Match "); + else src = mputprintf(src, "%sconst Token_Match ", split_to_slices ? "" : "static "); src = mputprintf(src, "%s(\"", mp_literals.get_nth_elem(i)->c_str()); src = Code::translate_string(src, str_ptr + 1); @@ -730,7 +790,7 @@ namespace Common { if (value_size < 2) continue; if (array_needed) src = mputstr(src, ",\n"); else { - src = mputstr(src, "static const universal_char "); + src = mputprintf(src, "%sconst universal_char ", split_to_slices ? "" : "static "); array_needed = true; } src = mputprintf(src, "%s_uchars[] = { ", @@ -777,12 +837,12 @@ namespace Common { if (splitting) hdr = mputstr(hdr, ";\n"); } - void Module::generate_oid_literals(char *&src, char *& /*hdr*/) + void Module::generate_oid_literals(char *&src, char *& hdr) { if (oid_literals.size() == 0) return; for (size_t i = 0; i < oid_literals.size(); i++) { if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const OBJID::objid_element "); + else src = mputprintf(src, "%sconst OBJID::objid_element ", split_to_slices ? "" : "static "); src = mputprintf(src, "%s_comps[] = { %s }", oid_literals.get_nth_elem(i)->oid_id.c_str(), @@ -792,14 +852,30 @@ namespace Common { for(size_t i = 0; i < oid_literals.size(); i++) { const OID_literal *litstruct = oid_literals.get_nth_elem(i); - if (i > 0) src = mputstr(src, ",\n"); - else src = mputstr(src, "static const OBJID "); + if (i > 0) { + src = mputstr(src, ",\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ",\n"); + } + } + else { + src = mputprintf(src, "%sconst OBJID ", split_to_slices ? "" : "static "); + if (split_to_slices) { + hdr = mputstr(hdr, "extern const OBJID "); + } + } src = mputprintf(src, "%s(%lu, %s_comps)", litstruct->oid_id.c_str(), (unsigned long) litstruct->nof_elems, litstruct->oid_id.c_str()); + if (split_to_slices) { + hdr = mputstr(hdr, litstruct->oid_id.c_str()); + } } src = mputstr(src, ";\n"); + if (split_to_slices) { + hdr = mputstr(hdr, ";\n"); + } } void Module::generate_functions(output_struct *output) @@ -819,11 +895,11 @@ namespace Common { // always generate pre_init_module if the file is profiled if (output->functions.pre_init || profiled || debugged) { output->source.static_function_prototypes = - mputstr(output->source.static_function_prototypes, - "static void pre_init_module();\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static void pre_init_module()\n" - "{\n"); + mputprintf(output->source.static_function_prototypes, + "%svoid pre_init_module();\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%svoid pre_init_module()\n" + "{\n", split_to_slices ? "" : "static "); if (include_location_info) { output->source.static_function_bodies = mputstr(output->source.static_function_bodies, @@ -866,11 +942,11 @@ namespace Common { // post_init function bool has_post_init = false; if (output->functions.post_init) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static void post_init_module();\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static void post_init_module()\n" - "{\n"); + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%svoid post_init_module();\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%svoid post_init_module()\n" + "{\n", split_to_slices ? "" : "static "); if (include_location_info) { output->source.static_function_bodies = mputstr(output->source.static_function_bodies, @@ -907,12 +983,12 @@ namespace Common { // set_param function bool has_set_param; if (output->functions.set_param) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static boolean set_module_param(Module_Param& param);\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static boolean set_module_param(Module_Param& param)\n" + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%sboolean set_module_param(Module_Param& param);\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%sboolean set_module_param(Module_Param& param)\n" "{\n" - "const char* const par_name = param.get_id()->get_current_name();\n"); + "const char* const par_name = param.get_id()->get_current_name();\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.set_param); output->source.static_function_bodies = @@ -925,12 +1001,12 @@ namespace Common { // get_param function bool has_get_param; if (output->functions.get_param) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static Module_Param* get_module_param(Module_Param_Name& param_name);\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static Module_Param* get_module_param(Module_Param_Name& param_name)\n" + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%sModule_Param* get_module_param(Module_Param_Name& param_name);\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%sModule_Param* get_module_param(Module_Param_Name& param_name)\n" "{\n" - "const char* const par_name = param_name.get_current_name();\n"); + "const char* const par_name = param_name.get_current_name();\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.get_param); output->source.static_function_bodies = @@ -943,11 +1019,11 @@ namespace Common { // log_param function bool has_log_param; if (output->functions.log_param) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static void log_module_param();\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static void log_module_param()\n" - "{\n"); + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%svoid log_module_param();\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%svoid log_module_param()\n" + "{\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.log_param); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, @@ -960,14 +1036,14 @@ namespace Common { bool has_init_comp; if (output->functions.init_comp) { output->source.static_function_prototypes = - mputstr(output->source.static_function_prototypes, - "static boolean init_comp_type(" - "const char *component_type, boolean init_base_comps);\n"); + mputprintf(output->source.static_function_prototypes, + "%sboolean init_comp_type(" + "const char *component_type, boolean init_base_comps);\n", split_to_slices ? "extern " : "static "); output->source.static_function_bodies = - mputstr(output->source.static_function_bodies, - "static boolean init_comp_type(const char *component_type, " + mputprintf(output->source.static_function_bodies, + "%sboolean init_comp_type(const char *component_type, " "boolean init_base_comps)\n" - "{\n(void)init_base_comps;\n"); + "{\n(void)init_base_comps;\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.init_comp); @@ -981,13 +1057,13 @@ namespace Common { // start function bool has_start; if (output->functions.start) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static boolean start_ptc_function(const char *function_name, " - "Text_Buf& function_arguments);\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static boolean start_ptc_function(const char *function_name, " + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%sboolean start_ptc_function(const char *function_name, " + "Text_Buf& function_arguments);\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%sboolean start_ptc_function(const char *function_name, " "Text_Buf& function_arguments)\n" - "{\n"); + "{\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.start); output->source.static_function_bodies = @@ -1000,11 +1076,11 @@ namespace Common { // control part bool has_control; if (output->functions.control) { - output->source.static_function_prototypes = mputstr(output->source.static_function_prototypes, - "static void module_control_part();\n"); - output->source.static_function_bodies = mputstr(output->source.static_function_bodies, - "static void module_control_part()\n" - "{\n"); + output->source.static_function_prototypes = mputprintf(output->source.static_function_prototypes, + "%svoid module_control_part();\n", split_to_slices ? "extern " : "static "); + output->source.static_function_bodies = mputprintf(output->source.static_function_bodies, + "%svoid module_control_part()\n" + "{\n", split_to_slices ? "" : "static "); output->source.static_function_bodies = mputstr(output->source.static_function_bodies, output->functions.control); output->source.static_function_bodies = @@ -1015,8 +1091,11 @@ namespace Common { } else has_control = false; // module checksum if (has_checksum) { - output->source.string_literals = mputstr(output->source.string_literals, - "static const unsigned char module_checksum[] = {"); + if (split_to_slices) { + output->header.global_vars = mputprintf(output->header.global_vars, "extern const unsigned char module_checksum[];\n"); + } + output->source.string_literals = mputprintf(output->source.string_literals, + "%sconst unsigned char module_checksum[] = {", split_to_slices ? "" : "static "); for (size_t i = 0; i < sizeof(module_checksum); i++) { if (i > 0) output->source.string_literals = mputc(output->source.string_literals, ','); @@ -1046,10 +1125,17 @@ namespace Common { if (num_xml_namespaces != 0 || (control_ns && control_ns_prefix)) { output->source.global_vars = mputprintf(output->source.global_vars, - "static const size_t num_namespaces = %lu;\n" - "static const namespace_t xml_namespaces[num_namespaces+1] = {\n" - , (unsigned long)num_xml_namespaces + "%sconst size_t num_namespaces = %lu;\n" + "%sconst namespace_t xml_namespaces[num_namespaces+1] = {\n" + , split_to_slices ? "" : "static ", (unsigned long)num_xml_namespaces + , split_to_slices ? "" : "static " ); + if (split_to_slices) { + output->header.global_vars = mputprintf(output->header.global_vars, + "extern const size_t num_namespaces;\n"); + output->header.global_vars = mputprintf(output->header.global_vars, + "extern const namespace_t xml_namespaces[];\n"); + } for (size_t i=0; i < namespaces.size(); ++i) { if (used_namespaces.has_key(i)) { output->source.global_vars = mputprintf(output->source.global_vars, @@ -1126,19 +1212,31 @@ namespace Common { duplicate_underscores ? module_name : modid->get_ttcnname().c_str()); output->source.global_vars = mputprintf(output->source.global_vars, - "\nstatic const RuntimeVersionChecker ver_checker(" + "\n%sconst RuntimeVersionChecker ver_checker(" " current_runtime_version.requires_major_version_%d,\n" " current_runtime_version.requires_minor_version_%d,\n" " current_runtime_version.requires_patch_level_%d," " current_runtime_version.requires_runtime_%d);\n", + split_to_slices ? "" : "static ", TTCN3_MAJOR, TTCN3_MINOR, TTCN3_PATCHLEVEL, use_runtime_2 ? 2 : 1 ); + if (split_to_slices) { + output->header.global_vars = mputprintf(output->header.global_vars, + "extern const RuntimeVersionChecker ver_checker;\n"); + } if (tcov_enabled) { output->source.global_vars = mputprintf(output->source.global_vars, - "\nstatic const int effective_module_lines[] = { %s };\n" \ - "static const char *effective_module_functions[] = { %s };\n", + "\n%sconst int effective_module_lines[] = { %s };\n" \ + "%sconst char *effective_module_functions[] = { %s };\n", + split_to_slices ? "" : "static ", effective_module_lines ? static_cast(effective_module_lines) : "", + split_to_slices ? "" : "static ", effective_module_functions ? static_cast(effective_module_functions) : ""); + if (split_to_slices) { + output->header.global_vars = mputprintf(output->header.global_vars, + "extern const int effective_module_lines[];\n" \ + "extern const char *effective_module_functions[];\n"); + } } } @@ -1545,20 +1643,27 @@ namespace Common { cgh.add_module(modid->get_name(), modid->get_ttcnname(), moduletype == MOD_TTCN, true); cgh.set_current_module(modid->get_ttcnname()); - + // language specific parts (definitions, imports, etc.) //generate_code_internal(&target); <- needed to pass cgh generate_code_internal(cgh); output_struct* output = cgh.get_current_outputstruct(); + + CodeGenHelper::update_intervals(output); // string literals generate_literals(output); // module level entry points generate_functions(output); + + CodeGenHelper::update_intervals(output); // maybe deeper in generate_functions + // type conversion functions for type compatibility generate_conversion_functions(output); + CodeGenHelper::update_intervals(output); // maybe deeper in conv_funcs + /* generate the initializer function for the TTCN-3 profiler * (this is done at the end of the code generation, to make sure all code * lines have been added to the profiler database) */ @@ -1580,6 +1685,10 @@ namespace Common { } } output->source.global_vars = mputstr(output->source.global_vars, "}\n"); + if (split_to_slices) { + output->header.global_vars = mputstr(output->header.global_vars, + "extern void init_ttcn3_profiler();\n"); + } } /* TTCN-3 debugger: generate the printing function for the types defined in this module diff --git a/compiler2/Code.cc b/compiler2/Code.cc index 074fdc8..feac757 100644 --- a/compiler2/Code.cc +++ b/compiler2/Code.cc @@ -12,12 +12,14 @@ * Forstner, Matyas * Kovacs, Ferenc * Raduly, Csaba + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * ******************************************************************************/ #include "Code.hh" #include "../common/memory.h" #include "error.h" +#include "CodeGenHelper.hh" #include @@ -54,6 +56,31 @@ namespace Common { output->functions.init_comp = NULL; output->functions.start = NULL; output->functions.control = NULL; + output->intervals.pre_things_size = 0; + output->intervals.methods_size = 0; + output->intervals.function_bodies_size = 0; + output->intervals.static_conversion_function_bodies_size = 0; + output->intervals.static_function_bodies_size = 0; + output->intervals.methods_max_size = 1; + output->intervals.function_bodies_max_size = 1; + output->intervals.static_conversion_function_bodies_max_size = 1; + output->intervals.static_function_bodies_max_size = 1; + if (CodeGenHelper::GetInstance().get_split_mode() == CodeGenHelper::SPLIT_TO_SLICES) { + output->intervals.methods = (size_t*)Malloc(output->intervals.methods_max_size * sizeof(size_t)); + output->intervals.function_bodies = (size_t*)Malloc(output->intervals.function_bodies_max_size * sizeof(size_t)); + output->intervals.static_conversion_function_bodies = (size_t*)Malloc(output->intervals.static_conversion_function_bodies_max_size * sizeof(size_t)); + output->intervals.static_function_bodies = (size_t*)Malloc(output->intervals.static_function_bodies_max_size * sizeof(size_t)); + + output->intervals.methods[0] = 0; + output->intervals.function_bodies[0] = 0; + output->intervals.static_conversion_function_bodies[0] = 0; + output->intervals.static_function_bodies[0] = 0; + } else { + output->intervals.methods = NULL; + output->intervals.function_bodies = NULL; + output->intervals.static_conversion_function_bodies = NULL; + output->intervals.static_function_bodies = NULL; + } } void Code::merge_output(output_struct *dest, output_struct *src) @@ -142,6 +169,10 @@ namespace Common { Free(output->functions.init_comp); Free(output->functions.start); Free(output->functions.control); + Free(output->intervals.methods); + Free(output->intervals.function_bodies); + Free(output->intervals.static_conversion_function_bodies); + Free(output->intervals.static_function_bodies); init_output(output); } diff --git a/compiler2/CodeGenHelper.cc b/compiler2/CodeGenHelper.cc index 772c5d5..5461368 100644 --- a/compiler2/CodeGenHelper.cc +++ b/compiler2/CodeGenHelper.cc @@ -9,6 +9,7 @@ * Balasko, Jeno * Baranyi, Botond * Raduly, Csaba + * Szabo, Bence Janos * Zalanyi, Balazs Andor * ******************************************************************************/ @@ -20,7 +21,7 @@ #include namespace Common { - + CodeGenHelper* CodeGenHelper::instance = 0; CodeGenHelper::generated_output_t::generated_output_t() : @@ -100,7 +101,8 @@ const char* const CodeGenHelper::typetypemap[] = { }; CodeGenHelper::CodeGenHelper() : - split_mode(SPLIT_NONE) + split_mode(SPLIT_NONE), + slice_num(1) { if (instance != 0) FATAL_ERROR("Attempted to create a second code generator."); @@ -115,14 +117,38 @@ CodeGenHelper& CodeGenHelper::GetInstance() { void CodeGenHelper::set_split_mode(split_type st) { split_mode = st; + + if (split_mode == SPLIT_TO_SLICES) { + split_to_slices = true; + } else { + split_to_slices = false; + } } bool CodeGenHelper::set_split_mode(const char* type) { - if (strcmp(type, "none") == 0) + int n; + if (strcmp(type, "none") == 0) { split_mode = SPLIT_NONE; - else if (strcmp(type, "type") == 0) + split_to_slices = false; + } else if (strcmp(type, "type") == 0) { split_mode = SPLIT_BY_KIND; - else + split_to_slices = false; + } else if ((n = atoi(type))) { + size_t length = strlen(type); + for (int i=0;i 999999) { + ERROR("The number argument of -U must be between 1 and 999999."); + return false; + } + slice_num = n; + split_to_slices = slice_num > 1; // slice_num == 1 has no effect + } else return false; return true; } @@ -155,6 +181,128 @@ void CodeGenHelper::set_current_module(const string& name) { current_module = name; } +void CodeGenHelper::update_intervals(output_struct* const output) { + if(instance->split_mode != SPLIT_TO_SLICES) return; + + size_t tmp; + + // 1. check if some characters are added to the charstring + // 2. increment size variable + // 3. if size is bigger than the array's size, then double the array size + // 4. store new end position + + // class_defs are not counted as they will be in the header + tmp = mstrlen(output->source.function_bodies); + if (output->intervals.function_bodies[output->intervals.function_bodies_size] < tmp) { + output->intervals.function_bodies_size++; + if (output->intervals.function_bodies_size > output->intervals.function_bodies_max_size) { + output->intervals.function_bodies_max_size *= 2; + output->intervals.function_bodies = (size_t*)Realloc(output->intervals.function_bodies, output->intervals.function_bodies_max_size * sizeof(size_t)); + } + output->intervals.function_bodies[output->intervals.function_bodies_size] = tmp; + } + tmp = mstrlen(output->source.methods); + if (output->intervals.methods[output->intervals.methods_size] < tmp) { + output->intervals.methods_size++; + if (output->intervals.methods_size > output->intervals.methods_max_size) { + output->intervals.methods_max_size *= 2; + output->intervals.methods = (size_t*)Realloc(output->intervals.methods, output->intervals.methods_max_size * sizeof(size_t)); + } + output->intervals.methods[output->intervals.methods_size] = tmp; + } + tmp = mstrlen(output->source.static_conversion_function_bodies); + if (output->intervals.static_conversion_function_bodies[output->intervals.static_conversion_function_bodies_size] < tmp) { + output->intervals.static_conversion_function_bodies_size++; + if (output->intervals.static_conversion_function_bodies_size > output->intervals.static_conversion_function_bodies_max_size) { + output->intervals.static_conversion_function_bodies_max_size *= 2; + output->intervals.static_conversion_function_bodies = (size_t*)Realloc(output->intervals.static_conversion_function_bodies, output->intervals.static_conversion_function_bodies_max_size * sizeof(size_t)); + } + output->intervals.static_conversion_function_bodies[output->intervals.static_conversion_function_bodies_size] = tmp; + } + tmp = mstrlen(output->source.static_function_bodies); + if (output->intervals.static_function_bodies[output->intervals.static_function_bodies_size] < tmp) { + output->intervals.static_function_bodies_size++; + if (output->intervals.static_function_bodies_size > output->intervals.static_function_bodies_max_size) { + output->intervals.static_function_bodies_max_size *= 2; + output->intervals.static_function_bodies = (size_t*)Realloc(output->intervals.static_function_bodies, output->intervals.static_function_bodies_max_size * sizeof(size_t)); + } + output->intervals.static_function_bodies[output->intervals.static_function_bodies_size] = tmp; + } +} +//Advised to call update_intervals before this +size_t CodeGenHelper::size_of_sources(output_struct * const output) { + size_t size = 0; + // Calculate global var and string literals size + output->intervals.pre_things_size = mstrlen(output->source.global_vars) + mstrlen(output->source.string_literals); + + // Class_defs, static_conversion_function_prototypes, static_function_prototypes are in the header, + // and includes are not counted + size = output->intervals.pre_things_size + + output->intervals.function_bodies[output->intervals.function_bodies_size] + + output->intervals.methods[output->intervals.methods_size] + + output->intervals.static_conversion_function_bodies[output->intervals.static_conversion_function_bodies_size] + + output->intervals.static_function_bodies[output->intervals.static_function_bodies_size]; + return size; +} + +size_t CodeGenHelper::get_next_chunk_pos(const output_struct * const from, output_struct * const to, const size_t base_pos, const size_t chunk_size) { + size_t pos = 0; // Holds the position from the beginning + + pos += from->intervals.pre_things_size; + + if (pos > base_pos) { + to->source.global_vars = mputstr(to->source.global_vars, from->source.global_vars); + to->source.string_literals = mputstr(to->source.string_literals, from->source.string_literals); + } + + get_chunk_from_poslist(from->source.methods, to->source.methods, from->intervals.methods, from->intervals.methods_size, base_pos, chunk_size, pos); + get_chunk_from_poslist(from->source.function_bodies, to->source.function_bodies, from->intervals.function_bodies, from->intervals.function_bodies_size, base_pos, chunk_size, pos); + get_chunk_from_poslist(from->source.static_function_bodies, to->source.static_function_bodies, from->intervals.static_function_bodies, from->intervals.static_function_bodies_size, base_pos, chunk_size, pos); + get_chunk_from_poslist(from->source.static_conversion_function_bodies, to->source.static_conversion_function_bodies, from->intervals.static_conversion_function_bodies, from->intervals.static_conversion_function_bodies_size, base_pos, chunk_size, pos); + + return pos; +} +//if from null return. +void CodeGenHelper::get_chunk_from_poslist(const char* from, char *& to, const size_t interval_array[], const size_t interval_array_size, const size_t base_pos, const size_t chunk_size, size_t& pos) { + if (from == NULL) return; + // If we have enough to form a chunk + + // pos is unsigned so it can't be negative + if (pos > base_pos && pos - base_pos >= chunk_size) return; + + size_t tmp = pos; + + pos += interval_array[interval_array_size]; + + if (pos > base_pos) { // If we haven't finished with this interval_array + if (pos - base_pos >= chunk_size) { // It is a good chunk, but make it more precise because it may be too big + int ind = 0; + for (int i = 0; i <= interval_array_size; i++) { + if (tmp + interval_array[i] <= base_pos) { // Find the pos where we left off + ind = i; + } else if (tmp + interval_array[i] - base_pos >= chunk_size) { + // Found the first optimal position that is a good chunk + to = mputstrn(to, from + interval_array[ind], interval_array[i] - interval_array[ind]); + pos = tmp + interval_array[i]; + return; + } + } + } else { // We can't form a new chunk from the remaining characters + int ind = 0; + for (int i = 0; i <= interval_array_size; i++) { + if (tmp + interval_array[i] <= base_pos) { + ind = i; + } else { + break; + } + } + // Put the remaining characters + to = mputstrn(to, from + interval_array[ind], interval_array[interval_array_size] - interval_array[ind]); + pos = tmp + interval_array[interval_array_size]; + } + } +} + output_struct* CodeGenHelper::get_outputstruct(Ttcn::Definition* def) { string key = get_key(*def); const string& new_name = current_module + key; @@ -237,6 +385,8 @@ string CodeGenHelper::get_key(Ttcn::Definition& def) const { break; case SPLIT_BY_HEURISTICS: break; + case SPLIT_TO_SLICES: + break; } return retval; } @@ -268,6 +418,8 @@ string CodeGenHelper::get_key(Type& type) const { break; case SPLIT_BY_HEURISTICS: break; + case SPLIT_TO_SLICES: + break; } return retval; } @@ -286,12 +438,123 @@ void CodeGenHelper::write_output() { go->modulename = modules[j]->name; go->module_dispname = modules[j]->dispname; go->os.source.includes = mcopystr( - "\n//This file intentionally empty." + "\n//This file is intentionally empty." "\n#include \n"); generated_code.add(fname, go); } } } + } else if (split_mode == SPLIT_TO_SLICES && slice_num > 0) { + // The strategy is the following: + // Goal: Get files with equal size + // Get the longest file's length and divide it by slice_num (chunk_size) + // We split every file to chunk_size sized chunks + size_t max = 0; + // Calculate maximum character length + for (j = 0; j < generated_code.size(); j++) { + update_intervals(&generated_code.get_nth_elem(j)->os); + size_t num_of_chars = size_of_sources(&generated_code.get_nth_elem(j)->os); + if (max < num_of_chars) { + max = num_of_chars; + } + } + // Calculate ideal chunk size + size_t chunk_size = max / slice_num; + string fname; + for (j = 0; j < modules.size(); j++) { + generated_output_t *output = generated_code[modules[j]->dispname]; + + // Just to be sure that everything is in the right place + update_intervals(&output->os); + + // Move static function prototypes to header (no longer static) + output->os.header.function_prototypes = mputstr(output->os.header.function_prototypes, output->os.source.static_function_prototypes); + Free(output->os.source.static_function_prototypes); + output->os.source.static_function_prototypes = NULL; + + output->os.header.function_prototypes = mputstr(output->os.header.function_prototypes, output->os.source.static_conversion_function_prototypes); + Free(output->os.source.static_conversion_function_prototypes); + output->os.source.static_conversion_function_prototypes = NULL; + + // Move internal class definitions to the header + output->os.header.class_defs = mputstr(output->os.header.class_defs, output->os.source.class_defs); + Free(output->os.source.class_defs); + output->os.source.class_defs = NULL; + + update_intervals(&output->os); + size_t num_of_chars = size_of_sources(&output->os); + char buffer[13]= ""; // Max is 999999 should be enough (checked in main.cc) | 6 digit + 2 underscore + part + // If we need to split + if (num_of_chars >= chunk_size) { + size_t base_pos = 0; + for (unsigned int i = 0; i < slice_num; i++) { + if (i == 0) { // The first slice has the module's name + fname = output->module_dispname; + } else { + sprintf(buffer, "_part_%d", (int)i); + fname = output->module_dispname + "_" + buffer; + } + if (i == 0 || !generated_code.has_key(fname)) { + generated_output_t* go = new generated_output_t; + go->filename = buffer; + go->modulename = output->modulename; + go->module_dispname = output->module_dispname; + size_t act_pos = get_next_chunk_pos(&output->os, &go->os, base_pos, chunk_size); + // True if the file is not empty + if (act_pos > base_pos) { + go->os.source.includes = mputstr(go->os.source.includes, output->os.source.includes); + } else { + go->os.source.includes = mcopystr( + "\n//This file is intentionally empty." + "\n#include \n"); + } + // First slice: copy header and other properties and replace the original output struct + if (i == 0) { + go->has_circular_import = output->has_circular_import; + go->is_module = output->is_module; + go->is_ttcn = output->is_ttcn; + go->os.header.class_decls = mputstr(go->os.header.class_decls, output->os.header.class_decls); + go->os.header.class_defs = mputstr(go->os.header.class_defs, output->os.header.class_defs); + go->os.header.function_prototypes = mputstr(go->os.header.function_prototypes, output->os.header.function_prototypes); + go->os.header.global_vars = mputstr(go->os.header.global_vars, output->os.header.global_vars); + go->os.header.includes = mputstr(go->os.header.includes, output->os.header.includes); + go->os.header.testport_includes = mputstr(go->os.header.testport_includes, output->os.header.testport_includes); + go->os.header.typedefs = mputstr(go->os.header.typedefs, output->os.header.typedefs); + generated_code[modules[j]->dispname] = go; + } else { + generated_code.add(fname, go); + } + base_pos = act_pos; + } else { + // TODO: error handling: there is a module which has the same name as the + // numbered splitted file. splitting by type does not have this error + // handling so don't we + } + } + // Extra safety. If something is missing after the splitting, put the remaining + // things to the last file. (Should never happen) + if (base_pos < num_of_chars) { + get_next_chunk_pos(&output->os, &generated_code[fname]->os, base_pos, num_of_chars); + } + delete output; + } else { + // Create empty files. + for (i = 1; i < slice_num; i++) { + sprintf(buffer, "_part_%d", (int)i); + fname = output->module_dispname + "_" + buffer; + if (!generated_code.has_key(fname)) { + generated_output_t* go = new generated_output_t; + go->filename = buffer; + go->modulename = modules[j]->name; + go->module_dispname = modules[j]->dispname; + go->os.source.includes = mcopystr( + "\n//This file is intentionally empty." + "\n#include \n"); + generated_code.add(fname, go); + } + } + } + } } generated_output_t* go; for (i = 0; i < generated_code.size(); i++) { diff --git a/compiler2/CodeGenHelper.hh b/compiler2/CodeGenHelper.hh index e11ff0b..97ba724 100644 --- a/compiler2/CodeGenHelper.hh +++ b/compiler2/CodeGenHelper.hh @@ -8,6 +8,7 @@ * Contributors: * Balasko, Jeno * Raduly, Csaba + * Szabo, Bence Janos * Zalanyi, Balazs Andor * ******************************************************************************/ @@ -26,14 +27,15 @@ class Definition; } namespace Common { - + class CodeGenHelper { public: enum split_type { SPLIT_NONE, ///< original code generation SPLIT_BY_KIND, ///< place different kind of types in their own file SPLIT_BY_NAME, ///< place all definitions/assignments in their own file - SPLIT_BY_HEURISTICS ///< heuristic function will decide the structure + SPLIT_BY_HEURISTICS,///< heuristic function will decide the structure + SPLIT_TO_SLICES ///< split large files into smaller ones }; private: @@ -57,6 +59,7 @@ private: output_map_t generated_code; split_type split_mode; + unsigned int slice_num; struct module_names_t { string name; @@ -86,6 +89,14 @@ public: void finalize_generation(Type* type); void set_current_module(const string& name); + + static void update_intervals(output_struct* const output); + + size_t size_of_sources(output_struct * const output); + + size_t get_next_chunk_pos(const output_struct * const from, output_struct * const to, const size_t base_pos, const size_t chunk_size); + + void get_chunk_from_poslist(const char* from, char *& to, const size_t interval_array[], const size_t interval_array_size, const size_t base_pos, const size_t chunk_size, size_t& pos); void write_output(); diff --git a/compiler2/TypeCompat.cc b/compiler2/TypeCompat.cc index 6f4695b..886c211 100644 --- a/compiler2/TypeCompat.cc +++ b/compiler2/TypeCompat.cc @@ -8,6 +8,7 @@ * Contributors: * Balasko, Jeno * Raduly, Csaba + * Szabo, Bence Janos * ******************************************************************************/ #include "TypeCompat.hh" @@ -323,12 +324,12 @@ void TypeConv::gen_conv_func(char **p_prototypes, char **p_bodies, string to_name = m_is_temp ? m_to->get_genname_template(p_mod) : m_to->get_genname_value(p_mod); *p_prototypes = mputprintf(*p_prototypes, - "static boolean %s(%s& p_to_v, const %s& p_from_v);\n", - get_conv_func(m_from, m_to, p_mod).c_str(), to_name.c_str(), + "%sboolean %s(%s& p_to_v, const %s& p_from_v);\n", + split_to_slices ? "" : "static ", get_conv_func(m_from, m_to, p_mod).c_str(), to_name.c_str(), from_name.c_str()); *p_bodies = mputprintf(*p_bodies, - "static boolean %s(%s& p_to_v, const %s& p_from_v)\n{\n", - get_conv_func(m_from, m_to, p_mod).c_str(), to_name.c_str(), + "%sboolean %s(%s& p_to_v, const %s& p_from_v)\n{\n", + split_to_slices ? "" : "static ", get_conv_func(m_from, m_to, p_mod).c_str(), to_name.c_str(), from_name.c_str()); switch (m_to->get_typetype()) { case Type::T_SEQ_A: diff --git a/compiler2/Type_codegen.cc b/compiler2/Type_codegen.cc index 530c2e8..3acf33a 100644 --- a/compiler2/Type_codegen.cc +++ b/compiler2/Type_codegen.cc @@ -12,6 +12,7 @@ * Delic, Adam * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Pandi, Krisztian * ******************************************************************************/ @@ -53,6 +54,7 @@ void Type::generate_code(output_struct *target) { if (code_generated) return; generate_code_embedded_before(target); + CodeGenHelper::update_intervals(target); // TODO: class and template separate everywhere? // escape from recursion loops if (code_generated) return; code_generated = true; @@ -101,11 +103,14 @@ void Type::generate_code(output_struct *target) break; } // switch } + CodeGenHelper::update_intervals(target); generate_code_embedded_after(target); + CodeGenHelper::update_intervals(target); if (!is_asn1()) { if (has_done_attribute()) generate_code_done(target); if (sub_type) sub_type->generate_code(*target); } + CodeGenHelper::update_intervals(target); } void Type::generate_code_include(const string& sourcefile, output_struct *target) @@ -434,8 +439,8 @@ void Type::generate_code_typedescriptor(output_struct *target) void Type::generate_code_berdescriptor(output_struct *target) { const char *gennameown_str = get_genname_own().c_str(); - char *str = mprintf("static const ASN_Tag_t %s_tag_[] = { ", - gennameown_str); + char *str = mprintf("%sconst ASN_Tag_t %s_tag_[] = { ", + split_to_slices ? "" : "static ", gennameown_str); Tags *joinedtags = build_tags_joined(); size_t tagarraysize = joinedtags->get_nof_tags(); for (size_t i = 0; i < tagarraysize; i++) { @@ -720,7 +725,11 @@ void Type::generate_code_textdescriptor(output_struct *target) case T_BOOL: if (textattrib->true_params || textattrib->false_params) { target->source.global_vars = mputprintf(target->source.global_vars, - "static const TTCN_TEXTdescriptor_bool %s_bool_ = {", gennameown_str); + "%sconst TTCN_TEXTdescriptor_bool %s_bool_ = {", split_to_slices ? "" : "static ", gennameown_str); + if (split_to_slices) { + target->header.global_vars = mputprintf(target->header.global_vars, + "extern const TTCN_TEXTdescriptor_bool %s_bool_;\n", gennameown_str); + } if (textattrib->true_params && textattrib->true_params->encode_token) { target->source.global_vars = mputprintf(target->source.global_vars, @@ -779,8 +788,12 @@ void Type::generate_code_textdescriptor(output_struct *target) break; case T_ENUM_T: target->source.global_vars = mputprintf(target->source.global_vars, - "static const TTCN_TEXTdescriptor_enum %s_enum_[] = { ", - gennameown_str); + "%sconst TTCN_TEXTdescriptor_enum %s_enum_[] = { ", + split_to_slices ? "" : "static ", gennameown_str); + if (split_to_slices) { + target->header.global_vars = mputprintf(target->header.global_vars, + "extern const TTCN_TEXTdescriptor_enum %s_enum_[];\n", gennameown_str); + } for (size_t i = 0; i < t->u.enums.eis->get_nof_eis(); i++) { if (i > 0) target->source.global_vars = mputstr(target->source.global_vars, ", "); @@ -845,8 +858,12 @@ void Type::generate_code_textdescriptor(output_struct *target) textattrib->decoding_params.convert!=0 || textattrib->decoding_params.just!=1 ){ target->source.global_vars=mputprintf(target->source.global_vars, - "static const TTCN_TEXTdescriptor_param_values %s_par_ = {", - gennameown_str); + "%sconst TTCN_TEXTdescriptor_param_values %s_par_ = {", + split_to_slices ? "" : "static ", gennameown_str); + if (split_to_slices) { + target->header.global_vars=mputprintf(target->header.global_vars, + "extern const TTCN_TEXTdescriptor_param_values %s_par_;\n", gennameown_str); + } target->source.global_vars=mputprintf(target->source.global_vars, "{%s,%s,%i,%i,%i,%i},{%s,%s,%i,%i,%i,%i}};\n" ,textattrib->coding_params.leading_zero?"true":"false" @@ -868,8 +885,12 @@ void Type::generate_code_textdescriptor(output_struct *target) case T_SEQOF: case T_SETOF: target->source.global_vars=mputprintf(target->source.global_vars, - "static const TTCN_TEXTdescriptor_param_values %s_par_ = {", - gennameown_str); + "%sconst TTCN_TEXTdescriptor_param_values %s_par_ = {", + split_to_slices ? "" : "static ", gennameown_str); + if (split_to_slices) { + target->header.global_vars=mputprintf(target->header.global_vars, + "extern const TTCN_TEXTdescriptor_param_values %s_par_;\n", gennameown_str); + } target->source.global_vars=mputprintf(target->source.global_vars, "{%s,%s,%i,%i,%i,%i},{%s,%s,%i,%i,%i,%i}};\n" ,textattrib->coding_params.leading_zero?"true":"false" @@ -2040,7 +2061,7 @@ void Type::generate_code_Array(output_struct *target) "};\n\n", own_name, u.array.dimension->get_value_type(u.array.element_type, my_scope).c_str()); - target->source.class_defs = mputprintf(target->source.class_defs, + target->source.methods = mputprintf(target->source.methods, "const TTCN_Typedescriptor_t* %s::get_elem_descr() const { return &%s_descr_; }\n\n", own_name, u.array.element_type->get_genname_typedescriptor(my_scope).c_str()); } else { @@ -2696,8 +2717,11 @@ void Type::generate_code_object(const_def *cdef, Scope *p_scope, if (prefix) { cdef->decl = mputprintf(cdef->decl, "extern const %s& %s;\n", type_name_str, name_str); - cdef->def = mputprintf(cdef->def, "static %s %s%s;\n" - "const %s& %s = %s%s;\n", type_name_str, prefix, name_str, + if (split_to_slices) { + cdef->decl = mputprintf(cdef->decl, "extern %s %s%s;\n", type_name_str, prefix, name_str); + } + cdef->def = mputprintf(cdef->def, "%s%s %s%s;\n" + "const %s& %s = %s%s;\n", split_to_slices ? "" : "static ", type_name_str, prefix, name_str, type_name_str, name_str, prefix, name_str); } else { cdef->decl = mputprintf(cdef->decl, "extern %s %s;\n", @@ -2720,8 +2744,8 @@ void Type::generate_code_object(const_def *cdef, GovernedSimple *p_setting) FATAL_ERROR("Type::generate_code_object()"); } if (p_setting->get_err_descr()) { - cdef->def = p_setting->get_err_descr()->generate_code_str(cdef->def, - p_setting->get_genname_prefix() + p_setting->get_genname_own()); + cdef->def = p_setting->get_err_descr()->generate_code_str(cdef->def, cdef->decl, + p_setting->get_genname_prefix() + p_setting->get_genname_own(), false); } generate_code_object(cdef, p_setting->get_my_scope(), p_setting->get_genname_own(), p_setting->get_genname_prefix(), diff --git a/compiler2/asn1/AST_asn1.cc b/compiler2/asn1/AST_asn1.cc index f2086da..ee5920f 100644 --- a/compiler2/asn1/AST_asn1.cc +++ b/compiler2/asn1/AST_asn1.cc @@ -13,6 +13,7 @@ * Kovacs, Ferenc * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szalai, Gabor * Zalanyi, Balazs Andor * Pandi, Krisztian @@ -921,7 +922,10 @@ namespace Asn { void Assignments::generate_code(CodeGenHelper& cgh) { for (size_t i = 0; i < asss_v.size(); i++) { Assignment *ass = asss_v[i]; - if (!top_level_pdu || ass->get_checked()) ass->generate_code(cgh); + if (!top_level_pdu || ass->get_checked()) { + ass->generate_code(cgh); + CodeGenHelper::update_intervals(cgh.get_current_outputstruct()); + } } } @@ -1400,6 +1404,7 @@ namespace Asn { if (ass_pard || dontgen) return; classify_ass(); ass->generate_code(cgh); + CodeGenHelper::update_intervals(cgh.get_current_outputstruct()); } void Ass_Undef::dump(unsigned level) const diff --git a/compiler2/compiler.1 b/compiler2/compiler.1 index 8c0e346..dc103ac 100644 --- a/compiler2/compiler.1 +++ b/compiler2/compiler.1 @@ -17,7 +17,7 @@ compiler \- TTCN-3 and ASN.1 to C++ translator .RB "[\| " \-Q .IR "n" " \|] " .RB "[\| " \-U -.IR "none|type" " \|] " +.IR "none|type|'number'" " \|] " .RB "[\| " \-T " \|]" module.ttcn ... .RB "[\| " \-A " \|]" @@ -262,8 +262,10 @@ Forces the compiler to do characters in all output file names. This option turns on the compatibility mode with versions 1.1 or earlier. .TP -.BI \-U " none|type" +.BI \-U " none|type|'number'" Selects code splitting mode for the generated C++ code. +The 'number' should be a positive number between 1 and 999999. +If the 'number' is present the files will be sliced into 'number' files. .TP .B \-v Prints diff --git a/compiler2/main.cc b/compiler2/main.cc index f01d98e..f6ad7ef 100644 --- a/compiler2/main.cc +++ b/compiler2/main.cc @@ -95,7 +95,7 @@ boolean generate_skeleton = FALSE, force_overwrite = FALSE, implicit_json_encoding = FALSE, json_refs_for_all_types = TRUE, force_gen_seof = FALSE, omit_in_value_list = FALSE, warnings_for_bad_variants = FALSE, debugger_active = FALSE, - legacy_unbound_union_fields = FALSE; + legacy_unbound_union_fields = FALSE, split_to_slices = FALSE; // Default code splitting mode is set to 'no splitting'. CodeGenHelper::split_type code_splitting_mode = CodeGenHelper::SPLIT_NONE; @@ -385,7 +385,7 @@ static void usage() { fprintf(stderr, "\n" "usage: %s [-abcdEfgijlLMnOpqrRsStuwxXyY] [-K file] [-z file] [-V verb_level]\n" - " [-o dir] [-U none|type] [-P modulename.top_level_pdu_name] [-Q number] ...\n" + " [-o dir] [-U none|type|'number'] [-P modulename.top_level_pdu_name] [-Q number] ...\n" " [-T] module.ttcn [-A] module.asn ...\n" " or %s -v\n" " or %s --ttcn2json [-jf] ... [-T] module.ttcn [-A] module.asn ... [- schema.json]\n" @@ -417,7 +417,7 @@ static void usage() " -S: suppress context information\n" " -t: generate Test Port skeleton\n" " -u: duplicate underscores in file names\n" - " -U none|type: select code splitting mode for the generated C++ code\n" + " -U none|type|'number': select code splitting mode for the generated C++ code\n" " -V verb_level: set verbosity level bitmask (decimal)\n" " -w: suppress warnings\n" " -x: disable TEXT encoder/decoder functions\n" @@ -483,7 +483,7 @@ int main(int argc, char *argv[]) s0flag = false, Cflag = false, yflag = false, Uflag = false, Qflag = false, Sflag = false, Kflag = false, jflag = false, zflag = false, Fflag = false, Mflag = false, Eflag = false, nflag = false, Bflag = false, errflag = false, - print_usage = false, ttcn2json = false; + print_usage = false, ttcn2json = false; CodeGenHelper cgh; @@ -702,10 +702,10 @@ int main(int argc, char *argv[]) SET_FLAG(U); if (!cgh.set_split_mode(optarg)) { ERROR("Wrong code splitting option: '%s'. Valid values are: 'none', " - "'type'.", optarg); + "'type', or a positive number.", optarg); errflag = true; } - break; + break; case 'v': SET_FLAG(v); break; diff --git a/compiler2/main.hh b/compiler2/main.hh index f9d5542..4bdb932 100644 --- a/compiler2/main.hh +++ b/compiler2/main.hh @@ -15,6 +15,7 @@ * Kremer, Peter * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * ******************************************************************************/ @@ -50,7 +51,7 @@ extern boolean generate_skeleton, force_overwrite, include_line_info, check_subtype, suppress_context, enable_set_bound_out_param, display_up_to_date, implicit_json_encoding, json_refs_for_all_types, force_gen_seof, omit_in_value_list, warnings_for_bad_variants, debugger_active, - legacy_unbound_union_fields; + legacy_unbound_union_fields, split_to_slices; extern const char *expected_platform; diff --git a/compiler2/makefile.c b/compiler2/makefile.c index 7bc8854..629c5ec 100644 --- a/compiler2/makefile.c +++ b/compiler2/makefile.c @@ -1675,14 +1675,21 @@ static void print_shared_object_name(FILE *fp, const struct user_struct *user) } /** Prints the splitted files' names for a given module. */ static void print_splitted_file_names(FILE *fp, - const struct makefile_struct *makefile, const struct module_struct *module) + const struct makefile_struct *makefile, const struct module_struct *module, const boolean dir) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { - print_generated_file_name(fp, module, FALSE, "_seq.cc"); - print_generated_file_name(fp, module, FALSE, "_set.cc"); - print_generated_file_name(fp, module, FALSE, "_seqof.cc"); - print_generated_file_name(fp, module, FALSE, "_setof.cc"); - print_generated_file_name(fp, module, FALSE, "_union.cc"); + print_generated_file_name(fp, module, dir, "_seq.cc"); + print_generated_file_name(fp, module, dir, "_set.cc"); + print_generated_file_name(fp, module, dir, "_seqof.cc"); + print_generated_file_name(fp, module, dir, "_setof.cc"); + print_generated_file_name(fp, module, dir, "_union.cc"); + } else if(makefile->code_splitting_mode != NULL && (n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.cc", i); + print_generated_file_name(fp, module, dir, buffer); + } } } @@ -2267,7 +2274,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nTTCN3Modules; i++) { const struct module_struct *module = makefile->TTCN3Modules + i; if (module->dir_name == NULL || !makefile->central_storage) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } if (makefile->preprocess) { @@ -2276,7 +2283,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nTTCN3PPModules; i++) { const struct module_struct *module = makefile->TTCN3PPModules + i; if (module->dir_name == NULL || !makefile->central_storage) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } } @@ -2286,7 +2293,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } if (makefile->preprocess) { @@ -2295,7 +2302,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } } @@ -2306,7 +2313,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nASN1Modules; i++) { const struct module_struct *module = makefile->ASN1Modules + i; if (module->dir_name == NULL || !makefile->central_storage) { - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } } @@ -2316,7 +2323,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, FALSE); } } } @@ -2356,7 +2363,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nTTCN3Modules; i++) { const struct module_struct *module = makefile->TTCN3Modules + i; if (module->dir_name != NULL) { - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } } @@ -2366,7 +2373,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nTTCN3PPModules; i++) { const struct module_struct *module = makefile->TTCN3PPModules + i; if (module->dir_name != NULL) { - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } } @@ -2377,7 +2384,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name != NULL) { print_generated_file_name(fp, module, TRUE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } if (makefile->preprocess) { @@ -2386,7 +2393,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name != NULL) { print_generated_file_name(fp, module, TRUE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } } @@ -2397,7 +2404,7 @@ static void print_makefile(struct makefile_struct *makefile) for (i = 0; i < makefile->nASN1Modules; i++) { const struct module_struct *module = makefile->ASN1Modules + i; if (module->dir_name != NULL) { - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } } @@ -2407,7 +2414,7 @@ static void print_makefile(struct makefile_struct *makefile) if (module->dir_name != NULL) { print_generated_file_name(fp, module, TRUE, ".cc"); if (makefile->code_splitting_mode) - print_splitted_file_names(fp, makefile, module); + print_splitted_file_names(fp, makefile, module, TRUE); } } } @@ -2573,14 +2580,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->TTCN3Modules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".so"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.so"); print_generated_file_name(fp, module, FALSE, "_set.so"); print_generated_file_name(fp, module, FALSE, "_seqof.so"); print_generated_file_name(fp, module, FALSE, "_setof.so"); print_generated_file_name(fp, module, FALSE, "_union.so"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.so", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } if (makefile->preprocess) { @@ -2588,14 +2603,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->TTCN3PPModules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".so"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.so"); print_generated_file_name(fp, module, FALSE, "_set.so"); print_generated_file_name(fp, module, FALSE, "_seqof.so"); print_generated_file_name(fp, module, FALSE, "_setof.so"); print_generated_file_name(fp, module, FALSE, "_union.so"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.so", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } } @@ -2603,14 +2626,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->ASN1Modules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".so"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.so"); print_generated_file_name(fp, module, FALSE, "_set.so"); print_generated_file_name(fp, module, FALSE, "_seqof.so"); print_generated_file_name(fp, module, FALSE, "_setof.so"); print_generated_file_name(fp, module, FALSE, "_union.so"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.so", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } } @@ -2637,14 +2668,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->TTCN3Modules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".o"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.o"); print_generated_file_name(fp, module, FALSE, "_set.o"); print_generated_file_name(fp, module, FALSE, "_seqof.o"); print_generated_file_name(fp, module, FALSE, "_setof.o"); print_generated_file_name(fp, module, FALSE, "_union.o"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.o", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } if (makefile->preprocess) { @@ -2652,14 +2691,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->TTCN3PPModules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".o"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.o"); print_generated_file_name(fp, module, FALSE, "_set.o"); print_generated_file_name(fp, module, FALSE, "_seqof.o"); print_generated_file_name(fp, module, FALSE, "_setof.o"); print_generated_file_name(fp, module, FALSE, "_union.o"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.o", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } } @@ -2667,14 +2714,22 @@ static void print_makefile(struct makefile_struct *makefile) const struct module_struct *module = makefile->ASN1Modules + i; if (module->dir_name == NULL || !makefile->central_storage) { print_generated_file_name(fp, module, FALSE, ".o"); - if (makefile->code_splitting_mode != NULL) + if (makefile->code_splitting_mode != NULL) { + int n_slices; if (strcmp(makefile->code_splitting_mode, "-U type") == 0) { print_generated_file_name(fp, module, FALSE, "_seq.o"); print_generated_file_name(fp, module, FALSE, "_set.o"); print_generated_file_name(fp, module, FALSE, "_seqof.o"); print_generated_file_name(fp, module, FALSE, "_setof.o"); print_generated_file_name(fp, module, FALSE, "_union.o"); + } else if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.o", i); + print_generated_file_name(fp, module, FALSE, buffer); + } } + } } } } @@ -2769,14 +2824,36 @@ static void print_makefile(struct makefile_struct *makefile) else { for (i = 0; i < makefile->nTTCN3Modules; i++) { const struct module_struct *module = makefile->TTCN3Modules + i; - if (module->dir_name != NULL) + if (module->dir_name != NULL) { print_generated_file_name(fp, module, TRUE, ".o"); + if (makefile->code_splitting_mode != NULL) { + int n_slices; + if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.o", i); + print_generated_file_name(fp, module, TRUE, buffer); + } + } + } + } } if (makefile->preprocess) { for (i = 0; i < makefile->nTTCN3PPModules; i++) { const struct module_struct *module = makefile->TTCN3PPModules + i; - if (module->dir_name != NULL) + if (module->dir_name != NULL) { print_generated_file_name(fp, module, TRUE, ".o"); + if (makefile->code_splitting_mode != NULL) { + int n_slices; + if((n_slices = atoi(makefile->code_splitting_mode + 2))) { + for (int i = 1; i < n_slices; i++) { + char buffer[16]; // 6 digits + 4 chars + _part + sprintf(buffer, "_part_%i.o", i); + print_generated_file_name(fp, module, TRUE, buffer); + } + } + } + } } } for (i = 0; i < makefile->nASN1Modules; i++) { @@ -4024,7 +4101,7 @@ static void usage(void) { fprintf(stderr, "\n" "usage: %s [-abc" C_flag "dDEfFglLmMnprRsStTVwWXZ] [-K file] [-z file ] [-P dir]" - " [-U none|type] [-e ets_name] [-o dir|file]\n" + " [-U none|type|'number'] [-e ets_name] [-o dir|file]\n" " [-t project_descriptor.tpd [-b buildconfig]]\n" " [-O file] ... module_name ... testport_name ...\n" " or %s -v\n" @@ -4053,7 +4130,7 @@ static void usage(void) " -R: use function test runtime (TITAN_RUNTIME_2)\n" " -s: generate Makefile for single mode\n" " -S: suppress makefilegen warnings\n" - " -U none|type: split generated code\n" + " -U none|type|'number': split generated code\n" " -v: show version\n" " -w: suppress warnings generated by TITAN\n" " -Y: Enforces legacy behaviour of the \"out\" function parameters (see refguide)\n" @@ -4289,11 +4366,26 @@ int main(int argc, char *argv[]) break; case 'U': SET_FLAG(U); + int n_slices = atoi(optarg); code_splitting_mode = optarg; - if (strcmp(optarg, "none") != 0 && - strcmp(optarg, "type") != 0) + if (!n_slices && + (strcmp(optarg, "none") != 0 && + strcmp(optarg, "type") != 0)) + { ERROR("Unrecognizable argument: '%s'. Valid options for -U switch are: " - "'none', 'type'", optarg); + "'none', 'type', or a number.", optarg); + } else { + size_t length = strlen(optarg); + for (int i=0;i 999999) { + ERROR("The number argument of -U must be between 1 and 999999."); + } + } break; case 'v': SET_FLAG(v); diff --git a/compiler2/ttcn3/AST_ttcn3.cc b/compiler2/ttcn3/AST_ttcn3.cc index 45562f5..6a4a9a0 100644 --- a/compiler2/ttcn3/AST_ttcn3.cc +++ b/compiler2/ttcn3/AST_ttcn3.cc @@ -14,6 +14,7 @@ * Kovacs, Ferenc * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szalai, Gabor * Zalanyi, Balazs Andor * Pandi, Krisztian @@ -1866,7 +1867,10 @@ namespace Ttcn { void Definitions::generate_code(CodeGenHelper& cgh) { // FIXME: implement - for(size_t i = 0; i < ass_v.size(); i++) ass_v[i]->generate_code(cgh); + for(size_t i = 0; i < ass_v.size(); i++) { + ass_v[i]->generate_code(cgh); + CodeGenHelper::update_intervals(cgh.get_current_outputstruct()); + } } char* Definitions::generate_code_str(char *str) @@ -4446,7 +4450,7 @@ namespace Ttcn { } if (erroneous_attrs && erroneous_attrs->get_err_descr()) { function_body = erroneous_attrs->get_err_descr()-> - generate_code_str(function_body, string("ret_val")); + generate_code_str(function_body, target->header.global_vars, string("ret_val"), true); } function_body = body->generate_code_init(function_body, "ret_val"); if (template_restriction!=TR_NONE && gen_restriction_check) diff --git a/compiler2/ttcn3/Attributes.cc b/compiler2/ttcn3/Attributes.cc index 16485b8..eb91cd9 100644 --- a/compiler2/ttcn3/Attributes.cc +++ b/compiler2/ttcn3/Attributes.cc @@ -12,6 +12,7 @@ * Feher, Csaba * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * Zalanyi, Balazs Andor * @@ -20,6 +21,7 @@ #include "../map.hh" #include "../CompilerError.hh" #include "../Type.hh" +#include "../main.hh" #include "TtcnTemplate.hh" namespace Ttcn { @@ -313,17 +315,21 @@ namespace Ttcn { return ""; } - char* ErroneousAttributeSpec::generate_code_str(char *str, string genname) + char* ErroneousAttributeSpec::generate_code_str(char *str, char *& def, string genname, const bool embedded) { if (get_is_omit()) return str; if (!type) FATAL_ERROR("ErroneousAttributeSpec::generate_code_str()"); if (!value) FATAL_ERROR("ErroneousAttributeSpec::generate_code_str()"); if (first_genname.empty()) { // this is the first use - str = mputprintf(str, "static %s %s;\n", + str = mputprintf(str, "%s%s %s;\n", split_to_slices && !embedded ? "" : "static ", type->get_genname_value(value->get_my_scope()).c_str(), genname.c_str()); first_genname = genname; + if (split_to_slices && !embedded) { + def = mputprintf(def, "extern %s %s;\n", + type->get_genname_value(value->get_my_scope()).c_str(), genname.c_str()); + } } else { - str = mputprintf(str, "static %s& %s = %s;\n", + str = mputprintf(str, "%s%s& %s = %s;\n", split_to_slices && !embedded ? "" : "static ", type->get_genname_value(value->get_my_scope()).c_str(), genname.c_str(), first_genname.c_str()); } @@ -358,21 +364,24 @@ namespace Ttcn { // ==== ErroneousValues ==== - char* ErroneousValues::generate_code_embedded_str(char *str, string genname) + char* ErroneousValues::generate_code_embedded_str(char *str, char *& def, string genname, const bool embedded) { - if (before) str = generate_code_embedded_str(str, genname+"_before", before); - if (value) str = generate_code_embedded_str(str, genname+"_value", value); - if (after) str = generate_code_embedded_str(str, genname+"_after", after); + if (before) str = generate_code_embedded_str(str, def, genname+"_before", before, embedded); + if (value) str = generate_code_embedded_str(str, def, genname+"_value", value, embedded); + if (after) str = generate_code_embedded_str(str, def, genname+"_after", after, embedded); return str; } - char* ErroneousValues::generate_code_embedded_str(char *str, string genname, ErroneousAttributeSpec* attr_spec) + char* ErroneousValues::generate_code_embedded_str(char *str, char *& def, string genname, ErroneousAttributeSpec* attr_spec, const bool embedded) { - str = attr_spec->generate_code_str(str, genname+"_errval"); - str = mputprintf(str, "static Erroneous_value_t %s = { %s, %s, %s };\n", genname.c_str(), + str = attr_spec->generate_code_str(str, def, genname+"_errval", embedded); + str = mputprintf(str, "%sErroneous_value_t %s = { %s, %s, %s };\n", split_to_slices && !embedded ? "" : "static ", genname.c_str(), attr_spec->get_is_raw() ? "true" : "false", attr_spec->get_is_omit() ? "NULL" : ("&"+genname+"_errval").c_str(), attr_spec->get_typedescriptor_str().c_str()); + if (split_to_slices && !embedded) { + def = mputprintf(def, "extern Erroneous_value_t %s;\n", genname.c_str()); + } return str; } @@ -403,35 +412,41 @@ namespace Ttcn { // ==== ErroneousDescriptor ==== - char* ErroneousDescriptor::generate_code_embedded_str(char *str, string genname) + char* ErroneousDescriptor::generate_code_embedded_str(char *str, char *& def, string genname, const bool embedded) { // values for (size_t i=0; igenerate_code_embedded_str(str, genname+"_v"+Int2string((int)values_m.get_nth_key(i))); + str = values_m.get_nth_elem(i)->generate_code_embedded_str(str, def, genname+"_v"+Int2string((int)values_m.get_nth_key(i)), embedded); } // embedded descriptors for (size_t i=0; igenerate_code_embedded_str(str, genname+"_d"+Int2string((int)descr_m.get_nth_key(i))); + str = descr_m.get_nth_elem(i)->generate_code_embedded_str(str, def, genname+"_d"+Int2string((int)descr_m.get_nth_key(i)), embedded); } // values vector if (values_m.size()>0) { - str = mputprintf(str, "static Erroneous_values_t %s_valsvec[%d] = { ", genname.c_str(), (int)values_m.size()); + str = mputprintf(str, "%sErroneous_values_t %s_valsvec[%d] = { ", split_to_slices && !embedded ? "" : "static ", genname.c_str(), (int)values_m.size()); for (size_t i=0; i0) str = mputstr(str, ", "); int key_i = (int)values_m.get_nth_key(i); str = values_m.get_nth_elem(i)->generate_code_struct_str(str, genname+"_v"+Int2string(key_i), key_i); } str = mputstr(str, " };\n"); + if (split_to_slices && !embedded) { + def = mputprintf(def, "extern Erroneous_values_t %s_valsvec[%d];\n", genname.c_str(), (int)values_m.size()); + } } // embedded descriptor vector if (descr_m.size()>0) { - str = mputprintf(str, "static Erroneous_descriptor_t %s_embvec[%d] = { ", genname.c_str(), (int)descr_m.size()); + str = mputprintf(str, "%sErroneous_descriptor_t %s_embvec[%d] = { ", split_to_slices && !embedded ? "" : "static ", genname.c_str(), (int)descr_m.size()); for (size_t i=0; i0) str = mputstr(str, ", "); int key_i = (int)descr_m.get_nth_key(i); - str = descr_m.get_nth_elem(i)->generate_code_struct_str(str, genname+"_d"+Int2string(key_i), key_i); + str = descr_m.get_nth_elem(i)->generate_code_struct_str(str, def, genname+"_d"+Int2string(key_i), key_i); } str = mputstr(str, " };\n"); + if (split_to_slices && !embedded) { + def = mputprintf(def, "extern Erroneous_descriptor_t %s_embvec[%d];\n", genname.c_str(), (int)descr_m.size()); + } } return str; } @@ -447,7 +462,7 @@ namespace Ttcn { return str; } - char* ErroneousDescriptor::generate_code_struct_str(char *str, string genname, int field_index) + char* ErroneousDescriptor::generate_code_struct_str(char *str, char *& def, string genname, int field_index) { string genname_values_vec = genname + "_valsvec"; string genname_embedded_vec = genname + "_embvec"; @@ -465,18 +480,22 @@ namespace Ttcn { for (size_t i=0; ichk_recursions(refch); } + for (size_t i=0; ichk_recursions(refch); } } - char* ErroneousDescriptor::generate_code_str(char *str, string genname) + char* ErroneousDescriptor::generate_code_str(char *str, char *& def, string genname, const bool embedded) { genname += "_err_descr"; - str = generate_code_embedded_str(str, genname); - str = mputprintf(str, "static Erroneous_descriptor_t %s = ", genname.c_str()); - str = generate_code_struct_str(str, genname, -1); + str = generate_code_embedded_str(str, def, genname, embedded); + str = mputprintf(str, "%sErroneous_descriptor_t %s = ", split_to_slices && !embedded ? "" : "static ", genname.c_str()); + str = generate_code_struct_str(str, def, genname, -1); str = mputstr(str, ";\n"); + if (split_to_slices && !embedded) { + def = mputprintf(def, "extern Erroneous_descriptor_t %s;\n", genname.c_str()); + } return str; } diff --git a/compiler2/ttcn3/Attributes.hh b/compiler2/ttcn3/Attributes.hh index ee25fa8..edb77e9 100644 --- a/compiler2/ttcn3/Attributes.hh +++ b/compiler2/ttcn3/Attributes.hh @@ -10,6 +10,7 @@ * Delic, Adam * Raduly, Csaba * Szabados, Kristof + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * Zalanyi, Balazs Andor * @@ -118,7 +119,7 @@ namespace Ttcn { bool get_is_raw() const { return is_raw; } bool get_is_omit() const; static const char* get_indicator_str(indicator_t i); - char* generate_code_str(char *str, string genname); + char* generate_code_str(char *str, char *& def, string genname, const bool embedded); char* generate_code_init_str(char *str, string genname); string get_typedescriptor_str(); void chk_recursions(ReferenceChain& refch); @@ -131,9 +132,9 @@ namespace Ttcn { ErroneousAttributeSpec *before, *value, *after; // NULL if not specified string field_name; // qualifier string ErroneousValues(const string& p_field_name): before(0), value(0), after(0), field_name(p_field_name) {} - char* generate_code_embedded_str(char *str, string genname); + char* generate_code_embedded_str(char *str, char *& def, string genname, const bool embedded); char* generate_code_init_str(char *str, string genname); - char* generate_code_embedded_str(char *str, string genname, ErroneousAttributeSpec* attr_spec); + char* generate_code_embedded_str(char *str, char *& def, string genname, ErroneousAttributeSpec* attr_spec, const bool embedded); char* generate_code_struct_str(char *str, string genname, int field_index); void chk_recursions(ReferenceChain& refch); }; @@ -151,10 +152,10 @@ namespace Ttcn { public: ErroneousDescriptor(): omit_before(-1), omit_after(-1) {} ~ErroneousDescriptor(); - char* generate_code_embedded_str(char *str, string genname); + char* generate_code_embedded_str(char *str, char *& def, string genname, const bool embedded); char* generate_code_init_str(char *str, string genname); - char* generate_code_struct_str(char *str, string genname, int field_index); - char* generate_code_str(char *str, string genname); + char* generate_code_struct_str(char *str, char *& def, string genname, int field_index); + char* generate_code_str(char *str, char *& def, string genname, const bool embedded); void chk_recursions(ReferenceChain& refch); }; diff --git a/compiler2/ttcn3/compiler.h b/compiler2/ttcn3/compiler.h index a8b02d9..c3e5364 100644 --- a/compiler2/ttcn3/compiler.h +++ b/compiler2/ttcn3/compiler.h @@ -14,6 +14,7 @@ * Kovacs, Ferenc * Kremer, Peter * Raduly, Csaba + * Szabo, Bence Janos * Szabo, Janos Zoltan – initial implementation * Tatarka, Gabor * Zalanyi, Balazs Andor @@ -65,6 +66,21 @@ extern "C" { char *start; /**< Code for start_ptc_function() */ char *control; /**< Code for module_control_part() */ } functions; + struct { + size_t pre_things_size; // Size of string_literals + global_vars + size_t *methods; + size_t methods_max_size; + size_t methods_size; + size_t *function_bodies; + size_t function_bodies_max_size; + size_t function_bodies_size; + size_t *static_function_bodies; + size_t static_function_bodies_max_size; + size_t static_function_bodies_size; + size_t *static_conversion_function_bodies; + size_t static_conversion_function_bodies_size; + size_t static_conversion_function_bodies_max_size; + } intervals; } output_struct; typedef struct expression_struct_t { diff --git a/regression_test/ASN1/Test303/Makefile b/regression_test/ASN1/Test303/Makefile index 69dd30b..3641956 100644 --- a/regression_test/ASN1/Test303/Makefile +++ b/regression_test/ASN1/Test303/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test307/Makefile b/regression_test/ASN1/Test307/Makefile index 5a1337f..73a51c0 100644 --- a/regression_test/ASN1/Test307/Makefile +++ b/regression_test/ASN1/Test307/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test308/Makefile b/regression_test/ASN1/Test308/Makefile index 218ab20..38c2e17 100644 --- a/regression_test/ASN1/Test308/Makefile +++ b/regression_test/ASN1/Test308/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test309/Makefile b/regression_test/ASN1/Test309/Makefile index 9d25248..7789f92 100644 --- a/regression_test/ASN1/Test309/Makefile +++ b/regression_test/ASN1/Test309/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test310/Makefile b/regression_test/ASN1/Test310/Makefile index d1d7cd7..a7c6a15 100644 --- a/regression_test/ASN1/Test310/Makefile +++ b/regression_test/ASN1/Test310/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test330/Makefile b/regression_test/ASN1/Test330/Makefile index 326468f..ab2ba32 100644 --- a/regression_test/ASN1/Test330/Makefile +++ b/regression_test/ASN1/Test330/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test332/Makefile b/regression_test/ASN1/Test332/Makefile index 063bf5b..819b477 100644 --- a/regression_test/ASN1/Test332/Makefile +++ b/regression_test/ASN1/Test332/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test338/Makefile b/regression_test/ASN1/Test338/Makefile index db473ff..3d2b6b6 100644 --- a/regression_test/ASN1/Test338/Makefile +++ b/regression_test/ASN1/Test338/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test340/Makefile b/regression_test/ASN1/Test340/Makefile index e6fa11d..1e333ff 100644 --- a/regression_test/ASN1/Test340/Makefile +++ b/regression_test/ASN1/Test340/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test342/Makefile b/regression_test/ASN1/Test342/Makefile index 160d13d..76c9319 100644 --- a/regression_test/ASN1/Test342/Makefile +++ b/regression_test/ASN1/Test342/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test344/Makefile b/regression_test/ASN1/Test344/Makefile index 30a3398..87965bb 100644 --- a/regression_test/ASN1/Test344/Makefile +++ b/regression_test/ASN1/Test344/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test346/Makefile b/regression_test/ASN1/Test346/Makefile index 0374716..0a0d1bb 100644 --- a/regression_test/ASN1/Test346/Makefile +++ b/regression_test/ASN1/Test346/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test348/Makefile b/regression_test/ASN1/Test348/Makefile index a60a285..1bcc9f4 100644 --- a/regression_test/ASN1/Test348/Makefile +++ b/regression_test/ASN1/Test348/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test350/Makefile b/regression_test/ASN1/Test350/Makefile index 45182c1..f6dbe28 100644 --- a/regression_test/ASN1/Test350/Makefile +++ b/regression_test/ASN1/Test350/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test352/Makefile b/regression_test/ASN1/Test352/Makefile index 9abc018..f99da11 100644 --- a/regression_test/ASN1/Test352/Makefile +++ b/regression_test/ASN1/Test352/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test354/Makefile b/regression_test/ASN1/Test354/Makefile index c9854e0..818c982 100644 --- a/regression_test/ASN1/Test354/Makefile +++ b/regression_test/ASN1/Test354/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test356/Makefile b/regression_test/ASN1/Test356/Makefile index d8966bf..4682994 100644 --- a/regression_test/ASN1/Test356/Makefile +++ b/regression_test/ASN1/Test356/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test358/Makefile b/regression_test/ASN1/Test358/Makefile index 61b9774..e16e00f 100644 --- a/regression_test/ASN1/Test358/Makefile +++ b/regression_test/ASN1/Test358/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test360/Makefile b/regression_test/ASN1/Test360/Makefile index 6ffb52c..564c2b5 100644 --- a/regression_test/ASN1/Test360/Makefile +++ b/regression_test/ASN1/Test360/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/ASN1/Test38/Makefile b/regression_test/ASN1/Test38/Makefile index 1a1efdc..197fb3d 100644 --- a/regression_test/ASN1/Test38/Makefile +++ b/regression_test/ASN1/Test38/Makefile @@ -12,6 +12,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/codeGeneration2/Makefile b/regression_test/ASN1/codeGeneration2/Makefile index 68b7aa8..2aa4f4c 100644 --- a/regression_test/ASN1/codeGeneration2/Makefile +++ b/regression_test/ASN1/codeGeneration2/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -36,6 +37,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/enum1/Makefile b/regression_test/ASN1/enum1/Makefile index 7210879..aff38ce 100644 --- a/regression_test/ASN1/enum1/Makefile +++ b/regression_test/ASN1/enum1/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/enum2/Makefile b/regression_test/ASN1/enum2/Makefile index cf752b7..2243525 100644 --- a/regression_test/ASN1/enum2/Makefile +++ b/regression_test/ASN1/enum2/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/hyphen/Makefile b/regression_test/ASN1/hyphen/Makefile index 742c613..786d5d8 100644 --- a/regression_test/ASN1/hyphen/Makefile +++ b/regression_test/ASN1/hyphen/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/hyphen/hyphen b/regression_test/ASN1/hyphen/hyphen index 8b058e4..f58676f 100755 --- a/regression_test/ASN1/hyphen/hyphen +++ b/regression_test/ASN1/hyphen/hyphen @@ -13,7 +13,7 @@ then then if $GREP -q "extern const INTEGER& my__Integer__Value" ./Test284.hh then - if $GREP -q "const_my__Integer__Value = 9;" ./Test284.cc + if $GREP -q "const_my__Integer__Value = 9;" ./*.cc then Verdict="pass" else Verdict="fail 4" fi diff --git a/regression_test/ASN1/keyword/Makefile b/regression_test/ASN1/keyword/Makefile index 1f1627b..28da915 100644 --- a/regression_test/ASN1/keyword/Makefile +++ b/regression_test/ASN1/keyword/Makefile @@ -14,6 +14,7 @@ # Kovacs, Ferenc # Kulcsar, Endre # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -32,6 +33,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/ASN1/transformations/Makefile b/regression_test/ASN1/transformations/Makefile index 8941d8f..c4c4db6 100644 --- a/regression_test/ASN1/transformations/Makefile +++ b/regression_test/ASN1/transformations/Makefile @@ -13,6 +13,7 @@ # Kulcsar, Endre # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif all: $(GENERATED_SOURCES) diff --git a/regression_test/BER/Makefile b/regression_test/BER/Makefile index b273bc8..70796e0 100644 --- a/regression_test/BER/Makefile +++ b/regression_test/BER/Makefile @@ -12,6 +12,7 @@ # Koppany, Csaba # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/BER_x682/Makefile b/regression_test/BER_x682/Makefile index 8361c66..551dd99 100644 --- a/regression_test/BER_x682/Makefile +++ b/regression_test/BER_x682/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = MyPort1.cc MyPort2.cc diff --git a/regression_test/BER_x682_wa/Makefile b/regression_test/BER_x682_wa/Makefile index d968cf7..eb06f8f 100644 --- a/regression_test/BER_x682_wa/Makefile +++ b/regression_test/BER_x682_wa/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(ASN1_MODULES:.asn=.cc) $(TTCN3_MODULES:.ttcn=.cc) GENERATED_HEADERS = $(ASN1_MODULES:.asn=.hh) $(TTCN3_MODULES:.ttcn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = MyPort1.cc MyPort2.cc diff --git a/regression_test/CRTR00015758/Makefile b/regression_test/CRTR00015758/Makefile index d39a4e0..3c910c5 100644 --- a/regression_test/CRTR00015758/Makefile +++ b/regression_test/CRTR00015758/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -52,7 +53,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/ERC/Makefile b/regression_test/ERC/Makefile index d7fe9fb..1ff73c4 100644 --- a/regression_test/ERC/Makefile +++ b/regression_test/ERC/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) @@ -35,14 +41,11 @@ PARALLEL_TARGET = erc_parallel$(EXESUFFIX) all: $(SINGLE_TARGET) $(PARALLEL_TARGET) -$(SINGLE_TARGET): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) -L$(TTCN3_DIR)/lib -lttcn3$(RT2_SUFFIX)$(DYNAMIC_SUFFIX) -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) +$(SINGLE_TARGET): $(GENERATED_SOURCES) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ $(GENERATED_SOURCES) -L$(TTCN3_DIR)/lib -lttcn3$(RT2_SUFFIX)$(DYNAMIC_SUFFIX) -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) -$(PARALLEL_TARGET): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) -L$(TTCN3_DIR)/lib -lttcn3$(RT2_SUFFIX)-parallel$(DYNAMIC_SUFFIX) -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) - -.cc.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< +$(PARALLEL_TARGET): $(GENERATED_SOURCES) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ $(GENERATED_SOURCES) -L$(TTCN3_DIR)/lib -lttcn3$(RT2_SUFFIX)-parallel$(DYNAMIC_SUFFIX) -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) .ttcn.cc .ttcn.hh: $(TTCN3_COMPILER) $< diff --git a/regression_test/HQ16404/Makefile b/regression_test/HQ16404/Makefile index 25d30ec..071d1d2 100644 --- a/regression_test/HQ16404/Makefile +++ b/regression_test/HQ16404/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -60,7 +61,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/Makefile.regression b/regression_test/Makefile.regression index 71957f9..ef14219 100644 --- a/regression_test/Makefile.regression +++ b/regression_test/Makefile.regression @@ -15,6 +15,7 @@ # Ormandi, Matyas # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## # @@ -48,7 +49,10 @@ TTCN3_COMPILER += -g -L #RT2 := true # Use code splitting when running the tests +# DO NOT enable both CODE_SPLIT and SPLIT_TO_SLICES #CODE_SPLIT := true +# Use code splitting into slices when running the tests +#SPLIT_TO_SLICES := 30 ifdef RT2 # add command line option to generate code for alternative runtime @@ -70,6 +74,13 @@ ifdef CODE_SPLIT SPLIT_FLAG = -Utype # No space between -U and type ! TTCN3_COMPILER += $(SPLIT_FLAG) +export SPLIT_FLAG +else ifdef SPLIT_TO_SLICES +SPLIT_FLAG := -U$(SPLIT_TO_SLICES) +TTCN3_COMPILER += $(SPLIT_FLAG) +SPLIT_TO_SLICES := $(shell echo $(SPLIT_TO_SLICES) - 1 | bc) +SPLIT_TO_SLICES := $(shell seq 1 ${SPLIT_TO_SLICES}) +export SPLIT_FLAG endif # Your platform. Allowed values: SOLARIS, SOLARIS8, LINUX, FREEBSD, WIN32 diff --git a/regression_test/RAW/Annex_E_variants/Makefile b/regression_test/RAW/Annex_E_variants/Makefile index 96232b0..310bc96 100644 --- a/regression_test/RAW/Annex_E_variants/Makefile +++ b/regression_test/RAW/Annex_E_variants/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -23,6 +24,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/RAW/Examples/Makefile b/regression_test/RAW/Examples/Makefile index 7082745..f37ada9 100644 --- a/regression_test/RAW/Examples/Makefile +++ b/regression_test/RAW/Examples/Makefile @@ -13,6 +13,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # Szalai, Gabor # @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/RAW/HN25015/Makefile b/regression_test/RAW/HN25015/Makefile index 72bce47..e4e033c 100644 --- a/regression_test/RAW/HN25015/Makefile +++ b/regression_test/RAW/HN25015/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -57,7 +58,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/RAW/HQ26535/Makefile b/regression_test/RAW/HQ26535/Makefile index 9c61666..77dceed 100644 --- a/regression_test/RAW/HQ26535/Makefile +++ b/regression_test/RAW/HQ26535/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -56,7 +57,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/RAW/HQ49956/Makefile b/regression_test/RAW/HQ49956/Makefile index a06c11b..b771746 100644 --- a/regression_test/RAW/HQ49956/Makefile +++ b/regression_test/RAW/HQ49956/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -56,7 +57,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/RAW/HS16977/Makefile b/regression_test/RAW/HS16977/Makefile index e9aff4a..3c74695 100644 --- a/regression_test/RAW/HS16977/Makefile +++ b/regression_test/RAW/HS16977/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -56,7 +57,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/RAW/ustr/Makefile b/regression_test/RAW/ustr/Makefile index 00783da..103474b 100644 --- a/regression_test/RAW/ustr/Makefile +++ b/regression_test/RAW/ustr/Makefile @@ -7,6 +7,7 @@ # # Contributors: # Botond Baranyi – initial implementation +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -54,7 +55,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/AbstractBlock/Makefile b/regression_test/XML/AbstractBlock/Makefile index 1bd8b83..2e91526 100644 --- a/regression_test/XML/AbstractBlock/Makefile +++ b/regression_test/XML/AbstractBlock/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR = ../.. @@ -59,7 +60,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/EXER-whitepaper/Makefile b/regression_test/XML/EXER-whitepaper/Makefile index 922a5a9..260899d 100644 --- a/regression_test/XML/EXER-whitepaper/Makefile +++ b/regression_test/XML/EXER-whitepaper/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## # @@ -82,6 +83,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MODULES:.tt 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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/XML/HM60295/Makefile b/regression_test/XML/HM60295/Makefile index dd345bd..88df207 100644 --- a/regression_test/XML/HM60295/Makefile +++ b/regression_test/XML/HM60295/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -36,6 +37,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = USER_HEADERS = $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/XML/HN15589/Makefile b/regression_test/XML/HN15589/Makefile index 0974202..fd9e727 100644 --- a/regression_test/XML/HN15589/Makefile +++ b/regression_test/XML/HN15589/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -71,6 +72,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MODULES:.tt 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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/XML/HQ30408/Makefile b/regression_test/XML/HQ30408/Makefile index 0d2a9ad..0c2cbd3 100644 --- a/regression_test/XML/HQ30408/Makefile +++ b/regression_test/XML/HQ30408/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR = ../.. @@ -60,7 +61,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/HR49727/Makefile b/regression_test/XML/HR49727/Makefile index bcc26d0..9f313ef 100644 --- a/regression_test/XML/HR49727/Makefile +++ b/regression_test/XML/HR49727/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Ormandi, Matyas +# Szabo, Bence Janos # ############################################################################## TOPDIR = ../.. @@ -60,7 +61,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/HU13380/Makefile b/regression_test/XML/HU13380/Makefile index 07796cf..edf8ebf 100644 --- a/regression_test/XML/HU13380/Makefile +++ b/regression_test/XML/HU13380/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR = ../.. @@ -59,7 +60,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/NegativeTest/Makefile b/regression_test/XML/NegativeTest/Makefile index 9898ed7..1759c8b 100644 --- a/regression_test/XML/NegativeTest/Makefile +++ b/regression_test/XML/NegativeTest/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## #only works with RT2 @@ -62,7 +63,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = ReadXmlImpl.cc diff --git a/regression_test/XML/TTCNandXML/Makefile b/regression_test/XML/TTCNandXML/Makefile index b382d2e..f9df9da 100644 --- a/regression_test/XML/TTCNandXML/Makefile +++ b/regression_test/XML/TTCNandXML/Makefile @@ -11,6 +11,7 @@ # Baranyi, Botond # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -95,6 +96,11 @@ GENERATED_SOURCES := $(notdir $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MO 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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif diff --git a/regression_test/XML/UseNilLong/Makefile b/regression_test/XML/UseNilLong/Makefile index b723b06..0564c5f 100644 --- a/regression_test/XML/UseNilLong/Makefile +++ b/regression_test/XML/UseNilLong/Makefile @@ -58,7 +58,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/XML/XER/Makefile b/regression_test/XML/XER/Makefile index 80715b9..996f1f5 100644 --- a/regression_test/XML/XER/Makefile +++ b/regression_test/XML/XER/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -96,6 +97,11 @@ GENERATED_SOURCES := $(notdir $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MO 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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/XML/XMLqualif/Makefile b/regression_test/XML/XMLqualif/Makefile index a0c69c2..b435ad2 100644 --- a/regression_test/XML/XMLqualif/Makefile +++ b/regression_test/XML/XMLqualif/Makefile @@ -10,6 +10,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -96,6 +97,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.cc) $(TTCN3_PP_MODULES:.ttcnpp=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/XML/XmlWorkflow/PIPEasp_CNL113334/test/Makefile b/regression_test/XML/XmlWorkflow/PIPEasp_CNL113334/test/Makefile index 9234bd1..9fc0bd3 100644 --- a/regression_test/XML/XmlWorkflow/PIPEasp_CNL113334/test/Makefile +++ b/regression_test/XML/XmlWorkflow/PIPEasp_CNL113334/test/Makefile @@ -29,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = PIPEasp_PT.cc diff --git a/regression_test/XML/XmlWorkflow/bin/prj2mk.pl b/regression_test/XML/XmlWorkflow/bin/prj2mk.pl index 987bd64..fcb4b64 100644 --- a/regression_test/XML/XmlWorkflow/bin/prj2mk.pl +++ b/regression_test/XML/XmlWorkflow/bin/prj2mk.pl @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Pandi, Krisztian # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################### @@ -44,7 +45,7 @@ do { } unless $prj_dir =~ s!/[^/]+$!/!; # Pick up parameters from the environment -my $split = defined $ENV{CODE_SPLIT} ? '-Utype' : ''; +my $split = defined $ENV{SPLIT_FLAG} ? $ENV{SPLIT_FLAG} : ''; my $rt2 = defined $ENV{RT2} ? '-R' : ''; my %files; diff --git a/regression_test/XML/XmlWorkflow/bin2/prj2mk.pl b/regression_test/XML/XmlWorkflow/bin2/prj2mk.pl index 4627d29..271bbda 100644 --- a/regression_test/XML/XmlWorkflow/bin2/prj2mk.pl +++ b/regression_test/XML/XmlWorkflow/bin2/prj2mk.pl @@ -8,6 +8,7 @@ # # Contributors: # Balasko, Jeno +# Szabo, Bence Janos # ############################################################################### @@ -41,7 +42,7 @@ do { } unless $prj_dir =~ s!/[^/]+$!/!; # Pick up parameters from the environment -my $split = defined $ENV{CODE_SPLIT} ? '-Utype' : ''; +my $split = defined $ENV{SPLIT_FLAG} ? $ENV{SPLIT_FLAG} : ''; my $rt2 = defined $ENV{RT2} ? '-R' : ''; my %files; diff --git a/regression_test/XML/xsdConverter/Makefile.converter b/regression_test/XML/xsdConverter/Makefile.converter index b5ff34d..49f7be1 100644 --- a/regression_test/XML/xsdConverter/Makefile.converter +++ b/regression_test/XML/xsdConverter/Makefile.converter @@ -22,6 +22,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif diff --git a/regression_test/acceptance_test/Fibonacci/Makefile b/regression_test/acceptance_test/Fibonacci/Makefile index 971d9bf..4498894 100644 --- a/regression_test/acceptance_test/Fibonacci/Makefile +++ b/regression_test/acceptance_test/Fibonacci/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Gecse, Roland # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## # This Makefile was generated by the compiler @@ -75,6 +76,11 @@ GENERATED_SOURCES = Fibonacci.cc GENERATED_HEADERS = Fibonacci.hh ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/acceptance_test/chinese/Makefile b/regression_test/acceptance_test/chinese/Makefile index dab4861..1d6a2f1 100644 --- a/regression_test/acceptance_test/chinese/Makefile +++ b/regression_test/acceptance_test/chinese/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Gecse, Roland # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## # This Makefile was generated by the compiler @@ -76,6 +77,11 @@ GENERATED_SOURCES = chinese.cc GENERATED_HEADERS = chinese.hh ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/acceptance_test/comptest/Makefile b/regression_test/acceptance_test/comptest/Makefile index e445fc9..bf8f8aa 100644 --- a/regression_test/acceptance_test/comptest/Makefile +++ b/regression_test/acceptance_test/comptest/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Gecse, Roland # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../ @@ -46,6 +47,11 @@ GENERATED_SOURCES = comptest.cc GENERATED_HEADERS = comptest.hh ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/acceptance_test/testerlanc/Makefile b/regression_test/acceptance_test/testerlanc/Makefile index 3e031e7..3c2a500 100644 --- a/regression_test/acceptance_test/testerlanc/Makefile +++ b/regression_test/acceptance_test/testerlanc/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Gecse, Roland # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## # This Makefile was generated by the compiler @@ -76,6 +77,11 @@ GENERATED_SOURCES = testerlanc.cc GENERATED_HEADERS = testerlanc.hh ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/all_from/Makefile b/regression_test/all_from/Makefile index c0d381b..08d6653 100644 --- a/regression_test/all_from/Makefile +++ b/regression_test/all_from/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Baranyi, Botond # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -63,7 +64,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = f_ext.cc diff --git a/regression_test/anytype/Makefile b/regression_test/anytype/Makefile index 4f45e73..844136f 100644 --- a/regression_test/anytype/Makefile +++ b/regression_test/anytype/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -85,6 +86,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(PREPROCESSED_TTCN3_MODULES:.ttc 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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/anytypeOper/Makefile b/regression_test/anytypeOper/Makefile index ae395cb..6ba0b6e 100644 --- a/regression_test/anytypeOper/Makefile +++ b/regression_test/anytypeOper/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -24,6 +25,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/arrayOper/Makefile b/regression_test/arrayOper/Makefile index cc424f4..821c770 100644 --- a/regression_test/arrayOper/Makefile +++ b/regression_test/arrayOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/assignmentNotation/Makefile b/regression_test/assignmentNotation/Makefile index fb9e729..299e617 100644 --- a/regression_test/assignmentNotation/Makefile +++ b/regression_test/assignmentNotation/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) ASN_Definitions.cc GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) ASN_Definitions.hh ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/basicStatem/Makefile b/regression_test/basicStatem/Makefile index eb448e0..754bf0d 100644 --- a/regression_test/basicStatem/Makefile +++ b/regression_test/basicStatem/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/bitstrOper/Makefile b/regression_test/bitstrOper/Makefile index c74ab85..4203f66 100644 --- a/regression_test/bitstrOper/Makefile +++ b/regression_test/bitstrOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/boolOper/Makefile b/regression_test/boolOper/Makefile index f1ba50f..ba82931 100644 --- a/regression_test/boolOper/Makefile +++ b/regression_test/boolOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/cfgFile/define/macro_reference/Makefile b/regression_test/cfgFile/define/macro_reference/Makefile index 37842c4..5513772 100644 --- a/regression_test/cfgFile/define/macro_reference/Makefile +++ b/regression_test/cfgFile/define/macro_reference/Makefile @@ -10,6 +10,7 @@ # Beres, Szabolcs # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../../ @@ -48,12 +49,12 @@ all: $(GENERATED_DIRS) $(DIR_SINGLE): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) $(DIR_PARALLEL): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/cfgFile/define/structured/Makefile b/regression_test/cfgFile/define/structured/Makefile index d131aed..3061792 100644 --- a/regression_test/cfgFile/define/structured/Makefile +++ b/regression_test/cfgFile/define/structured/Makefile @@ -10,6 +10,7 @@ # Beres, Szabolcs # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../../ @@ -48,12 +49,12 @@ all: $(GENERATED_DIRS) $(DIR_SINGLE): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) 'CXXFLAGS=$(CXXFLAGS)' 'LDFLAGS=$(LDFLAGS)' + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) 'CXXFLAGS=$(CXXFLAGS)' 'LDFLAGS=$(LDFLAGS)' $(DIR_PARALLEL): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) 'CXXFLAGS=$(CXXFLAGS)' 'LDFLAGS=$(LDFLAGS)' + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) 'CXXFLAGS=$(CXXFLAGS)' 'LDFLAGS=$(LDFLAGS)' run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/cfgFile/module_parameters/assignment/Makefile b/regression_test/cfgFile/module_parameters/assignment/Makefile index 97e3f6d..8a88a73 100644 --- a/regression_test/cfgFile/module_parameters/assignment/Makefile +++ b/regression_test/cfgFile/module_parameters/assignment/Makefile @@ -10,6 +10,7 @@ # Beres, Szabolcs # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../../ @@ -45,12 +46,12 @@ all: $(GENERATED_DIRS) dir_single_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) dir_parallel_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/cfgFile/module_parameters/concat/Makefile b/regression_test/cfgFile/module_parameters/concat/Makefile index 22e71ed..7366531 100644 --- a/regression_test/cfgFile/module_parameters/concat/Makefile +++ b/regression_test/cfgFile/module_parameters/concat/Makefile @@ -10,6 +10,7 @@ # Beres, Szabolcs # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../../ @@ -45,12 +46,12 @@ all: $(GENERATED_DIRS) dir_single_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) dir_parallel_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/cfgFile/module_parameters/references/Makefile b/regression_test/cfgFile/module_parameters/references/Makefile index 9db9460..6337ff9 100644 --- a/regression_test/cfgFile/module_parameters/references/Makefile +++ b/regression_test/cfgFile/module_parameters/references/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../../ @@ -43,12 +44,12 @@ all: $(GENERATED_DIRS) dir_single_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) dir_parallel_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/cfgFile/ordered_include/Makefile b/regression_test/cfgFile/ordered_include/Makefile index 2812686..dfde534 100644 --- a/regression_test/cfgFile/ordered_include/Makefile +++ b/regression_test/cfgFile/ordered_include/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../ @@ -46,12 +47,12 @@ all: $(GENERATED_DIRS) dir_single_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s ./* && $(MAKE_PROG) dir_parallel_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) ./* && $(MAKE_PROG) run: clean run_single run_parallel diff --git a/regression_test/cfgFile/testport_parameters/Makefile b/regression_test/cfgFile/testport_parameters/Makefile index 1012a28..4c0d3bd 100644 --- a/regression_test/cfgFile/testport_parameters/Makefile +++ b/regression_test/cfgFile/testport_parameters/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Baranyi, Botond # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../../ @@ -46,12 +47,12 @@ all: $(GENERATED_DIRS) dir_single_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s $(TTCN_MODULE) $(PORT) && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s $(TTCN_MODULE) $(PORT) && $(MAKE_PROG) dir_parallel_mode: mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(TTCN_MODULE) $(PORT) && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) $(TTCN_MODULE) $(PORT) && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) diff --git a/regression_test/charOper/Makefile b/regression_test/charOper/Makefile index 79abaf4..54c96c3 100644 --- a/regression_test/charOper/Makefile +++ b/regression_test/charOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/charstrOper/Makefile b/regression_test/charstrOper/Makefile index 64699fb..a3b093c 100644 --- a/regression_test/charstrOper/Makefile +++ b/regression_test/charstrOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/checkstate/Makefile b/regression_test/checkstate/Makefile index 462c4d9..19a3163 100644 --- a/regression_test/checkstate/Makefile +++ b/regression_test/checkstate/Makefile @@ -23,6 +23,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/commMessage/Makefile b/regression_test/commMessage/Makefile index 58ad502..a9eaba9 100644 --- a/regression_test/commMessage/Makefile +++ b/regression_test/commMessage/Makefile @@ -14,6 +14,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -34,6 +35,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/commProcedure/Makefile b/regression_test/commProcedure/Makefile index 4fde71e..4e61d44 100644 --- a/regression_test/commProcedure/Makefile +++ b/regression_test/commProcedure/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # Tatarka, Gabor # @@ -29,6 +30,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif GENERATED_SOURCES += CompileOnlyPort.cc CompileOnlyPortAddress.cc GENERATED_HEADERS += CompileOnlyPort.hh CompileOnlyPortAddress.hh diff --git a/regression_test/compileonly/HT48786/Makefile b/regression_test/compileonly/HT48786/Makefile index 8fb30f7..3d246df 100644 --- a/regression_test/compileonly/HT48786/Makefile +++ b/regression_test/compileonly/HT48786/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/assignmentNotation/Makefile b/regression_test/compileonly/assignmentNotation/Makefile index 4f0c3dd..aa0f7f2 100644 --- a/regression_test/compileonly/assignmentNotation/Makefile +++ b/regression_test/compileonly/assignmentNotation/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/attribQualif/Makefile b/regression_test/compileonly/attribQualif/Makefile index 1f6dd99..46502a7 100644 --- a/regression_test/compileonly/attribQualif/Makefile +++ b/regression_test/compileonly/attribQualif/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/circularImport/Makefile b/regression_test/compileonly/circularImport/Makefile index bb2e9b2..4010071 100644 --- a/regression_test/compileonly/circularImport/Makefile +++ b/regression_test/compileonly/circularImport/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -27,6 +28,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/circularImport2/Makefile b/regression_test/compileonly/circularImport2/Makefile index 04fbd8e..eca4a90 100644 --- a/regression_test/compileonly/circularImport2/Makefile +++ b/regression_test/compileonly/circularImport2/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -23,6 +24,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/compareImported/Makefile b/regression_test/compileonly/compareImported/Makefile index cbc7e8e..41e231f 100644 --- a/regression_test/compileonly/compareImported/Makefile +++ b/regression_test/compileonly/compareImported/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/compoundif/Makefile b/regression_test/compileonly/compoundif/Makefile index 616d224..c273828 100644 --- a/regression_test/compileonly/compoundif/Makefile +++ b/regression_test/compileonly/compoundif/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Forstner, Matyas # Kovacs, Ferenc +# Szabo, Bence Janos # Raduly, Csaba # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/defaultParamUsageBeforeDecl/Makefile b/regression_test/compileonly/defaultParamUsageBeforeDecl/Makefile index 024abd7..c075302 100644 --- a/regression_test/compileonly/defaultParamUsageBeforeDecl/Makefile +++ b/regression_test/compileonly/defaultParamUsageBeforeDecl/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -27,6 +28,11 @@ GENERATED_SOURCES := $(MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/dynamicTemplate/Makefile b/regression_test/compileonly/dynamicTemplate/Makefile index 49b734b..beb093b 100644 --- a/regression_test/compileonly/dynamicTemplate/Makefile +++ b/regression_test/compileonly/dynamicTemplate/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = external.cc @@ -62,3 +68,4 @@ DynamicTemplate.o: DynamicTemplate.cc DynamicTemplate.hh vpath $(USER_SOURCES) $(ABS_SRC) + diff --git a/regression_test/compileonly/isbound/Makefile b/regression_test/compileonly/isbound/Makefile index 0324c07..cc13f9c 100644 --- a/regression_test/compileonly/isbound/Makefile +++ b/regression_test/compileonly/isbound/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## #!/usr/bin/make -f @@ -50,6 +51,11 @@ GOOD_HH := $(GOOD_TTCN:.ttcn=.hh) ifdef CODE_SPLIT GOOD_CC := $(foreach file, $(GOOD_CC:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GOOD_CC:.cc=), $(addprefix $(file), $(POSTFIXES))) +GOOD_CC += $(GENERATED_SOURCES2) endif diff --git a/regression_test/compileonly/namedActualParameters/Makefile b/regression_test/compileonly/namedActualParameters/Makefile index 2acf70c..2849455 100644 --- a/regression_test/compileonly/namedActualParameters/Makefile +++ b/regression_test/compileonly/namedActualParameters/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/openType/Makefile b/regression_test/compileonly/openType/Makefile index a49f48f..529e452 100644 --- a/regression_test/compileonly/openType/Makefile +++ b/regression_test/compileonly/openType/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/openTypeNames/Makefile b/regression_test/compileonly/openTypeNames/Makefile index 9f47183..baf4892 100644 --- a/regression_test/compileonly/openTypeNames/Makefile +++ b/regression_test/compileonly/openTypeNames/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -24,6 +25,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/optionalAssignCompare/Makefile b/regression_test/compileonly/optionalAssignCompare/Makefile index 6ab5d74..3edd0da 100644 --- a/regression_test/compileonly/optionalAssignCompare/Makefile +++ b/regression_test/compileonly/optionalAssignCompare/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/portConstructor/Makefile b/regression_test/compileonly/portConstructor/Makefile index 264a286..c7fc1b5 100644 --- a/regression_test/compileonly/portConstructor/Makefile +++ b/regression_test/compileonly/portConstructor/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -27,6 +28,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif GENERATED_SOURCES += PT1.cc PT3.cc GENERATED_HEADERS += PT1.hh PT3.hh diff --git a/regression_test/compileonly/selectCase/Makefile b/regression_test/compileonly/selectCase/Makefile index 846e2da..ddee698 100644 --- a/regression_test/compileonly/selectCase/Makefile +++ b/regression_test/compileonly/selectCase/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -23,6 +24,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/styleGuide/Makefile b/regression_test/compileonly/styleGuide/Makefile index ed9c3c4..3b01071 100644 --- a/regression_test/compileonly/styleGuide/Makefile +++ b/regression_test/compileonly/styleGuide/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -33,6 +34,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif GENERATED_SOURCES += $(TESTPORT_SOURCES) GENERATED_HEADERS += $(TESTPORT_SOURCES:.cc=.hh) diff --git a/regression_test/compileonly/topLevelPdu/Makefile b/regression_test/compileonly/topLevelPdu/Makefile index 1cb1457..410f705 100644 --- a/regression_test/compileonly/topLevelPdu/Makefile +++ b/regression_test/compileonly/topLevelPdu/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -27,6 +28,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/compileonly/typeInstantiation/Makefile b/regression_test/compileonly/typeInstantiation/Makefile index 4bd5e8e..a147a05 100644 --- a/regression_test/compileonly/typeInstantiation/Makefile +++ b/regression_test/compileonly/typeInstantiation/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES := $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS := $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/configOper/Makefile b/regression_test/configOper/Makefile index d689410..9531689 100644 --- a/regression_test/configOper/Makefile +++ b/regression_test/configOper/Makefile @@ -13,6 +13,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES := configOper_port2.cc USER_HEADERS := $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/controlTimer/Makefile b/regression_test/controlTimer/Makefile index 7d85d58..00cecf1 100644 --- a/regression_test/controlTimer/Makefile +++ b/regression_test/controlTimer/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -27,6 +28,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/customEncoding/Makefile b/regression_test/customEncoding/Makefile index b5d37f2..5d4a4ab 100644 --- a/regression_test/customEncoding/Makefile +++ b/regression_test/customEncoding/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o) diff --git a/regression_test/defaultOper/Makefile b/regression_test/defaultOper/Makefile index 776aef8..093f8c2 100644 --- a/regression_test/defaultOper/Makefile +++ b/regression_test/defaultOper/Makefile @@ -10,6 +10,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/enumOper/Makefile b/regression_test/enumOper/Makefile index 160226a..edf0c4f 100644 --- a/regression_test/enumOper/Makefile +++ b/regression_test/enumOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/floatOper/Makefile b/regression_test/floatOper/Makefile index 99a4554..fc26c4f 100644 --- a/regression_test/floatOper/Makefile +++ b/regression_test/floatOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/functionReference/Makefile b/regression_test/functionReference/Makefile index 2d77043..75ac7dd 100644 --- a/regression_test/functionReference/Makefile +++ b/regression_test/functionReference/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/functionSubref/Makefile b/regression_test/functionSubref/Makefile index 9029e61..c90509f 100644 --- a/regression_test/functionSubref/Makefile +++ b/regression_test/functionSubref/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -24,6 +25,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = USER_HEADERS = $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/hexstrOper/Makefile b/regression_test/hexstrOper/Makefile index 228d715..911b1cb 100644 --- a/regression_test/hexstrOper/Makefile +++ b/regression_test/hexstrOper/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/hostid/Makefile b/regression_test/hostid/Makefile index 614df8f..1f18f47 100644 --- a/regression_test/hostid/Makefile +++ b/regression_test/hostid/Makefile @@ -23,6 +23,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/iconv/Makefile b/regression_test/iconv/Makefile index e0520e5..998809e 100644 --- a/regression_test/iconv/Makefile +++ b/regression_test/iconv/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -51,6 +52,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # C/C++ Source & header files of Test Ports, external functions and diff --git a/regression_test/implicitMsgEncoding/Makefile b/regression_test/implicitMsgEncoding/Makefile index c482b0e..dc0e9bc 100644 --- a/regression_test/implicitMsgEncoding/Makefile +++ b/regression_test/implicitMsgEncoding/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/implicitOmit/Makefile b/regression_test/implicitOmit/Makefile index e091c96..e5c5026 100644 --- a/regression_test/implicitOmit/Makefile +++ b/regression_test/implicitOmit/Makefile @@ -11,6 +11,7 @@ # Balasko, Jeno # Baranyi, Botond # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -52,7 +53,12 @@ ASN1_MODULES = IOAsn.asn # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/intOper/Makefile b/regression_test/intOper/Makefile index 11be016..b07d020 100644 --- a/regression_test/intOper/Makefile +++ b/regression_test/intOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = PCOType.cc USER_HEADERS = $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/ipv6/Makefile b/regression_test/ipv6/Makefile index 8aa79d7..002985f 100644 --- a/regression_test/ipv6/Makefile +++ b/regression_test/ipv6/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = USER_HEADERS = $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/ispresent/Makefile b/regression_test/ispresent/Makefile index dd4dc0d..2307b09 100644 --- a/regression_test/ispresent/Makefile +++ b/regression_test/ispresent/Makefile @@ -7,6 +7,7 @@ # # Contributors: # Balasko, Jeno +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -23,6 +24,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/json/Makefile b/regression_test/json/Makefile index 2c69459..33a6423 100644 --- a/regression_test/json/Makefile +++ b/regression_test/json/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/junitlogger/Makefile b/regression_test/junitlogger/Makefile index 98682c9..91eccd0 100644 --- a/regression_test/junitlogger/Makefile +++ b/regression_test/junitlogger/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Lovassy, Arpad +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/lazyEval/Makefile b/regression_test/lazyEval/Makefile index 20bae6e..218091e 100644 --- a/regression_test/lazyEval/Makefile +++ b/regression_test/lazyEval/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../ @@ -44,12 +45,12 @@ all: $(GENERATED_DIRS) $(DIR_SINGLE): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -s -e $(RUNNABLE) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -s -e $(RUNNABLE) ./* && $(MAKE_PROG) $(DIR_PARALLEL): mkdir $@ cd $@ && for file in $(FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -e $(RUNNABLE) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -e $(RUNNABLE) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(CFG) && grep "Overall verdict: pass" *.log diff --git a/regression_test/logFiles/Makefile b/regression_test/logFiles/Makefile index 8deeea6..adeada1 100644 --- a/regression_test/logFiles/Makefile +++ b/regression_test/logFiles/Makefile @@ -39,6 +39,12 @@ 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)) +else ifdef SPLIT_TO_SLICES +COMPILER_FLAGS += $(SPLIT_FLAG) +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES := $(ABS_SRC)/extfunc.cc diff --git a/regression_test/logger_control/Makefile b/regression_test/logger_control/Makefile index fa9f3cd..6279722 100644 --- a/regression_test/logger_control/Makefile +++ b/regression_test/logger_control/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -61,7 +62,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS := $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES := diff --git a/regression_test/logger_control/TitanLoggerControl.ttcn b/regression_test/logger_control/TitanLoggerControl.ttcn deleted file mode 120000 index c2f0bda..0000000 --- a/regression_test/logger_control/TitanLoggerControl.ttcn +++ /dev/null @@ -1 +0,0 @@ -../../core/TitanLoggerControl.ttcn \ No newline at end of file diff --git a/regression_test/loggerplugin/Makefile b/regression_test/loggerplugin/Makefile index 76730c3..274049e 100644 --- a/regression_test/loggerplugin/Makefile +++ b/regression_test/loggerplugin/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Delic, Adam +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -24,6 +25,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/lostTimer/Makefile b/regression_test/lostTimer/Makefile index 97c3832..40fe1ef 100644 --- a/regression_test/lostTimer/Makefile +++ b/regression_test/lostTimer/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/macros/Makefile b/regression_test/macros/Makefile index d77fac4..33fb96c 100644 --- a/regression_test/macros/Makefile +++ b/regression_test/macros/Makefile @@ -10,6 +10,7 @@ # Czerman, Oliver # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/modifiedTemplate/Makefile b/regression_test/modifiedTemplate/Makefile index 523cb88..8350669 100644 --- a/regression_test/modifiedTemplate/Makefile +++ b/regression_test/modifiedTemplate/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/namedActualParameters/Makefile b/regression_test/namedActualParameters/Makefile index 2a5c2b7..33bd9c7 100644 --- a/regression_test/namedActualParameters/Makefile +++ b/regression_test/namedActualParameters/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -27,6 +28,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/negativeTest/Makefile b/regression_test/negativeTest/Makefile index 9560f99..c7b0d0b 100644 --- a/regression_test/negativeTest/Makefile +++ b/regression_test/negativeTest/Makefile @@ -11,6 +11,7 @@ # Delic, Adam # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## ifeq "$(MAKELEVEL)" "0" @@ -49,6 +50,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/nonMandatoryPar/Makefile b/regression_test/nonMandatoryPar/Makefile index 0f23d8d..2705afe 100644 --- a/regression_test/nonMandatoryPar/Makefile +++ b/regression_test/nonMandatoryPar/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -27,6 +28,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = PCOType.cc USER_HEADERS = $(USER_SOURCES:.cc=.hh) diff --git a/regression_test/objidOper/Makefile b/regression_test/objidOper/Makefile index daa01c4..89fdd19 100644 --- a/regression_test/objidOper/Makefile +++ b/regression_test/objidOper/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -28,6 +29,11 @@ GENERATED_SOURCES := $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o) diff --git a/regression_test/octetstrOper/Makefile b/regression_test/octetstrOper/Makefile index ad0f22d..a6328e4 100644 --- a/regression_test/octetstrOper/Makefile +++ b/regression_test/octetstrOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/omitdef/Makefile b/regression_test/omitdef/Makefile index 1ce4670..72a2a4d 100644 --- a/regression_test/omitdef/Makefile +++ b/regression_test/omitdef/Makefile @@ -10,6 +10,7 @@ # Delic, Adam # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Szabados, Kristof # ############################################################################## @@ -30,6 +31,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/pattern_quadruples/Makefile b/regression_test/pattern_quadruples/Makefile index 215bfd2..9384a59 100644 --- a/regression_test/pattern_quadruples/Makefile +++ b/regression_test/pattern_quadruples/Makefile @@ -9,6 +9,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # Zalanyi, Balazs Andor # ############################################################################## @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/preCompilerFlags/Makefile b/regression_test/preCompilerFlags/Makefile index a1d1531..4b48737 100644 --- a/regression_test/preCompilerFlags/Makefile +++ b/regression_test/preCompilerFlags/Makefile @@ -12,6 +12,7 @@ # Dimitrov, Peter # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -31,6 +32,11 @@ GENERATED_SOURCES = $(PREPROCESSED_TTCN:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/predefFunction/Makefile b/regression_test/predefFunction/Makefile index 527ff5a..48a991c 100644 --- a/regression_test/predefFunction/Makefile +++ b/regression_test/predefFunction/Makefile @@ -14,6 +14,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -82,6 +83,12 @@ GENERATED_SOURCES := $(notdir $(TTCN3_MODULES:.ttcn=.cc)) GENERATED_HEADERS := $(notdir $(TTCN3_MODULES:.ttcn=.hh)) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +COMPILER_FLAGS += $(SPLIT_FLAG) endif # Source & header files of Test Ports and your other modules: diff --git a/regression_test/profiler/Makefile b/regression_test/profiler/Makefile index dc51e7a..26e3607 100644 --- a/regression_test/profiler/Makefile +++ b/regression_test/profiler/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -25,6 +26,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = PIPEasp_PT.cc @@ -43,6 +49,12 @@ PROF_TTCN3_LIB = ttcn3$(RT2_SUFFIX)-parallel$(DYNAMIC_SUFFIX) PROF_GENERATED_SOURCES = $(PROF_MODULES:.ttcn=.cc) PROF_GENERATED_HEADERS = $(PROF_GENERATED_SOURCES:.cc=.hh) +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +PROF_GENERATED_SOURCES2 := $(foreach file, $(PROF_GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +PROF_GENERATED_SOURCES += $(PROF_GENERATED_SOURCES2) +endif PROF_OBJECTS = $(PROF_GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/recofOper/Makefile b/regression_test/recofOper/Makefile index 9b10e78..3012771 100644 --- a/regression_test/recofOper/Makefile +++ b/regression_test/recofOper/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -37,6 +38,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/recordOper/Makefile b/regression_test/recordOper/Makefile index a00d2a4..e30fb83 100644 --- a/regression_test/recordOper/Makefile +++ b/regression_test/recordOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/setOper/Makefile b/regression_test/setOper/Makefile index d4290fe..a3fdbe8 100644 --- a/regression_test/setOper/Makefile +++ b/regression_test/setOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/setofMatch/Makefile b/regression_test/setofMatch/Makefile index 091a265..8a5d1b6 100644 --- a/regression_test/setofMatch/Makefile +++ b/regression_test/setofMatch/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/setofOper/Makefile b/regression_test/setofOper/Makefile index 6dc563a..03266d3 100644 --- a/regression_test/setofOper/Makefile +++ b/regression_test/setofOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/slider/Makefile b/regression_test/slider/Makefile index ceb717e..940293a 100644 --- a/regression_test/slider/Makefile +++ b/regression_test/slider/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -64,7 +65,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = PT1.cc UNDER.cc diff --git a/regression_test/templateAnytype/Makefile b/regression_test/templateAnytype/Makefile index 2b82b56..fe7ce46 100644 --- a/regression_test/templateAnytype/Makefile +++ b/regression_test/templateAnytype/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -24,6 +25,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateBitstr/Makefile b/regression_test/templateBitstr/Makefile index fd94be3..c934bad 100644 --- a/regression_test/templateBitstr/Makefile +++ b/regression_test/templateBitstr/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateBool/Makefile b/regression_test/templateBool/Makefile index 94c9c2b..ba60042 100644 --- a/regression_test/templateBool/Makefile +++ b/regression_test/templateBool/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateChar/Makefile b/regression_test/templateChar/Makefile index 52ff300..1399d23 100644 --- a/regression_test/templateChar/Makefile +++ b/regression_test/templateChar/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateCharstr/Makefile b/regression_test/templateCharstr/Makefile index f8cff23..72be5a2 100644 --- a/regression_test/templateCharstr/Makefile +++ b/regression_test/templateCharstr/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateEnum/Makefile b/regression_test/templateEnum/Makefile index 77b3b7b..135a98e 100644 --- a/regression_test/templateEnum/Makefile +++ b/regression_test/templateEnum/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateFloat/Makefile b/regression_test/templateFloat/Makefile index ae2d7b0..87232cc 100644 --- a/regression_test/templateFloat/Makefile +++ b/regression_test/templateFloat/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateHexstr/Makefile b/regression_test/templateHexstr/Makefile index cdc6aae..bd9213e 100644 --- a/regression_test/templateHexstr/Makefile +++ b/regression_test/templateHexstr/Makefile @@ -7,6 +7,7 @@ # # Contributors: # Baranyi, Botond – initial implementation +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -23,6 +24,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateInt/Makefile b/regression_test/templateInt/Makefile index 6c1fc74..ecab073 100644 --- a/regression_test/templateInt/Makefile +++ b/regression_test/templateInt/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateOctetstr/Makefile b/regression_test/templateOctetstr/Makefile index de278d9..3950333 100644 --- a/regression_test/templateOctetstr/Makefile +++ b/regression_test/templateOctetstr/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateOmit/LegacyTests/Makefile b/regression_test/templateOmit/LegacyTests/Makefile index 6d7d5e4..145258c 100644 --- a/regression_test/templateOmit/LegacyTests/Makefile +++ b/regression_test/templateOmit/LegacyTests/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateOmit/NewTests/Makefile b/regression_test/templateOmit/NewTests/Makefile index c2d8229..92c1487 100644 --- a/regression_test/templateOmit/NewTests/Makefile +++ b/regression_test/templateOmit/NewTests/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := ../.. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateRec/Makefile b/regression_test/templateRec/Makefile index 10888b9..9ad7ee1 100644 --- a/regression_test/templateRec/Makefile +++ b/regression_test/templateRec/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -34,6 +35,11 @@ COMPILER_FLAGS += -M ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateRecof/Makefile b/regression_test/templateRecof/Makefile index a583290..ab64eee 100644 --- a/regression_test/templateRecof/Makefile +++ b/regression_test/templateRecof/Makefile @@ -12,6 +12,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -29,6 +30,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateSet/Makefile b/regression_test/templateSet/Makefile index b441625..8d46b98 100644 --- a/regression_test/templateSet/Makefile +++ b/regression_test/templateSet/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateSetof/Makefile b/regression_test/templateSetof/Makefile index b9154d5..9753461 100644 --- a/regression_test/templateSetof/Makefile +++ b/regression_test/templateSetof/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateUnicharstr/Makefile b/regression_test/templateUnicharstr/Makefile index 9a99c77..d299465 100644 --- a/regression_test/templateUnicharstr/Makefile +++ b/regression_test/templateUnicharstr/Makefile @@ -7,6 +7,7 @@ # # Contributors: # Botond, Baranyi – initial implementation +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -23,6 +24,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/templateUnion/Makefile b/regression_test/templateUnion/Makefile index ea2dc17..4565c66 100644 --- a/regression_test/templateUnion/Makefile +++ b/regression_test/templateUnion/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/testcase_defparam/Makefile b/regression_test/testcase_defparam/Makefile index 63954ca..e2f7625 100644 --- a/regression_test/testcase_defparam/Makefile +++ b/regression_test/testcase_defparam/Makefile @@ -10,6 +10,7 @@ # Balasko, Jeno # Baranyi, Botond # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -62,7 +63,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/text2ttcn/Makefile b/regression_test/text2ttcn/Makefile index a643db2..bf55c5b 100644 --- a/regression_test/text2ttcn/Makefile +++ b/regression_test/text2ttcn/Makefile @@ -48,12 +48,12 @@ all: $(GENERATED_DIRS) $(DIR_SINGLE): mkdir $@ cd $@ && for file in $(SINGLE_FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -sM -e $(RUNNABLE) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -sM -e $(RUNNABLE) ./* && $(MAKE_PROG) $(DIR_PARALLEL): mkdir $@ cd $@ && for file in $(PARALLEL_FILES); do ln -s ../$$file || exit; done - cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) -M -e $(RUNNABLE) ./* && $(MAKE_PROG) + cd $@ && $(TTCN3_DIR)/bin/ttcn3_makefilegen $(COVERAGE_FLAG) $(SPLIT_FLAG) -M -e $(RUNNABLE) ./* && $(MAKE_PROG) run: $(GENERATED_DIRS) cd $(DIR_SINGLE) && ./$(RUNNABLE) $(SINGLE_CFG) && grep "Overall verdict: pass" *.log diff --git a/regression_test/transparent/Makefile b/regression_test/transparent/Makefile index 4c7456b..e1842b7 100644 --- a/regression_test/transparent/Makefile +++ b/regression_test/transparent/Makefile @@ -9,6 +9,7 @@ # Baji, Laszlo # Balasko, Jeno # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -71,7 +72,12 @@ ASN1_MODULES = # this project: GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - +ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) +endif # C/C++ Source & header files of Test Ports, external functions and # other modules: USER_SOURCES = diff --git a/regression_test/tryCatch/Makefile b/regression_test/tryCatch/Makefile index 032c5a9..fa23d03 100644 --- a/regression_test/tryCatch/Makefile +++ b/regression_test/tryCatch/Makefile @@ -7,6 +7,7 @@ # # Contributors: # Balasko, Jeno +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = external_function.cc PCOType.cc diff --git a/regression_test/ttcn2json/Makefile b/regression_test/ttcn2json/Makefile index 751baf1..9f87fc1 100644 --- a/regression_test/ttcn2json/Makefile +++ b/regression_test/ttcn2json/Makefile @@ -8,6 +8,7 @@ # Contributors: # Balasko, Jeno # Baranyi, Botond +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = PIPEasp_PT.cc f_ext_import_schema.cc diff --git a/regression_test/typeCompat/Makefile b/regression_test/typeCompat/Makefile index f873364..c11d5d8 100644 --- a/regression_test/typeCompat/Makefile +++ b/regression_test/typeCompat/Makefile @@ -10,6 +10,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -33,6 +34,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc) GENERATED_HEADERS = $(TTCN3_MODULES:.ttcn=.hh) $(ASN1_MODULES:.asn=.hh) ifdef CODE_SPLIT GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc _seqof.cc _setof.cc _union.cc)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/ucharstrOper/Makefile b/regression_test/ucharstrOper/Makefile index bdc679a..134d46f 100644 --- a/regression_test/ucharstrOper/Makefile +++ b/regression_test/ucharstrOper/Makefile @@ -28,6 +28,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = external.cc diff --git a/regression_test/uidChars/Makefile b/regression_test/uidChars/Makefile index 940f663..1d6671e 100644 --- a/regression_test/uidChars/Makefile +++ b/regression_test/uidChars/Makefile @@ -23,6 +23,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif USER_SOURCES = diff --git a/regression_test/unionOper/Makefile b/regression_test/unionOper/Makefile index 0ff192c..95d6861 100644 --- a/regression_test/unionOper/Makefile +++ b/regression_test/unionOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/verdictOper/Makefile b/regression_test/verdictOper/Makefile index 72a88aa..1e480b6 100644 --- a/regression_test/verdictOper/Makefile +++ b/regression_test/verdictOper/Makefile @@ -11,6 +11,7 @@ # Kovacs, Ferenc # Raduly, Csaba # Szabados, Kristof +# Szabo, Bence Janos # Szabo, Janos Zoltan – initial implementation # ############################################################################## @@ -28,6 +29,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/regression_test/visibility/Makefile b/regression_test/visibility/Makefile index d66454e..3718c74 100644 --- a/regression_test/visibility/Makefile +++ b/regression_test/visibility/Makefile @@ -10,6 +10,7 @@ # Czerman, Oliver # Kovacs, Ferenc # Raduly, Csaba +# Szabo, Bence Janos # ############################################################################## TOPDIR := .. @@ -26,6 +27,11 @@ GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.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)) +else ifdef SPLIT_TO_SLICES +POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_)) +POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc)) +GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES))) +GENERATED_SOURCES += $(GENERATED_SOURCES2) endif OBJECTS = $(GENERATED_SOURCES:.cc=.o) diff --git a/usrguide/referenceguide.doc b/usrguide/referenceguide.doc index b10a84cac88c9b07aa60bed6b64280a25a765140..5fb6ad7ba2f806cdc0c3f72b50bd1c862b1864f8 100644 GIT binary patch delta 125378 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î!M|cF$H$u<^taDz4!LUg8yA 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%0AR8yte8g6yG;!U=aG*=4cPzhDw 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 V;@)MwbMu0w!P4-ZRe^cF{{i&n4(R{@ -- 2.34.1