diff options
Diffstat (limited to 'os')
| -rw-r--r-- | os/kernel/include/ch.h | 4 | ||||
| -rw-r--r-- | os/ports/GCC/PPC/rules.mk | 139 | 
2 files changed, 111 insertions, 32 deletions
diff --git a/os/kernel/include/ch.h b/os/kernel/include/ch.h index 073ab2280..031d27e62 100644 --- a/os/kernel/include/ch.h +++ b/os/kernel/include/ch.h @@ -40,7 +40,7 @@  /**
   * @brief   Kernel version string.
   */
 -#define CH_KERNEL_VERSION       "2.5.0"
 +#define CH_KERNEL_VERSION       "2.5.1unstable"
  /**
   * @name    Kernel version
 @@ -59,7 +59,7 @@  /**
   * @brief   Kernel version patch number.
   */
 -#define CH_KERNEL_PATCH         0
 +#define CH_KERNEL_PATCH         1
  /** @} */
  /**
 diff --git a/os/ports/GCC/PPC/rules.mk b/os/ports/GCC/PPC/rules.mk index eeb5ee77b..6b49e736a 100644 --- a/os/ports/GCC/PPC/rules.mk +++ b/os/ports/GCC/PPC/rules.mk @@ -1,4 +1,14 @@ -# PPC e200Z makefile scripts and rules.
 +# PPC makefile scripts and rules.
 +
 +# Output directory and files
 +ifeq ($(BUILDDIR),)
 +  BUILDDIR = build
 +endif
 +ifeq ($(BUILDDIR),.)
 +  BUILDDIR = build
 +endif
 +OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \
 +           $(BUILDDIR)/$(PROJECT).bin $(BUILDDIR)/$(PROJECT).dmp
  # Automatic compiler options
  OPT = $(USE_OPT)
 @@ -15,14 +25,20 @@ ifeq ($(USE_VLE),yes)    MCU += -mvle
  endif
 -# Source files groups
 -SRC	     = $(CSRC)$(CPPSRC)
 +# 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   = $(CSRC:.c=.o)
 -CPPOBJS = $(CPPSRC:.cpp=.o)
 -ASMOBJS = $(ASMSRC:.s=.o)
 -OBJS	= $(ASMOBJS) $(COBJS) $(CPPOBJS)
 +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))
 @@ -35,56 +51,119 @@ ADEFS   = $(DADEFS) $(UADEFS)  # Libs
  LIBS    = $(DLIBS) $(ULIBS)
 -MCFLAGS = -mcpu=$(MCU)
 -ODFLAGS	= -x --syms
 -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS)
 -CPFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(<:.c=.lst) $(DEFS)
 -ifeq ($(LINK_GC),yes)
 -  LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LLIBDIR)
 +# Various settings
 +MCFLAGS   = -mcpu=$(MCU)
 +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)
 +ifeq ($(USE_LINK_GC),yes)
 +  LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LLIBDIR)
  else
 -  LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LLIBDIR)
 +  LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch $(LLIBDIR)
  endif
  # Generate dependency information
 -CPFLAGS += -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: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp MAKE_ALL_RULE_HOOK
 +
 +all: $(OBJS) $(OUTFILES) MAKE_ALL_RULE_HOOK
  MAKE_ALL_RULE_HOOK:
 -$(CPPOBJS) : %.o : %.cpp
 +$(OBJS): | $(BUILDDIR)
 +
 +$(BUILDDIR) $(OBJDIR) $(LSTDIR):
 +ifneq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo Compiler Options
 +	@echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o
  	@echo
 -	$(CPPC) -c $(CPPFLAGS) -I . $(IINCDIR) $< -o $@
 +endif
 +	mkdir -p $(OBJDIR)
 +	mkdir -p $(LSTDIR)
 -$(COBJS) : %.o : %.c
 +$(CPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	@echo
 -	$(CC) -c $(CPFLAGS) -I . $(IINCDIR) $< -o $@
 +	$(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $<
 +	@$(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 $<
 +	@$(CC) -c $(CFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 -$(ASMOBJS) : %.o : %.s
 +$(ASMOBJS) : $(OBJDIR)/%.o : %.s Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	@echo
 -	$(AS) -c $(ASFLAGS) -I . $(IINCDIR) $< -o $@
 +	$(AS) -c $(ASFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $<
 +	@$(AS) -c $(ASFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 -%elf: $(OBJS)
 +$(ASMXOBJS) : $(OBJDIR)/%.o : %.S Makefile
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
 +	@echo 
 +	$(CC) -c $(ASXFLAGS) -I. $(IINCDIR) $< -o $@
 +else
 +	@echo Compiling $<
 +	@$(CC) -c $(ASXFLAGS) -I. $(IINCDIR) $< -o $@
 +endif
 +
 +%.elf: $(OBJS) $(LDSCRIPT)
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	@echo
  	$(LD) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
 +else
 +	@echo Linking $@
 +	@$(LD) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
 +endif
 -%hex: %elf
 +%.hex: %.elf $(LDSCRIPT)
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	$(HEX) $< $@
 +else
 +	@echo Creating $@
 +	@$(HEX) $< $@
 +endif
 -%bin: %elf
 +%.bin: %.elf $(LDSCRIPT)
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	$(BIN) $< $@
 +else
 +	@echo Creating $@
 +	@$(BIN) $< $@
 +endif
 -%dmp: %elf
 +%.dmp: %.elf $(LDSCRIPT)
 +ifeq ($(USE_VERBOSE_COMPILE),yes)
  	$(OD) $(ODFLAGS) $< > $@
 +else
 +	@echo Creating $@
 +	@$(OD) $(ODFLAGS) $< > $@
 +	@echo Done
 +endif
  clean:
 -	-rm -f $(OBJS)
 -	-rm -f $(CSRC:.c=.lst) $(CPPSRC:.cpp=.lst) $(ASMSRC:.s=.lst)
 -	-rm -f $(PROJECT).elf $(PROJECT).dmp $(PROJECT).map $(PROJECT).hex $(PROJECT).bin
 -	-rm -fR .dep
 +	@echo Cleaning
 +	-rm -fR .dep $(BUILDDIR)
 +	@echo Done
  #
  # Include the dependency files, should be the last of the makefile
  | 
