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