diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java index 53b5e795d2b..e337c1d2624 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java @@ -229,8 +229,11 @@ public class ArduinoBuildConfiguration extends CBuildConfiguration ArduinoBoard board = getBoard(); ArduinoPlatform platform = board.getPlatform(); + Properties properties = new Properties(); Map buildModel = new HashMap<>(); buildModel.put("boardId", board.getId()); //$NON-NLS-1$ + properties.put("object_file", "$@"); //$NON-NLS-1$ //$NON-NLS-2$ + properties.put("source_file", "$<"); //$NON-NLS-1$ //$NON-NLS-2$ // The list of source files in the project final Path projectPath = new File(project.getLocationURI()).toPath(); @@ -260,7 +263,6 @@ public class ArduinoBuildConfiguration extends CBuildConfiguration buildModel.put("libraries_path", pathString(ArduinoPreferences.getArduinoHome().resolve("libraries"))); //$NON-NLS-1$ //$NON-NLS-2$ // the recipes - Properties properties = new Properties(); properties.putAll(getProperties()); buildModel.put("build_path", properties.get("build.path")); //$NON-NLS-1$ //$NON-NLS-2$ buildModel.put("project_name", project.getName()); //$NON-NLS-1$ @@ -274,12 +276,18 @@ public class ArduinoBuildConfiguration extends CBuildConfiguration } includes += '"' + pathString(include) + '"'; } + + // Magic recipes for platform builds with platform includes + properties.put("includes", includes); //$NON-NLS-1$ + buildModel.put("recipe_cpp_o_pattern_plat", resolveProperty("recipe.cpp.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$ + buildModel.put("recipe_c_o_pattern_plat", resolveProperty("recipe.c.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$ + buildModel.put("recipe_S_o_pattern_plat", resolveProperty("recipe.S.o.pattern", properties)); //$NON-NLS-1$ //$NON-NLS-2$ + for (ArduinoLibrary lib : manager.getLibraries(project)) { for (Path include : lib.getIncludePath()) { includes += " -I\"" + pathString(include) + '"'; //$NON-NLS-1$ } } - properties.put("includes", includes); //$NON-NLS-1$ ArduinoPlatform corePlatform = platform; String core = properties.getProperty("build.core"); //$NON-NLS-1$ @@ -313,8 +321,6 @@ public class ArduinoBuildConfiguration extends CBuildConfiguration } buildModel.put("platform_variant_srcs", variantSources); //$NON-NLS-1$ - properties.put("object_file", "$@"); //$NON-NLS-1$ //$NON-NLS-2$ - properties.put("source_file", "$<"); //$NON-NLS-1$ //$NON-NLS-2$ properties.put("archive_file", "core.a"); //$NON-NLS-1$ //$NON-NLS-2$ properties.put("archive_file_path", "{build.path}/{archive_file}"); //$NON-NLS-1$ //$NON-NLS-2$ properties.put("object_files", "$(PROJECT_OBJS) $(LIBRARIES_OBJS)"); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile index 8efa79cf7bd..45585947dbe 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile @@ -130,7 +130,7 @@ ${build_path}/project/${cpp?groups[1]}.cpp.d: ; <#if cpp> ${build_path}/core/${cpp?groups[1]}.cpp.o: ${file} ${build_path}/core/${cpp?groups[1]}.cpp.d @$(call mymkdir,$(dir $@)) - ${recipe_cpp_o_pattern} + ${recipe_cpp_o_pattern_plat} ${recipe_ar_pattern} ${build_path}/core/${cpp?groups[1]}.cpp.d: ; @@ -142,7 +142,7 @@ ${build_path}/core/${cpp?groups[1]}.cpp.d: ; <#if c> ${build_path}/core/${c?groups[1]}.c.o: ${file} ${build_path}/core/${c?groups[1]}.c.d @$(call mymkdir,$(dir $@)) - ${recipe_c_o_pattern} + ${recipe_c_o_pattern_plat} ${recipe_ar_pattern} ${build_path}/core/${c?groups[1]}.c.d: ; @@ -154,7 +154,7 @@ ${build_path}/core/${c?groups[1]}.c.d: ; <#if S> ${build_path}/core/${S?groups[1]}.S.o: ${file} @$(call mymkdir,$(dir $@)) - ${recipe_S_o_pattern} + ${recipe_S_o_pattern_plat} ${recipe_ar_pattern} @@ -165,7 +165,7 @@ ${build_path}/core/${S?groups[1]}.S.o: ${file} <#if cpp> ${build_path}/variant/${cpp?groups[1]}.cpp.o: ${file} ${build_path}/variant/${cpp?groups[1]}.cpp.d @$(call mymkdir,$(dir $@)) - ${recipe_cpp_o_pattern} + ${recipe_cpp_o_pattern_plat} ${recipe_ar_pattern} ${build_path}/variant/${cpp?groups[1]}.cpp.d: ; @@ -177,7 +177,7 @@ ${build_path}/variant/${cpp?groups[1]}.cpp.d: ; <#if c> ${build_path}/variant/${c?groups[1]}.c.o: ${file} ${build_path}/variant/${c?groups[1]}.c.d @$(call mymkdir,$(dir $@)) - ${recipe_c_o_pattern} + ${recipe_c_o_pattern_plat} ${recipe_ar_pattern} ${build_path}/variant/${c?groups[1]}.c.d: ; @@ -189,7 +189,7 @@ ${build_path}/variant/${c?groups[1]}.c.d: ; <#if S> ${build_path}/variant/${S?groups[1]}.S.o: ${file} @$(call mymkdir,$(dir $@)) - ${recipe_S_o_pattern} + ${recipe_S_o_pattern_plat} ${recipe_ar_pattern}