Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Makefile - multiple directories  (Přečteno 1649 krát)

jamesbond

  • Návštěvník
  • Příspěvků: 87
Makefile - multiple directories
« kdy: 04 Února 2011, 20:53:59 »
Ahoj, doteraz som si svoj Makefile pisal sam a postupne vypiloval k mojej spokojnosti. Ale zatial som vzdy mal vsetky sources v hlavnom adresari. Teraz mam od Atmel zdrojaky, ktore su organizovane vo viacerych slozkach. Po dlhsom googleni, som sa zasekol a neviem ako dalej. Nasiel by sa tu niekto kto by mi vedel pomoct ?

make teraz pise toto:
Building project
sdcc -mmcs51 --model-small --code-size 32768 -c lib_mcu/usb/usb_drv.c
lib_mcu/usb/usb_drv.c:19:20: error: config.h: No such file or directory

Nasiel som nieco s volanim shell, ale robim striedavo pod Windows/Ubuntu a pod Windows by volanie shell asi nefungovalo.
SOURCES := $(shell find $(SRCDIR) -name "*.$(SFILES)")
Toto by pod Windows asi nefungovalo.

Existuje nejaky sposob ako upravit tento makefile tak aby kompiloval aj po adresaroch a fungoval pod WIN/LINUX ?

tu je moj Makefile:

REMOVE = rm -f
RENAME = mv
COMPILER = sdcc
REPORT = tail -n 5
PACKHEX = packihx

# Linker will check the target program size
ROM_SIZE = 32768

# Compiler options, --acall-ajmp can only be used for devices with max 2kB ROM
SDCCCFLAGS = -mmcs51 --model-small --code-size $(ROM_SIZE)

# These settings control where the compiler will place the code and variables in memory.
#ASLINKFLAGS = --code-loc 0x2000 --data-loc 0x30 --stack-after-data --xram-loc 0x6000

# Target file name (without extension).
TARGET = main
SRC = lib_mcu/usb/usb_drv.c lib_mem/virtual_mem/virtual_mem.c modules/control_access/ctrl_access.c \
      modules/scheduler/scheduler.c modules/scsi_decoder/scsi_decoder.c modules/usb/usb_enum.c \
      modules/usb/usb_task.c modules/usb/usb_user_configuration.c modules/usb/usb_user_enum.c
OBJ = $(addsuffix .rel, $(basename $(SRC)))

all: pre-build $(TARGET).hex post-build

pre-build:
   @echo 'Building project'

post-build:
   $(REPORT) $(TARGET).mem
   ${PACKHEX} $(TARGET).ihx > $(TARGET).hex

main.hex: $(TARGET).c $(OBJ)
   sdcc $(SDCCCFLAGS) $(ASLINKFLAGS) $^

%.rel: %.c %.h
   sdcc $(SDCCCFLAGS) -c $<

clean:
   @echo 'Cleaning project'
   $(REMOVE) *.ihx
   $(REMOVE) *.hex
   $(REMOVE) *.asm
   $(REMOVE) *.mem
   $(REMOVE) *.rel
   $(REMOVE) *.map
   $(REMOVE) *.sym
   $(REMOVE) *.lst
   $(REMOVE) *.rst
   $(REMOVE) *.lnk

 

Provoz zaštiťuje spolek OpenAlt.