🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #978

Re: Makefile me usa CC ¿por defecto?

#978
From: heltena
Date: Tue, 18 Jul 2006 15:06
89 lines
3710 bytes
heltena ha escrito:

> Hola grupo,
>
> Tengo los siguientes tipos de ficheros en el proyecto:
> *asm.asm -> ficheros en ensamblador (para PIC16f876)
> *.inc -> includes de ensamblador
> *.h -> versión C de los includes
> *.c -> codigo C que se debe compilar para PIC (usando SDCC)
>
> Y tengo el siguiente Makefile:
> <<BEGIN>>
> OBJS=spi.o spiasm.o pral.o global.o globalasm.o fat32.o fat32asm.o
> usart.o usartasm.o
> PRJ=enric3
>
> $(PRJ).hex: $(OBJS)
>         gplink -o $(PRJ) $(OBJS)
>
> %.asm: %.c
>         sdcc -S -V -mpic14 -p16f877 -c $<
>
> %.o: %.asm *.inc
>         gpasm -p 16f876 -c $< -D$<
> <<END>>
>
> Bien, los pasos deberían ser:
> los fichero spi.o, pral.o, global.o fat32.o y usart.o están en C, así
> que:
> sdcc -mpic14 -p16f877 -c spi.c
> ...
> y me deben generar los ficheros: spi.asm pral.asm ...
>
> Después se ensamblan:
> gpasm -p 16f876 -c spi.asm -Dspi.asm
> (el -D es un define)
>
> Y después, lo enlazo todo:
> gplink -o enric3.hex spi.o spiasm.o ...
>
> Lo que pasa es que, en vez de usar el sdcc que tengo en la regla al
> compilar los ficheros C, me ejecuta el cc. Sacado de la shell:
>
> heltena@integer:~/src/pic/enric3$ make
> cc    -c -o pral.o pral.c
> In file included from pral.c:1:
> p16f876.h:198: error: syntax error before 'at'
> pral.c:3: error: syntax error before numeric constant
> pral.c: In function 'main':
> pral.c:17: warning: return type of 'main' is not 'int'
> make: *** [pral.o] Error 1
>
> Y no solo eso, sino que me pone un "-o pral.o" que no debería ser
> así.
>
> Mi prueba ha sido: "bueno, si quieres usar cc, usarás cc" y he puesto
> encima del Makefile:
> CC=sdcc -S -V -mpic14 -p16f877 -c
>
> Y claro, me lo compila usando el sdcc, pero me lo guarda en, por
> ejemplo, "spi.o" y debería ser "spi.asm".
>
>
> ¿qué hago mal en el Makefile?

He conseguido compilar con el siguiente Makefile:
<<BEGIN>>
OBJS=spi.o spiasm.o pral.o global.o globalasm.o fat32.o fat32asm.o
usart.o usartasm.o
PRJ=enric3

.SUFFIXES: .c .asm .o

$(PRJ).hex: $(OBJS)
        gplink -o $(PRJ) $(OBJS)

.c.o:
        sdcc -S -mpic14 -p16f877 -c $<
        gpasm -p 16f876 -c $*.asm -D$*.asm

.asm.o:
        gpasm -p 16f876 -c $< -D$<

.PHONY: program clean

program: $(PRJ).hex
        picp /dev/ttyS0 16f876 -wp $(PRJ).hex
<<END>>
Technical Details
Message-ID: <1153235205.019854.277340@h48g2000cwc.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!h48g2000cwc.googlegroups.com!not-for-mail
References: <1153231264.317433.191740@75g2000cwc.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,c9be63ee285d36f1
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!h48g2000cwc.googlegroups.com!not-for-mail
From: "heltena" <heltena@gmail.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Makefile me usa CC ¿por defecto?
Date: 18 Jul 2006 08:06:45 -0700
Organization: http://groups.google.com
Lines: 90
Message-ID: <1153235205.019854.277340@h48g2000cwc.googlegroups.com>
References: <1153231264.317433.191740@75g2000cwc.googlegroups.com>
NNTP-Posting-Host: 193.147.222.244
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1153235210 2529 127.0.0.1 (18 Jul 2006 15:06:50 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 18 Jul 2006 15:06:50 +0000 (UTC)
In-Reply-To: <1153231264.317433.191740@75g2000cwc.googlegroups.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1),gzip(gfe),gzip(gfe)
Complaints-To: groups-abuse@google.com
Injection-Info: h48g2000cwc.googlegroups.com; posting-host=193.147.222.244;
   posting-account=ljKoDA0AAABEvzHlRrQ7YAIM9PPVxdEL