| #********************************************************************************* | 
| #      Copyright:  (C) 2012 Guo Wenxue<Email:guowenxue@gmail.com> | 
| #                  All rights reserved. | 
| # | 
| #       Filename:  Makefile | 
| #    Description:  This Makefile used to call function to compile all the C source | 
| #                  in current folder and links all the objects file into a excutable | 
| #                  binary file. | 
| #                       | 
| #        Version:  1.0.0(10/08/2011~) | 
| #                  Author:  Guo Wenxue <guowenxue@gmail.com> | 
| #      ChangeLog:  1, Release initial version on "10/08/2011 01:29:33 AM" | 
| #                        | 
| #********************************************************************************/ | 
|   | 
| PWD=$(shell pwd) | 
| INSTPATH=/tftp | 
|   | 
| APP_BINARY_NAME = comport | 
| #ARCH?=i386 | 
| ARCH?=arm1176jzfs | 
|   | 
| MODE=PRODUCTION | 
| LINK_MODE=STATIC | 
| #DEBUG=1 | 
|   | 
| #LDFLAGS+=-lpthread | 
| CFLAGS+=-Wall -Werror | 
|   | 
| ifeq ("${MODE}", "PRODUCTION") | 
|     CFLAGS+=-DPRODUCTION_MODE | 
| endif | 
| ifdef DEBUG | 
|     CFLAGS+=-g -DDEBUG | 
| endif | 
|   | 
| COMPILE_DATE=$(shell date -u +"%Y-%m-%d %H:%M") | 
| VPATH= . | 
| SRCS = $(wildcard ${VPATH}/*.c) | 
| OBJS = $(patsubst %.c,%.o,$(SRCS)) | 
|   | 
| TMP=$(shell echo $(ARCH) | tr "[A-Z]" "[a-z]") | 
| ifneq (,$(filter i386,$(TMP))) | 
|     CROSS_COMPILE= | 
| else | 
|     CROSS_COMPILE=/opt/buildroot-2012.08/$(ARCH)/usr/bin/arm-linux- | 
| endif | 
|   | 
| CFLAGS+=-I${PWD} | 
|   | 
| export CC=${CROSS_COMPILE}gcc | 
| export CXX=${CROSS_COMPILE}g++ | 
| export AR=${CROSS_COMPILE}ar | 
| export AS=${CROSS_COMPILE}as | 
| export RANLIB=${CROSS_COMPILE}ranlib | 
| export STRIP=${CROSS_COMPILE}strip | 
| export CFLAGS | 
| export LDFLAGS | 
| export ARCH | 
| export LINK_MODE | 
|   | 
| ifeq ("${LINK_MODE}", "STATIC") | 
|     CFLAGS+=--static | 
|     LDFLAGS+=-static | 
| else | 
|     LDFLAGS+=-ldl | 
| endif | 
|   | 
| all: entry version $(APP_BINARY_NAME) | 
|   | 
| entry:  | 
|     @echo " "; | 
|     @echo " ========================================================="; | 
|     @echo " **        Compile ${APP_BINARY_NAME} for ${ARCH}         "; | 
|     @echo " ========================================================="; | 
|   | 
| version: | 
|     @echo "/* Generated by makefile, don't Edit it by hand */" > version.h  | 
|     @echo "#define DATE \"$(COMPILE_DATE)\"" >> version.h  | 
|     @echo "#define MAJOR 1" >>version.h  | 
|     @echo "#define MINOR 0" >>version.h  | 
|     @echo "#define REVER 0" >>version.h  | 
|     @if [ -f .svn/entries ] ; then \ | 
|         echo "#define SVNVER `sed -n -e 11p .svn/entries`" >>version.h; \ | 
|     else \ | 
|         echo "#define SVNVER 0" >>version.h; \ | 
|     fi; | 
|     @echo "" >> version.h  | 
|     @echo '#define version(progname) printf("%s Version %d.%d.%d Build @%05d (%s)\n", progname, MAJOR, MINOR, REVER,SVNVER, DATE)'  >> version.h | 
|     @echo '#define copyright() printf("Copyright:  (C) 2012 Guo Wenxue<Email:guowenxue@gmail.com\n")' >>version.h | 
|     @echo '#define banner(progname) {version(progname); copyright(); printf("\n");}' >>version.h | 
|     @echo "" >> version.h | 
|   | 
| $(APP_BINARY_NAME):    $(OBJS)  | 
|     $(CC)  -o $@ *.c | 
|     $(STRIP) $(APP_BINARY_NAME) | 
|   | 
| tag:  | 
|     @ctags --c-kinds=+defglmnstuvx --langmap=c:.c.h.ho.hem.het.hec.hev.him.hit.hic.hiv -R .   | 
|     @cscope -Rbq | 
|   | 
| install: | 
|     @cp $(APP_BINARY_NAME) ${INSTPATH} | 
|   | 
| clean:  | 
|     @rm -f version.h  | 
|     @rm -f *.o $(APP_BINARY_NAME)  | 
|     @rm -rf *.gdb *.a *.so *.elf* | 
|   | 
| distclean: clean | 
|     @rm -f  tags cscope* | 
|   | 
| .PHONY: clean entry |