From e2280bbbd538c154f9320973a4f91caf1f279c04 Mon Sep 17 00:00:00 2001 From: BenceJanosSzabo <bence.janos.szabo@ericsson.com> Date: Thu, 8 Sep 2016 16:02:38 +0200 Subject: [PATCH] Added makefilescript handling to makefilegen (artf775059) Change-Id: I636ed36aad428270f817be155c5ed755350f02a4 Signed-off-by: BenceJanosSzabo <bence.janos.szabo@ericsson.com> --- compiler2/makefile.c | 49 +++++++++++++++++- compiler2/xpather.cc | 33 +++++++++--- compiler2/xpather.h | 3 +- .../compileonly/mfgen-tpd/Makefile | 3 +- .../makefileScript/ImprovedLinking/Makefile | 45 ++++++++++++++++ .../ImprovedLinking/Scripts/a_command.sh | 5 ++ .../ImprovedLinking/Scripts/b_command.sh | 5 ++ .../makefileScript/ImprovedLinking/a.tpd | 32 ++++++++++++ .../makefileScript/ImprovedLinking/b.tpd | 29 +++++++++++ .../mfgen-tpd/makefileScript/Makefile | 24 +++++++++ .../mfgen-tpd/makefileScript/Normal/Makefile | 44 ++++++++++++++++ .../mfgen-tpd/makefileScript/Normal/a.tpd | 29 +++++++++++ .../makefileScript/Normal/command.sh | 5 ++ .../OneMakefileWithAllFiles/Makefile | 43 +++++++++++++++ .../Scripts/a_command.sh | 5 ++ .../Scripts/b_command.sh | 5 ++ .../OneMakefileWithAllFiles/a.tpd | 32 ++++++++++++ .../OneMakefileWithAllFiles/b.tpd | 29 +++++++++++ .../RecursiveHierarchy/Makefile | 45 ++++++++++++++++ .../RecursiveHierarchy/Scripts/a_command.sh | 5 ++ .../RecursiveHierarchy/Scripts/b_command.sh | 5 ++ .../makefileScript/RecursiveHierarchy/a.tpd | 32 ++++++++++++ .../makefileScript/RecursiveHierarchy/b.tpd | 29 +++++++++++ .../makefileScript/WithMakefileDir/Makefile | 45 ++++++++++++++++ .../makefileScript/WithMakefileDir/a.tpd | 41 +++++++++++++++ .../makefileScript/WithMakefileDir/command.sh | 5 ++ .../makefileScript/WithMakefileName/Makefile | 44 ++++++++++++++++ .../makefileScript/WithMakefileName/a.tpd | 41 +++++++++++++++ .../WithMakefileName/command.sh | 5 ++ .../makefileScript/WithMakefilePath/Makefile | 45 ++++++++++++++++ .../makefileScript/WithMakefilePath/a.tpd | 41 +++++++++++++++ .../WithMakefilePath/command.sh | 5 ++ .../makefileScript/WithReqConfig/Makefile | 44 ++++++++++++++++ .../makefileScript/WithReqConfig/a.tpd | 41 +++++++++++++++ .../makefileScript/WithReqConfig/command.sh | 5 ++ .../makefileScript/WithScriptDiffDir/Makefile | 44 ++++++++++++++++ .../WithScriptDiffDir/Script/command.sh | 5 ++ .../makefileScript/WithScriptDiffDir/a.tpd | 41 +++++++++++++++ usrguide/referenceguide.doc | Bin 1928704 -> 1928704 bytes 39 files changed, 979 insertions(+), 9 deletions(-) create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Makefile create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/a_command.sh create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/b_command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/a.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/b.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/Normal/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/Normal/a.tpd create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/Normal/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Makefile create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/a_command.sh create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/b_command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/a.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/b.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Makefile create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/a_command.sh create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/b_command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/a.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/b.tpd create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/a.tpd create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/a.tpd create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/a.tpd create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/Makefile create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/a.tpd create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Makefile create mode 100755 regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Script/command.sh create mode 100644 regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/a.tpd diff --git a/compiler2/makefile.c b/compiler2/makefile.c index b944e43a7..6b8067347 100644 --- a/compiler2/makefile.c +++ b/compiler2/makefile.c @@ -3880,6 +3880,48 @@ static void run_makefilegen_commands(struct string2_list* run_command_list) } } +/** execute makefileScript */ +static void executeMakefileScript(const char* makefileScript, const char* output_file) { + char* output_file_name = NULL; + if (output_file != NULL) { + if (get_path_status(output_file) == PS_DIRECTORY) + output_file_name = mprintf("%s/Makefile", output_file); + else { + output_file_name = mcopystr(output_file); + } + } else { + output_file_name = mcopystr("Makefile"); + } + char* tmp_output_file_name = mprintf("%s.tmp", output_file_name); + + char* command = mprintf("%s %s %s", makefileScript, output_file_name, tmp_output_file_name); + fprintf(stderr, "Executing '%s' command\n", command); + int rv = system(command); + if (rv) ERROR("MakefileScript execution failed with error code %d", rv); + + if(access(output_file_name, W_OK) == -1) { + ERROR("%s does not exist, needed by makefile modifier script", output_file_name); + goto free_str; + } + if(access(tmp_output_file_name, W_OK) == -1) { + ERROR("%s does not exist, needed by makefile modifier script", tmp_output_file_name); + goto free_str; + } + // Replace old file with new + rv = rename(tmp_output_file_name, output_file_name); + if (rv != 0) { + ERROR("Moving makefile contents is unsuccessful"); + goto free_str; + } + + fprintf(stderr, "makefile modifier script executed successfully.\n"); + +free_str: + Free(output_file_name); + Free(tmp_output_file_name); + Free(command); +} + /** create symlinks and delete list */ static void generate_symlinks(struct string2_list* create_symlink_list) { @@ -4215,6 +4257,7 @@ int main(int argc, char *argv[]) struct string2_list* target_placement_list = NULL; struct string2_list* run_command_list = NULL; struct string2_list* required_configs = NULL; + char* makefileScript = NULL; #ifdef LICENSE license_struct lstr; @@ -4595,7 +4638,7 @@ int main(int argc, char *argv[]) &quflag, &dsflag, &cxxcompiler, &optlevel, &optflags, &dbflag, &drflag, &dtflag, &dxflag, &djflag, &fxflag, &doflag, &gfflag, &lnflag, &isflag, &asflag, &temp_wflag, &Yflag, &Mflag, &Eflag, &nflag, &diflag, solspeclibraries, sol8speclibraries, linuxspeclibraries, freebsdspeclibraries, win32speclibraries, &ttcn3prep, linkerlibraries, additionalObjects, linkerlibsearchpath, Vflag, Dflag, &Zflag, &Hflag, - &generatorCommandOutput, target_placement_list, Wflag, run_command_list, required_configs, &profiled_file_list, search_paths, n_search_paths); + &generatorCommandOutput, target_placement_list, Wflag, run_command_list, required_configs, &profiled_file_list, search_paths, n_search_paths, &makefileScript); // wflag overrides temp_wflag if (!wflag) { @@ -4640,6 +4683,9 @@ int main(int argc, char *argv[]) drflag, dtflag, dxflag, djflag, fxflag, doflag, gfflag, lnflag, isflag, asflag, wflag, Yflag, Mflag, Eflag, nflag, diflag, solspeclibraries, sol8speclibraries, linuxspeclibraries, freebsdspeclibraries, win32speclibraries, ttcn3prep, linkerlibraries, additionalObjects, linkerlibsearchpath, generatorCommandOutput, target_placement_list); + if (makefileScript != NULL) { + executeMakefileScript(makefileScript, output_file); + } } free_string_list(sub_project_dirs); @@ -4664,6 +4710,7 @@ int main(int argc, char *argv[]) Free(generatorCommandOutput); free_string2_list(target_placement_list); free_string2_list(required_configs); + Free(makefileScript); Free(other_files); if (tpd_processed == TPD_SUCCESS) { diff --git a/compiler2/xpather.cc b/compiler2/xpather.cc index d1cbef008..005fe3abb 100644 --- a/compiler2/xpather.cc +++ b/compiler2/xpather.cc @@ -1218,7 +1218,7 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char* tpdName, co struct string_list* linkerlibs, struct string_list* additionalObjects, struct string_list* linkerlibsearchp, boolean Vflag, boolean Dflag, boolean *p_Zflag, boolean *p_Hflag, char** generatorCommandOutput, struct string2_list* target_placement_list, boolean prefix_workdir, struct string2_list* run_command_list, map<cstring, int>& seen_tpd_files, struct string2_list* required_configs, struct string_list** profiled_file_list, - const char **search_paths, size_t n_search_paths, struct config_struct * const all_configs); + const char **search_paths, size_t n_search_paths, char** makefileScript, struct config_struct * const all_configs); extern "C" tpd_result process_tpd(const char *p_tpd_name, const char *actcfg, const char *file_list_path, int *p_argc, char ***p_argv, @@ -1238,7 +1238,7 @@ extern "C" tpd_result process_tpd(const char *p_tpd_name, const char *actcfg, string_list* linkerlibs, string_list* additionalObjects, string_list* linkerlibsearchp, boolean Vflag, boolean Dflag, boolean *p_Zflag, boolean *p_Hflag, char** generatorCommandOutput, struct string2_list* target_placement_list, boolean prefix_workdir, struct string2_list* run_command_list, struct string2_list* required_configs, struct string_list** profiled_file_list, - const char **search_paths, size_t n_search_paths) { + const char **search_paths, size_t n_search_paths, char** makefileScript) { map<cstring, int> seen_tpd_files; char *tpdName = NULL; @@ -1267,7 +1267,7 @@ extern "C" tpd_result process_tpd(const char *p_tpd_name, const char *actcfg, linkerlibs, additionalObjects, linkerlibsearchp, Vflag, Dflag, p_Zflag, p_Hflag, generatorCommandOutput, target_placement_list, prefix_workdir, run_command_list, seen_tpd_files, required_configs, profiled_file_list, - search_paths, n_search_paths, all_configs); + search_paths, n_search_paths, makefileScript, all_configs); if (success == TPD_SUCCESS) { struct config_list* tmp_configs = NULL; @@ -1295,7 +1295,7 @@ extern "C" tpd_result process_tpd(const char *p_tpd_name, const char *actcfg, linkerlibs, additionalObjects, linkerlibsearchp, Vflag, Dflag, p_Zflag, p_Hflag, generatorCommandOutput, target_placement_list, prefix_workdir, run_command_list, seen_tpd_files, required_configs, profiled_file_list, - search_paths, n_search_paths, all_configs); + search_paths, n_search_paths, makefileScript, all_configs); } if (TPD_FAILED == success){ exit(EXIT_FAILURE); @@ -1347,7 +1347,7 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char *tpdName, co string_list* linkerlibs, string_list* additionalObjects, string_list* linkerlibsearchp, boolean Vflag, boolean Dflag, boolean *p_Zflag, boolean *p_Hflag, char** generatorCommandOutput, struct string2_list* target_placement_list, boolean prefix_workdir, struct string2_list* run_command_list, map<cstring, int>& seen_tpd_files, struct string2_list* required_configs, struct string_list** profiled_file_list, - const char **search_paths, size_t n_search_paths, struct config_struct * const all_configs) + const char **search_paths, size_t n_search_paths, char** makefileScript, struct config_struct * const all_configs) { tpd_result result = TPD_SUCCESS; // read-only non-pointer aliases @@ -1933,6 +1933,27 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char *tpdName, co } } } + + // Extract the makefileScript only for top level + // In the recursive case the subsequent makefile calls will process the + // makefileScript + if (local_argc != 0) + { + char *makefileScriptXpath = mprintf( + "/TITAN_Project_File_Information/Configurations/Configuration[@name='%s']" + "/ProjectProperties/LocalBuildSettings/MakefileScript/text()", + actcfg); + XPathObject makefileScriptObj(run_xpath(xpathCtx, makefileScriptXpath)); + Free(makefileScriptXpath); + if (makefileScriptObj->nodesetval && makefileScriptObj->nodesetval->nodeNr > 0) { + const char* file_path = (const char*)makefileScriptObj->nodesetval->nodeTab[0]->content; + expstring_t rel_file_dir = get_dir_from_path(file_path); + expstring_t file_name = get_file_from_path(file_path); + expstring_t abs_dir_path = get_absolute_dir(rel_file_dir, abs_tpd_dir, TRUE); + expstring_t abs_file_name = compose_path_name(abs_dir_path, file_name); + *makefileScript = mcopystr(abs_file_name); + } + } // Extract the default target option // if it is not defined as a command line argument @@ -2826,7 +2847,7 @@ static tpd_result process_tpd_internal(const char *p_tpd_name, char *tpdName, co solspeclibs, sol8speclibs, linuxspeclibs, freebsdspeclibs, win32speclibs, ttcn3prep, linkerlibs, additionalObjects, linkerlibsearchp, Vflag, FALSE, &my_Zflag, &my_Hflag, NULL, NULL, prefix_workdir, run_command_list, seen_tpd_files, required_configs, profiled_file_list, - search_paths, n_search_paths, all_configs); + search_paths, n_search_paths, makefileScript, all_configs); autostring sub_proj_abs_work_dir_as(sub_proj_abs_work_dir); // ?! diff --git a/compiler2/xpather.h b/compiler2/xpather.h index b54b37324..860e7644f 100644 --- a/compiler2/xpather.h +++ b/compiler2/xpather.h @@ -246,6 +246,7 @@ void free_string2_list(struct string2_list* act_elem); * @param run_command_list contains the working directories and the makefilegen commands to be called there * @param search_paths contains the paths that can be tried if a file is not found * @param n_search_paths contains the size of relative_prefixes + * @param makefileScript contains the script that can modify the makefile * @return TPD_SUCCESS if parsing successful, TPD_SKIPPED if the tpd * was seen already, or TPD_FAILED on error. */ @@ -275,6 +276,6 @@ tpd_result process_tpd(const char *p_tpd_name, const char *actcfg, struct string_list* linuxspeclibs, struct string_list* freebsdspeclibs, struct string_list* win32speclibs, char** ttcn3preprocessor, struct string_list* linkerlibs, struct string_list* additionalObjects, struct string_list* linkerlibsearchpath, boolean Vflag, boolean Dflag, boolean *Zflag, boolean *Hflag, char** generatorCommandOutput, struct string2_list* target_placement_list, boolean prefix_workdir, struct string2_list* run_command_list, - struct string2_list* required_configs, struct string_list** profiled_file_list, const char **search_paths, size_t n_search_paths); + struct string2_list* required_configs, struct string_list** profiled_file_list, const char **search_paths, size_t n_search_paths, char** makefileScript); #endif /* XPATHER_H_ */ diff --git a/regression_test/compileonly/mfgen-tpd/Makefile b/regression_test/compileonly/mfgen-tpd/Makefile index 889a5a299..937389b4f 100644 --- a/regression_test/compileonly/mfgen-tpd/Makefile +++ b/regression_test/compileonly/mfgen-tpd/Makefile @@ -31,7 +31,8 @@ MAKEPROG := ${MAKE} DIRLIST := buildconfig_param invalid_buildconfig_param invalid_buildconfig_tpd \ HP79745 HQ56829 HQ56834 HQ56848 library HR30356 flagTest HR30365 dependency_check \ - required_config required_config_v2 required_config_v3 disablePredefinedExternalFolder + required_config required_config_v2 required_config_v3 disablePredefinedExternalFolder \ + makefileScript # The default target. ifeq ($(findstring c,$(MFGEN_FLAGS)),) # no -c diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Makefile new file mode 100644 index 000000000..92e3effb1 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Makefile @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -F $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -WrZH + +CheckTpd: BuildTpd + if [ ! -f "./a_bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=ImprovedLinkingA" ./a_bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test ImprovedLinking failed: Overall verdict: fail" && exit 1; fi + if [ ! -f "./b_bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=ImprovedLinkingB" ./b_bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test ImprovedLinking failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf a_bin b_bin + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/a_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/a_command.sh new file mode 100755 index 000000000..f314fd7b8 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/a_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=ImprovedLinkingA' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/b_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/b_command.sh new file mode 100755 index 000000000..33bba0e10 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/Scripts/b_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=ImprovedLinkingB' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/a.tpd new file mode 100644 index 000000000..a292e9d32 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/a.tpd @@ -0,0 +1,32 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ReferencedProjects> + <ReferencedProject name="b" projectLocationURI="b.tpd"/> + </ReferencedProjects> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/a_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/b.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/b.tpd new file mode 100644 index 000000000..0c972d482 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/ImprovedLinking/b.tpd @@ -0,0 +1,29 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>b</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/b_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/Makefile new file mode 100644 index 000000000..fa86ecf67 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/Makefile @@ -0,0 +1,24 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos – initial implementation +# +############################################################################## +TOPDIR := ../../.. +include $(TOPDIR)/Makefile.regression + +CODIRS := Normal WithReqConfig WithMakefileName WithMakefileDir \ + WithMakefilePath WithScriptDiffDir RecursiveHierarchy \ + OneMakefileWithAllFiles ImprovedLinking + + +# All dirs have a test in them. The dir's makefile will check the +# generated makefile if the script inserted a line into it. + +all dep clean distclean: + for dir in $(CODIRS); do $(MAKE) -C $$dir $@ || exit; done diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/Makefile new file mode 100644 index 000000000..2122fc8d6 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/Makefile @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd + +CheckTpd: BuildTpd + if [ ! -f "./bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=Normal" ./bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test Normal failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/a.tpd new file mode 100644 index 000000000..ab0a45b79 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/a.tpd @@ -0,0 +1,29 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/command.sh new file mode 100755 index 000000000..e4155ae13 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/Normal/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=Normal' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Makefile new file mode 100644 index 000000000..7f9d2b5e3 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Makefile @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd + +CheckTpd: BuildTpd + if [ ! -f "./bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=OneMakefileWithAllFiles" ./bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test OneMakefileWithAllFiles failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/a_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/a_command.sh new file mode 100755 index 000000000..66452bffe --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/a_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=OneMakefileWithAllFilesA' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/b_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/b_command.sh new file mode 100755 index 000000000..8510fd3ea --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/Scripts/b_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=OneMakefileWithAllFilesB' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/a.tpd new file mode 100644 index 000000000..a292e9d32 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/a.tpd @@ -0,0 +1,32 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ReferencedProjects> + <ReferencedProject name="b" projectLocationURI="b.tpd"/> + </ReferencedProjects> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/a_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/b.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/b.tpd new file mode 100644 index 000000000..0c972d482 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/OneMakefileWithAllFiles/b.tpd @@ -0,0 +1,29 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>b</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/b_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Makefile new file mode 100644 index 000000000..f86b14fb6 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Makefile @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -F $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -rWc + +CheckTpd: BuildTpd + if [ ! -f "./a_bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=RecursiveHierarchyA" ./a_bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test RecursiveHierarchy failed: Overall verdict: fail" && exit 1; fi + if [ ! -f "./b_bin/Makefile" ] || [ `grep -c "SCRIPTFLAG=RecursiveHierarchyB" ./b_bin/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test RecursiveHierarchy failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf a_bin b_bin + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/a_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/a_command.sh new file mode 100755 index 000000000..aacc8b1d8 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/a_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=RecursiveHierarchyA' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/b_command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/b_command.sh new file mode 100755 index 000000000..1e53bcc1f --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/Scripts/b_command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=RecursiveHierarchyB' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/a.tpd new file mode 100644 index 000000000..a292e9d32 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/a.tpd @@ -0,0 +1,32 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ReferencedProjects> + <ReferencedProject name="b" projectLocationURI="b.tpd"/> + </ReferencedProjects> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/a_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/b.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/b.tpd new file mode 100644 index 000000000..0c972d482 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/RecursiveHierarchy/b.tpd @@ -0,0 +1,29 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>b</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Scripts/b_command.sh</MakefileScript> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/Makefile new file mode 100644 index 000000000..067d622b3 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/Makefile @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + mkdir tmp; \ + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -b 1 -o ../tmp + +CheckTpd: BuildTpd + if [ ! -f "./tmp/Makefile" ] || [ `grep -c "SCRIPTFLAG=WithMakefileDir" ./tmp/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test WithMakefileDir failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin1 tmp + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/a.tpd new file mode 100644 index 000000000..da4ff8095 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/a.tpd @@ -0,0 +1,41 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + <Configuration name="1"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin1</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>command.sh</MakefileScript> + <workingDirectory>bin1</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/command.sh new file mode 100755 index 000000000..0c09898ff --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileDir/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=WithMakefileDir' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/Makefile new file mode 100644 index 000000000..f5f4a0844 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/Makefile @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -b 1 -o NotMakefile + +CheckTpd: BuildTpd + if [ ! -f "./bin1/NotMakefile" ] || [ `grep -c "SCRIPTFLAG=WithMakefileName" ./bin1/NotMakefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test WithMakefileName failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin1 + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/a.tpd new file mode 100644 index 000000000..da4ff8095 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/a.tpd @@ -0,0 +1,41 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + <Configuration name="1"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin1</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>command.sh</MakefileScript> + <workingDirectory>bin1</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/command.sh new file mode 100755 index 000000000..05ee12cf4 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefileName/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=WithMakefileName' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/Makefile new file mode 100644 index 000000000..516638ad3 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/Makefile @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + mkdir tmp; \ + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -b 1 -o ../tmp/NewMakefile + +CheckTpd: BuildTpd + if [ ! -f "./tmp/NewMakefile" ] || [ `grep -c "SCRIPTFLAG=WithMakefilePath" ./tmp/NewMakefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test WithMakefilePath failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin1 tmp + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/a.tpd new file mode 100644 index 000000000..da4ff8095 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/a.tpd @@ -0,0 +1,41 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + <Configuration name="1"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin1</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>command.sh</MakefileScript> + <workingDirectory>bin1</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/command.sh new file mode 100755 index 000000000..48758f393 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithMakefilePath/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=WithMakefilePath' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/Makefile new file mode 100644 index 000000000..8b16f4044 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/Makefile @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -b 1 + +CheckTpd: BuildTpd + if [ ! -f "./bin1/Makefile" ] || [ `grep -c "SCRIPTFLAG=WithReqConfig" ./bin1/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test WithReqConfig failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin1 + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/a.tpd new file mode 100644 index 000000000..da4ff8095 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/a.tpd @@ -0,0 +1,41 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + <Configuration name="1"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin1</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>command.sh</MakefileScript> + <workingDirectory>bin1</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/command.sh new file mode 100755 index 000000000..47680bd8a --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithReqConfig/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=WithReqConfig' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Makefile b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Makefile new file mode 100644 index 000000000..d52393c98 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Makefile @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2000-2016 Ericsson Telecom AB +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Szabo, Bence Janos +# +############################################################################## +TOPDIR := ../../../.. +include $(TOPDIR)/Makefile.regression + +ifdef LCOV +COVERAGE_FLAG := -C +endif + +# ${MAKEPROG} has the same content as the built-in ${MAKE}, +# except the special handling of ${MAKE} does not apply. +# If we used ${MAKE} in the rules below, 'make -n' would succeed once, +# then fail on every subsequent invocation until a 'make clean' is done. + + +MAKEPROG := ${MAKE} + +all: CheckTpd + +BuildTpd: + $(TTCN3_DIR)/bin/ttcn3_makefilegen -f $(MFGEN_FLAGS) $(COVERAGE_FLAG) \ + -t a.tpd -b 1 + +CheckTpd: BuildTpd + if [ ! -f "./bin1/Makefile" ] || [ `grep -c "SCRIPTFLAG=WithScriptDiffDir" ./bin1/Makefile` -lt 1 ]; \ + then echo "Makefilegen MakefileScript test WithScriptDiffDir failed: Overall verdict: fail" && exit 1; fi + +clean: + -rm -rf bin1 + +distclean: clean + -rm -f *.out + +.PHONY: all clean distclean BuildTpd CheckTpd + diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Script/command.sh b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Script/command.sh new file mode 100755 index 000000000..2bb656b2d --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/Script/command.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +editcmd='/COMPILER_FLAGS/a SCRIPTFLAG=WithScriptDiffDir' + +sed -e "$editcmd" <$1 >$2 diff --git a/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/a.tpd b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/a.tpd new file mode 100644 index 000000000..6f5d6e890 --- /dev/null +++ b/regression_test/compileonly/mfgen-tpd/makefileScript/WithScriptDiffDir/a.tpd @@ -0,0 +1,41 @@ +<!-- + Copyright (c) 2000-2016 Ericsson Telecom AB + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Szabo, Bence Janos – initial implementation +--> +<TITAN_Project_File_Information version="1.0"> + <ProjectName>a</ProjectName> + <ActiveConfiguration>Default</ActiveConfiguration> + <Configurations> + <Configuration name="Default"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <workingDirectory>bin</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + <Configuration name="1"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <targetExecutable>bin1</targetExecutable> + <disablePredefinedExternalFolder>false</disablePredefinedExternalFolder> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript>Script/command.sh</MakefileScript> + <workingDirectory>bin1</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + </Configuration> + </Configurations> +</TITAN_Project_File_Information> diff --git a/usrguide/referenceguide.doc b/usrguide/referenceguide.doc index 9ae39dedb43b55bb49d5490589ff1c84148f4f83..0a3604404866e300a3ff696e024f2fa314733c7a 100644 GIT binary patch delta 61116 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 Y#Ajxu``TwFW~8PjWatxz#m)5m7b-Mv&;S4c delta 61161 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 JL*t+I{2y}n<eC5g -- GitLab