scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

  1# Define the target all as default
  2all:
  3
  4PREFIX = /usr/local
  5LIBPREFIX = $(PREFIX)
  6LIBPROFILE = scc
  7CONF = amd64-linux
  8TOOL = unix
  9HOST = posix
 10ROFF = gnu
 11VERSION = 0.1
 12include $(PROJECTDIR)/config.mk
 13
 14# Define helper macros for project directories
 15DOCDIR    = $(PROJECTDIR)/doc
 16INCDIR    = $(PROJECTDIR)/include/scc
 17BINDIR    = $(PROJECTDIR)/bin
 18SRCDIR    = $(PROJECTDIR)/src
 19SCRIPTDIR = $(PROJECTDIR)/scripts
 20LIBDIR    = $(PROJECTDIR)/lib
 21LIBEXEC   = $(PROJECTDIR)/libexec
 22BUILDDIR  = $(PROJECTDIR)/scripts/build
 23CRTDIR    = $(PROJECTDIR)/lib/scc
 24LIBCDIR   = $(CRTDIR)/$(ARCH)-$(SYS)
 25MKDEP     = $(SCRIPTDIR)/mkdep
 26SRCDIR    = $(PROJECTDIR)/src
 27CMDDIR    = $(SRCDIR)/cmd
 28MANDIR    = $(PROJECTDIR)/share/man
 29
 30SCC       = $(BINDIR)/scc
 31SCC_AR    = $(BINDIR)/scc-ar
 32SCC_RANLIB= $(BINDIR)/scc-ranlib
 33
 34# library dependences helpers
 35LIBMACH = $(LIBDIR)/scc/libmach.a
 36LIBSCC  = $(LIBDIR)/scc/libscc.a
 37LIBSCC_DRIVER = $(LIBDIR)/scc/libscc-$(DRIVER).a
 38
 39# Include configuration definitions
 40include $(BUILDDIR)/conf/$(CONF).mk
 41include $(BUILDDIR)/tool/$(TOOL).mk
 42include $(BUILDDIR)/host/$(HOST).mk
 43
 44# Locations for -I or -L in compiler, assembler or linker
 45CPPINCLUDES = -I$(INCDIR)/bits
 46ASINCLUDES  = -I$(INCDIR)/bits
 47LDINCLUDES  = -L$(LIBDIR)/scc
 48
 49# Definition of command line for cc, as, ld and emu
 50PROJ_CPPFLAGS =\
 51	$(CPPINCLUDES)\
 52	$(HOST_CPPFLAGS)\
 53	$(MORE_CPPFLAGS)
 54
 55PROJ_CFLAGS =\
 56	$(PROJ_CPPFLAGS)\
 57	$(MORE_CFLAGS)\
 58	$(HOST_CFLAGS)\
 59	$(SYS_CFLAGS)\
 60	$(TOOL_CFLAGS)\
 61	$(CFLAGS)
 62
 63PROJ_LDFLAGS =\
 64	$(MORE_LDFLAGS)\
 65	$(HOST_LDFLAGS)\
 66	$(SYS_LDFLAGS)\
 67	$(TOOL_LDFLAGS)\
 68	$(LDINCLUDES)\
 69	$(LDFLAGS)
 70
 71PROJ_ASFLAGS =\
 72	$(MORE_ASFLAGS)\
 73	$(HOST_ASFLAGS)\
 74	$(SYS_ASFLAGS)\
 75	$(TOOL_ASFLAGS)\
 76	$(ASINCLUDES)\
 77	$(ASFLAGS)
 78
 79PROJ_ARFLAGS =\
 80	$(MORE_ARFLAGS)\
 81	$(HOST_ARFLAGS)\
 82	$(SYS_ARFLAGS)\
 83	$(TOOL_ARFLAGS)\
 84	$(ARFLAGS)
 85
 86PROJ_RLFLAGS =\
 87	$(MORE_RLFLAGS)\
 88	$(HOST_RLFLAGS)\
 89	$(SYS_RLFLAGS)\
 90	$(TOOL_RLFLAGS)\
 91	$(RLFLAGS)
 92
 93PROJ_LDLIBS =\
 94	$(MORE_LDLIBS)\
 95	$(HOST_LDLIBS)\
 96	$(SYS_LDLIBS)\
 97	$(TOOL_LDLIBS)\
 98	$(LIBS)
 99
