You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
2.3 KiB
Makefile

# Configuration for the Cisco 3620/3640 Routers
TARGET=c3600
MACHCODE=0x1e
TEXTADDR=0x80008000
LOADADDR=0x80028000
ifndef CROSS_COMPILE
CROSS_COMPILE=mips-elf-
endif
CFLAGS=-mno-abicalls
LDFLAGS=-Ttext ${TEXTADDR}
# Configuration for the Cisco 3660 Routers
# TARGET=c3600
# MACHCODE=0x34
# TEXTADDR=0x80008000
# LOADADDR=0x80028000
# ifndef CROSS_COMPILE
# CROSS_COMPILE=mips-elf-
# endif
# CFLAGS=-mno-abicalls
# LDFLAGS=-Ttext ${TEXTADDR}
# Configuration for the Cisco 1700 Series Routers
# TARGET=c1700
# MACHCODE=0x33
# TEXTADDR=0x80008000
# LOADADDR=0x80028000
# ifndef CROSS_COMPILE
# CROSS_COMPILE=powerpc-elf-
# endif
# LDFLAGS=-Ttext=${TEXTADDR}
# Configuration for the Cisco 7200 Series Routers
# TARGET=c7200
# MACHCODE=0x19
# TEXTADDR=0x80008000
# LOADADDR=0x80028000
# ifndef CROSS_COMPILE
# CROSS_COMPILE=mips-elf-
# endif
# CFLAGS=-DDEBUG -mno-abicalls
# LDFLAGS=-Ttext ${TEXTADDR}
# additional CFLAGS
CFLAGS+=
# don't modify anything below here
# ===================================================================
PROG=ciscoload
CC=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
LD=$(CROSS_COMPILE)ld
OBJCOPY=$(CROSS_COMPILE)objcopy
MACHDIR=mach/$(TARGET)
# command to prepare a binary
RAW=${OBJCOPY} --strip-unneeded --alt-machine-code ${MACHCODE}
INCLUDE=-Iinclude/ -Imach/${TARGET} -Iinclude/mach/${TARGET}
CFLAGS+=-fno-builtin -fomit-frame-pointer -fno-pic \
-Wall -DLOADADDR=${LOADADDR}
ASFLAGS=-D__ASSEMBLY__-xassembler-with-cpp -traditional-cpp
LDFLAGS+=--omagic -nostartfiles -nostdlib --discard-all --strip-all \
--entry _start
OBJECTS=string.o main.o ciloio.o printf.o elf_loader.o lzma_loader.o \
LzmaDecode.o
LINKOBJ=${OBJECTS} $(MACHDIR)/promlib.o $(MACHDIR)/start.o $(MACHDIR)/platio.o\
$(MACHDIR)/platform.o
THISFLAGS='LDFLAGS=$(LDFLAGS)' 'ASFLAGS=$(ASFLAGS)' \
'CROSS_COMPILE=$(CROSS_COMPILE)' 'CFLAGS=$(CFLAGS)' 'CC=$(CC)'
all: ${OBJECTS} ${PROG}
${PROG}: sub ${OBJECTS}
${CC} ${LDFLAGS} ${LINKOBJ} -o ${PROG}.elf
${RAW} ${PROG}.elf ${PROG}.bin
.c.o:
${CC} ${CFLAGS} $(INCLUDE) -c $<
.S.o:
${CC} ${CFLAGS} $(INCLUDE) ${ASFLAGS} -c $<
sub:
@for i in $(MACHDIR); do \
echo "Making all in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) $(THISFLAGS) all); done
subclean:
@for i in $(MACHDIR); do \
echo "Cleaning all in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) clean); done
clean: subclean
-rm -f *.o
-rm -f ${PROG}.elf
-rm -f ${PROG}.bin