CC = ${ENV_CPP} FLAGS = ${ENV_FLAGS} CFLAGS = -c -g -W -O3 \ -Wall \ -Werror \ -Wshadow \ -Wno-long-long \ -Wpointer-arith \ -D_REENTRANT \ -D_POSIX_PTHREAD_SEMANTICS \ -D_USE_FAST_MACRO #-Wno-invalid-source-encoding #-Wcast-qual # -Wcast-align #-Waggregate-return ########################################################### #Check system: # Linux, SunOS, Solaris, BSD variants, AIX, HP-UX SYSLIB = -lpthread -ldl EXTLIBS = CHECKSYSRES = @echo "Unknow system type!";exit 1 OSNAME = $(shell uname -sm) UNIXNAME = $(OSNAME) RPATH = ifeq ($(CC),) CC = g++ endif OS_ENV=$(shell uname -a) ifeq ($(findstring WSL, $(OS_ENV)), WSL) SYSLIB += -liconv endif ifeq ($(findstring ubuntu, $(OS_ENV)), ubuntu) SYSLIB += -liconv endif ifeq ($(findstring HAS_LIBICONV, $(FLAGS)), HAS_LIBICONV) EXTLIBS += -liconv endif ifeq ($(findstring clang++, $(CC)), clang++) CFLAGS += -Wno-invalid-source-encoding \ -Wno-invalid-offsetof endif # For FreeBSD ifeq ($(findstring FreeBSD, $(OSNAME)), FreeBSD) CFLAGS += -DFREEBSD SYSLIB = -lcrypt -lpthread -rdynamic RPATH = freebsd endif # For Darwin ifeq ($(findstring Darwin, $(UNIXNAME)), Darwin) # CC += -arch x86_64 -arch arm64 CFLAGS += -DMACOSX -Wno-invalid-source-encoding \ -Wno-invalid-offsetof SYSLIB += -liconv -rdynamic UNIXTYPE = MACOSX RPATH = macos endif #Path for Linux ifeq ($(findstring Linux, $(OSNAME)), Linux) ifeq ($(findstring i686, $(OSNAME)), i686) RPATH = linux32 endif ifeq ($(findstring x86_64, $(OSNAME)), x86_64) RPATH = linux64 endif # CFLAGS += -DLINUX2 SYSLIB += -rdynamic endif # For MINGW ifeq ($(findstring MINGW, $(UNIXNAME)), MINGW) SYSLIB = -lpthread-2 -liconv CFLAGS += -DLINUX2 -DMINGW UNIXTYPE = LINUX endif # For MSYS ifeq ($(findstring MSYS, $(UNIXNAME)), MSYS) SYSLIB = -lpthread-2 -liconv CFLAGS += -DLINUX2 -DMINGW UNIXTYPE = LINUX endif #Path for SunOS ifeq ($(findstring SunOS, $(OSNAME)), SunOS) ifeq ($(findstring 86, $(OSNAME)), 86) SYSLIB += -lsocket -lnsl -lrt endif ifeq ($(findstring sun4u, $(OSNAME)), sun4u) SYSLIB += -lsocket -lnsl -lrt endif ifeq ($CC, "gcc") CFLAGS += -Wstrict-prototypes endif CFLAGS += -DSUNOS5 RPATH = solaris endif #Path for HP-UX ifeq ($(findstring HP-UX, $(OSNAME)), HP-UX) CFLAGS += -DHP_UX -DHPUX11 -Wshadow PLAT_NAME=hp-ux RPATH = hpux endif #Find system type. ifneq ($(SYSPATH),) CHECKSYSRES = @echo "System is $(shell uname -sm)" endif ########################################################### SRC = BASE_PATH = UTIL_PATH = ifneq ($(base_path),) BASE_PATH = $(base_path) UTIL_PATH = $(base_path)/samples CFLAGS += -I$(base_path)/samples SRC = $(wildcard $(UTIL_PATH)/*.cpp) else BASE_PATH = ../.. endif #ifneq ($(util_path),) # UTIL_PATH = $(util_path) #else # UTIL_PATH = .. #endif CFLAGS += -I. -I$(BASE_PATH)/include -I$(BASE_PATH)/../lib_acl/include -I$(BASE_PATH)/../lib_protocol/include LDFLAGS = -L$(BASE_PATH)/lib -lacl_cpp -L$(BASE_PATH)/../lib_protocol/lib -lprotocol -L$(BASE_PATH)/../lib_acl/lib -lacl \ -L$(BASE_PATH)/../lib/$(RPATH) $(EXTLIBS) $(SYSLIB) COMPILE = $(CC) $(CFLAGS) LINK = $(CC) $(OBJ) $(LDFLAGS) ########################################################### OBJ_PATH = . #Project's objs #UTIL = $(wildcard $(UTIL_PATH)/*.cpp) SRC += $(wildcard *.cpp) #SRC = $(wildcard *.cpp) OBJ = $(patsubst %.cpp, $(OBJ_PATH)/%.o, $(notdir $(SRC))) $(OBJ_PATH)/%.o: %.cpp $(COMPILE) $< -o $@ $(OBJ_PATH)/%.o: $(UTIL_PATH)/%.cpp $(COMPILE) $< -o $@ .PHONY = all clean all: RM $(OBJ) $(LINK) -o $(PROG) @echo "" @echo "All ok! Output:$(PROG)" @echo "" rebuild rb: clean all RM: rm -f $(PROG) clean cl: rm -f $(PROG) rm -f $(OBJ) rebuild rb: clean all ###########################################################