UNPKG

nerdlang

Version:

NerdLang. Simple yet efficient.

67 lines (59 loc) 2.55 kB
var OPTIONS = { "mega": { preset: "-DF_CPU=16000000UL -mmcu=atmega2560", variant: "mega"}, "mega2560": { preset: "-DF_CPU=16000000UL -mmcu=atmega2560", variant: "mega"}, "mega1280": { preset: "-DF_CPU=16000000UL -mmcu=atmega1280", variant: "mega"}, "mega328p": { preset: "-DF_CPU=16000000UL -mmcu=atmega328p", variant: "standard"}, "uno": { preset: "-DF_CPU=16000000UL -mmcu=atmega328p", variant: "standard"}, "nano": { preset: "-DF_CPU=16000000UL -mmcu=atmega328p", variant: "standard"}, "nano2": { preset: "-DF_CPU=16000000UL -mmcu=atmega168", variant: "standard"}, "nano3": { preset: "-DF_CPU=16000000UL -mmcu=atmega328p", variant: "standard"} } function getOptions() { var OPT = { elf: false, cli: false, }; if(CLI.cli["--option"] && CLI.cli["--option"].argument) { var _args = CLI.cli["--option"].argument.split(","); for(var i = 0; i < _args.length; i++) { OPT[_args[i]] = true; } } return OPT; } var ARDUINO = { name: "arduino", main: "arduino.cpp", cli: function(compiler, preset, out, _in, option, target, spec) { var OPT = getOptions(); var _cliOption = ""; if(CLI.cli["--option"]) _cliOption = CLI.cli["--option"].argument; if(!target || !OPTIONS[target]) { console.log("[!] No target or bad target selected, switching to 'uno'"); target = "uno"; } var _cli = `${compiler} ${OPTIONS[target].preset} -D__NERD__OBJECT_VECTOR -DARDUINO_ARCH_AVR -w -Os -fno-exceptions -fno-rtti -fno-stack-protector -fomit-frame-pointer -ffunction-sections -fdata-sections -Wl,--gc-sections \ -I ${extern}/arduino/avr -I ${extern}/arduino/avr/variants/${OPTIONS[target].variant}/ -I ${extern}/arduino/avr/cores/arduino -I ${extern}/arduino/stlarduino ${extern}/arduino/stlarduino/ios.cpp ${extern}/arduino/avr/cores/arduino/abi.cpp ${extern}/arduino/stlarduino/new*.cpp ${extern}/arduino/stlarduino/char_traits.cpp ${extern}/arduino/stlarduino/del*.cpp ${extern}/arduino/stlarduino/stdexcept.cpp ${extern}/arduino/stlarduino/func_exception.cpp ${extern}/arduino/stlarduino/ostream_helpers.cpp -fno-threadsafe-statics -lm ${COMPILER.LIBS} -o ${out} ${_in} ${_cliOption}`; if(!OPT.elf) _cli += `&& avr-objcopy -O ihex -R .eeprom ${out}`; if(OPT.cli) console.log("[*]" + _cli); return _cli; }, compiler: "avr-g++ -std=c++17", stdlib:[], out: function(_name) { var OPT = getOptions(); if(OPT.elf) _name += ".elf"; else _name += ".hex"; return _name; }, } module.exports = ARDUINO;