SHELL = /bin/sh #CC = g++ CC = ${ENV_CC} #AR = ar AR = ${ENV_AR} ARFL = rv #RANLIB = ranlib RANLIB = ${ENV_RANLIB} #OSNAME = $(shell uname -sm) OSNAME = $(shell uname -s) OSTYPE = $(shell uname -m) DESTDIR = PREFIX = usr BIN_PATH = $(DESTDIR)/$(PREFIX)/bin/ LIB_ACL = $(DESTDIR)/$(PREFIX)/lib INC_ACL = $(DESTDIR)/$(PREFIX)/include/acl-lib LIB_DIST = ./dist/lib INC_PATH = ./dist/include RPATH = DATE_NOW = 20`date +%y`.`date +%m`.`date +%d` MAKE_ARGS = SYSLIB = -lpthread -lz LDFLAGS = -shared polarssl = ifeq ($(CC),) CC = g++ endif ifeq ($(AR),) AR = ar endif ifeq ($(RANLIB),) RANLIB = ranlib endif ifeq ($(findstring on, $(polarssl)), on) CFLAGS += -DHAS_POLARSSL endif ifeq ($(findstring Linux, $(OSNAME)), Linux) ifeq ($(findstring i686, $(OSTYPE)), i686) RPATH = linux32 endif ifeq ($(findstring x86_64, $(OSTYPE)), x86_64) RPATH = linux64 endif ifeq ($(findstring aarch64, $(OSTYPE)), aarch64) RPATH = aarch64 endif n = `cat /proc/cpuinfo | grep processor | wc -l` MAKE_ARGS = -j $(n) SYSLIB += -lrt -ldl endif # For CYGWIN ifeq ($(findstring CYGWIN, $(OSNAME)), CYGWIN) CFLAGS += -DLINUX2 -DMINGW CFLAGS += -O3 UNIXTYPE = LINUX SYSLIB += -liconv RPATH = mingw endif # For MINGW ifeq ($(findstring MINGW, $(OSNAME)), MINGW) CFLAGS += -DLINUX2 -DMINGW CFLAGS += -O3 UNIXTYPE = LINUX SYSLIB += -liconv RPATH = mingw endif # For MSYS ifeq ($(findstring MSYS, $(OSNAME)), MSYS) CFLAGS += -DLINUX2 -DMINGW CFLAGS += -O3 UNIXTYPE = LINUX SYSLIB += -liconv RPATH = mingw endif # For Darwin ifeq ($(findstring Darwin, $(OSNAME)), Darwin) # CC += -arch x86_64 -arch arm64 RPATH = macos SYSLIB += -rdynamic -L/usr/lib -liconv LDFLAGS = -dynamiclib -shared INC_ACL = /usr/local/include/acl-lib LIB_ACL = /usr/local/lib endif ifeq ($(findstring FreeBSD, $(OSNAME)), FreeBSD) RPATH = freebsd SYSLIB += -L/usr/local/lib -liconv endif ifeq ($(findstring SunOS, $(OSNAME)), SunOS) ifeq ($(findstring i386, $(OSTYPE)), i386) RPATH = sunos_x86 endif SYSLIB += -liconv endif ############################################################################## .PHONY = check help all_lib all samples all clean install uninstall uninstall_all build_one VERSION = 3.6.1-5 default: build_one acl_master help h: @(echo "usage: make help|all|all_lib|all_samples|clean|install|uninstall|uninstall_all|build_one") all_lib: @if test "$(polarssl)" = "on"; then \ ENV_FLAGS = $(ENV_FLAGS):HAS_POLARSSL \ export ENV_FLAGS; \ else \ export ENV_FLAGS; \ fi # @(cd lib_acl; make pch) @(cd lib_acl; make $(MAKE_ARGS)) @(cd lib_protocol; make $(MAKE_ARGS)) @(cd lib_acl_cpp; make check) # @(cd lib_acl_cpp; make pch) @(cd lib_acl_cpp; make $(MAKE_ARGS)) @(cd lib_rpc; make $(MAKE_ARGS)) @if test "$(OSNAME)" = "Linux" -o "$(OSNAME)" = "FreeBSD" -o "$(OSNAME)" = "Darwin"; then cd lib_fiber; make; fi all_samples: all_lib @(cd unit_test; make $(MAKE_ARGS)) @(cd lib_acl/samples; make) @(cd lib_protocol/samples; make) @(cd lib_acl_cpp/samples; make) # @(cd lib_dict; make $(MAKE_ARGS)) # @(cd lib_tls; make $(MAKE_ARGS)) all: all_lib acl_master all_samples clean cl: @(cd lib_acl; make clean) @(cd lib_protocol; make clean) @(cd lib_acl_cpp; make clean) @(cd lib_fiber; make clean) @(cd lib_rpc; make clean) @(cd unit_test; make clean) @(cd lib_acl/samples; make clean) @(cd lib_protocol/samples; make clean) @(cd app; make clean) @(rm -f libacl_all.a libacl.a) @(rm -f libacl_all.so libacl.so) # @(cd lib_dict; make clean) # @(cd lib_tls; make clean) acl_master: all_lib @(cd app/master/daemon; make $(MAKE_ARGS); make install) @(cd app/master/tools/lib_global; make $(MAKE_ARGS);) @(cd app/master/tools/master_ctl; make $(MAKE_ARGS); make install) packinstall: @(echo "") @(echo "begin copy file...") $(shell mkdir -p $(INC_ACL)/acl) $(shell mkdir -p $(INC_ACL)/acl_cpp) $(shell mkdir -p $(INC_ACL)/protocol) $(shell mkdir -p $(LIB_ACL)) @echo "copying lib_acl/include/* $(INC_ACL)/acl/" @cp -Rf lib_acl/include/* $(INC_ACL)/acl/ @echo "copying lib_acl_cpp/include/acl_cpp/* $(INC_ACL)/acl_cpp/" @cp -Rf lib_acl_cpp/include/acl_cpp/* $(INC_ACL)/acl_cpp/ @echo "copying lib_protocol/include/* $(INC_ACL)/protocol/" @cp -Rf lib_protocol/include/* $(INC_ACL)/protocol/ @echo "copying libacl_all.a $(LIB_ACL)/libacl_all.a"; @cp -f libacl_all.a $(LIB_ACL)/libacl_all.a; @if test "$(OSNAME)" = "Linux" || test "$(OSNAME)" = "Darwin"; then \ $(shell mkdir -p $(INC_ACL)/fiber) \ $(shell mkdir -p $(INC_ACL)/fiber/detail) \ echo "copying lib_fiber/c/include/fiber/* $(INC_ACL)/fiber/"; \ cp -f lib_fiber/c/include/fiber/*.h $(INC_ACL)/fiber/; \ echo "copying lib_fiber/cpp/include/fiber/* $(INC_ACL)/fiber/"; \ cp -f lib_fiber/cpp/include/fiber/*.hpp $(INC_ACL)/fiber/; \ cp -f lib_fiber/cpp/include/fiber/detail/*.hpp $(INC_ACL)/fiber/detail/; \ echo "copying lib_fiber/lib/libfiber.a $(LIB_ACL)/libfiber.a"; \ cp -f lib_fiber/lib/libfiber.a $(LIB_ACL)/libfiber.a; \ echo "copying lib_fiber/lib/libfiber_cpp.a $(LIB_ACL)/libfiber_cpp.a"; \ cp -f lib_fiber/lib/libfiber_cpp.a $(LIB_ACL)/libfiber_cpp.a; \ fi install_master: $(shell mkdir -p $(BIN_PATH)) $(shell mkdir -p $(DESTDIR)/opt/soft/services/) $(shell mkdir -p $(DESTDIR)/opt/soft/acl-master/conf/service) $(shell mkdir -p ./dist/master/libexec/$(RPATH)) $(shell mkdir -p ./dist/master/bin/$(RPATH)) @(cd app/master/daemon; make install) @(cd app/master/tools/master_ctl; make install) @(cd lib_fiber; make) #@echo "copying app/master/daemon/acl_master $(BIN_PATH)" #@cp -f app/master/daemon/acl_master $(BIN_PATH) @(cd dist/master && ./setup.sh $(DESTDIR) /opt/soft/acl-master) install: @(echo "") @(echo "begin copy file...") $(shell mkdir -p $(INC_PATH)/acl) $(shell mkdir -p $(INC_PATH)/protocol) $(shell mkdir -p $(INC_PATH)/acl_cpp) $(shell mkdir -p $(LIB_DIST)/$(RPATH)) $(shell mkdir -p ./dist/master/libexec/$(RPATH)) cp -f app/master/daemon/acl_master ./dist/master/libexec/$(RPATH)/ cp -f libacl_all.a $(LIB_DIST)/$(RPATH)/ cp -f lib_acl/lib/libacl.a $(LIB_DIST)/$(RPATH)/ cp -f lib_acl_cpp/lib/libacl_cpp.a $(LIB_DIST)/$(RPATH)/ cp -f lib_protocol/lib/libprotocol.a $(LIB_DIST)/$(RPATH)/ cp -Rf lib_acl/include/* $(INC_PATH)/acl/ cp -Rf lib_protocol/include/* $(INC_PATH)/protocol/ cp -Rf lib_acl_cpp/include/acl_cpp/* $(INC_PATH)/acl_cpp/ uninstall: @(echo "") @(echo "begin remove file...") rm -f ./dist/master/libexec/$(RPATH)/* rm -f $(LIB_DIST)/$(RPATH)/libacl_all.a rm -f $(LIB_DIST)/$(RPATH)/libacl.a rm -f $(LIB_DIST)/$(RPATH)/libprotocol.a rm -f $(LIB_DIST)/$(RPATH)/libacl_cpp.a rm -f $(LIB_DIST)/$(RPATH)/lib_dict.a rm -f $(LIB_DIST)/$(RPATH)/lib_tls.a rm -Rf $(INC_PATH)/protocol/* rm -Rf $(INC_PATH)/acl_cpp/* rm -Rf $(INC_PATH)/acl/* rm -Rf $(INC_PATH)/dict/* rm -Rf $(INC_PATH)/tls/* uninstall_all: @(echo "") @(echo "begin remove all dist files ...") rm -Rf $(INC_PATH)/acl/* rm -Rf $(INC_PATH)/protocol/* rm -Rf $(INC_PATH)/acl_cpp/* rm -Rf $(INC_PATH)/dist/* rm -Rf $(INC_PATH)/tls/* rm -f ./dist/master/libexec/linux32/* rm -f ./dist/master/libexec/linux64/* rm -f ./dist/master/libexec/sunos_x86/* rm -f ./dist/master/libexec/freebsd/* rm -f $(LIB_DIST)/linux32/*.a rm -f $(LIB_DIST)/linux64/*.a rm -f $(LIB_DIST)/sunos_x86/*.a rm -f $(LIB_DIST)/freebsd/*.a rm -f $(LIB_DIST)/win32/*.lib rm -f $(LIB_DIST)/win32/*.dll rm -f win32_build/vc/lib_acl/*.map rm -f win32_build/vc/lib_acl/*.ilk rm -f win32_build/vc/lib_protocol/*.map rm -f win32_build/vc/lib_protocol/*.ilk RELEASE_PATH = release build_one: all_lib @(mkdir -p $(RELEASE_PATH); mkdir -p $(RELEASE_PATH)/acl; \ mkdir -p $(RELEASE_PATH)/protocol; \ mkdir -p $(RELEASE_PATH)/acl_cpp) @(cp lib_acl/lib/libacl.a $(RELEASE_PATH)/acl/) @(cp lib_protocol/lib/libprotocol.a $(RELEASE_PATH)/protocol/) @(cp lib_acl_cpp/lib/libacl_cpp.a $(RELEASE_PATH)/acl_cpp/) @(cd $(RELEASE_PATH)/acl; ar -x libacl.a) @(cd $(RELEASE_PATH)/protocol; ar -x libprotocol.a) @(cd $(RELEASE_PATH)/acl_cpp; ar -x libacl_cpp.a) $(AR) $(ARFL) ./libacl_all.a $(RELEASE_PATH)/acl/*.o \ $(RELEASE_PATH)/protocol/*.o $(RELEASE_PATH)/acl_cpp/*.o $(RANLIB) ./libacl_all.a rm -f libacl.a ln -s libacl_all.a libacl.a $(CC) $(LDFLAGS) -o ./libacl_all.so $(RELEASE_PATH)/acl_cpp/*.o \ $(RELEASE_PATH)/protocol/*.o $(RELEASE_PATH)/acl/*.o \ $(SYSLIB) rm -f libacl.so ln -s libacl_all.so libacl.so @(rm -rf $(RELEASE_PATH)) @echo "" @echo "Over, libacl_all.a and libacl_all.so were built ok!" @echo "" check: @(echo "TYPE: $(OSTYPE)") @(echo "OSNAME: $(OSNAME)") @(echo "RPATH: $(RPATH)")