1# libc/tlcs90 Makefile
2
3VPATH  = @srcdir@
4srcdir = @srcdir@
5top_builddir = @top_builddir@
6
7LIB_TYPE     = @LIB_TYPE@
8
9SCC = $(top_builddir)/bin/sdcc -mtlcs90
10SAS = $(top_builddir)/bin/sdastlcs90
11
12# override PORTDIR defined by super (parent) makefile
13override PORTDIR = ../build/tlcs90
14
15include $(srcdir)/../incl.mk
16
17Z80_FLOAT = $(COMMON_FLOAT)
18
19Z80_INT = $(COMMON_INT)
20
21Z80_LONG = $(COMMON_LONG) \
22  _divulong.c \
23  _mullong.c
24
25Z80_LONGLONG = $(COMMON_LONGLONG) \
26  _mullonglong.c \
27  _divslonglong.c \
28  _divulonglong.c \
29  _modslonglong.c \
30  _modulonglong.c
31
32Z80_SDCC = $(COMMON_SDCC) \
33  _itoa.c \
34  _ltoa.c \
35  _startup.c \
36  sprintf.c \
37  vprintf.c \
38  _strcmp.c \
39  __memcpy.c \
40  memcpy.c \
41  _memmove.c
42
43Z80SOURCES = $(addprefix ../,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_LONGLONG) $(Z80_SDCC))
44Z8OBJECTS = $(patsubst %.c,%.rel,$(Z80_FLOAT) $(Z80_INT) $(Z80_LONG) $(Z80_LONGLONG) $(Z80_SDCC))
45
46OBJ = divunsigned.rel divsigned.rel divmixed.rel modunsigned.rel modsigned.rel modmixed.rel mul.rel mulchar.rel \
47      heap.rel strcpy.rel strlen.rel abs.rel __sdcc_call_hl.rel __sdcc_call_iy.rel crtenter.rel \
48      setjmp.rel
49
50LIB = tlcs90.lib
51CC = $(SCC)
52AS = $(SAS)
53ASFLAGS = -plosgff
54
55CFLAGS = -I$(srcdir)/../../include -I. --std-c11
56
57all: $(PORTDIR)/$(LIB) $(PORTDIR)/crt0.rel
58
59$(PORTDIR)/crt0.rel: crt0.rel
60	cp crt0.rel $(PORTDIR)/crt0.rel
61
62$(PORTDIR)/$(LIB): $(OBJ) $(Z8OBJECTS) Makefile
63ifeq ($(LIB_TYPE), SDCCLIB)
64	rm -f $@; \
65	$(top_builddir)/bin/sdcclib -a $@ $(OBJ) $(Z8OBJECTS)
66else
67  ifeq ($(LIB_TYPE), AR)
68	$(top_builddir)/bin/sdar -rcSD $@ $(OBJ) $(Z8OBJECTS)
69  else
70    ifeq ($(LIB_TYPE), RANLIB)
71	$(top_builddir)/bin/sdar -rcD $@ $(OBJ) $(Z8OBJECTS)
72    else
73	rm -f $@; \
74	for i in $(basename $(OBJ) $(Z8OBJECTS)); do echo $$i >>$@; done
75	cp $(OBJ) $(Z8OBJECTS) $(PORTDIR)
76    endif
77  endif
78endif
79
80%.rel: %.c
81	$(CC) $(CFLAGS) -c $<
82
83%.rel: %.s
84	@# TODO: sdas should place it\'s output in the current dir
85	test $(srcdir) = . || cp $< .
86	-$(AS) $(ASFLAGS) -I$(dir $<) $(notdir $<)
87	test $(srcdir) = . || rm $(notdir $<)
88
89%.rel: ../%.c
90	$(CC) $(CFLAGS) -c $<
91
92clean:
93	rm -f *.rel *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib
94
95distclean: clean
96	rm -f Makefile
97
98