-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Brian Budge wrote: > Hi - > > You should really send an email to the gnu make list. This list is > for gcc questions. > > Brian > > On Mon, Sep 28, 2009 at 6:32 AM, mjk78 <shick3n@xxxxxxxxx> wrote: >> I've taken over someone else's project code which uses #defines >> to select which region the code is being compiled for. Instead >> of hard-coding these #defines, i would like to edit the makefile >> to specify the region at compile time. >> >> ie. I would like to be able to enter "make USA" or "make Mexico" >> and have that automatically define REG_UNITED STATES or >> REG_MEXICO when compiling. >> >> I've tried to check the MAKECMDGOALS variable, but I still get a >> "No rule to make target "USA". Stop" error. Autoconf would be a good solution for this to make a config.h is what you want. >> >> my makefile currently is: >> ---------------------------------------------------------------------------------------- >> >> >> >> ################################################### # Define >> Project name ################################################### >> PRJ_NAME=OTB SVN_REV=0 MODEL_NAME=EON-XCOM SUBVERSION=0 >> >> OBJDIR=obj SRCDIR=source INCDIR=inc LSTDIR=list >> >> ################################################### >> ################################################### >> START_OF_SRAM=0x800000 #START_OF_SRAM=0x00814000 >> SIZE_OF_SRAM=1024k START_OF_FLASH=0x01100000 >> >> # Must be 6 HEX digit START_OF_PROTECTED=000000 >> #END_OF_PROTECTED=00FFFF END_OF_PROTECTED=042400 >> >> ################################################### # Source file >> list ################################################### >> C_SRC=$(notdir $(wildcard $(SRCDIR)/*.c)) A_SRC=$(notdir >> $(wildcard $(SRCDIR)/*.s)) >> >> ################################################### # Gen object >> file name automatically >> ################################################### >> C_OBJ=$(addprefix $(OBJDIR)/, $(C_SRC:.c=.o)) A_OBJ=$(addprefix >> $(OBJDIR)/, $(A_SRC:.s=.o)) >> >> OUT_FILE=$(PRJ_NAME) BIN_FILE=$(PRJ_NAME).bin >> TMS_FILE=$(PRJ_NAME).tms SCRIPT_FILE=$(PRJ_NAME).ld >> >> MAP_FILE=$(PRJ_NAME).map >> >> >> ################################################### # Tools setup >> ################################################### >> CROSS=arm-unknown-linux-gnu- LIBCDIR=/opt/lib_arm >> >> LIBSYSDIR=../lib >> >> INCLUDES=-I $(INCDIR) -I $(LIBSYSDIR) DEFINES=-D__NO_CTYPE >> -DSVN_REV=$(SVN_REC) -D__pcs= >> >> #-------------------------------------------------- #Check for >> USA, RSA or MEX command line arguments...MK >> #-------------------------------------------------- ifeq >> ($(MAKECMDGOALS),USA) REG_DEFINE=-DREG_UNITED_STATES endif ifeq >> ($(MAKECMDGOALS),Mexico) REG_DEFINE=-DREG_MEXICO endif >> >> >> CC=$(CROSS)gcc CFLAGS=-c -std=gnu89 -Os -Wall -msoft-float >> -mthumb -mthumb-interwork -mcpu=arm7tdmi $(DEFINES) $(INCLUDES) >> $(REG_DEFINE) >> >> ASM=$(CROSS)gcc ASFLAGS=$(CFLAGS) >> >> LINK=$(CROSS)ld LFLAGS=-nostdlib -L $(LIBCDIR)/lib -L >> $(LIBSYSDIR) -static -T $(SCRIPT_FILE) -Map $(MAP_FILE) >> LIBS=-lgcc -lc -lm -lsyscall -lsysutil >> >> AR=$(CROSS)ar ARFLAGS=-rc >> >> OBJCOPY=$(CROSS)objcopy OCFLAGS=-S -O binary >> >> BIN2TMS=bin2tms TMSFLAGS=-s$(SUBVERSION) -m$(MODEL_NAME) >> -n$(PRJ_NAME) -x XXXX XX XX $(START_OF_PROTECTED) >> $(END_OF_PROTECTED) >> >> ############################################################################ >> # Loader config >> ############################################################################ >> LOADER=ConLoader LOADER_KEY=734EC4FF38F93130 LOADER_COM=6 >> LOADER_BAUD=115200 LOADER_AID=COMM_EXP >> >> ############################################################################ >> # Linker script >> ############################################################################ >> LD_SCRIPT=" ENTRY (cstartup) \ SECTIONS { \ >> _start_of_data = $(START_OF_SRAM); \ _start_of_flash = >> $(START_OF_FLASH); \ _end_of_sram = _start_of_data + >> $(SIZE_OF_SRAM); \ _start_of_header = _start_of_flash + 0x20; \ >> _start_of_app = _start_of_flash + 0x30; \ . = _start_of_flash; \ >> .startup : { *(sect_startup) } \ . = _start_of_header; \ .header >> : { *(sect_header) } \ . = _start_of_app; \ .text : { *(.text >> .glue*) } \ .const : { *(.rodata*) } \ _end_of_app = (. + 3) & ~ >> 3; \ . = _start_of_data; \ .data : AT (_end_of_app) { *(.data) } >> \ _end_of_data = (. + 3) & ~ 3; \ . = _end_of_data; \ >> _start_of_bss = .; \ .bss : { *(.bss) } \ _end_of_bss = .; \ >> _end_of_flash = _end_of_app + SIZEOF (.data); \ }" >> >> ################################################### # Link file >> ################################################### $(OUT_FILE) : >> $(A_OBJ) $(C_OBJ) @echo . @echo [$(OUT_FILE)] @rm -f >> $(SCRIPT_FILE) @echo $(LD_SCRIPT) > $(SCRIPT_FILE) @$(LINK) >> $(LFLAGS) -o $(OUT_FILE) --start-group $(LIBS) $(A_OBJ) $(C_OBJ) >> --end-group @rm -f $(SCRIPT_FILE) @$(OBJCOPY) $(OCFLAGS) >> $(OUT_FILE) $(BIN_FILE) @$(BIN2TMS) $(TMSFLAGS) $(BIN_FILE) >> >> ################################################### >> ################################################### >> $(SRCDIR)/%.rc : $(INCDIR)/rc.h @touch $(SRCDIR)/$(@F) >> >> $(SRCDIR)/%.cpp : $(INCDIR)/%.h @touch $(SRCDIR)/$(@F) >> >> $(SRCDIR)/%.c : $(INCDIR)/%.h @touch $(SRCDIR)/$(@F) >> >> ################################################### # Compile C >> files ################################################### >> $(OBJDIR)/%.o : $(SRCDIR)/%.c @echo [$<] @$(CC) $(CFLAGS) $< -o >> $@ -Wa,-a=$(LSTDIR)/$(@F:.o=.lst) >> >> ################################################### # Assembly >> ASM files ################################################### >> $(OBJDIR)/%.o : $(SRCDIR)/%.s @echo [$<] @$(ASM) $(ASFLAGS) $< -o >> $@ -Wa,-a=$(LSTDIR)/$(@F:.o=.lst) >> >> ################################################### # Load >> ################################################### .PHONY : load >> load : @echo $(LOADER_AID) > uniload.inf @$(LOADER) $(TMS_FILE) >> -s$(LOADER_BAUD) -K$(LOADER_KEY) -$(LOADER_COM) @rm -f >> uniload.inf >> >> ################################################### # Clear all >> object file and output file >> ################################################### .PHONY : >> clean clean : @echo Delete all object file. @rm -f $(OBJDIR)/*.* >> @rm -f $(LSTDIR)/*.* @rm -f $(OUT_FILE) @rm -f $(BIN_FILE) @rm -f >> $(TMS_FILE) @rm -f $(MAP_FILE) @rm -f $(SCRIPT_FILE) >> >> -- View this message in context: >> http://www.nabble.com/makefile-help-tp25645182p25645182.html Sent >> from the gcc - Help mailing list archive at Nabble.com. >> >> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkrA2gIACgkQAhcOgIaQQ2FLVgCdF9BGLvppOmQvsGgQA6BoQXlM w9cAn36ObWnl1QpX7y1uIqbONpIyyzJP =Rew2 -----END PGP SIGNATURE-----