source: libcf/trunk/src/makefile@ 4

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

#1 로깅을 제외한 기본 코드 커밋

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
43LIB_NAME = CF
44
45CC = gcc
46LD = gcc
47AR = ar
48CDEFS = $(DEFS) -DLINUX -DUNIX -DMTHREAD -D_REENTRANT
49CFLAGS = $(PLATFORM) $(FLAG) -Wall -Wconversion -Wpointer-arith -Wcast-align -fPIC
50LDFLAGS = $(PLATFORM) -Wl,-Bsymbolic
51SHARED_FLAGS = $(LDFLAGS) -shared
52ARFLAGS = rc
53
54SOURCE_TYPE = c
55TARGET_PATH = ../_build
56OBJ_PATH = ../_obj
57TARGET = $(TARGET_PATH)/lib$(LIB_NAME).$(EXT_SHARED)
58SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES))
59OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES)))
60
61INCLUDES = -I../include
62LIBS = -lpthread
63
64#----------------------------------------------------------
65# label
66#----------------------------------------------------------
67all: $(OBJ_PATH) $(TARGET_PATH) $(TARGET)
68 @echo ========== Complete CHEROXY compilation ==========
69$(TARGET_PATH): dummy
70 @if [ ! -d $@ ] ; then mkdir $@ ; fi
71$(OBJ_PATH): dummy
72 @if [ ! -d $@ ] ; then mkdir $@ ; fi
73
74# link
75$(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS)
76 $(LD) $(SHARED_FLAGS) -o $@ $?
77
78$(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS)
79 $(AR) $(ARFLAGS) -o $@ $?
80
81# compile
82$(OBJ_PATH)/%.o: %.$(SOURCE_TYPE)
83 $(CC) $(CFLAGS) $(CDEFS) $(INCLUDES) -o $@ -c $?
84
85clean: dummy
86 rm -rf $(TARGET_PATH) $(OBJ_PATH)
87
88dummy:
89
90# test
91test: all
92 $(CXX) $(CXXFLAGS) $(INCLUDES) $(CXXDEFS) -o $(OBJ_PATH)/main.o -c main.cpp
93 $(LD) $(LDFLAGS) -o $(TARGET_PATH)/cf.ex $(OBJ_PATH)/main.o -L$(TARGET_PATH) -lpthread
94 LD_LIBRARY_PATH=$(TARGET_PATH) $(TARGET_PATH)/cf.ex
95
Note: See TracBrowser for help on using the repository browser.