blob: b23f2605a8319ca06c1807bca87012a58caf472a [file]
#-------------------------------------------------------------------------------
CC = gcc
CXX = g++
CFLAGS += -g -fPIC -Wno-deprecated -Wall -pipe -fno-ident -fno-strict-aliasing -MMD -D_GNU_SOURCE -D_REENTRANT
#-------------------------------------------------------------------------------
INCLUDE += -I./
LIB_32 += -L./
LIB_64 += -L./
LOCAL_SRC += $(sort $(wildcard *.cpp *.cc *.c))
LOCAL_OBJ += $(patsubst %.cpp,%.o, $(patsubst %.cc,%.o, $(patsubst %.c,%.o, $(LOCAL_SRC))))
DEP_FILE := $(foreach obj, $(LOCAL_OBJ), $(dir $(obj))$(basename $(notdir $(obj))).d)
#-----------------------------------------------------------------------------
PLATFORM := $(strip $(shell echo `uname -m`))
ifneq ($(MFLAGS),64)
ifneq ($(MFLAGS),32)
ifeq ($(PLATFORM),x86_64)
MFLAGS := 64
else
MFLAGS := 32
endif
endif
endif
ifeq ($(MFLAGS),64)
ifneq ($(PLATFORM),x86_64)
MFLAGS := 32
endif
endif
ifeq ($(MFLAGS),32)
CFLAGS += -D_SYS_EPOLL_ $(CFLAGS_32)
else
CFLAGS += $(CFLAGS_64)
endif
#-----------------------------------------------------------------------------
ifneq ($(PLATFORM),x86_64)
MFLAGS := 32
LIB := $(LIB) $(LIB_32)
else
DEP_FILE_32 := $(foreach obj, $(DEP_FILE),$(patsubst %.d,%.32.d, $(obj)))
DEP_FILE_64 := $(foreach obj, $(DEP_FILE),$(patsubst %.d,%.64.d, $(obj)))
LOCAL_OBJ_32 := $(foreach obj, $(LOCAL_OBJ),$(patsubst %.o,%.32.o,$(obj)))
LOCAL_OBJ_64 := $(foreach obj, $(LOCAL_OBJ),$(patsubst %.o,%.64.o,$(obj)))
LOCAL_MOCK_OBJ_32 += $(filter-out %Server.32.o, $(LOCAL_OBJ_32)) UnitTest.32.o
LOCAL_MOCK_OBJ_64 += $(filter-out %Server.64.o, $(LOCAL_OBJ_64)) UnitTest.64.o
CLEANFILE := $(LOCAL_OBJ_32) $(LOCAL_OBJ_64)
ifeq ($(MFLAGS),64)
DEP_FILE := $(DEP_FILE_64)
LOCAL_OBJ := $(LOCAL_OBJ_64)
LIB := $(LIB) $(LIB_64)
LOCAL_MOCK_OBJ := $(LOCAL_MOCK_OBJ_64)
else
DEP_FILE := $(DEP_FILE_32)
LOCAL_OBJ := $(LOCAL_OBJ_32)
LIB := $(LIB) $(LIB_32)
LOCAL_MOCK_OBJ := $(LOCAL_MOCK_OBJ_32)
endif
endif
#-------------------------------------------------------------------------------
all : $(LOCAL_OBJ) $(TARGET) $(TARGETS)
$(filter %.a,$(TARGET)) : $(LOCAL_OBJ)
ar r $@ $(LOCAL_OBJ)
$(filter %.so,$(TARGET)) : $(LOCAL_OBJ)
$(CXX) -m$(MFLAGS) $(CFLAGS) -shared -o $@ $^ $(INCLUDE) $(LIB)
$(filter-out %.so %.a,$(TARGET)) : $(LOCAL_OBJ)
$(CXX) -m$(MFLAGS) $(CFLAGS) -o $@ $^ $(INCLUDE) $(LIB)
$(filter-out %.so %.a %.y,$(TARGETS)) : % : %.$(MFLAGS).o
$(CXX) -m$(MFLAGS) $(CFLAGS) -o $@ $^ $(INCLUDE) $(LIB)
utest : $(LOCAL_MOCK_OBJ)
$(CXX) -m$(MFLAGS) $(CFLAGS) -o UnitTest $^ $(INCLUDE) $(LIB)
#----------------------------------------------------------------------------------
uclean:
rm -vf $(LOCAL_MOCK_OBJ) $(TARGET) $(TARGETS) ${CLEANFILE} *.d.tmp gmon.out UnitTest
clean:
rm -vf $(LOCAL_OBJ) $(TARGET) $(TARGETS) ${CLEANFILE} *.d.tmp gmon.out UnitTest
cleanall:
rm -vf $(LOCAL_OBJ) $(TARGET) $(TARGETS) $(DEP_FILE) ${CLEANFILE} *.o *.d.tmp *.d gmon.out UnitTest
ifneq ($(DEP_FILE),)
-include $(DEP_FILE)
endif
#-------------------------------------------------------------------------------
%.32.o: %.cpp
$(CXX) -m32 $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.32.o: %.cc
$(CXX) -m32 $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.32.o: %.c
$(CC) -m32 $(CFLAGS) $(INCLUDE) -o $@ -c $<
#-------------------------------------------------------------------------------
%.64.o: %.cpp
$(CXX) -m64 $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.64.o: %.cc
$(CXX) -m64 $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.64.o: %.c
$(CC) -m64 $(CFLAGS) $(INCLUDE) -o $@ -c $<
#----------------------------------------------------------------------------------
%.o: %.cpp
$(CXX) -m$(MFLAGS) $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.o: %.cc
$(CXX) -m$(MFLAGS) $(CFLAGS) $(INCLUDE) -o $@ -c $<
%.o: %.c
$(CC) -m$(MFLAGS) $(CFLAGS) $(INCLUDE) -o $@ -c $<
#----------------------------------------------------------------------------------