summaryrefslogtreecommitdiffstats
path: root/Makefile.shared
blob: c49060bcb177f79c6758727299de1f3789f8eadb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#
#  Subdirectory makefiles do some setup, then we get here
#
#  $Id$
#

# Tool helpers
SPECFLAGS =-B${RTEMS_MAKEFILE_PATH}/lib/ -specs=bsp_specs -qrtems
CFLAGS =

# GEN5200 Specific Information
ifeq ($(RTEMS_BSP),icecube)
  LINKARGS+=-qnolinkcmds -T$(RTEMS_LINKCMDS)
endif

# PC386 Specific Information
ifeq ($(RTEMS_BSP),pc386)
  HEADERADDR=0x00097E00
  START16FILE=$(RTEMS_MAKEFILE_PATH)/lib/start16.bin
  START16ADDR=0x00097C00
  RELOCADDR=0x00100000
  LINKARGS+= -Wl,-Ttext,$(RELOCADDR) 
endif

# COBRA5475 Specific Information
ifeq ($(RTEMS_BSP),COBRA5475)
  LINKARGS+=-qnolinkcmds -T$(RTEMS_LINKCMDS)
CFLAGS += -mcpu=5475
endif
# Some tests need to be able to do a gethostbyname
ifeq ($(NEED_ROOTFS_FOR_HOST_INFO),yes)
  CLEAN_ADDITIONS += FilesystemImage FilesystemImage.c FilesystemImage.h
  FILESYSTEM_OBJS  = FilesystemImage.o
  FILESYSTEM_SRCS  = FilesystemImage.h
  CFLAGS          += -DENABLE_UNTAR_ROOT_FILESYSTEM -I.
endif

ifeq ($(NEED_NETWORK),yes)
#NETWORK_HFILE= ../networkconfig_$(RTEMS_BSP).h 
#NETWORK_HFILE= ../networkconfig.h
endif


DEFINES += -D$(RTEMS_BSP)
CFLAGS += $(DEFINES)

RTS= --RTS=$(shell $(CC) -print-multi-directory $(CFLAGS))

all:  $(PROGRAM).exe

joel:
	@echo CFLAGS=$(CFLAGS)
	@echo CC=$(CC)
	@echo RTS=$(RTS)
	$(CC) -print-multi-directory $(CFLAGS)
	$(CC) -mcpu=403 -print-multi-directory

$(PROGRAM).exe: rtems_init.o $(FILESYSTEM_OBJS) $(EXTRA_OBJS)
	$(AS:as=gnatmake) $(CPU_CFLAGS) $(RTS) -g -v $(EXTRA_GNATFLAGS) \
            -I$(RTEMS_MAKEFILE_PATH)/lib/include/adainclude \
 	    -O -gnata -gnatE -gnato -g $(PROGRAM) -o $(@) \
	    -bargs -Mgnat_main \
	    -largs $(SPECFLAGS) $(CFLAGS) $(LINKARGS) \
		rtems_init.o $(FILESYSTEM_OBJS) \
	     $(EXTRA_OBJS)
ifeq ($(RTEMS_BSP_FAMILY),pc386)
	$(OBJCOPY) -O binary $(@) $(@).bin
	$(RTEMS_MAKEFILE_PATH)/build-tools/bin2boot -v $(@).bt $(HEADERADDR) \
          $(START16FILE) $(START16ADDR) 0 $(@).bin $(RELOCADDR) 0
endif
ifeq ($(RTEMS_BSP),icecube)
	$(OBJCOPY) -R -S -O binary obj/$(PROGRAM) obj/$(PROGRAM).bin
	cat obj/$(PROGRAM).bin | gzip -9 >obj/$(PROGRAM).gz
	mkimage \
	  -A ppc -O rtems -T kernel -a 0x40000 -e 0x40000 -n "RTEMS" \
	  -d obj/$(PROGRAM).gz obj/$(PROGRAM).img 
	cp obj/$(PROGRAM).img ../../../../tftpboot/main.img
	rm -f obj/$(PROGRAM).gz obj/$(PROGRAM).img
endif

rtems_init.o: ../rtems_init.c $(FILESYSTEM_SRCS) $(NETWORK_HFILE)
	$(CC) $(CFLAGS) -g -I. $(CPU_CFLAGS) -c $<

ifeq ($(NEED_ROOTFS_FOR_HOST_INFO),yes)
FilesystemImage: ../rootfs/etc/host.conf ../rootfs/etc/hosts
	(cd ../rootfs ; tar cf - \
	  --exclude CVS --exclude .cvsignore --exclude .svn .) >$(@)

FilesystemImage.c FilesystemImage.h: FilesystemImage
	$(PROJECT_ROOT)/bin/rtems-bin2c FilesystemImage FilesystemImage

FilesystemImage.o: FilesystemImage.c
	$(CC) $(CFLAGS) $(CPU_CFLAGS) -c $<
endif

clean:
	rm -f obj/*
	rm -f b~*.*  *.o *.ali $(PROGRAM)
	rm -f *.num *.exe *.obj *.bin *.bt *.gba