Package: simavr / 1.6+dfsg-3

build-parts.patch Patch series | download
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