Refactored fixed confs 1 into modular chunks and added to llookup function to make...
[freeems-vanilla.git] / src / Makefile
blobc9f89e265e6c92072d730b1e733d1acb95823ef2
1 # FreeEMS - the open source engine management system
3 # Copyright 2008, 2009 Fred Cooke
5 # This Makefile is part of the FreeEMS project.
7 # FreeEMS software is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # FreeEMS software is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with any FreeEMS software. If not, see http://www.gnu.org/licenses/
20 # We ask that if you make any changes to this file you email them upstream to
21 # us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
23 # Thank you for choosing FreeEMS to run your engine!
26 ################################################################################
27 # #
28 # This Makefile is designed to be run with GNU make! Accept no substitute! #
29 # #
30 ################################################################################
31 # #
32 # Top level targets: #
33 # #
34 # make: #
35 # Builds all output files in the slow multi stage way with all debugging #
36 # make fast: #
37 # Compiles from C straight to objects, links to elfs and copies to s19s #
38 # make clean: #
39 # Permanently removes all build artifact files and directories #
40 # make release: #
41 # Cleans the project, builds it from scratch, copies the s19 files up to #
42 # the firmware directory, zips each s19 separately, zips all of the #
43 # documentation, cleans the project again and lastly zips the entire #
44 # project directory #
45 # #
46 ################################################################################
47 # #
48 # When doing a full build the following steps are taken: #
49 # #
50 # 1) Pre-process all of the C files #
51 # 2) Compile all preprocessed C files into assembly files #
52 # 3) Assemble all assembly files into object files #
53 # 4) Dump the contents of all object files #
54 # 5) Link one decoder with garbage collection and reporting turned on #
55 # 6) Link each decoder without garbage collection #
56 # 7) Dump the contents of each decoders elf #
57 # 8) Produce a memory map for each elf #
58 # 9) Produce a readelf dump for each elf #
59 # 10) Produce an s19 loadable firmware file for each elf #
60 # #
61 ################################################################################
66 ################################################################################
67 # All Fixed Variables #
68 ################################################################################
71 # Constants
72 VERSION = 0.0.19
73 OUTPREFIX = freeems
75 # Directories here
76 RELEASEDIR = ../firmware
77 INCDIR = inc
78 BUGDIR = debug
79 OUTDIR = output
80 OBJDIR = objects
81 ASMDIR = assembly
82 S19DIR = firmware
83 PPCDIR = preprocessedc
85 # Set the windows/non debian path first and then overwrite
86 # with the debian one so we can grep the deb line out and
87 # end up with a working windows make file in an automated
88 # way. Additionally, please ensure you do not add any sets
89 # of three .. . in a row or the line will be missing from
90 # the windows version. Likewise sets of ### longer than 6
91 # or so are also at risk :-)
92 PREFIX = m6811-elf-
93 PREFIX = m68hc11-
95 # All of the tools
96 CP = cp
97 RM = rm -rf
98 ZIP = zip
99 GCC = $(PREFIX)gcc
100 COPY = $(PREFIX)objcopy
101 DUMP = $(PREFIX)objdump
102 NM = $(PREFIX)nm
103 RE = $(PREFIX)readelf
104 SIZE = $(PREFIX)size
109 ################################################################################
110 # All Source Files #
111 ################################################################################
114 # Indirect dependencies - any header change means a full recompile. This can be improved upon and made more specific.
115 MAINH = main.h
116 INITH = init.h
117 UTILH = utils.h
118 MFILE = Makefile
119 ISRH = interrupts.h
120 CINCS = injectorISR.c
121 FLASHH = flashWrite.h
122 ASMH = 9S12XDP512asm.s
123 LOOKUPH = tableLookup.h
124 WMFILE = Makefile.windows
125 ISRSH = commsISRs.h injectionISRs.h
126 COMMSH = commsCore.h blockDetailsLookup.h
127 LINKER = memory.x regions.x hc9s12xdp512elfb.x
128 GLOBALH1 = freeEMS.h 9S12XDP512.h memory.h globalConstants.h structs.h
129 GLOBALH2 = globalDefines.h errorDefines.h TunableConfigs.h FixedConfigs.h
130 FUELH = fuelAndIgnitionCalcs.h derivedVarsGenerator.h coreVarsGenerator.h
132 # Let's keep this to a bare minimum! If you write ASM code
133 # please provide an matching alternate C implementation too.
134 HANDASMS = flashBurn.s
135 #RPMHANDASMS =
137 # .c files from inc/ should be included here as deps for the parts they are relied on by!!
138 ALLHEADERS = $(GLOBALH1) $(GLOBALH2) $(COMMSH) $(ISRSH) $(UTILH) $(FUELH) $(MAINH) $(INITH) $(ISRH) $(FLASHH) $(LOOKUPH)
139 ALLH = $(patsubst %.h,$(INCDIR)/%.h,$(ALLHEADERS)) $(LINKER) $(MFILE) $(patsubst %.c,$(INCDIR)/%.c,$(CINCS)) $(INCDIR)/$(ASMH)
141 # Warning : do not include .c files from inc/ as they are included into the other C files and automatically compiled.
143 # Flash data files
144 FIXEDCLASSES = FixedConfig1.c FixedConfig2.c
145 LOOKUPCLASSES1 = IATTransferTable.c CHTTransferTable.c
146 LOOKUPCLASSES2 = MAFTransferTable.c TestTransferTable.c
147 FUELCLASSES = FuelTables.c FuelTables2.c
148 TIMECLASSES = TimingTables.c TimingTables2.c
149 TUNECLASSES = TunableConfig.c TunableConfig2.c
151 # Source code files
152 UTILCLASSES = tableLookup.c init.c utils.c globalConstants.c
153 MATHCLASSES = coreVarsGenerator.c derivedVarsGenerator.c fuelAndIgnitionCalcs.c
154 COMCLASSES = flashWrite.c commsCore.c blockDetailsLookup.c
155 ISRCLASSES = interrupts.c injectionISRs.c ignitionISRs.c commsISRs.c realtimeISRs.c miscISRs.c
157 # All but the engine position/RPM combined here
158 SOURCE = freeEMS.c staticInit.c main.c $(UTILCLASSES) $(MATHCLASSES) $(COMCLASSES) $(ISRCLASSES)
159 DATA = $(FIXEDCLASSES) $(LOOKUPCLASSES1) $(LOOKUPCLASSES2) $(FUELCLASSES) $(TIMECLASSES) $(TUNECLASSES)
160 CLASSES = $(SOURCE) $(DATA)
162 # Engine position/RPM here
163 RPMCLASSES = NipponDenso.c LT1-360-8.c Subaru-36-2-2-2.c MissingTeeth.c MiataNB.c
164 # future rpm = NissanRB2X.c NissanSR20.c MiataNA.c etc... Insert your file above and get coding!
167 # Convert extensions
168 PREPROCESSED = $(patsubst %.c,$(PPCDIR)/%.pp.c,$(CLASSES))
169 ASSEMBLIES = $(patsubst %.c,$(ASMDIR)/%.s,$(CLASSES))
170 OBJECTS = $(patsubst %.c,$(OBJDIR)/%.o,$(CLASSES)) $(patsubst %.s,$(OBJDIR)/%.o,$(HANDASMS))
171 DUMPS = $(patsubst %.c,$(BUGDIR)/%.dmp,$(CLASSES)) $(patsubst %.s,$(BUGDIR)/%.dmp,$(HANDASMS))
173 # Convert RPM extensions
174 PREPROCESSEDRPM = $(patsubst %.c,$(PPCDIR)/%.pp.c,$(RPMCLASSES))
175 ASSEMBLIESRPM = $(patsubst %.c,$(ASMDIR)/%.s,$(RPMCLASSES))
176 OBJECTSRPM = $(patsubst %.c,$(OBJDIR)/%.o,$(RPMCLASSES)) #$(patsubst %.s,$(OBJDIR)/%.o,$(RPMHANDASMS))
177 DUMPSRPM = $(patsubst %.c,$(BUGDIR)/%.dmp,$(RPMCLASSES)) #$(patsubst %.s,$(BUGDIR)/%.dmp,$(RPMHANDASMS))
179 # Convert to output files
180 ALLELFS = $(patsubst %.c,$(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.elf,$(RPMCLASSES)) #$(patsubst %.s,$(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.elf,$(RPMHANDASMS))
181 ALLDMPS = $(patsubst %.c,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.dmp,$(RPMCLASSES)) #$(patsubst %.s,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.dmp,$(RPMHANDASMS))
182 ALLMAPS = $(patsubst %.c,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.map,$(RPMCLASSES)) #$(patsubst %.s,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.map,$(RPMHANDASMS))
183 ALLREAD = $(patsubst %.c,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.ree,$(RPMCLASSES)) #$(patsubst %.s,$(BUGDIR)/$(OUTPREFIX)-$(VERSION)-%.ree,$(RPMHANDASMS))
184 ALLS19S = $(patsubst %.c,$(S19DIR)/$(OUTPREFIX)-$(VERSION)-%.s19,$(RPMCLASSES)) #$(patsubst %.s,$(S19DIR)/$(OUTPREFIX)-$(VERSION)-%.s19,$(RPMHANDASMS))
186 # Convert to output files for GC variants
187 GCDELFS = $(patsubst %.c,$(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.gc.elf,$(RPMCLASSES)) #$(patsubst %.s,$(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.gc.elf,$(RPMHANDASMS))
188 GCDS19S = $(patsubst %.c,$(S19DIR)/$(OUTPREFIX)-$(VERSION)-%.gc.s19,$(RPMCLASSES)) #$(patsubst %.s,$(S19DIR)/$(OUTPREFIX)-$(VERSION)-%.gc.s19,$(RPMHANDASMS))
193 ################################################################################
194 # All Command Line Options #
195 ################################################################################
198 # M68hc1x GCC Options we may want : -minmax -mlong-calls
200 # http://www.gnu.org/software/m68hc11/m68hc11_gcc.html shows code size with different options used
201 # include debug info, optimise , 16 bit ints, hcs12 platform
202 GCCOPTS = -g -Wall -Werror -Winline -O -m68hcs12 -mshort -ffunction-sections -fomit-frame-pointer -msoft-reg-count=8 -mauto-incdec -fsigned-char
203 # -ffunction-sections option splits out the functions such that the garbage collection can get
204 # them on a per section basis. I'm not sure, but this could be harmful to paged code so may
205 # have to review this at a later date perhaps splitting paged functions from nonpaged ones.
207 # pass to linker, link for hc12
208 # The vectors address in the linker options is the VMA address and must be short form 0xF710, not a paged address.
209 LINKOPTS = -Wl,-defsym,vectors_addr=0xF710,-m,m68hc12elfb,-T,hc9s12xdp512elfb.x
210 LINKOPTSGC = -Wl,--gc-sections,--print-gc-sections,-defsym,vectors_addr=0xF710,-m,m68hc12elfb,-T,hc9s12xdp512elfb.x
211 # Use this to get a map dump when the linker fails in a confusing way :
212 #LINKOPTSGC = -Wl,--print-map,--gc-sections,--print-gc-sections,-defsym,vectors_addr=0xF710,-m,m68hc12elfb,-T,hc9s12xdp512elfb.x
214 # If using the below option for paged flash, the ADDRESS_TYPE field in the freeEMSloader script should be updated to match.
215 # --change-section-lma .ppagePP=0xPP8000 \ (where PP = the ppage value for that page of flash) OR if using linear address per formula
216 COPYOPTS = --output-target=srec \
217 --change-section-lma .fixedconf1+0xFD4000 \
218 --change-section-lma .fixedconf2+0xFD4000 \
219 --change-section-lma .text1+0xFD4000 \
220 --change-section-lma .text+0xFEC000 \
221 --change-section-lma .data+0xFEC000 \
222 --change-section-lma .vectors+0xFEC000 \
223 --change-section-lma .rodata+0xFEC000 \
224 --only-section=.fixedconf1 \
225 --only-section=.fixedconf2 \
226 --only-section=.text \
227 --only-section=.text1 \
228 --only-section=.data \
229 --only-section=.vectors \
230 --only-section=.rodata \
231 --change-section-lma .ppageF8=0xF88000 \
232 --change-section-lma .fpageF9=0xF98000 \
233 --change-section-lma .dpageF9=0xF9A000 \
234 --change-section-lma .ppageFE=0xFE8000 \
235 --only-section=.ppageF8 \
236 --only-section=.fpageF9 \
237 --only-section=.dpageF9 \
238 --only-section=.ppageFE \
239 --change-section-lma .fpageFA=0xFA8000 \
240 --change-section-lma .dpageFA=0xFAA000 \
241 --change-section-lma .fpageFB=0xFB8000 \
242 --change-section-lma .dpageFB1=0xFBA000 \
243 --change-section-lma .dpageFB2=0xFBA400 \
244 --change-section-lma .dpageFB3=0xFBA800 \
245 --change-section-lma .dpageFB4=0xFBAC00 \
246 --change-section-lma .dpageFB5=0xFBB000 \
247 --change-section-lma .dpageFB6=0xFBB400 \
248 --change-section-lma .dpageFB7=0xFBB800 \
249 --change-section-lma .dpageFB8=0xFBBC00 \
250 --change-section-lma .fpageFC=0xFC8000 \
251 --change-section-lma .dpageFC=0xFCA000 \
252 --only-section=.dpageFA \
253 --only-section=.fpageFA \
254 --only-section=.dpageFB1 \
255 --only-section=.dpageFB2 \
256 --only-section=.dpageFB3 \
257 --only-section=.dpageFB4 \
258 --only-section=.dpageFB5 \
259 --only-section=.dpageFB6 \
260 --only-section=.dpageFB7 \
261 --only-section=.dpageFB8 \
262 --only-section=.fpageFB \
263 --only-section=.dpageFC \
264 --only-section=.fpageFC
265 # --change-section-lma .ppageFD=0xFD8000 \
266 # --change-section-lma .ppageFF=0xFF8000 \
267 # --only-section=.ppageFD \ This is left here for clarity only (equivalent to text1 but paged)
268 # --only-section=.ppageFF This is left here for clarity only (equivalent to text but paged)
269 # Changes to the above options should be reflected in memory.x and memory.h also!
271 # The following flash areas can only be used once Sean has written his loader app :
272 # --only-section=.ppageE0 \
273 # --only-section=.ppageE1 \
274 # --only-section=.ppageE2 \
275 # --only-section=.ppageE3 \
276 # --only-section=.ppageE4 \
277 # --only-section=.ppageE5 \
278 # --only-section=.ppageE6 \
279 # --only-section=.ppageE7 \
280 # --only-section=.ppageE8 \
281 # --only-section=.ppageE9 \
282 # --only-section=.ppageEA \
283 # --only-section=.ppageEB \
284 # --only-section=.ppageEC \
285 # --only-section=.ppageED \
286 # --only-section=.ppageEE \
287 # --only-section=.ppageEF \
288 # --only-section=.ppageF0 \
289 # --only-section=.ppageF1 \
290 # --only-section=.ppageF2 \
291 # --only-section=.ppageF3 \
292 # --only-section=.ppageF4 \
293 # --only-section=.ppageF5 \
294 # --only-section=.ppageF6 \
295 # --only-section=.ppageF7 \
296 # --change-section-lma .ppageE0=0xE08000 \
297 # --change-section-lma .ppageE1=0xE18000 \
298 # --change-section-lma .ppageE2=0xE28000 \
299 # --change-section-lma .ppageE3=0xE38000 \
300 # --change-section-lma .ppageE4=0xE48000 \
301 # --change-section-lma .ppageE5=0xE58000 \
302 # --change-section-lma .ppageE6=0xE68000 \
303 # --change-section-lma .ppageE7=0xE78000 \
304 # --change-section-lma .ppageE8=0xE88000 \
305 # --change-section-lma .ppageE9=0xE98000 \
306 # --change-section-lma .ppageEA=0xEA8000 \
307 # --change-section-lma .ppageEB=0xEB8000 \
308 # --change-section-lma .ppageEC=0xEC8000 \
309 # --change-section-lma .ppageED=0xED8000 \
310 # --change-section-lma .ppageEE=0xEE8000 \
311 # --change-section-lma .ppageEF=0xEF8000 \
312 # --change-section-lma .ppageF0=0xF08000 \
313 # --change-section-lma .ppageF1=0xF18000 \
314 # --change-section-lma .ppageF2=0xF28000 \
315 # --change-section-lma .ppageF3=0xF38000 \
316 # --change-section-lma .ppageF4=0xF48000 \
317 # --change-section-lma .ppageF5=0xF58000 \
318 # --change-section-lma .ppageF6=0xF68000 \
319 # --change-section-lma .ppageF7=0xF78000 \
324 ################################################################################
325 # Dependency And Target Summary #
326 ################################################################################
328 # Top level targets: #
330 # 1) all #
331 # 2) fast #
332 # 3) install #
333 # 4) release #
334 # 5) clean #
336 # Second level targets: #
338 # 1) nonrpm: #
340 # 1) preprocess [list] Generate preprocessed C from sources #
341 # 2) assemble [list] Generate assembly from preprocessed C #
342 # 3) compile [list] Generate object files from assembly #
344 # 2) rpm: #
346 # 1) preprocessrpm [list] Generate preprocessed C from sources #
347 # 2) assemblerpm [list] Generate assembly from preprocessed C #
348 # 3) compilerpm [list] Generate object files from assembly #
350 # 3) final: #
352 # 1) link [list] Generate ELFs objects #
353 # 2) copy [list] s19s from elfs #
355 # 4) debug: #
357 # 1) link [list] Generate ELFs objects #
358 # 2) dump [list] dumpslarge from elfs #
359 # 3) map [list] mapslarge from elfs #
360 # 4) read [list] relarge from elfs #
361 # 5) dumpsmall [list] dumpsall from obj + rpmobj #
363 # release : md5sum, export, zip, copy, docs, etc #
365 ################################################################################
370 ################################################################################
371 # All Target Dependencies #
372 ################################################################################
375 # Build everything the long way (default)
376 all: gcs19 s19 size
377 allfull: s19 size
378 allgc: gcs19 size #...
380 # Build minimally and quickly
381 fast: lessthings here
383 # Load the s19 of your choice
384 install: clean fast loader
386 # Perform a release
387 release: clean cleanrelease fast someMoreStuffHere
389 clean: cleanasm cleanobj cleanout cleanppc cleans19 cleandebug
391 final: link copy
393 debug: dump map read dumpsmall
398 ################################################################################
399 # Link and Copy Target Definitions #
400 ################################################################################
403 linkmsg: #...
404 ################################################################################
405 # Linking the Objects into an ELF... #
406 ################################################################################
408 link: assemble $(OUTDIR) linkmsg $(ALLELFS)
410 # link the object files into an elf executable
411 $(ALLELFS): $(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.elf: $(OBJDIR)/%.o $(OBJECTS)
412 ################################################################################
413 # Linking $@ ...
414 ################################################################################
415 $(GCC) $(GCCOPTS) $(LINKOPTS) -o $@ $< $(OBJECTS)
418 gclinkmsg: #...
419 ################################################################################
420 # Linking the Objects into an ELF... #
421 ################################################################################
423 gclink: assemble $(OUTDIR) linkmsg $(GCDELFS) #...
425 # link the object files into an elf executable with gc...
426 $(GCDELFS): $(OUTDIR)/$(OUTPREFIX)-$(VERSION)-%.gc.elf: $(OBJDIR)/%.o $(OBJECTS) #...
427 ################################################################################
428 # Linking $@ ...
429 ################################################################################
430 $(GCC) $(GCCOPTS) $(LINKOPTSGC) -o $@ $< $(OBJECTS) # ...
431 # The links with garbage collection are to ensure that there are no warnings ...
432 # TODO find out how to stop .tramp from being collected (or inserted)! ...
435 s19msg: #...
436 ################################################################################
437 # Building The S19 Files.... #
438 ################################################################################
440 s19: link $(S19DIR) s19msg $(ALLS19S)
441 # the gc dependency is temporary until i figure out if the .tramp removal is an issue or not.
443 # Generate the loadable s19 firmware files
444 $(ALLS19S): $(S19DIR)/%.s19: $(OUTDIR)/%.elf
445 ################################################################################
446 # Building $@ ...
447 ################################################################################
448 $(COPY) $(COPYOPTS) $< $@
449 ################################################################################
450 # Measuring $@ ...
451 ################################################################################
452 echo "Flash image size of $@ is" `echo \`cat $@ | wc -l\` "* 16" | bc -l` "bytes..."
455 gcs19msg: #...
456 ################################################################################
457 # Building The S19 Files.... #
458 ################################################################################
460 gcs19: gclink $(S19DIR) gcs19msg $(GCDS19S) #...
462 # Generate the garbage collected s19 files temporarily...
463 $(GCDS19S): $(S19DIR)/%.s19: $(OUTDIR)/%.elf #...
464 ################################################################################
465 # Building $@ ...
466 ################################################################################
467 $(COPY) $(COPYOPTS) $< $@ #...
468 ################################################################################
469 # Measuring $@ ...
470 ################################################################################
471 echo "Flash image size of $@ is" `echo \`cat $@ | wc -l\` "* 16" | bc -l` "bytes..."
476 ################################################################################
477 # Size Measuring Target Definition #
478 ################################################################################
481 size: # TODO this should be run for each s19 target with only the one rpm .o file
482 ################################################################################
483 # Measuring The Decoder Binaries... #
484 ################################################################################
485 $(SIZE) $(OBJECTSRPM)
486 ################################################################################
487 # Measuring All Other Binaries... #
488 ################################################################################
489 $(SIZE) -t $(OBJECTS)
490 ################################################################################
491 # Add one decoder to the total above and #
492 # subtract the size reported for freeEMS.o #
493 # this will give you the actual image size #
494 ################################################################################
496 # Thank you for building FreeEMS firmware!!! #
498 ################################################################################
503 ################################################################################
504 # Preprocess, Compile and Assemble Target Definitions #
505 ################################################################################
508 preprocessmsg: #...
509 ################################################################################
510 # Running the C Pre Processor... #
511 ################################################################################
513 preprocess: $(PPCDIR) preprocessmsg $(PREPROCESSED) $(PREPROCESSEDRPM)
515 # Generate preprocessed source files to examine
516 $(PREPROCESSED) $(PREPROCESSEDRPM): $(PPCDIR)/%.pp.c: %.c $(ALLH)
517 $(GCC) $(GCCOPTS) -E $< > $@
520 compilemsg: #...
521 ################################################################################
522 # Compiling PPC to Assembly... #
523 ################################################################################
525 compile: preprocess compilemsg $(ASSEMBLIES) $(ASSEMBLIESRPM)
527 # Generate assembly files to examine
528 $(ASSEMBLIES) $(ASSEMBLIESRPM): $(ASMDIR)/%.s: $(PPCDIR)/%.pp.c
529 $(GCC) $(GCCOPTS) -x cpp-output -S -o $@ $<
532 assemblemsg: #...
533 ################################################################################
534 # Assembling Object Files... #
535 ################################################################################
537 assemble: compile $(OBJDIR) assemblemsg $(OBJECTS) $(OBJECTSRPM)
539 # Generate object files to link
540 $(OBJECTS) $(OBJECTSRPM): $(OBJDIR)/%.o: $(ASMDIR)/%.s
541 $(GCC) $(GCCOPTS) -c -o $@ $<
546 ################################################################################
547 # Release Procedure Target Definitions #
548 ################################################################################
550 ### clean all
552 #check git status for changes, fail build if not fully commited
554 ### build all
556 #copy s19s up
558 #md5sum/sha1sum s19s above
560 ### clean all
562 #git commit s19s
564 #zip each s19 to parent
566 #zip docs to parent
568 #zip without docs to parent
570 #zip entire directory to parent
575 ################################################################################
576 # Create Directory Target Definitions #
577 ################################################################################
579 # Assembly, release and inc directories don't get removed.
581 $(BUGDIR):
582 ################################################################################
583 # Creating the debug directory.... #
584 ################################################################################
585 mkdir -p $(BUGDIR)
587 $(S19DIR):
588 ################################################################################
589 # Creating the firmware directory... #
590 ################################################################################
591 mkdir -p $(S19DIR)
593 $(PPCDIR):
594 ################################################################################
595 # Creating the preprocessedc directory.... #
596 ################################################################################
597 mkdir -p $(PPCDIR)
599 $(OUTDIR):
600 ################################################################################
601 # Creating the output directory... #
602 ################################################################################
603 mkdir -p $(OUTDIR)
605 $(OBJDIR):
606 ################################################################################
607 # Creating the object directory... #
608 ################################################################################
609 mkdir -p $(OBJDIR)
614 ################################################################################
615 # Clean Target Definitions #
616 ################################################################################
618 cleanasm:
619 ################################################################################
620 # Removing generated assembly files.... #
621 ################################################################################
622 $(RM) $(ASSEMBLIES) $(ASSEMBLIESRPM)
624 cleanppc:
625 ################################################################################
626 # Removing pre-processed C output directory... #
627 ################################################################################
628 $(RM) $(PPCDIR)
630 cleanobj:
631 ################################################################################
632 # Removing object directory... #
633 ################################################################################
634 $(RM) $(OBJDIR)
636 cleanout:
637 ################################################################################
638 # Removing link output directory... #
639 ################################################################################
640 $(RM) $(OUTDIR)
642 cleans19:
643 ################################################################################
644 # Removing s19 directory... #
645 ################################################################################
646 $(RM) $(S19DIR)
648 cleandebug:
649 ################################################################################
650 # Removing debug directory... #
651 ################################################################################
652 $(RM) $(DEBUGDIR)
654 cleanrelease:
655 ################################################################################
656 # Removing s19 release files... #
657 ################################################################################
658 $(RM) $(RELEASEDIR)/*
663 ################################################################################
664 # Declare targets that aren't real files #
665 ################################################################################
668 # Top level
669 .PHONY: all fast release clean
670 # Second level
671 .PHONY: rpm nonrpm final debug
672 ## Third level
673 .PHONY: preprocess assemble compile
674 # Comments
675 .PHONY: etc etc etc
676 # Clean targets
677 .PHONY: cleanasm cleandebug cleanobj cleanout cleanppc cleanrelease cleans19