Hi,
I'm currently using the following makefile to build my test
applications (initially taken from the Phrozen SDK, beta 1 makefile
used to compile the I2C application example):
AXIS_USABLE_LIBS = UCLIBC GLIBC
include $(AXIS_TOP_DIR)/tools/build/Rules.axis
#SHELL = /bin/sh
PROGS = i2cexamplegvc
OBJS = i2cexamplegvc.o
OBJS +=
INSTDIR = $(prefix)/usr/bin
all: pre-build main-build post-build
pre-build:
@echo "Testing if .target-makefrag exists..."
if [ ! -f .target-makefrag ] ; \
then make cris-axis-linux-gnu ; \
echo "Target created, now continue..." ; \
else echo "File exists..." ; \
fi
main-build: $(PROGS)
$(PROGS): $(OBJS)
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
# $(STRIP) $@
@echo
@echo "***********"
@echo "Finished!!!"
@echo "***********"
post-build:
@echo
@echo "*********************************"
@echo "Now sending result to FoxBoard..."
@echo "*********************************"
@echo
foxy $(PROGS)
@echo
@echo "File sent via FTP to the FoxBoard..."
install: $(PROGS)
$(INSTALL) -p -o root -g root -m 0777 $(PROGS) $(INSTDIR)
clean:
rm -f $(PROGS) *.o core
The changes I've done so far, are:
1. Added a pre- and post build target.
* the pre-build target is there to see if the file .target-makefrag is
already created or not. If not, then call 'make cris-axis-linux-gnu'
* the post-build target is to FTP my generated executable to the
FoxBoard via a script, called "foxy".
2. Added a main-build target.
* this is simply what was there before in the Phrozen SDK
distribution, so I didn't change the content of it.
What I though, was that if .target-makefrag was not existing, the file
is created and once this creation is done, the remainder of the
launched make process could use the file .target-makefrag as input for
the real build.
But that is not true... Apparently, when the .target-makefrag file
doesn't exist, then it's nicely created first, as explained above. So
far, so good...
But then, the make continues, NOT taking into account the content of
the .target-makefrag file. I see this, because for instance the
invoked compiler is 'gcc' and not 'gcc-cris', as it should be.
How can I solve this problem? My intention is to create the
.target-makefrag file first if it's not existing and then, once
created, to continue with the "regular" makefile.
Is there recursion needed here? How to solve?
Any input appreciated.
Best rgds,
--Geert