source: libcf/trunk/src/makefile@ 6

Last change on this file since 6 was 6, checked in by cheese, 11 years ago

#1 add debug util and arrange some code

File size: 2.2 KB
Line 
1#----------------------------------------------------------
2# platform
3#----------------------------------------------------------
4PLATFORM = 64
5DEBUG = true
6
7#----------------------------------------------------------
8# load system info
9#----------------------------------------------------------
10ifeq ($(PLATFORM), 64)
11 PLATFORM = -m64
12else
13 PLATFORM = -m32
14endif
15
16UNAME_A := $(shell uname -a)
17EXT_SHARED = so
18EXT_STATIC = a
19
20ifeq ($(findstring CYGWIN,$(UNAME_A)),CYGWIN)
21 # forced
22 PLATFORM = -m32
23 EXT_SHARED = dll
24 EXT_STATIC = lib
25endif
26
27ifeq ($(DEBUG), true)
28 DEFS = -D_DEBUG
29 FLAG = -g
30else
31 DEFS =
32 FLAG =
33endif
34
35#----------------------------------------------------------
36# env
37#----------------------------------------------------------
38FILES = \
39 cf_file \
40 cf_socket \
41 cf_thread \
42 cf_debug \
43
44LIB_NAME = CF
45
46CC = gcc
47LD = gcc
48AR = ar
49CDEFS = $(DEFS) -DLINUX -DUNIX -DMTHREAD -D_REENTRANT
50CFLAGS = $(PLATFORM) $(FLAG) -Wall -Wconversion -Wpointer-arith -Wcast-align -fPIC
51LDFLAGS = $(PLATFORM) -Wl,-Bsymbolic
52SHARED_FLAGS = $(LDFLAGS) -shared
53ARFLAGS = rc
54
55SOURCE_TYPE = c
56TARGET_PATH = ../_build
57OBJ_PATH = ../_obj
58TARGET = $(TARGET_PATH)/lib$(LIB_NAME).$(EXT_SHARED)
59SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES))
60OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES)))
61
62INCLUDES = -I../include
63LIBS = -lpthread
64
65#----------------------------------------------------------
66# label
67#----------------------------------------------------------
68all: $(OBJ_PATH) $(TARGET_PATH) $(TARGET)
69 @echo ========== Complete CHEROXY compilation ==========
70$(TARGET_PATH): dummy
71 @if [ ! -d $@ ] ; then mkdir $@ ; fi
72$(OBJ_PATH): dummy
73 @if [ ! -d $@ ] ; then mkdir $@ ; fi
74
75# link
76$(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS)
77 $(LD) $(SHARED_FLAGS) -o $@ $?
78
79$(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS)
80 $(AR) $(ARFLAGS) -o $@ $?
81
82# compile
83$(OBJ_PATH)/%.o: %.$(SOURCE_TYPE)
84 $(CC) $(CFLAGS) $(CDEFS) $(INCLUDES) -o $@ -c $?
85
86clean: dummy
87 rm -rf $(TARGET_PATH) $(OBJ_PATH)
88
89dummy:
90
91# test
92test: all
93 $(CXX) $(CXXFLAGS) $(INCLUDES) $(CXXDEFS) -o $(OBJ_PATH)/main.o -c main.cpp
94 $(LD) $(LDFLAGS) -o $(TARGET_PATH)/cf.ex $(OBJ_PATH)/main.o -L$(TARGET_PATH) -lpthread
95 LD_LIBRARY_PATH=$(TARGET_PATH) $(TARGET_PATH)/cf.ex
96
Note: See TracBrowser for help on using the repository browser.