Forum: Mikrocontroller und Digitale Elektronik Makefile (für NC30)


von Bronko P. (bronko99)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.