🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
2 messages
2 total messages Started by heltena Tue, 18 Jul 2006 14:01
Makefile me usa CC ¿por defecto?
#977
Author: heltena
Date: Tue, 18 Jul 2006 14:01
62 lines
2957 bytes
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?
Re: Makefile me usa CC ¿por defecto?
#978
Author: 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>>
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads