mikrocontroller.net

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


Autor: Bronko Pavel (bronko99)
Datum:

Bewertung
0 lesenswert
nicht 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!!!!:
PROJ_NAME = ProjectName

COMPILER_BASE = C:\Renesas\nc30wa\v545r00
COMPILER_BIN  = $(COMPILER_BASE)\bin
COMPILER_INC  = $(COMPILER_BASE)\inc30
COMPILER_LIB  = $(COMPILER_BASE)\lib30

CC = $(COMPILER_BASE)/bin/nc30.exe
AS = $(COMPILER_BASE)/bin/as30.exe
LN = $(COMPILER_BASE)/bin/ln30.exe
LI = $(COMPILER_BASE)/bin/lb30.exe
ABS= $(COMPILER_BASE)/bin/abs30.exe
LMC= $(COMPILER_BASE)/bin/lmc30.exe

ECHO  = @-echo

export BIN30=$(COMPILER_BASE)\BIN
export LIB30=$(COMPILER_BASE)\LIB30
export INC30=$(COMPILER_BASE)\INC30
export TMP30=TEMP

OBJDIR = TEMP

  
INCLUDES = -Isub1 -I sub2
CFLAGS = -c -R8C -silent -dsource -OR -P -dir OUTPUT $< 
AFLAGS = $< -LM
LFLAGS = -ln30

CSRC = main.c \
       sub1\sub1.c
       sub2\sub2.c


all: startmessage dep build 
  $(ECHO) Target ALL


# Define all object files.
OBJ = $(CSRC:%.c=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) 
# Wie kann man hier den Pfad subX entfernen?

startmessage:
  $(ECHO) objects: $(OBJ)
  $(ECHO) starting...
  

build: $(PROJ_NAME).mot
  $(ECHO) build...

$(PROJ_NAME).mot: $(PROJ_NAME).x30
  $(ECHO) mot...
  $(LMC) $<


$(PROJ_NAME).x30: $(OBJDIR)/%.o
  $(ECHO) $(PROJ_NAME).x30
  $(CC) $(LFLAGS) $(OBJDIR)/%.o


# Compile: create object files from C source files.
$(OBJDIR)/%.o: %.c  
  @echo compiling $<
  $(CC) -c $(ALL_CFLAGS) $< -o $@
  


##################################################################
# This generates a dependency file (with help off gcc)
GCC  = gcc
DEPENDFILE = $(OBJDIR)\depend

dep: $(CSRC)
  $(GCC) -MM $(CSRC) > $(DEPENDFILE)

-include $(DEPENDFILE)
##################################################################


clean:
# 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.