1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
Description: simavrparts build
- link to GL libs
- sort the symbols for reproducible builds
Author: Milan Kupcevic <milan@debian.org>
Forwarded: not-needed
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/examples/parts/Makefile
+++ b/examples/parts/Makefile
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with simavr. If not, see <http://www.gnu.org/licenses/>.
-LDFLAGS += -lpthread
+EXTRA_LDFLAGS += -lsimavr -lpthread -lGL -lutil
simavr = ../../
IPATH += ${simavr}/simavr/sim
@@ -26,26 +26,43 @@
include ${simavr}/Makefile.common
-objects := $(patsubst %.c,${OBJ}/%.o, $(wildcard *.c))
+files := $(wildcard *.c)
# Unless the VHCI_USB env var is set, don't build this because it requires
# a supporting library to be installed. See examples/extra_board_usb/README
# for details on how to build it.
ifndef VHCI_USB
- objects := $(filter-out %vhci_usb.o, $(objects))
+ files := $(filter-out %vhci_usb.c, $(files))
endif
+${OBJ}/parts.deps: $(files)
+ if [ ! -d "${OBJ}" ] ; then mkdir -p "${OBJ}"; fi; \
+ for file in $$(echo $^ | LC_ALL=C sort) ; do \
+ objst=$${file%.c}.sto; \
+ obj=$${file%.c}.o; \
+ printf "\$${OBJ}/\$${target}.a: \$${OBJ}/$$objst\n">>${OBJ}/parts.deps.tmp ; \
+ printf "\$${OBJ}/\$${target}.so.1: \$${OBJ}/$$obj\n">>${OBJ}/parts.deps.tmp ; \
+ done ; \
+ mv ${OBJ}/parts.deps.tmp ${OBJ}/parts.deps
+
#
# Static library
#
-${OBJ}/${target}.a: ${objects}
${target}: ${OBJ}/${target}.a
#
# Shared library (Linux only)
#
-ifeq (${shell uname}, Linux)
${target}: ${OBJ}/${target}.so
-endif
+
+${OBJ}/libsimavrparts.so.1:
+ ${E}$(CC) -o $@ -shared \
+ -Wl,-soname,libsimavrparts.so.1 $^ \
+ ${filter-out -l%, $(LDFLAGS)} ${EXTRA_LDFLAGS}
+
+${OBJ}/libsimavrparts.so: ${OBJ}/libsimavrparts.so.1
+ ln -sf ${notdir $<} $@
clean: clean-${OBJ}
rm -rf *.hex *.a *.axf *.vcd .*.swo .*.swp .*.swm .*.swn *.so *.o
+
+-include ${OBJ}/parts.deps
|