From 11a92bce5516b6acdfe3270e884670c6ec85821d Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 13 Sep 2012 14:06:32 +0000 Subject: [PATCH] Improved PPC makefiles. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4650 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- docs/Doxyfile_chm | 2 +- docs/Doxyfile_html | 2 +- os/kernel/include/ch.h | 4 +- os/ports/GCC/PPC/rules.mk | 141 +++++++++++++++++++++++++++++--------- readme.txt | 5 ++ 5 files changed, 119 insertions(+), 35 deletions(-) diff --git a/docs/Doxyfile_chm b/docs/Doxyfile_chm index ae7595bc4..8688f79c9 100644 --- a/docs/Doxyfile_chm +++ b/docs/Doxyfile_chm @@ -31,7 +31,7 @@ PROJECT_NAME = ChibiOS/RT # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 2.5.0 +PROJECT_NUMBER = 2.5.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/docs/Doxyfile_html b/docs/Doxyfile_html index a6f4a0939..f96084966 100644 --- a/docs/Doxyfile_html +++ b/docs/Doxyfile_html @@ -31,7 +31,7 @@ PROJECT_NAME = ChibiOS/RT # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 2.5.0 +PROJECT_NUMBER = 2.5.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer 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 - @echo - $(CPPC) -c $(CPPFLAGS) -I . $(IINCDIR) $< -o $@ +$(OBJS): | $(BUILDDIR) -$(COBJS) : %.o : %.c +$(BUILDDIR) $(OBJDIR) $(LSTDIR): +ifneq ($(USE_VERBOSE_COMPILE),yes) + @echo Compiler Options + @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o @echo - $(CC) -c $(CPFLAGS) -I . $(IINCDIR) $< -o $@ +endif + mkdir -p $(OBJDIR) + mkdir -p $(LSTDIR) -$(ASMOBJS) : %.o : %.s +$(CPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile +ifeq ($(USE_VERBOSE_COMPILE),yes) @echo - $(AS) -c $(ASFLAGS) -I . $(IINCDIR) $< -o $@ + $(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $< + @$(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ +endif -%elf: $(OBJS) +$(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) : $(OBJDIR)/%.o : %.s Makefile +ifeq ($(USE_VERBOSE_COMPILE),yes) + @echo + $(AS) -c $(ASFLAGS) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $< + @$(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 $< + @$(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 diff --git a/readme.txt b/readme.txt index b1f52494d..06b442173 100644 --- a/readme.txt +++ b/readme.txt @@ -81,6 +81,11 @@ *** Releases *** ***************************************************************************** +*** 2.5.1 *** +- NEW: Added VLE support to the Power Architecture GCC port. +- NEW: Updated the Power Architecture rules.mk file to put object and listing + files into a ./build directory like ARM ports alread do. + *** 2.5.0 *** - FIX: Fixed anomaly in USB enumeration (bug 3565325)(backported to 2.4.3). - FIX: Fixed problem with lwIP statistics (bug 3564134)(backported to 2.4.3).