OBJS=psignal-m32.o  pbacktrace-m32.o  ptrace-m32.o  internalfile-m32.o  impread-m32.o  internal-m32.o
SRCS=psignal.c  pbacktrace.c  ptrace.c  internalfile.c  impread.c  internal.c
CC=arm-linux-gnueabihf-gcc -std=gnu99 -g

GIANT=-finstrument-functions -rdynamic
##DWARF=-finstrument-functions -g -gpubnames -fno-compile-resource-placement -rdynamic -O0
DWARF=-finstrument-functions -g -gpubnames -rdynamic -O0
TRACE=$(DWARF)

all: psignal-test-m32 visible-test-m32 $(OBJS) libperms-m32.a libperms-m32.so Makefile-m32
	echo All up to date

# lib components
psignal-m32.o: psignal.h psignal.c Makefile-m32
	$(CC) -c $(TRACE) -o psignal-m32.o psignal.c

pbacktrace-m32.o: pbacktrace.h pbacktrace.c Makefile-m32
	$(CC) -c $(TRACE) -o pbacktrace-m32.o pbacktrace.c

ptrace-m32.o: ptrace.h ptrace.c Makefile-m32
	$(CC) -c $(TRACE) -o ptrace-m32.o ptrace.c

impread-m32.o: impread.h impread.c internal.h internalfile.h Makefile-m32
	$(CC) -c $(TRACE) -o impread-m32.o impread.c

internalfile-m32.o: internalfile.c internal.h internalfile.h imptypes.h Makefile-m32
	$(CC) -c $(TRACE) -o internalfile-m32.o internalfile.c

internal-m32.o: internal.c internal.h imptypes.h Makefile-m32
	$(CC) -c $(TRACE) -o internal-m32.o internal.c

# headers
internalfile.h: imptypes.h

internal.h: imptypes.h

perms.h: pbacktrace.h psignal.h ptrace.h visible.h

psignal.h: imptypes.h

visible.h: imptypes.h internalfile.h internal.h

# tests
psignal-test-m32: psignal-test.c psignal.h pbacktrace.h libperms-m32.a Makefile-m32
	$(CC) --static -o psignal-test-m32 psignal-test.c -L. -lperms-m32 -ldl -lbacktrace

visible-test-m32: visible.c perms.h libperms-m32.a
	$(CC) --static -o visible-test-m32 visible.c -L. -lperms-m32 -ldl -lbacktrace

# static library:
libperms-m32.a: $(OBJS) Makefile-m32
	ar rcs libperms-m32.a $(OBJS)

# dynamically loadable library:
libperms-m32.so: $(SRCS) $(OBJS) Makefile-m32
	$(CC) -c -fPIC $(SRCS)
	$(CC) -shared -o libperms-m32.so $(OBJS)
	rm -rf $(OBJS)

clean: Makefile-m32
	rm -f  *-m32.o libperms-m32.a  libperms-m32.so psignal-test-m32 visible-test-m32
