From 1827ed8273145d13bd8342b483cfbda796d9313c Mon Sep 17 00:00:00 2001 From: Hokeun Kim Date: Sat, 2 Apr 2022 10:17:49 +0900 Subject: [PATCH] Potential solution no.1 for trace bug discussed in the last scheduling meeting. --- org.lflang/src/lib/c/reactor-c | 2 +- org.lflang/src/org/lflang/TargetConfig.java | 1 + .../lflang/generator/c/CCmakeGenerator.java | 7 +++++++ .../generator/c/CPreambleGenerator.java | 19 ++++++++++--------- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/org.lflang/src/lib/c/reactor-c b/org.lflang/src/lib/c/reactor-c index 2831081660..395d703c99 160000 --- a/org.lflang/src/lib/c/reactor-c +++ b/org.lflang/src/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit 2831081660675a1db84139afae91ba904b06872e +Subproject commit 395d703c9977aee765d5865cfd2882f67a7317bf diff --git a/org.lflang/src/org/lflang/TargetConfig.java b/org.lflang/src/org/lflang/TargetConfig.java index fc9010aee1..8bd077634e 100644 --- a/org.lflang/src/org/lflang/TargetConfig.java +++ b/org.lflang/src/org/lflang/TargetConfig.java @@ -110,6 +110,7 @@ public class TargetConfig { * The first string is the definition itself, and the second string is the value to attribute to that definition, if any. * The second value could be left empty. */ + // related to the ifdef in trace.h public Map compileDefinitions = new HashMap<>(); /** diff --git a/org.lflang/src/org/lflang/generator/c/CCmakeGenerator.java b/org.lflang/src/org/lflang/generator/c/CCmakeGenerator.java index 45c667b227..cde3b9442f 100644 --- a/org.lflang/src/org/lflang/generator/c/CCmakeGenerator.java +++ b/org.lflang/src/org/lflang/generator/c/CCmakeGenerator.java @@ -146,6 +146,7 @@ CodeBuilder generateCMakeCode( cMakeCode.pr(")"); cMakeCode.newLine(); + // This logic doesn't make sense? if (targetConfig.threading || targetConfig.tracing != null) { // If threaded computation is requested, add a the threads option. cMakeCode.pr("# Find threads and link to it"); @@ -156,9 +157,15 @@ CodeBuilder generateCMakeCode( // If the LF program itself is threaded or if tracing is enabled, we need to define // NUMBER_OF_WORKERS so that platform-specific C files will contain the appropriate functions cMakeCode.pr("# Set the number of workers to enable threading"); + // Where we want to add line for target_compile_definitions( ${LF_MAIN_TARGET} LINGUA_FRANCA_TRACE) cMakeCode.pr("target_compile_definitions( ${LF_MAIN_TARGET} PUBLIC NUMBER_OF_WORKERS="+targetConfig.workers+")"); cMakeCode.newLine(); } + + if (targetConfig.tracing != null) { + cMakeCode.pr("target_compile_definitions( ${LF_MAIN_TARGET} LINGUA_FRANCA_TRACE "); + cMakeCode.newLine(); + } cMakeCode.pr("# Target definitions\n"); targetConfig.compileDefinitions.forEach( (key, value) -> { diff --git a/org.lflang/src/org/lflang/generator/c/CPreambleGenerator.java b/org.lflang/src/org/lflang/generator/c/CPreambleGenerator.java index 23b9403f8b..cc132ce070 100644 --- a/org.lflang/src/org/lflang/generator/c/CPreambleGenerator.java +++ b/org.lflang/src/org/lflang/generator/c/CPreambleGenerator.java @@ -75,9 +75,9 @@ public static String generateDefineDirectives( GeneratorBase.timeInTargetLanguage(advanceMessageInterval)); } } - if (tracing != null) { - code.pr(generateTracingDefineDirective(tracing.traceFileName)); - } +// if (tracing != null) { +// code.pr(generateTracingDefineDirective(tracing.traceFileName)); +// } if (hasModalReactors) { code.pr("#define MODAL_REACTORS"); } @@ -108,12 +108,13 @@ private static String generateFederatedDefineDirective(CoordinationType coordina return String.join("\n", directives); } - private static String generateTracingDefineDirective(String traceFileName) { - if (traceFileName == null) { - return "#define LINGUA_FRANCA_TRACE"; - } - return "#define LINGUA_FRANCA_TRACE " + traceFileName; - } + // Remove this +// private static String generateTracingDefineDirective(String traceFileName) { +// if (traceFileName == null) { +// return "#define LINGUA_FRANCA_TRACE"; +// } +// return "#define LINGUA_FRANCA_TRACE " + traceFileName; +// } /** * Initialize clock synchronization (if enabled) and its related options for a given federate.