URI:
       rules.mk - scc - simple c99 compiler
  HTML git clone git://git.simple-cc.org/scc
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR 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