aboutsummaryrefslogtreecommitdiff
path: root/examples/Blink3rdPartyLib
diff options
context:
space:
mode:
authorPieter du Preez <pdupreez@gmail.com>2018-10-02 23:00:14 +0200
committerPieter du Preez <pdupreez@gmail.com>2018-10-02 23:00:14 +0200
commita285810cb53bf454aa6133cbb589bcd3559c0e5d (patch)
tree75195d15acebcf296bb675e6f9b688e0cd3895c1 /examples/Blink3rdPartyLib
parentd4d3d3d6c354db1e2989d8dd671f8af96cc036d8 (diff)
Added a test case for moving CORE_LIB in PR #583.
This patch is meant to test the link order, if the OTHER_OBJS variable gets used to add 3rd party archives, that depend on the Arduino core lib (the archive pointed to by the CORE_LIB variable). The examples/Blink3rdPartyLib directory contains a stripped down Blink and includes a library in the examples/Blink3rdPartyLib/Toggle sub-directory. The archive, built inside the Toggle directory mimics a 3rd party library. The archive gets built and linked in by using the OTHER_OBS variable in examples/Blink3rdPartyLib/Makefile.
Diffstat (limited to 'examples/Blink3rdPartyLib')
-rw-r--r--examples/Blink3rdPartyLib/Blink3rdPartyLib.cpp23
-rw-r--r--examples/Blink3rdPartyLib/Makefile24
-rw-r--r--examples/Blink3rdPartyLib/Toggle/Makefile14
-rw-r--r--examples/Blink3rdPartyLib/Toggle/TogglePin.cpp27
-rw-r--r--examples/Blink3rdPartyLib/Toggle/TogglePin.h19
-rw-r--r--examples/Blink3rdPartyLib/board.mk7
6 files changed, 114 insertions, 0 deletions
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