diff options
| author | zhenwei pi <pizhenwei@bytedance.com> | 2021-12-23 17:23:24 +0800 | 
|---|---|---|
| committer | zhenwei pi <pizhenwei@bytedance.com> | 2021-12-23 17:26:35 +0800 | 
| commit | f74b08182c8fafafe706c8f5f4f2fb4a35028c8f (patch) | |
| tree | e2435ca623869266bde39e0ed50f5e7148fbaa2f | |
| parent | f347743b7ded3bc7768c36126257bf3ae8c4e045 (diff) | |
| download | hiredict-f74b08182c8fafafe706c8f5f4f2fb4a35028c8f.tar.xz | |
Makefile: move SSL options into a block and refine rules
Move SSL options into two blocks to make it easy to read:
  1, first part: SSL variables part
  1, second part: SSL building rules part
and change global rules to make it easy to maintain. For the further
step, it gets extensible to add another type.
New version of the library building rule:
	static: $(STLIBNAME) $(SSL_STLIB)
	dynamic: $(DYLIBNAME) $(SSL_DYLIB)
Compare with the orignal version:
	dynamic: $(DYLIBNAME)
	static: $(STLIBNAME)
	ifeq ($(USE_SSL),1)
	dynamic: $(SSL_DYLIBNAME)
	static: $(SSL_STLIBNAME)
	endif
