Add lm32 cpu and milkymist port
[mw/micromonitor-lm32.git] / umon_ports / milkymist / makefile
1 ###############################################################################
2 #
3 # MicroMonitor Release 1.0 milkymist board makefile.
4 #
5 ###############################################################################
6 #
7 # Build Variables:
8 # TOPDIR:
9 #       Set to the content of UMONTOP, which is an externally defined
10 #       shell variable assumed by this environment to be set to the full
11 #       path of the umon_main directory.
12 # PLATFORM:
13 #       ASCII name of the target platform (e.g. "Cogent CSB472")
14 # TGTDIR:
15 #       The name of the working directory that this port is to be built in.
16 # CPUTYPE/FILETYPE:
17 #       This combination of variables builds the GCC prefix (and is used for
18 #       a few other purposes.
19 #       Typical values for CPUTYPE are arm, ppc, m68k, mips and xscale.
20 #       Typical values for FILETYPE are elf, coff, rtems and aout.
21 # CUSTOM_FLAGS:
22 #       Establish the custom portion of the 'C' flags used for cross-compilation.
23 #       Refer to the file $(UMONTOP)/target/make/common.make for the set of
24 #       variables used (in addition to this one) to build the final CFLAGS
25 #       variable.
26 # CUSTOM_AFLAGS:
27 #       Similar to CUSTOM_FLAGS, this is used for assembler files.
28 # CUSTOM_INCLUDE:
29 #       Used to specify port-specific additions to the INCLUDES list. 
30 #
31 PLATFORM                = MM_ONE
32 TOPDIR                  = $(UMONTOP)
33 TGTDIR                  = milkymist
34 CPUTYPE                 = lm32
35 FILETYPE                = elf
36 CUSTOM_CFLAGS   = -mbarrel-shift-enabled -mmultiply-enabled -mdivide-enabled -msign-extend-enabled
37 CUSTOM_AFLAGS   =
38 CUSTOM_INCLUDE  =
39
40 # If using something other than the Microcross model for the GNU
41 # tools (i.e. CPUTYPE-FILETYPE-TOOL) then specify the tool prefix
42 # here... (for example, powerpc-405-linux-gnu)
43 #TOOL_PREFIX    =       powerpc-405-linux-gnu
44
45 ###############################################################################
46 #
47 # Memory map configuration:
48 # The following variables are used to establish the system's memory map.
49 # The values associated with these variables are substituted into
50 # the .ldt (.ld template) files to generate the .ld files actually used
51 # for the final linkage.  This allows the user to override these defaults
52 # without touching a memory map file.  Adjust them appropriately based on
53 # the target memory map.
54 #
55 # BOOTRAMBASE/BOOTRAMLEN: 
56 # BOOTROMBASE/BOOTROMLEN: 
57 #       Specify the base and length of RAM and ROM (i.e. flash) space used by
58 #       the version of the monitor that will reside (and run out of) boot flash.
59 # RAMTSTBASE/RAMTSTLEN:
60 #       Specify the base and length of RAM to be used by the "test" version of
61 #       the monitor that will reside entirely in RAM.
62 #BOOTRAMBASE=0x47fe0000
63 BOOTRAMBASE=0x40000000
64 #BOOTRAMLEN=0x20000
65 BOOTRAMLEN=0x8000000
66 BOOTROMBASE=0x00000000
67 BOOTROMLEN=0x2000000
68 RAMTSTBASE=0x40000000
69 RAMTSTLEN=0x8000000
70
71 # These next two hard-coded values are used by ram-based versions of
72 # uMon to allow them to know where these flash-based structures are located.
73 # Obviously the addresses are port-specific and are specified here for
74 # reference only.
75 MACADDRBASE=0xfff80000
76 ALTTFSDEVTBLBASE=0xfff80020
77
78
79 include $(TOPDIR)/target/make/common.make
80
81 ###############################################################################
82 #
83 # Build each variable from a list of individual filenames...
84 #
85 # LOCSSRC:
86 #       Local (in this directory) assembler files.
87 # LOCCSRC:
88 #       Local (in this directory) 'C' files.
89 #       Note regarding except_xxx.c and strace_xxx.c...
90 #       Prior to writing your processor-specific except_xxx.c and strace_xxx.c
91 #       check the target's cpu directory to make sure it isn't already available.
92 #       If available, then change the filenames accordingly and move them to
93 #       the CPUCSRC filelist.  If you need to develop them, build them in
94 #       this port-specific directory, then upon completion they can be moved
95 #       to the cpu-specific directory so that they can be used by other ports.
96 # CPUSSRC:
97 #       CPU-specific assembler files in the main/target/cpu/CPU directory.
98 # CPUSSRC:
99 #       CPU-specific 'C' files in the main/target/cpu/CPU directory.
100 # COMCSRC:
101 #       Core 'C' files found in the main/target/core directory.
102 # IODEVSRC:
103 #       Device-specific files found in main/target/dev directory.       
104 # FLASHSRC:
105 #       The flash driver file found in main/target/flash/devices directory.
106 #
107 LOCSSRC         = reset.S 
108 CPUSSRC         = 
109 LOCCSRC         = cpuio.c etherdev.c vgafb.c
110 COMCSRC         = arp.c bbc.c cast.c cache.c chario.c cmdtbl.c crypt.c \
111                           docmd.c dhcp_00.c dhcpboot.c edit.c ee.c env.c ethernet.c \
112                           flash.c genlib.c icmp.c if.c ledit_vt100.c monprof.c \
113                           mprintf.c memcmds.c malloc.c moncom.c memtrace.c misccmds.c \
114                           misc.c password.c redirect.c reg_cache.c sbrk.c start.c \
115                           struct.c symtbl.c tcpstuff.c tfs.c tfsapi.c tfsclean1.c \
116                           tfscli.c \
117                           tfsloader.c tfslog.c tftp.c timestuff.c xmodem.c gdb.c \
118                           fbi.c font.c
119 CPUCSRC         = except_lm32.c strace_lm32.c
120 IODEVSRC        = ps2_kbd.c
121 FLASHSRC        = intel28f256_16x1.c
122
123 include $(TOPDIR)/target/make/objects.make
124
125 OBJS    =       $(LOCSOBJ) $(CPUSOBJ) $(LOCCOBJ) $(CPUCOBJ) $(COMCOBJ) \
126                         $(FLASHOBJ) $(IODEVOBJ)
127
128 #########################################################################
129 #
130 # Targets...
131
132 # boot:
133 # The default target is "boot", a shortcut to $(BUILDDIR)/boot.$(FILETYPE).
134 # This builds the bootflash image that can be used by 'newmon' to 
135 # load a new version onto an already running system.
136 #
137 boot:   $(BUILDDIR)/boot.$(FILETYPE)
138         @echo Boot version of uMon built under $(BUILDDIR) ...
139         @ls $(BUILDDIR)/boot*
140
141 # ramtst:
142 # A shortcut to $(BUILDDIR)/ramtst.$(FILETYPE).  This is a version of uMon
143 # that resides strictly in RAM and is used for two main purposes:
144 # 1. To test new monitor features prior to burning the boot flash.
145 # 2. To be downloaded into the RAM space of a board that has no programmed
146 #    boot flash.  This provides a running monitor that can then accept
147 #    an incoming bootflash image using 'newmon'.
148 #
149 ramtst: $(BUILDDIR)/ramtst.$(FILETYPE)
150         @echo Ram-resident test version of uMon built under $(BUILDDIR) ...
151         @ls $(BUILDDIR)/ramtst*
152
153 $(BUILDDIR)/boot.$(FILETYPE): $(BUILDDIR) $(OBJS) libz.a libg.a makefile
154         $(MAKE_MONBUILT)
155         $(MAKE_LDFILE) \
156                 BOOTRAMBASE=$(BOOTRAMBASE) BOOTRAMLEN=$(BOOTRAMLEN) \
157                 BOOTROMBASE=$(BOOTROMBASE) BOOTROMLEN=$(BOOTROMLEN)
158         $(LINK) -e coldstart $(OBJS) monbuilt.o libz.a libg.a $(LIBGCC)
159         $(MAKE_BINARY)
160         $(MAKE_GNUSYMS)
161
162 $(BUILDDIR)/ramtst.$(FILETYPE): $(BUILDDIR) $(OBJS) libz.a libg.a makefile
163         $(MAKE_MONBUILT)
164         $(MAKE_LDFILE) \
165                 RAMTSTBASE=$(RAMTSTBASE) RAMTSTLEN=$(RAMTSTLEN) \
166                 MACADDRBASE=$(MACADDRBASE) ALTTFSDEVTBLBASE=$(ALTTFSDEVTBLBASE)
167         $(LINK) -e coldstart $(OBJS) monbuilt.o libz.a libg.a $(LIBGCC)
168         $(MAKE_BINARY)
169         $(MAKE_GNUSYMS)
170
171 include $(TOPDIR)/target/make/rules.make
172
173 #########################################################################
174 #
175 # Miscellaneous...
176 #
177 ######
178 #
179 # cscope_local:
180 # Put additional files here that should be included in the cscope
181 # files list.  This is called before the generic cscope file builder,
182 # so it should create the cscope.files file.
183 #
184 cscope_local:
185         >cscope.files
186
187 ######
188 #
189 # help_local:
190 # Add text here as needed by the port.
191 #
192 help_local:
193         @echo "This template defaults to using ppc-elf as the tool prefix."
194         @echo "To override this default modify CPU & FILETYPE variables."
195         @echo