100# Definition of tools
101CC = $(CROSS_COMPILE)$(COMP)
102AS = $(CROSS_COMPILE)$(ASM)
103LD = $(CROSS_COMPILE)$(LINKER)
104OC = $(CROSS_COMPILE)$(OBJCOPY)
105OD = $(CROSS_COMPILE)$(OBJDUMP)
106RL = $(CROSS_COMPILE)$(RANLIB)
107AR = $(CROSS_COMPILE)$(ARCHIVE)
108CPP = $(CROSS_COMPILE)$(PRECOMP)
109GS = gs
110
111$(DIRS) DUMMY : FORCE
112	+@cd $@ && $(MAKE)
113
114# Generic rules
115.SUFFIXES:
116.SUFFIXES: .c .map .dump .elf .bin\
117	   .i .a .o .s .S .ko .ld .tmpl\
118	   .pdf .ps .eps .puml\
119	   .ms .1 .2 .3 .4 .5 .6 .7\
120
121.c:
122	$(CC) $(PROJ_CFLAGS) $(PROJ_LDFLAGS) -o $@ $< $(PROJ_LDLIBS)
123
124.s.o:
125	$(AS) $(PROJ_ASFLAGS) $< -o $@
126
127.s.ko:
128	$(AS) $(PROJ_ASFLAGS) $< -o $@
129
130.c.o:
131	$(CC) $(PROJ_CFLAGS) -o $@ -c $<
132
133.c.s:
134	$(CC) $(PROJ_CFLAGS) -S -o $@ $<
135
136.c.i:
137	$(CPP) $(PROJ_CPPFLAGS) -o $@ $<
138
139.elf.bin:
140	$(OC) -O binary $< $@
141
142.o.dump:
143	trap 'rm -f $$$$.dump' EXIT;\
144	trap 'exit $?' HUP INT TERM;\
145	$(OD) -D $< > $$$$.dump && mv $$$$.dump $@
146
147.elf.map:
148	$(LD) -Map=$@ $< -o /dev/null
149
150.puml.eps:
151	trap 'rm -f $$$$.eps' EXIT;\
152	trap 'exit $?' HUP INT TERM;\
153	plantuml -p -teps < $< > $$$$.eps && mv $$$$.eps $@
154
155.ms.ps:
156	trap 'rm -f $$$$.ps' EXIT;\
157	trap 'exit $?' HUP INT TERM;\
158	$(SOELIM) $< | $(GRAP) | $(PIC) | $(EQN) | $(TBL) |\
159	$(TROFF) -ms | $(DPOST) > $$$$.ps &&\
160	mv $$$$.ps $@
161
162.1.ps .2.ps .3.ps .4.ps .5.ps .6.ps .7.ps:
163	trap 'rm -f $$$$.ps' EXIT;\
164	trap 'exit $?' HUP INT TERM;\
165	$(TBL) $< | $(TROFF) -man | $(DPOST) > $$$$.ps && mv $$$$.ps $@
166
167.ps.pdf:
168	$(GS) -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
169	    -ssdout=%stderr "-sOutputFile=$@" -P- -dSAFER "$<"
170
171.eps.pdf:
172	$(GS) -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
173	    -ssdout=%stderr "-sOutputFile=$@" -P- -dSAFER "$<"
174FORCE:
175
176clean: clean-files clean-dirs
177
178clean-dirs:
179	+@set -e; \
180	for i in $(DIRS); \
181	do \
182		cd $$i; \
183		$(MAKE) clean; \
184		cd -; \
185	done
186
187clean-files:
188	rm -f *.i *.d *.o *.a *.elf $(TARGET)
189
190dep: add-makefile recursive-dep
191
192add-makefile: FORCE
193	test -n "$(NODEP)" || $(MKDEP)
194
195recursive-dep: FORCE
196	+@set -e; \
197	for i in $(DIRS); \
198	do \
199		test $$i = tests && continue;\
200		cd $$i; \
201		$(MAKE) dep; \
202		cd -; \
203	done
204
205distclean: recursive-distclean
206
207del-makefile: FORCE
208	rm -f makefile
209
210recursive-distclean: del-makefile FORCE
211	+@set -e;\
212	for i in $(DIRS); \
213	do\
214		test $$i = tests && continue;\
215		cd $$i;\
216		$(MAKE) distclean;\
217		cd -;\
218	done