guowenxue
2020-08-21 02f4d9518378031c63df7a36c49d8b2eabdaab90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#*********************************************************************************
#      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 = converterd
ARCH?=arm920t
#ARCH?=i386
 
LINK_MODE=STATIC
MODE=PRODUCTION
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/xtools/arm920t/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)
    make install
 
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 ${LDFLAGS}
    @$(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