Hallo,
ich muß unter Windows ein Makefile erstellen, welches den Renesas NC30
Compiler aufruft. Da ich (leider) bisher immer Tools hatte welches das
im Hintergrund gemacht haben, kenne ich mich mit Makefiles nicht genug
aus. Folgendes ist vorgegeben:
- Projektstruktur (Dateissystem):
ProjectName
sub1
sub1.c
sub1.h
sub2
sub2.c
sub2.h
TEMP
OUTPUT
Makefile
main.c
main.h
- alle temporären Dateien müssen nach TEMP (.r30, .x30, ...)
- das .mot und .map müssen in OUTPUT landen
Hier der letzte Stand nach 2 Tagen arbeit!!!!:
1 | PROJ_NAME = ProjectName
|
2 |
|
3 | COMPILER_BASE = C:\Renesas\nc30wa\v545r00
|
4 | COMPILER_BIN = $(COMPILER_BASE)\bin
|
5 | COMPILER_INC = $(COMPILER_BASE)\inc30
|
6 | COMPILER_LIB = $(COMPILER_BASE)\lib30
|
7 |
|
8 | CC = $(COMPILER_BASE)/bin/nc30.exe
|
9 | AS = $(COMPILER_BASE)/bin/as30.exe
|
10 | LN = $(COMPILER_BASE)/bin/ln30.exe
|
11 | LI = $(COMPILER_BASE)/bin/lb30.exe
|
12 | ABS= $(COMPILER_BASE)/bin/abs30.exe
|
13 | LMC= $(COMPILER_BASE)/bin/lmc30.exe
|
14 |
|
15 | ECHO = @-echo
|
16 |
|
17 | export BIN30=$(COMPILER_BASE)\BIN
|
18 | export LIB30=$(COMPILER_BASE)\LIB30
|
19 | export INC30=$(COMPILER_BASE)\INC30
|
20 | export TMP30=TEMP
|
21 |
|
22 | OBJDIR = TEMP
|
23 |
|
24 |
|
25 | INCLUDES = -Isub1 -I sub2
|
26 | CFLAGS = -c -R8C -silent -dsource -OR -P -dir OUTPUT $<
|
27 | AFLAGS = $< -LM
|
28 | LFLAGS = -ln30
|
29 |
|
30 | CSRC = main.c \
|
31 | sub1\sub1.c
|
32 | sub2\sub2.c
|
33 |
|
34 |
|
35 | all: startmessage dep build
|
36 | $(ECHO) Target ALL
|
37 |
|
38 |
|
39 | # Define all object files.
|
40 | OBJ = $(CSRC:%.c=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
|
41 | # Wie kann man hier den Pfad subX entfernen?
|
42 |
|
43 | startmessage:
|
44 | $(ECHO) objects: $(OBJ)
|
45 | $(ECHO) starting...
|
46 |
|
47 |
|
48 | build: $(PROJ_NAME).mot
|
49 | $(ECHO) build...
|
50 |
|
51 | $(PROJ_NAME).mot: $(PROJ_NAME).x30
|
52 | $(ECHO) mot...
|
53 | $(LMC) $<
|
54 |
|
55 |
|
56 | $(PROJ_NAME).x30: $(OBJDIR)/%.o
|
57 | $(ECHO) $(PROJ_NAME).x30
|
58 | $(CC) $(LFLAGS) $(OBJDIR)/%.o
|
59 |
|
60 |
|
61 | # Compile: create object files from C source files.
|
62 | $(OBJDIR)/%.o: %.c
|
63 | @echo compiling $<
|
64 | $(CC) -c $(ALL_CFLAGS) $< -o $@
|
65 |
|
66 |
|
67 |
|
68 | ##################################################################
|
69 | # This generates a dependency file (with help off gcc)
|
70 | GCC = gcc
|
71 | DEPENDFILE = $(OBJDIR)\depend
|
72 |
|
73 | dep: $(CSRC)
|
74 | $(GCC) -MM $(CSRC) > $(DEPENDFILE)
|
75 |
|
76 | -include $(DEPENDFILE)
|
77 | ##################################################################
|
78 |
|
79 |
|
80 | clean:
|
81 | # fehlt noch
|
Ich weiß, die Compiler/Linkeroptionen sind noch nicht vollständig.
Das ist die Ausgabe:
objects: TEMP/main.o TEMP/tools\crc.o
starting...
gcc -MM main.c tools\crc.c > TEMP\depend
mingw32-make: *** No rule to make target `TEMP/%.o', needed by
`ProjectName.x30'
. Stop.
Ich weiß echt nicht mehr weiter...
Danke + Gruß
Bronko