source: trunk/softs/tsar_boot/Makefile @ 768

Last change on this file since 768 was 761, checked in by cfuguet, 10 years ago

tsar_boot: adding hard_config.h dependency in makefile

  • This is to force Makefile to recompile all sources every time hard_config.h is modified.
File size: 4.4 KB
RevLine 
[759]1# let the user have a default configuration (ie for HARD_CONFIG_PATH)
[411]2-include ./build.mk
3
[758]4USE_DT     ?= 1
5DTS        ?= platform.dts
6
[425]7MAKECMDGOALS ?= none
[293]8
[388]9ifneq ($(MAKECMDGOALS),$(filter $(MAKECMDGOALS),clean distclean clean-doc doc))
[759]10  ifndef HARD_CONFIG_PATH
11    $(error please define HARD_CONFIG_PATH 'make HARD_CONFIG_PATH=foo')
[388]12  else
[759]13    $(info Make for $(HARD_CONFIG_PATH))
[388]14  endif
15endif
16
[758]17# Platform clock frequency (in KHz)
18ifdef SYSTEM_CLK
19    DEFS   := "-DRESET_SYSTEM_CLK=$(SYSTEM_CLK)"
20endif
21
[653]22LD         := mipsel-unknown-elf-ld
23CC         := mipsel-unknown-elf-gcc
24AS         := mipsel-unknown-elf-as
25DU         := mipsel-unknown-elf-objdump
[758]26AR         := mipsel-unknown-elf-ar
[653]27RM         := rm -rf
[759]28SED        := sed
[653]29ECHO       := @echo
30MKDIR      := mkdir
31DTC        := dtc
32HEXDUMP    := hexdump
[388]33DOXYGEN    := doxygen
[293]34
35BUILD_DIR  := build
[761]36HARD_CONFIG:= $(HARD_CONFIG_PATH)/hard_config.h
[293]37
38# =============================================================================
39# Include files paths
40# =============================================================================
41
[759]42INCLUDE    += -I. -Iinclude -Idrivers -I$(HARD_CONFIG_PATH)
[293]43
44# =============================================================================
[758]45# Object files
[293]46# =============================================================================
47
[758]48VPATH      += src
[293]49
[586]50CFLAGS     := -Wall                \
51              -mno-gpopt           \
52              -ffreestanding       \
53              -fomit-frame-pointer \
[758]54              -march=mips32        \
[701]55              -O2                  \
[586]56              -Werror
[293]57
[653]58C_SRCS     := reset_elf_loader.c \
[758]59              reset_utils.c      \
60              reset_exception.c  \
[586]61              reset_ioc.c        \
[758]62              version.c
[406]63
[653]64S_SRCS     := reset.S
[293]65
[758]66OBJS       := $(addprefix $(BUILD_DIR)/,\
67                  $(subst .c,.o, $(notdir $(C_SRCS))) \
68                  $(subst .S,.o, $(notdir $(S_SRCS))))
[293]69
[586]70TARGET     := preloader.elf
[293]71
[758]72# =============================================================================
73# Drivers library
74# =============================================================================
[293]75
[758]76VPATH      += drivers
77
78DRV_SRCS   := reset_tty.c        \
79              reset_inval.c      \
80              reset_sdc.c        \
81              reset_bdv.c        \
82              reset_rdk.c        \
83              sdcard.c           \
84              spi.c
85
86DRV_OBJS   := $(addprefix $(BUILD_DIR)/,\
87                  $(subst .c,.o, $(notdir $(DRV_SRCS))))
88
89DRV_LIB    := libdrivers.a
90
91# =============================================================================
92# Makefile rules
93# =============================================================================
94
95VPATH      += $(BUILD_DIR)
96
[293]97all: $(TARGET)
98
[761]99$(DRV_OBJS): $(HARD_CONFIG)
100$(OBJS): $(HARD_CONFIG)
101
[758]102$(BUILD_DIR)/$(DRV_LIB): $(BUILD_DIR) $(DRV_OBJS)
103        $(ECHO) "[   AR    ]     $(notdir $@)"
104        $(AR) rcs $@ $(DRV_OBJS)
105
106$(BUILD_DIR)/version.o: $(BUILD_DIR)/version.c
107        $(ECHO) "[   CC    ]     $(notdir $<)"
108        $(CC) $(DEFS) $(CFLAGS) $(INCLUDE) -c -o $@ $<
[587]109        $(DU) -D $@ > $@.txt
[502]110
[758]111$(BUILD_DIR)/version.c: $(BUILD_DIR) version.sh VERSION
112        $(ECHO) "[version.sh]"
113        ./version.sh > $@
114
[759]115$(BUILD_DIR)/preloader.ld: preloader.ld.in
116        $(ECHO) "[   CC    ]     $(notdir $<)"
117        $(CC) -x c $(INCLUDE) -E $< | $(SED) -e '/#/d' -e '/^[\s\t]*$$/d' > $@
118
119$(TARGET): $(BUILD_DIR) $(OBJS) $(BUILD_DIR)/preloader.ld $(BUILD_DIR)/platform.ld $(BUILD_DIR)/$(DRV_LIB)
[388]120        $(ECHO) "[   LD    ]     $@"
[759]121        $(LD) -o $@ -T $(BUILD_DIR)/preloader.ld $(OBJS) -L$(BUILD_DIR) -ldrivers
[293]122        $(DU) -D $@ > $@.txt
123
[425]124ifeq ($(USE_DT), 1)
[293]125$(BUILD_DIR)/platform.ld: $(BUILD_DIR)/platform.dtb
[388]126        $(ECHO) "[ HEXDUMP ]     $(notdir $<)"
[293]127        $(HEXDUMP) -v -e '"BYTE(0x" 1/1 "%02X" ")\n"' $< > $@
[425]128else
129$(BUILD_DIR)/platform.ld:
130        $(ECHO) "[  TOUCH  ]     $(notdir $@)"
131        touch $@
132endif
[293]133
[759]134$(BUILD_DIR)/platform.dtb: $(HARD_CONFIG_PATH)/$(DTS)
[388]135        $(ECHO) "[   DTC   ]     $(notdir $<)"
[390]136        ${DTC} -O dtb -o $@ $< &> /dev/null
[293]137
138$(BUILD_DIR):
139        $(MKDIR) $@
140
[388]141doc: Doxyfile
142        $(DOXYGEN) Doxyfile
143
[293]144clean:
145        $(RM) $(TARGET).txt $(TARGET) *~ $(BUILD_DIR)
146
[388]147clean-doc:
148        $(RM) doc
[293]149
[388]150distclean: clean clean-doc
151
[293]152# =============================================================================
153# Implicit makefile rules
154
155$(BUILD_DIR)/%.o: %.c
[388]156        $(ECHO) "[   CC    ]     $(notdir $<)"
[293]157        $(CC) $(DEFS) $(CFLAGS) $(INCLUDE) -c -o $@ $<
158        $(DU) -D $@ > $@.txt
159
160$(BUILD_DIR)/%.o: %.S
[388]161        $(ECHO) "[   AS    ]     $(notdir $<)"
[293]162        $(CC) $(DEFS) ${INCLUDE} -g -mips32 -c -o $@ $<
163        $(DU) -D $@ > $@.txt
164
Note: See TracBrowser for help on using the repository browser.