diff options
Diffstat (limited to 'os/common')
| -rw-r--r-- | os/common/startup/SIMIA32/compilers/GCC/rules.mk | 172 | 
1 files changed, 172 insertions, 0 deletions
| diff --git a/os/common/startup/SIMIA32/compilers/GCC/rules.mk b/os/common/startup/SIMIA32/compilers/GCC/rules.mk new file mode 100644 index 000000000..f3b84ed54 --- /dev/null +++ b/os/common/startup/SIMIA32/compilers/GCC/rules.mk @@ -0,0 +1,172 @@ +# e200z common makefile scripts and rules.
 +
 +##############################################################################
 +# Processing options coming from the upper Makefile.
 +#
 +
 +# Compiler options
 +OPT = $(USE_OPT)
 +COPT = $(USE_COPT)
 +CPPOPT = $(USE_CPPOPT)
 +
 +# Garbage collection
 +ifeq ($(USE_LINK_GC),yes)
 +  OPT += -ffunction-sections -fdata-sections -fno-common
 +  LDOPT := --gc-sections
 +else
 +  LDOPT := --no-gc-sections
 +endif
 +
 +# Linker extra options
 +ifneq ($(USE_LDOPT),)
 +  LDOPT := $(LDOPT),$(USE_LDOPT)
 +endif
 +
 +# Link time optimizations
 +ifeq ($(USE_LTO),yes)
 +  OPT += -flto
 +endif
 +
 +# Output directory and files
 +ifeq ($(BUILDDIR),)
 +  BUILDDIR = build
 +endif
 +ifeq ($(BUILDDIR),.)
 +  BUILDDIR = build
 +endif
 +OUTFILES = $(BUILDDIR)/$(PROJECT).exe
 +           
 +
 +# Source files groups and paths
 +SRC	      = $(CSRC)$(CPPSRC)
 +SRCPATHS  = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(SRC)))
 +
 +# Various directories
 +OBJDIR    = $(BUILDDIR)/obj
 +LSTDIR    = $(BUILDDIR)/lst
 +
 +# Object files groups
 +COBJS     = $(addprefix $(OBJDIR)/, $(notdir $(CSRC:.c=.o)))
 +CPPOBJS   = $(addprefix $(OBJDIR)/, $(notdir $(CPPSRC:.cpp=.o)))
 +ASMOBJS   = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o)))
 +ASMXOBJS  = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o)))
 +OBJS	  = $(ASMXOBJS) $(ASMOBJS) $(COBJS) $(CPPOBJS)
 +
 +# Paths
 +IINCDIR   = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR))
 +LLIBDIR   = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR))
 +
 +# Macros
 +DEFS      = $(DDEFS) $(UDEFS)
 +ADEFS 	  = $(DADEFS) $(UADEFS)
 +
 +# Libs
 +LIBS      = $(DLIBS) $(ULIBS)
 +
 +# Various settings
 +MCFLAGS   =
 +ODFLAGS	  = -x --syms
 +ASFLAGS   = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS)
 +ASXFLAGS  = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS)
 +CFLAGS    = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS)
 +CPPFLAGS  = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS)
 +LDFLAGS   = $(MCFLAGS) $(OPT) $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,$(LDOPT)
 +
 +# Generate dependency information
 +ASFLAGS  += -MD -MP -MF .dep/$(@F).d
 +CFLAGS   += -MD -MP -MF .dep/$(@F).d
 +CPPFLAGS += -MD -MP -MF .dep/$(@F).d
 +
 +# Paths where to search for sources
 +VPATH     = $(SRCPATHS)
 +
 +#
 +# Makefile rules
 +#
 +
 +all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK
 +
 +PRE_MAKE_ALL_RULE_HOOK:
 +
 +POST_MAKE_ALL_RULE_HOOK:
 +
 +$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR)
 +
 +$(BUILDDIR):
 +ifneq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo Compiler Options
 +	@echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o
 +	@echo
 +endif
 +	@mkdir -p $(BUILDDIR)
 +
 +$(OBJDIR):
 +	@mkdir -p $(OBJDIR)
 +
 +$(LSTDIR):
 +	@mkdir -p $(LSTDIR)
 +
 +$(CPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo
 +	$(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $(<F)
 +	@$(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 +
 +$(COBJS) : $(OBJDIR)/%.o : %.c Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo
 +	$(CC) -c $(CFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $(<F)
 +	@$(CC) -c $(CFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 +
 +$(ASMOBJS) : $(OBJDIR)/%.o : %.s Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo
 +	$(AS) -c $(ASFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $(<F)
 +	@$(AS) -c $(ASFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 +
 +$(ASMXOBJS) : $(OBJDIR)/%.o : %.S Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo
 +	$(CC) -c $(ASXFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $(<F)
 +	@$(CC) -c $(ASXFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 +
 +%.exe: $(OBJS)
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo
 +	$(LD) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
 +else
 +	@echo Linking $@
 +	@$(LD) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
 +endif
 +
 +lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a
 +
 +$(BUILDDIR)/lib$(PROJECT).a: $(OBJS)
 +	@$(AR) -r $@ $^
 +	@echo
 +	@echo Done
 +
 +clean:
 +	@echo Cleaning
 +	-rm -fR .dep $(BUILDDIR)
 +	@echo
 +	@echo Done
 +
 +#
 +# Include the dependency files, should be the last of the makefile
 +#
 +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
 +
 +# *** EOF ***
 | 
