diff options
| author | Sudar Muthu <sudar@sudarmuthu.com> | 2018-10-07 11:19:56 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-07 11:19:56 +0530 |
| commit | 5a0c80bf0c8fbfd5a997998a7c08ba9596c72a3f (patch) | |
| tree | beea7a066fd1a2a7af74f2fc4447f8b26a34f631 | |
| parent | fe84c591944f74c902466d813fae0d164761dc59 (diff) | |
| parent | ed608ce658e66b8aa98ab0b0c31582468cab588d (diff) | |
Merge pull request #583 from wingunder/move_core_link_last
Moved CORE_LIB to the last position of the defined linked objects.
| -rw-r--r-- | .travis.yml | 1 | ||||
| -rw-r--r-- | Arduino.mk | 2 | ||||
| -rw-r--r-- | HISTORY.md | 1 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/Blink3rdPartyLib.cpp | 23 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/Makefile | 24 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/Toggle/Makefile | 14 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/Toggle/TogglePin.cpp | 27 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/Toggle/TogglePin.h | 19 | ||||
| -rw-r--r-- | examples/Blink3rdPartyLib/board.mk | 7 |
9 files changed, 117 insertions, 1 deletions
diff --git a/.travis.yml b/.travis.yml index f97a4ea..630965a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +sudo: required language: c compiler: - gcc @@ -1610,7 +1610,7 @@ ifeq ($(findstring sam, $(strip $(ARCHITECTURE))), sam) $(CC) $(LINKER_SCRIPTS) -Wl,-Map=$(OBJDIR)/$(TARGET).map -o $@ $(LOCAL_OBJS) $(OTHER_OBJS) $(OTHER_LIBS) $(LDFLAGS) $(CORE_LIB) -Wl,--end-group # otherwise traditional else - $(CC) $(LDFLAGS) -o $@ $(LOCAL_OBJS) $(CORE_LIB) $(OTHER_OBJS) $(OTHER_LIBS) -lc -lm $(LINKER_SCRIPTS) + $(CC) $(LDFLAGS) -o $@ $(LOCAL_OBJS) $(OTHER_OBJS) $(OTHER_LIBS) $(CORE_LIB) -lc -lm $(LINKER_SCRIPTS) endif $(CORE_LIB): $(CORE_OBJS) $(LIB_OBJS) $(PLATFORM_LIB_OBJS) $(USER_LIB_OBJS) @@ -5,6 +5,7 @@ The following is the rough list of changes that went into different versions. I tried to give credit whenever possible. If I have missed anyone, kindly add it to the list. ### In Development +- Fix: Moved CORE_LIB to the last position of the defined linked objects. (https://github.com/wingunder) - Fix: Moved ATtiny examples to ATtinyBlink, updated alternate core instructions (issue #537) (https://github.com/sej7278) - Fix: Add -fno-devirtualize flag to workaround g++ segfault bug (issue #486). (https://github.com/sej7278) - Fix: Quote the prefix tag in the space_pad_to function diff --git a/examples/Blink3rdPartyLib/Blink3rdPartyLib.cpp b/examples/Blink3rdPartyLib/Blink3rdPartyLib.cpp new file mode 100644 index 0000000..c0ddb88 --- /dev/null +++ b/examples/Blink3rdPartyLib/Blink3rdPartyLib.cpp @@ -0,0 +1,23 @@ +// A derived Blink, that uses an example 3rd party library. +// Turns on an LED on for one second, then off for one second, repeatedly. +// This example code is in the public domain. + +#include <TogglePin.h> + +#ifdef ARDUINO +#if ARDUINO >= 100 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif +#endif // ARDUINO + +int main() +{ + init(); + TogglePin led(13, false); + while (true) { + delay(1000); + led.toggle(); + } +} diff --git a/examples/Blink3rdPartyLib/Makefile b/examples/Blink3rdPartyLib/Makefile new file mode 100644 index 0000000..f473dbd --- /dev/null +++ b/examples/Blink3rdPartyLib/Makefile @@ -0,0 +1,24 @@ +# This program is free software and is licensed under the same conditions as +# describe in https://github.com/sudar/Arduino-Makefile/blob/master/licence.txt + +# This is an example Makefile, that demonstrates the linking of a third party +# library. In this case the third party library resides in the ./Toggle +# sub-directory. Note that the archive TOGGLE_ARCHIVE _only_ contains the +# compiled Toggle.c.o object. The TOGGLE_ARCHIVE is thus very lean, but it +# requires the Arduino libraries, which are being build in this directory, +# together with Blink, the 'main' program. + +include board.mk + +TOGGLE_ARCHIVE = build-$(BOARD_TAG)/libtoggle.a + +CXXFLAGS += -IToggle +OTHER_OBJS = Toggle/$(TOGGLE_ARCHIVE) + +include ../../Arduino.mk + +Toggle/$(TOGGLE_ARCHIVE): + $(MAKE) -C Toggle $(TOGGLE_ARCHIVE) + +clean:: + $(MAKE) -C Toggle clean diff --git a/examples/Blink3rdPartyLib/Toggle/Makefile b/examples/Blink3rdPartyLib/Toggle/Makefile new file mode 100644 index 0000000..a6234f6 --- /dev/null +++ b/examples/Blink3rdPartyLib/Toggle/Makefile @@ -0,0 +1,14 @@ +# This program is free software and is licensed under the same conditions as +# describe in https://github.com/sudar/Arduino-Makefile/blob/master/licence.txt + +# This is an example Makefile, that is being used to build an archive +# from locally compiled objects. +# +# All source files in this directory will automatically get compiled +# and archived into the build-$(BOARD_TAG)/libtoggle.a target. + +include ../board.mk +include ../../../Arduino.mk + +build-$(BOARD_TAG)/libtoggle.a: $(LOCAL_OBJS) + $(AR) rcs $@ $(LOCAL_OBJS) diff --git a/examples/Blink3rdPartyLib/Toggle/TogglePin.cpp b/examples/Blink3rdPartyLib/Toggle/TogglePin.cpp new file mode 100644 index 0000000..fd6925d --- /dev/null +++ b/examples/Blink3rdPartyLib/Toggle/TogglePin.cpp @@ -0,0 +1,27 @@ +// This program is free software and is licensed under the same conditions as +// describe in https://github.com/sudar/Arduino-Makefile/blob/master/licence.txt + +#include "TogglePin.h" + +#ifdef ARDUINO +#if ARDUINO >= 100 +#include "Arduino.h" +#else +#include "WProgram.h" +#endif +#endif // ARDUINO + +TogglePin::TogglePin(int pinNumber, bool state) + : _pinNumber(pinNumber), _state(state) +{ + pinMode(_pinNumber, OUTPUT); + digitalWrite(_pinNumber, _state ? HIGH : LOW); +} + +bool +TogglePin::toggle() +{ + _state = !_state; + digitalWrite(_pinNumber, _state ? HIGH : LOW); + return _state; +} diff --git a/examples/Blink3rdPartyLib/Toggle/TogglePin.h b/examples/Blink3rdPartyLib/Toggle/TogglePin.h new file mode 100644 index 0000000..5a7e32c --- /dev/null +++ b/examples/Blink3rdPartyLib/Toggle/TogglePin.h @@ -0,0 +1,19 @@ +// This program is free software and is licensed under the same conditions as +// describe in https://github.com/sudar/Arduino-Makefile/blob/master/licence.txt + +#ifndef TOGGLEPIN_H_ +#define TOGGLEPIN_H_ + +class TogglePin +{ + public: + TogglePin(int pinNumber, bool state); + + bool toggle(); + + private: + const int _pinNumber; + bool _state; +}; + +#endif diff --git a/examples/Blink3rdPartyLib/board.mk b/examples/Blink3rdPartyLib/board.mk new file mode 100644 index 0000000..b405c61 --- /dev/null +++ b/examples/Blink3rdPartyLib/board.mk @@ -0,0 +1,7 @@ +# This program is free software and is licensed under the same conditions as +# describe in https://github.com/sudar/Arduino-Makefile/blob/master/licence.txt + +# The following can be overridden at make-time, by setting an environment +# variable with the same name. eg. BOARD_TAG=pro5v328 make + +BOARD_TAG ?= uno |
