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