CC = $(ENV_CC) CFLAGS = -c -g -W -O3 \ -Wall \ -Wcast-qual \ -Wcast-align \ -Waggregate-return \ -Wno-long-long \ -Wmissing-prototypes \ -Wpointer-arith \ -Wshadow \ -D_REENTRANT \ -D_POSIX_PTHREAD_SEMANTICS \ -D_USE_FAST_MACRO #CFLAGS = -c -g -W -Wall -Wcast-qual -Wcast-align \ #-Waggregate-return -Wmissing-prototypes \ #-Wpointer-arith -Werror -Wshadow -O2 \ #-D_POSIX_PTHREAD_SEMANTICS -D_USE_FAST_MACRO ########################################################### #Check system: # Linux, SunOS, Solaris, BSD variants, AIX, HP-UX SYSLIB = -lpthread CHECKSYSRES = @echo "Unknow system type!";exit 1 UNIXNAME = $(shell uname -sm) ifeq ($(CC),) CC = gcc 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 Alpine, $(shell uname -a)), Alpine) SYSLIB += -lucontext endif ifeq ($(findstring gcc, $(CC)), gcc) CFLAGS += -Wstrict-prototypes endif ifeq ($(findstring clang, $(CC)), clang) CFLAGS += -Wstrict-prototypes \ -Wno-invalid-source-encoding \ -Wno-invalid-offsetof endif ifeq ($(findstring clang++, $(CC)), clang++) CFLAGS += -Wno-invalid-source-encoding \ -Wno-invalid-offsetof endif # For FreeBSD ifeq ($(findstring FreeBSD, $(UNIXNAME)), FreeBSD) CFLAGS += -DFREEBSD SYSLIB += -lcrypt -rdynamic endif # For Darwin ifeq ($(findstring Darwin, $(UNIXNAME)), Darwin) # CC += -arch x86_64 -arch arm64 CFLAGS += -DMACOSX -Wno-invalid-source-encoding \ -Wno-invalid-offsetof SYSLIB += -rdynamic UNIXTYPE = MACOSX endif #Path for Linux ifeq ($(findstring Linux, $(UNIXNAME)), Linux) # CFLAGS += -DLINUX2 SYSLIB += -lcrypt -rdynamic -ldl -lrt ifeq ($(HAS_IO_URING), yes) SYSLIB += -luring endif ifeq ($(has_io_uring), yes) SYSLIB += -luring endif endif # For CYGWIN ifeq ($(findstring CYGWIN, $(UNIXNAME)), CYGWIN) SYSLIB = -lpthread -rdynamic CFLAGS += -DLINUX2 -DMINGW UNIXTYPE = LINUX endif # For MINGW ifeq ($(findstring MINGW, $(UNIXNAME)), MINGW) SYSLIB = -lpthread -rdynamic CFLAGS += -DLINUX2 -DMINGW UNIXTYPE = LINUX endif # For MSYS ifeq ($(findstring MSYS, $(UNIXNAME)), MSYS) SYSLIB = -lpthread -rdynamic CFLAGS += -DLINUX2 -DMINGW UNIXTYPE = LINUX endif #Path for SunOS ifeq ($(findstring SunOS, $(UNIXNAME)), SunOS) ifeq ($(findstring 86, $(UNIXNAME)), 86) SYSLIB += -lsocket -lnsl -lrt endif ifeq ($(findstring sun4u, $(UNIXNAME)), sun4u) SYSLIB += -lsocket -lnsl -lrt endif CFLAGS += -DSUNOS5 SYSLIB += -lcrypt -rdynamic endif #Path for HP-UX ifeq ($(findstring HP-UX, $(UNIXNAME)), HP-UX) PLAT_NAME=hp-ux CFLAGS += -DHP_UX -DHPUX11 SYSLIB += -lcrypt -rdynamic endif #Find system type. ifneq ($(SYSPATH),) CHECKSYSRES = @echo "System is $(shell uname -sm)" endif ########################################################### ACL_PATH = ../../../lib_acl ACL_INC = $(ACL_PATH)/include ACL_LIB = $(ACL_PATH)/lib PRO_PATH = ../../../lib_protocol PRO_INC = $(PRO_PATH)/include PRO_LIB = $(PRO_PATH)/lib FIBER_PATH = ../../../lib_fiber FIBER_INC = $(FIBER_PATH)/c/include FIBER_LIB = $(FIBER_PATH)/lib EXTLIBS = CFLAGS += -I.. -I$(PRO_INC) -I$(ACL_INC) -I$(FIBER_INC) LDFLAGS = -L$(PRO_LIB) -lprotocol -L$(ACL_LIB) -lacl -L$(FIBER_LIB) -lfiber $(EXTLIBS) $(SYSLIB) ########################################################### OUT_PATH = . OBJ_PATH = $(OUT_PATH) #Project's objs SRC = $(wildcard *.c) $(wildcard ../*.c) OBJ = $(patsubst %.c, $(OBJ_PATH)/%.o, $(notdir $(SRC))) ########################################################### .PHONY = all clean PROG = COMPILE = $(CC) $(CFLAGS) #-Wl,-rpath,$(ACL_LIB) -Wl,-rpath,$(PROTO_LIB) -o $(OBJ_PATH)/$(PROG) all: RM $(OBJ) $(CC) $(OBJ) $(LDFLAGS) -o $(OBJ_PATH)/$(PROG) @echo "" @echo "All ok! Output:$(PROG)" @echo "" $(OBJ_PATH)/%.o: %.c $(COMPILE) $< -o $@ $(OBJ_PATH)/%.o: ../%.c $(COMPILE) $< -o $@ RM: rm -f $(PROG) clean cl: rm -f $(PROG) rm -f $(OBJ) rebuild rb: clean all ###########################################################