If we want to add a new type(Ex, RDMA), for the new version, we can
do like this:
	########### RDMA variables start ###############
	.....
	########### RDMA variables end   ###############
	static: $(STLIBNAME) $(SSL_STLIB) $(RDMA_STLIB)
	dynamic: $(DYLIBNAME) $(SSL_DYLIB) $(RDMA_DYLIB)
	########### RDMA building rules start ###############
	.....
	########### RDMA building rules end   ###############
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
| -rw-r--r-- | Makefile | 68 | 
1 files changed, 36 insertions, 32 deletions
| @@ -4,16 +4,10 @@  # This file is released under the BSD license, see the COPYING file  OBJ=alloc.o net.o hiredis.o sds.o async.o read.o sockcompat.o -SSL_OBJ=ssl.o  EXAMPLES=hiredis-example hiredis-example-libevent hiredis-example-libev hiredis-example-glib hiredis-example-push -ifeq ($(USE_SSL),1) -EXAMPLES+=hiredis-example-ssl hiredis-example-libevent-ssl -endif  TESTS=hiredis-test  LIBNAME=libhiredis  PKGCONFNAME=hiredis.pc -SSL_LIBNAME=libhiredis_ssl -SSL_PKGCONFNAME=hiredis_ssl.pc  HIREDIS_MAJOR=$(shell grep HIREDIS_MAJOR hiredis.h | awk '{print $$3}')  HIREDIS_MINOR=$(shell grep HIREDIS_MINOR hiredis.h | awk '{print $$3}') @@ -60,21 +54,39 @@ DYLIB_MAKE_CMD=$(CC) -shared -Wl,-soname,$(DYLIB_MINOR_NAME)  STLIBNAME=$(LIBNAME).$(STLIBSUFFIX)  STLIB_MAKE_CMD=$(AR) rcs +#################### SSL variables start #################### +SSL_OBJ=ssl.o +SSL_LIBNAME=libhiredis_ssl +SSL_PKGCONFNAME=hiredis_ssl.pc +SSL_INSTALLNAME=install-ssl  SSL_DYLIB_MINOR_NAME=$(SSL_LIBNAME).$(DYLIBSUFFIX).$(HIREDIS_SONAME)  SSL_DYLIB_MAJOR_NAME=$(SSL_LIBNAME).$(DYLIBSUFFIX).$(HIREDIS_MAJOR)  SSL_DYLIBNAME=$(SSL_LIBNAME).$(DYLIBSUFFIX)  SSL_STLIBNAME=$(SSL_LIBNAME).$(STLIBSUFFIX)  SSL_DYLIB_MAKE_CMD=$(CC) -shared -Wl,-soname,$(SSL_DYLIB_MINOR_NAME) +USE_SSL?=0 +ifeq ($(USE_SSL),1) +  # This is required for test.c only +  CFLAGS+=-DHIREDIS_TEST_SSL +  EXAMPLES+=hiredis-example-ssl hiredis-example-libevent-ssl +  SSL_STLIB=$(SSL_STLIBNAME) +  SSL_DYLIB=$(SSL_DYLIBNAME) +  SSL_PKGCONF=$(SSL_PKGCONFNAME) +  SSL_INSTALL=$(SSL_INSTALLNAME) +else +  SSL_STLIB= +  SSL_DYLIB= +  SSL_PKGCONF= +  SSL_INSTALL= +endif +##################### SSL variables end ##################### + +  # Platform-specific overrides  uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') -USE_SSL?=0 -  # This is required for test.c only -ifeq ($(USE_SSL),1) -  export CFLAGS+=-DHIREDIS_TEST_SSL -endif  ifeq ($(TEST_ASYNC),1)    export CFLAGS+=-DHIREDIS_TEST_ASYNC  endif @@ -121,10 +133,13 @@ ifeq ($(uname_S),Darwin)    DYLIB_PLUGIN=-Wl,-undefined -Wl,dynamic_lookup  endif -all: $(DYLIBNAME) $(STLIBNAME) hiredis-test $(PKGCONFNAME) -ifeq ($(USE_SSL),1) -all: $(SSL_DYLIBNAME) $(SSL_STLIBNAME) $(SSL_PKGCONFNAME) -endif +all: dynamic static hiredis-test pkgconfig + +dynamic: $(DYLIBNAME) $(SSL_DYLIB) + +static: $(STLIBNAME) $(SSL_STLIB) + +pkgconfig: $(PKGCONFNAME) $(SSL_PKGCONF)  # Deps (use make dep to generate this)  alloc.o: alloc.c fmacros.h alloc.h @@ -135,7 +150,6 @@ net.o: net.c fmacros.h net.h hiredis.h read.h sds.h alloc.h sockcompat.h win32.h  read.o: read.c fmacros.h alloc.h read.h sds.h win32.h  sds.o: sds.c sds.h sdsalloc.h alloc.h  sockcompat.o: sockcompat.c sockcompat.h -ssl.o: ssl.c hiredis.h read.h sds.h alloc.h async.h win32.h async_private.h  test.o: test.c fmacros.h hiredis.h read.h sds.h alloc.h net.h sockcompat.h win32.h  $(DYLIBNAME): $(OBJ) @@ -144,18 +158,15 @@ $(DYLIBNAME): $(OBJ)  $(STLIBNAME): $(OBJ)  	$(STLIB_MAKE_CMD) $(STLIBNAME) $(OBJ) +#################### SSL building rules start ####################  $(SSL_DYLIBNAME): $(SSL_OBJ)  	$(SSL_DYLIB_MAKE_CMD) $(DYLIB_PLUGIN) -o $(SSL_DYLIBNAME) $(SSL_OBJ) $(REAL_LDFLAGS) $(LDFLAGS) $(SSL_LDFLAGS)  $(SSL_STLIBNAME): $(SSL_OBJ)  	$(STLIB_MAKE_CMD) $(SSL_STLIBNAME) $(SSL_OBJ) -dynamic: $(DYLIBNAME) -static: $(STLIBNAME) -ifeq ($(USE_SSL),1) -dynamic: $(SSL_DYLIBNAME) -static: $(SSL_STLIBNAME) -endif +$(SSL_OBJ): ssl.c hiredis.h read.h sds.h alloc.h async.h win32.h async_private.h +#################### SSL building rules end ####################  # Binaries:  hiredis-example-libevent: examples/example-libevent.c adapters/libevent.h $(STLIBNAME) @@ -219,11 +230,8 @@ hiredis-example-push: examples/example-push.c $(STLIBNAME)  examples: $(EXAMPLES) -TEST_LIBS = $(STLIBNAME) -ifeq ($(USE_SSL),1) -    TEST_LIBS += $(SSL_STLIBNAME) -    TEST_LDFLAGS = $(SSL_LDFLAGS) -lssl -lcrypto -lpthread -endif +TEST_LIBS = $(STLIBNAME) $(SSL_STLIB) +TEST_LDFLAGS = $(SSL_LDFLAGS) -lssl -lcrypto -lpthread  ifeq ($(TEST_ASYNC),1)      TEST_LDFLAGS += -levent  endif @@ -278,7 +286,7 @@ $(SSL_PKGCONFNAME): hiredis_ssl.h  	@echo Libs: -L\$${libdir} -lhiredis_ssl >> $@  	@echo Libs.private: -lssl -lcrypto >> $@ -install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME) +install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME) $(SSL_INSTALL)  	mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_INCLUDE_PATH)/adapters $(INSTALL_LIBRARY_PATH)  	$(INSTALL) hiredis.h async.h read.h sds.h alloc.h $(INSTALL_INCLUDE_PATH)  	$(INSTALL) adapters/*.h $(INSTALL_INCLUDE_PATH)/adapters @@ -288,9 +296,6 @@ install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)  	mkdir -p $(INSTALL_PKGCONF_PATH)  	$(INSTALL) $(PKGCONFNAME) $(INSTALL_PKGCONF_PATH) -ifeq ($(USE_SSL),1) -install: install-ssl -  install-ssl: $(SSL_DYLIBNAME) $(SSL_STLIBNAME) $(SSL_PKGCONFNAME)  	mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_LIBRARY_PATH)  	$(INSTALL) hiredis_ssl.h $(INSTALL_INCLUDE_PATH) @@ -299,7 +304,6 @@ install-ssl: $(SSL_DYLIBNAME) $(SSL_STLIBNAME) $(SSL_PKGCONFNAME)  	$(INSTALL) $(SSL_STLIBNAME) $(INSTALL_LIBRARY_PATH)  	mkdir -p $(INSTALL_PKGCONF_PATH)  	$(INSTALL) $(SSL_PKGCONFNAME) $(INSTALL_PKGCONF_PATH) -endif  32bit:  	@echo "" | 
