summaryrefslogtreecommitdiffstats
path: root/Makefile.shared
blob: a91b4508ad2134feef34717eef805401b59cef47 (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
#
#  Subdirectory makefiles do some setup, then we get here
#

# Tool helpers
CARGS =-B${RTEMS_MAKEFILE_PATH}/lib/ -specs=bsp_specs -qrtems $(CPU_CFLAGS) 

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

# PC386 Specific Information
ifeq ($(RTEMS_BSP_FAMILY),pc386)
  HEADERADDR=0x00097E00
  START16FILE=$(RTEMS_MAKEFILE_PATH)/lib/start16.bin
  START16ADDR=0x00097C00
  RELOCADDR=0x00100000
  LINKARGS+= -Wl,-Ttext,$(RELOCADDR) 
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

CFLAGS += $(DEFINES)

all:  $(PROGRAM).exe

$(PROGRAM).exe: rtems_init.o $(FILESYSTEM_OBJS) $(PROGRAM).adb $(EXTRA_OBJS)
	$(AS:as=gnatmake) \
            -g -I$(RTEMS_MAKEFILE_PATH)/lib/include/adainclude \
	    -v $(EXTRA_GNATFLAGS) \
 	    -O -gnata -gnatE -gnato -g $(PROGRAM) -o $(@) \
	    -bargs -Mgnat_main \
	    -largs $(CARGS) $(LINKARGS) rtems_init.o $(FILESYSTEM_OBJS) \
            $(EXTRA_OBJS)
	$(SIZE) $(@)
ifeq ($(RTEMS_BSP_FAMILY),pc386)
	mv $(@) $(@).obj
	$(OBJCOPY) -O elf32-i386 \
            --remove-section=.rodata \
            --remove-section=.comment \
            --remove-section=.note \
            --strip-unneeded $(@).obj $(@)
	$(OBJCOPY) -O binary $(@).obj $(@).bin
	$(RTEMS_MAKEFILE_PATH)/build-tools/bin2boot -v $(@).bt $(HEADERADDR) \
          $(START16FILE) $(START16ADDR) 0 $(@).bin $(RELOCADDR) 0
	# rm -f $(@).obj 
	rm -f $(@).bin
endif

rtems_init.o: ../rtems_init.c ../networkconfig.h $(FILESYSTEM_SRCS) 
	$(CC) $(CFLAGS) -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 .) >$(@)

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 b~*.*  *.o *.ali $(PROGRAM)
	rm -f *.num *.exe *.obj *.bin *.bt *.gba