diff options
author | Doug Schaefer | 2015-05-22 13:44:19 +0000 |
---|---|---|
committer | Doug Schaefer | 2015-05-29 15:25:02 +0000 |
commit | 49bf118c8fe9ff35788921809dab22294cf92199 (patch) | |
tree | ebfca3bcbc237c8822d110a624ccd990bd4b60ae /toolchains | |
parent | c82bcf30f05ea3c2d950ec8e5f11b2083f7f21df (diff) | |
download | org.eclipse.cdt-49bf118c8fe9ff35788921809dab22294cf92199.tar.gz org.eclipse.cdt-49bf118c8fe9ff35788921809dab22294cf92199.tar.xz org.eclipse.cdt-49bf118c8fe9ff35788921809dab22294cf92199.zip |
Support Arduino C++ on Windows. Move entire Makefile into template.
Also added the command shell console to the cdt 4.5 target so we can
test the Arduino command shell.
Change-Id: I185f9b39d23a6718204112e1fd4388c2458f7e5e
Diffstat (limited to 'toolchains')
5 files changed, 189 insertions, 161 deletions
diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties b/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties index b6d86c2c834..b3a611b5c93 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties +++ b/toolchains/arduino/org.eclipse.cdt.arduino-feature/build.properties @@ -1,3 +1,2 @@ bin.includes = feature.xml,\ feature.properties -root = rootfiles diff --git a/toolchains/arduino/org.eclipse.cdt.arduino-feature/rootfiles/arduino/arduino.mk b/toolchains/arduino/org.eclipse.cdt.arduino-feature/rootfiles/arduino/arduino.mk deleted file mode 100644 index 5b1484770db..00000000000 --- a/toolchains/arduino/org.eclipse.cdt.arduino-feature/rootfiles/arduino/arduino.mk +++ /dev/null @@ -1,113 +0,0 @@ -VERSION = 156 - -BOARD ?= uno -OUTPUT_DIR ?= build/Default - -rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) - -ifeq ($(OS),Windows_NT) -RMDIR = rmdir /s /q -fixpath = $(subst /,\,$1) -mymkdir = if not exist "$(call fixpath,$1)" mkdir $(call fixpath,$1) -else -RMDIR = rm -fr -fixpath = $1 -mymkdir = mkdir -p $1 -endif - -ifeq ($(BOARD),uno) -ARCH = avr -BUILD_CORE = arduino -BUILD_VARIANT = standard -BUILD_MCU = atmega328p -BUILD_F_CPU = 16000000L -BUILD_BOARD = AVR_UNO -LOADER = avrdude -LOADER_PROTOCOL = arduino -LOADER_SPEED = 115200 -LOADER_MAX_SIZE = 32256 -LOADER_MAX_DATA = 2048 -endif - -ifeq ($(ARCH),avr) -CXXFLAGS = -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD \ - -mmcu=$(BUILD_MCU) -DF_CPU=$(BUILD_F_CPU) -DARDUINO=$(VERSION) -DARDUINO_$(BUILD_BOARD) -DARDUINO_ARCH_AVR $(INCLUDES) -CFLAGS = -g -Os -w -ffunction-sections -fdata-sections -MMD \ - -mmcu=$(BUILD_MCU) -DF_CPU=$(BUILD_F_CPU) -DARDUINO=156 -DARDUINO_$(BUILD_BOARD) -DARDUINO_ARCH_AVR $(INCLUDES) - -CXX = avr-g++ -CC = avr-gcc -AR = avr-ar -OBJCOPY = avr-objcopy - -define do_link -$(CC) -Os -Wl,--gc-sections -mmcu=$(BUILD_MCU) -o $(OUTPUT_DIR)/$(EXE).elf $^ -avr-objcopy -O ihex -R .eeprom $(OUTPUT_DIR)/$(EXE).elf $(OUTPUT_DIR)/$(EXE).hex -$(do_link_extra) -avr-size $(OUTPUT_DIR)/$(EXE).elf -@echo Max text: $(LOADER_MAX_SIZE) -@echo Max data + bss: $(LOADER_MAX_DATA) -endef - -define do_eeprom -avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load \ - --no-change-warnings --change-section-lma .eeprom=0 \ - $(OUTPUT_DIR)/$(EXE).elf $(OUTPUT_DIR)/$(EXE).eep -endef - -define do_load_avrdude -avrdude -C"$(ARDUINO_HOME)/hardware/tools/avr/etc/avrdude.conf" -p$(BUILD_MCU) -c$(LOADER_PROTOCOL) \ - -P$(SERIAL_PORT) -b$(LOADER_SPEED) -D "-Uflash:w:$(OUTPUT_DIR)/$(EXE).hex:i" -endef - -endif # ARCH = avr - -LIB_ROOT = $(ARDUINO_HOME)/hardware/arduino/$(ARCH)/cores/$(BUILD_CORE) - -LIB_SRCS = $(call rwildcard, $(LIB_ROOT)/, *.c *.cpp) - -LIB_OBJS = $(patsubst $(LIB_ROOT)/%.c, $(OUTPUT_DIR)/arduino/%.o, $(filter %.c, $(LIB_SRCS))) \ - $(patsubst $(LIB_ROOT)/%.cpp, $(OUTPUT_DIR)/arduino/%.o, $(filter %.cpp, $(LIB_SRCS))) - -LIBS_ROOTS = $(ARDUINO_LIBS) $(ARDUINO_HOME)/hardware/arduino/$(ARCH)/libraries $(ARDUINO_HOME)/libraries - -LIBS_DIRS = $(foreach lib, $(LIBS), $(firstword $(realpath $(foreach lib_root, $(LIBS_ROOTS), $(lib_root)/$(lib))))) - -INCLUDES = -I$(ARDUINO_HOME)/hardware/arduino/$(ARCH)/cores/$(BUILD_CORE) \ - -I$(ARDUINO_HOME)/hardware/arduino/$(ARCH)/variants/$(BUILD_VARIANT) \ - $(foreach lib, $(LIBS_DIRS), -I$(lib)) - -SRCS = $(call rwildcard, ./, *.c *.cpp) $(foreach lib, $(LIBS_DIRS), $(wildcard $(lib)/*.c $(lib)/*.cpp $(lib)/utility/*.c $(lib)/utility/*.cpp)) - -OBJS = $(patsubst %.cpp, $(OUTPUT_DIR)/%.o, $(filter %.cpp, $(SRCS))) \ - $(patsubst %.c, $(OUTPUT_DIR)/%.o, $(filter %.c, $(SRCS))) - -all: $(OUTPUT_DIR)/$(EXE).hex - -clean: - $(RMDIR) $(call fixpath,$(OUTPUT_DIR)) - -load: #$(OUTPUT_DIR)/$(EXE).hex - $(do_load_$(LOADER)) - -$(OUTPUT_DIR)/$(EXE).hex: $(OBJS) $(OUTPUT_DIR)/core.a - $(do_link) - -$(OUTPUT_DIR)/core.a: $(LIB_OBJS) - $(AR) r $@ $? - -$(OUTPUT_DIR)/arduino/%.o: $(LIB_ROOT)/%.c - @-$(call mymkdir,$(dir $@)) - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< - -$(OUTPUT_DIR)/arduino/%.o: $(LIB_ROOT)/%.cpp - @-$(call mymkdir,$(dir $@)) - $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $< - -$(OUTPUT_DIR)/%.o: %.c - @-$(call mymkdir,$(dir $@)) - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< - -$(OUTPUT_DIR)/%.o: %.cpp - @-$(call mymkdir,$(dir $@)) - $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $< diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoHome.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoHome.java index db675d6e3e4..d778d25551a 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoHome.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoHome.java @@ -11,39 +11,20 @@ package org.eclipse.cdt.arduino.core.internal; import java.io.File; -import java.net.URISyntaxException; import org.eclipse.core.runtime.Platform; public class ArduinoHome { - private static File home; - - public static File getRootfileDir() { - if (home == null) { - String arduinoPathStr = System.getProperty("org.eclipse.cdt.arduino.home"); //$NON-NLS-1$ - if (arduinoPathStr != null) { - home = new File(arduinoPathStr); - } else { - try { - home = new File(new File(Platform.getInstallLocation().getURL().toURI()), "arduino"); //$NON-NLS-1$ - } catch (URISyntaxException e) { - // TODO log - e.printStackTrace(); - home = new File("nohome"); //$NON-NLS-1$ - } - } - } - return home; - } - public static File getArduinoDir() { - return new File("/Applications/Arduino.app/Contents/Java"); //$NON-NLS-1$ - } - - public static File getArduinoLibsDir() { - File home = new File(System.getProperty("user.home")); //$NON-NLS-1$ - return new File(home, "/Documents/Arduino/libraries"); //$NON-NLS-1$ + switch (Platform.getOS()) { + case Platform.OS_MACOSX: + return new File("/Applications/Arduino.app/Contents/Java"); //$NON-NLS-1$ + case Platform.OS_WIN32: + return new File("C:\\Program Files (x86)\\Arduino"); //$NON-NLS-1$ + default: + return null; + } } } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/EnvVarSupplier.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/EnvVarSupplier.java index bd10c2b424d..70df15d4827 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/EnvVarSupplier.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/EnvVarSupplier.java @@ -21,10 +21,10 @@ import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable; import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier; import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Platform; public class EnvVarSupplier implements IConfigurationEnvironmentVariableSupplier { - private EnvVar arduinoRoot; private EnvVar arduinoHome; private EnvVar arduinoLibs; private EnvVar path; @@ -42,39 +42,41 @@ public class EnvVarSupplier implements IConfigurationEnvironmentVariableSupplier public String getName() { return name; } + @Override public String getValue() { return value; } + @Override public int getOperation() { return operation; } + @Override public String getDelimiter() { return delimiter; } } - public EnvVarSupplier() { - arduinoRoot = new EnvVar(); - arduinoRoot.name = "ARDUINO_ROOT"; //$NON-NLS-1$ - arduinoRoot.value = ArduinoHome.getRootfileDir().getAbsolutePath(); + private String clean(String str) { + return str.replaceAll("\\\\", "/"); //$NON-NLS-1$ //$NON-NLS-2$ + } + public EnvVarSupplier() { arduinoHome = new EnvVar(); arduinoHome.name = "ARDUINO_HOME"; //$NON-NLS-1$ - arduinoHome.value = ArduinoHome.getArduinoDir().getAbsolutePath(); + arduinoHome.value = clean(ArduinoHome.getArduinoDir().getAbsolutePath()); arduinoLibs = new EnvVar(); - arduinoLibs.name = "ARDUINO_LIBS"; //$NON-NLS-1$ - arduinoLibs.value = ArduinoHome.getArduinoLibsDir().getAbsolutePath(); - - File avrPath = new File(ArduinoHome.getArduinoDir(), "hardware/tools/avr/bin"); //$NON-NLS-1$ - String pathStr = avrPath.getAbsolutePath(); + arduinoLibs.name = "ARDUINO_USER_LIBS"; //$NON-NLS-1$ + arduinoLibs.value = clean(System.getProperty("user.home") + "/Documents/Arduino/libraries"); //$NON-NLS-1$ //$NON-NLS-2$ + String avrDir = ArduinoHome.getArduinoDir().toString() + "/hardware/tools/avr/bin"; //$NON-NLS-1$ + String installDir = Platform.getInstallLocation().getURL().getPath(); path = new EnvVar(); path.name = "PATH"; //$NON-NLS-1$ - path.value = pathStr; + path.value = avrDir + File.pathSeparator + installDir; path.operation = IBuildEnvironmentVariable.ENVVAR_PREPEND; path.delimiter = File.pathSeparator; } @@ -103,12 +105,10 @@ public class EnvVarSupplier implements IConfigurationEnvironmentVariableSupplier } @Override - public IBuildEnvironmentVariable getVariable(String variableName, - IConfiguration configuration, IEnvironmentVariableProvider provider) { + public IBuildEnvironmentVariable getVariable(String variableName, IConfiguration configuration, + IEnvironmentVariableProvider provider) { if (variableName.equals(path.name)) { return path; - } else if (variableName.equals(arduinoRoot.name)) { - return arduinoRoot; } else if (variableName.equals(arduinoHome.name)) { return arduinoHome; } else if (variableName.equals(arduinoLibs.name)) { @@ -122,12 +122,11 @@ public class EnvVarSupplier implements IConfigurationEnvironmentVariableSupplier } @Override - public IBuildEnvironmentVariable[] getVariables( - IConfiguration configuration, IEnvironmentVariableProvider provider) { + public IBuildEnvironmentVariable[] getVariables(IConfiguration configuration, + IEnvironmentVariableProvider provider) { List<IBuildEnvironmentVariable> vars = new ArrayList<>(); vars.add(path); - vars.add(arduinoRoot); vars.add(arduinoHome); vars.add(arduinoLibs); diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile index 97939bb91f1..e6acfb8a16f 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/templates/Makefile @@ -1,3 +1,165 @@ EXE = ${projectName} +LIBS = +BOARD ?= uno +OUTPUT_DIR ?= build/$(BOARD) -include $(ARDUINO_ROOT)/arduino.mk +ifeq ($(BOARD),uno) +ARCH = avr +BUILD_CORE = arduino +BUILD_VARIANT = standard +BUILD_MCU = atmega328p +BUILD_F_CPU = 16000000L +BUILD_BOARD = AVR_UNO +LOADER = avrdude +LOADER_PROTOCOL = arduino +LOADER_SPEED = 115200 +LOADER_MAX_SIZE = 32256 +LOADER_MAX_DATA = 2048 +endif + +VERSION = 164 + +ifeq ($(ARCH),avr) +CXXFLAGS = -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD \ + -mmcu=$(BUILD_MCU) -DF_CPU=$(BUILD_F_CPU) -DARDUINO=$(VERSION) -DARDUINO_$(BUILD_BOARD) -DARDUINO_ARCH_AVR $(INCLUDES) +CFLAGS = -g -Os -w -ffunction-sections -fdata-sections -MMD \ + -mmcu=$(BUILD_MCU) -DF_CPU=$(BUILD_F_CPU) -DARDUINO=156 -DARDUINO_$(BUILD_BOARD) -DARDUINO_ARCH_AVR $(INCLUDES) + +CXX = avr-g++ +CC = avr-gcc +AR = avr-ar +OBJCOPY = avr-objcopy + +define do_link +$(CC) -Os -Wl,--gc-sections -mmcu=$(BUILD_MCU) -o $(OUTPUT_DIR)/$(EXE).elf $^ +avr-objcopy -O ihex -R .eeprom $(OUTPUT_DIR)/$(EXE).elf $(OUTPUT_DIR)/$(EXE).hex +$(do_link_extra) +avr-size $(OUTPUT_DIR)/$(EXE).elf +@echo Max text: $(LOADER_MAX_SIZE) +@echo Max data + bss: $(LOADER_MAX_DATA) +endef + +define do_eeprom +avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load \ + --no-change-warnings --change-section-lma .eeprom=0 \ + $(OUTPUT_DIR)/$(EXE).elf $(OUTPUT_DIR)/$(EXE).eep +endef + +define do_load_avrdude +avrdude -C"$(ARDUINO_HOME)/hardware/tools/avr/etc/avrdude.conf" -p$(BUILD_MCU) -c$(LOADER_PROTOCOL) \ + -P$(SERIAL_PORT) -b$(LOADER_SPEED) -D "-Uflash:w:$(OUTPUT_DIR)/$(EXE).hex:i" +endef + +endif # ARCH = avr + +space := +space += +spacify = $(subst $(space),\$(space),$1) + +ifeq ($(OS),Windows_NT) +RMDIR = rmdir /s /q +fixpath = $(subst /,\,$1) +mymkdir = if not exist "$(call fixpath,$1)" mkdir $(call fixpath,$1) +else +RMDIR = rm -fr +fixpath = $1 +mymkdir = mkdir -p $1 +endif + +src_recurse = $(foreach d,$(subst $2/,,$(wildcard $1*)),$(call src_recurse,$3/$d/,$2,$3) $(filter %.c %.cpp,$d)) +src = $(foreach lib,$3,$(if $(wildcard $2/$(lib)/src),$(call src_recurse,$2/$(lib)/src/,$1,$2),\ + $(subst $1/,,\ + $(wildcard $2/$(lib)/*.c)\ + $(wildcard $2/$(lib)/*.cpp)\ + $(wildcard $2/$(lib)/utility/*.c)\ + $(wildcard $2/$(lib)/utility/*.cpp))))) +objs = $(patsubst %.c,$2/%.o,$(filter %.c,$1)) $(patsubst %.cpp,$2/%.o,$(filter %.cpp,$1)) +incs = $(foreach lib,$1,$(if $(wildcard $3/$(lib)/src),-I"$2/$(lib)/src",-I"$2/$(lib)" -I"$2/$(lib)/utility")) + +PROJECT_OBJS = $(call objs,$(call src_recurse,./,.,.),$(OUTPUT_DIR)/src) + +LIB_ROOT = $(ARDUINO_HOME)/hardware/arduino/$(ARCH)/cores/$(BUILD_CORE) +LIB_ROOT_SPC = $(call spacify,$(LIB_ROOT)) +LIB_ROOT_SPC2 = $(subst :,\:,$(subst \,\\\,$(LIB_ROOT_SPC))) +LIB_OBJS = $(call objs,$(call src_recurse,$(LIB_ROOT_SPC)/,$(LIB_ROOT),$(LIB_ROOT_SPC)),$(OUTPUT_DIR)/lib) + +USER_LIB_ROOT = $(ARDUINO_USER_LIBS) +USER_LIB_ROOT_SPC = $(call spacify,$(USER_LIB_ROOT)) +USER_LIB_ROOT_SPC2 = $(subst :,\:,$(subst \,\\\,$(USER_LIB_ROOT_SPC))) +USER_LIBS = $(foreach lib,$(LIBS),$(subst $(USER_LIB_ROOT)/,,$(wildcard $(USER_LIB_ROOT_SPC)/$(lib)))) +USER_INCLUDES = $(call incs,$(USER_LIBS),$(USER_LIB_ROOT),$(USER_LIB_ROOT_SPC)) +USER_OBJS = $(call objs,$(call src,$(USER_LIB_ROOT),$(USER_LIB_ROOT_SPC),$(USER_LIBS)),$(OUTPUT_DIR)/user) + +HW_LIB_ROOT = $(ARDUINO_HOME)/hardware/arduino/$(ARCH)/libraries +HW_LIB_ROOT_SPC = $(call spacify,$(HW_LIB_ROOT)) +HW_LIB_ROOT_SPC2 = $(subst :,\:,$(subst \,\\\,$(HW_LIB_ROOT_SPC))) +HW_LIBS = $(foreach lib, $(LIBS), $(subst $(HW_LIB_ROOT)/,,$(wildcard $(HW_LIB_ROOT_SPC)/$(lib)))) +HW_INCLUDES = $(call incs,$(HW_LIBS),$(HW_LIB_ROOT),$(HW_LIB_ROOT_SPC)) +HW_OBJS = $(call objs,$(call src,$(HW_LIB_ROOT),$(HW_LIB_ROOT_SPC),$(HW_LIBS)),$(OUTPUT_DIR)/hw) + +ARDUINO_LIB_ROOT = $(ARDUINO_HOME)/libraries +ARDUINO_LIB_ROOT_SPC = $(call spacify,$(ARDUINO_LIB_ROOT)) +ARDUINO_LIB_ROOT_SPC2 = $(subst :,\:,$(subst \,\\\,$(ARDUINO_LIB_ROOT_SPC))) +ARDUINO_LIBS = $(foreach lib, $(LIBS), $(subst $(ARDUINO_LIB_ROOT)/,,$(wildcard $(ARDUINO_LIB_ROOT_SPC)/$(lib)))) +ARDUINO_INCLUDES = $(call incs,$(ARDUINO_LIBS),$(ARDUINO_LIB_ROOT),$(ARDUINO_LIB_ROOT_SPC)) +ARDUINO_OBJS = $(call objs,$(call src,$(ARDUINO_LIB_ROOT),$(ARDUINO_LIB_ROOT_SPC),$(ARDUINO_LIBS)),$(OUTPUT_DIR)/arduino) + +INCLUDES = -I"$(ARDUINO_HOME)/hardware/arduino/$(ARCH)/cores/$(BUILD_CORE)" \ + -I"$(ARDUINO_HOME)/hardware/arduino/$(ARCH)/variants/$(BUILD_VARIANT)" \ + $(USER_INCLUDES) $(HW_INCLUDES) $(ARDUINO_INCLUDES) + +OBJS = $(PROJECT_OBJS) $(USER_OBJS) $(HW_OBJS) $(ARDUINO_OBJS) + +all: $(OUTPUT_DIR)/$(EXE).hex + +clean: + $(RMDIR) $(call fixpath,$(OUTPUT_DIR)) + +load: $(OUTPUT_DIR)/$(EXE).hex + $(do_load_$(LOADER)) + +$(OUTPUT_DIR)/$(EXE).hex: $(OBJS) $(OUTPUT_DIR)/core.a + $(do_link) + +$(OUTPUT_DIR)/core.a: $(LIB_OBJS) + $(AR) r $@ $? + +$(OUTPUT_DIR)/lib/%.o: $(LIB_ROOT_SPC2)/%.c + @-$(call mymkdir,$(dir $@)) + $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/lib/%.o: $(LIB_ROOT_SPC2)/%.cpp + @-$(call mymkdir,$(dir $@)) + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/user/%.o: $(USER_LIB_ROOT_SPC2)/%.c + @-$(call mymkdir,$(dir $@)) + $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/user/%.o: $(USER_LIB_ROOT_SPC2)/%.cpp + @-$(call mymkdir,$(dir $@)) + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/hw/%.o: $(HW_LIB_ROOT_SPC2)/%.c + @-$(call mymkdir,$(dir $@)) + $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/hw/%.o: $(HW_LIB_ROOT_SPC2)/%.cpp + @-$(call mymkdir,$(dir $@)) + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/arduino/%.o: $(ARDUINO_LIB_ROOT_SPC2)/%.c + @-$(call mymkdir,$(dir $@)) + $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/arduino/%.o: $(ARDUINO_LIB_ROOT_SPC2)/%.cpp + @-$(call mymkdir,$(dir $@)) + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ "$<" + +$(OUTPUT_DIR)/src/%.o: %.c + @-$(call mymkdir,$(dir $@)) + $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< + +$(OUTPUT_DIR)/src/%.o: %.cpp + @-$(call mymkdir,$(dir $@)) + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) -o $@ $< |