scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

rules.mk (4317B)


      1 # Define the target all as default
      2 all:
      3 
      4 PREFIX = /usr/local
      5 LIBPREFIX = $(PREFIX)
      6 LIBPROFILE = scc
      7 CONF = amd64-linux
      8 TOOL = unix
      9 HOST = posix
     10 ROFF = gnu
     11 VERSION = 0.1
     12 include $(PROJECTDIR)/config.mk
     13 
     14 # Define helper macros for project directories
     15 DOCDIR    = $(PROJECTDIR)/doc
     16 INCDIR    = $(PROJECTDIR)/include/scc
     17 BINDIR    = $(PROJECTDIR)/bin
     18 SRCDIR    = $(PROJECTDIR)/src
     19 SCRIPTDIR = $(PROJECTDIR)/scripts
     20 LIBDIR    = $(PROJECTDIR)/lib
     21 LIBEXEC   = $(PROJECTDIR)/libexec
     22 BUILDDIR  = $(PROJECTDIR)/scripts/build
     23 CRTDIR    = $(PROJECTDIR)/lib/scc
     24 LIBCDIR   = $(CRTDIR)/$(ARCH)-$(SYS)
     25 MKDEP     = $(SCRIPTDIR)/mkdep
     26 SRCDIR    = $(PROJECTDIR)/src
     27 CMDDIR    = $(SRCDIR)/cmd
     28 MANDIR    = $(PROJECTDIR)/share/man
     29 
     30 SCC       = $(BINDIR)/scc
     31 SCC_AR    = $(BINDIR)/scc-ar
     32 SCC_RANLIB= $(BINDIR)/scc-ranlib
     33 
     34 # library dependences helpers
     35 LIBMACH = $(LIBDIR)/scc/libmach.a
     36 LIBSCC  = $(LIBDIR)/scc/libscc.a
     37 LIBSCC_DRIVER = $(LIBDIR)/scc/libscc-$(DRIVER).a
     38 
     39 # Include configuration definitions
     40 include $(BUILDDIR)/conf/$(CONF).mk
     41 include $(BUILDDIR)/tool/$(TOOL).mk
     42 include $(BUILDDIR)/host/$(HOST).mk
     43 
     44 # Locations for -I or -L in compiler, assembler or linker
     45 CPPINCLUDES = -I$(INCDIR)/bits
     46 ASINCLUDES  = -I$(INCDIR)/bits
     47 LDINCLUDES  = -L$(LIBDIR)/scc
     48 
     49 # Definition of command line for cc, as, ld and emu
     50 PROJ_CPPFLAGS =\
     51 	$(CPPINCLUDES)\
     52 	$(HOST_CPPFLAGS)\
     53 	$(MORE_CPPFLAGS)
     54 
     55 PROJ_CFLAGS =\
     56 	$(PROJ_CPPFLAGS)\
     57 	$(MORE_CFLAGS)\
     58 	$(HOST_CFLAGS)\
     59 	$(SYS_CFLAGS)\
     60 	$(TOOL_CFLAGS)\
     61 	$(CFLAGS)
     62 
     63 PROJ_LDFLAGS =\
     64 	$(MORE_LDFLAGS)\
     65 	$(HOST_LDFLAGS)\
     66 	$(SYS_LDFLAGS)\
     67 	$(TOOL_LDFLAGS)\
     68 	$(LDINCLUDES)\
     69 	$(LDFLAGS)
     70 
     71 PROJ_ASFLAGS =\
     72 	$(MORE_ASFLAGS)\
     73 	$(HOST_ASFLAGS)\
     74 	$(SYS_ASFLAGS)\
     75 	$(TOOL_ASFLAGS)\
     76 	$(ASINCLUDES)\
     77 	$(ASFLAGS)
     78 
     79 PROJ_ARFLAGS =\
     80 	$(MORE_ARFLAGS)\
     81 	$(HOST_ARFLAGS)\
     82 	$(SYS_ARFLAGS)\
     83 	$(TOOL_ARFLAGS)\
     84 	$(ARFLAGS)
     85 
     86 PROJ_RLFLAGS =\
     87 	$(MORE_RLFLAGS)\
     88 	$(HOST_RLFLAGS)\
     89 	$(SYS_RLFLAGS)\
     90 	$(TOOL_RLFLAGS)\
     91 	$(RLFLAGS)
     92 
     93 PROJ_LDLIBS =\
     94 	$(MORE_LDLIBS)\
     95 	$(HOST_LDLIBS)\
     96 	$(SYS_LDLIBS)\
     97 	$(TOOL_LDLIBS)\
     98 	$(LIBS)
     99 
    100 # Definition of tools
    101 CC = $(CROSS_COMPILE)$(COMP)
    102 AS = $(CROSS_COMPILE)$(ASM)
    103 LD = $(CROSS_COMPILE)$(LINKER)
    104 OC = $(CROSS_COMPILE)$(OBJCOPY)
    105 OD = $(CROSS_COMPILE)$(OBJDUMP)
    106 RL = $(CROSS_COMPILE)$(RANLIB)
    107 AR = $(CROSS_COMPILE)$(ARCHIVE)
    108 CPP = $(CROSS_COMPILE)$(PRECOMP)
    109 GS = 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 "$<"
    174 FORCE:
    175 
    176 clean: clean-files clean-dirs
    177 
    178 clean-dirs:
    179 	+@set -e; \
    180 	for i in $(DIRS); \
    181 	do \
    182 		cd $$i; \
    183 		$(MAKE) clean; \
    184 		cd -; \
    185 	done
    186 
    187 clean-files:
    188 	rm -f *.i *.d *.o *.a *.elf $(TARGET)
    189 
    190 dep: add-makefile recursive-dep
    191 
    192 add-makefile: FORCE
    193 	test -n "$(NODEP)" || $(MKDEP)
    194 
    195 recursive-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 
    205 distclean: recursive-distclean
    206 
    207 del-makefile: FORCE
    208 	rm -f makefile
    209 
    210 recursive-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