#---------------------------------------------------------- # platform #---------------------------------------------------------- PLATFORM = 64 DEBUG = true #---------------------------------------------------------- # load system info #---------------------------------------------------------- ifeq ($(PLATFORM), 64) PLATFORM = -m64 else PLATFORM = -m32 endif UNAME_A := $(shell uname -a) EXT_EXECUTE = ex EXT_SHARED = so EXT_STATIC = a ifeq ($(findstring CYGWIN,$(UNAME_A)),CYGWIN) # forced PLATFORM = -m32 EXT_EXECUTE = exe EXT_SHARED = dll EXT_STATIC = lib endif ifeq ($(DEBUG), true) DEFS = -D_DEBUG FLAG = -g else DEFS = FLAG = endif #---------------------------------------------------------- # env #---------------------------------------------------------- FILES = \ test \ TARGET_NAME = test CC = gcc LD = gcc AR = ar CDEFS = $(DEFS) -DLINUX -DUNIX -DMTHREAD -D_REENTRANT CFLAGS = $(PLATFORM) $(FLAG) -Wall -Wconversion -Wpointer-arith -Wcast-align -fPIC LDFLAGS = $(PLATFORM) -Wl,-Bsymbolic SHARED_FLAGS = $(LDFLAGS) -shared ARFLAGS = rc SOURCE_TYPE = c TARGET_PATH = ../_build OBJ_PATH = ../_obj TARGET = $(TARGET_PATH)/$(TARGET_NAME).$(EXT_EXECUTE) SRCS = $(addsuffix .$(SOURCE_TYPE),$(FILES)) OBJS = $(addprefix $(OBJ_PATH)/,$(addsuffix .o,$(FILES))) INCLUDES = -I../include LIBS = -L$(TARGET_PATH) -lcf -lpthread LIB_CF = $(TARGET_PATH)/lib$(TARGET_PATH).$(EXT_SHARED) #---------------------------------------------------------- # label #---------------------------------------------------------- all: $(OBJ_PATH) $(TARGET_PATH) $(LIB_CF) $(TARGET) @echo ========== Complete CHEROXY compilation ========== $(TARGET_PATH): dummy @if [ ! -d $@ ] ; then mkdir $@ ; fi $(OBJ_PATH): dummy @if [ ! -d $@ ] ; then mkdir $@ ; fi $(LIB_CF): dummy cd ../src; make all; # link $(TARGET_PATH)/%.$(EXT_EXECUTE): $(OBJS) $(LD) $(LDFLAGS) $(LIBS) -o $@ $? $(TARGET_PATH)/%.$(EXT_SHARED): $(OBJS) $(LD) $(SHARED_FLAGS) -o $@ $? $(TARGET_PATH)/%.$(EXT_STATIC): $(OBJS) $(AR) $(ARFLAGS) -o $@ $? # compile $(OBJ_PATH)/%.o: %.$(SOURCE_TYPE) $(CC) $(CFLAGS) $(CDEFS) $(INCLUDES) -o $@ -c $? clean: dummy rm -rf *.txt rm -rf $(TARGET_PATH) $(OBJ_PATH) dummy: test: all LD_LIBRARY_PATH=$(TARGET_PATH) $(TARGET)