#############################################################
# Makefile to build  hiredis
# aferrari, 23 Mar 2017
#

TOPDIR=..
LIBNAME=hiredis
include $(TOPDIR)/Makefiles/Repo-defines.mk

HIREDIS_DIR=$(realpath $(TOPDIR)/Third-Party/cpp-libs/hiredis)

ifeq ($(BUILD),debug-gcov)
EXTRA_CFLAGS= -g -O0
else
EXTRA_CFLAGS= -O3
endif

HIREDIS_VER=0.14.0

# shared object version does not necessarily has the same version number of the package...
# indeed quite often the two version numbers are completely different:
HIREDIS_SOVER=0.14


.PHONY: all clean distclean

all:
	rm -rf hiredis-$(HIREDIS_VER)
	$(MKDIR) $(PRECOMPILED_DIR)
	tar -xvzf hiredis-$(HIREDIS_VER).tar.gz && \
		cd hiredis-$(HIREDIS_VER) &&  \
		CC=$(TOOLBIN)/gcc CXX=$(TOOLBIN)/g++ AR=$(TOOLBIN)/ar RANLIB=$(TOOLBIN)/ranlib \
		CFLAGS="-fPIC $(EMPIRIX_LDFLAGS) $(EXTRA_CFLAGS)" \
		LDFLAGS="-fPIC $(EMPIRIX_LDFLAGS) $(ADDITIONAL_RPATHS_LINKER_FLAGS)" \
		PATH=$(TOOLBIN):${PATH} \
		make && \
		mkdir -p ../$(BUILDID)/ &&\
		cp -fv libhiredis.so ../$(BUILDID)/libhiredis.so.$(HIREDIS_SOVER) && \
		cp -fv libhiredis.a ../$(BUILDID)/ && \
		mkdir -p ../include/hiredis/ && \
		cp -afrv hiredis.h async.h read.h sds.h adapters ../include/hiredis/
	# Unfortunately symbolic links are not allowed in Perforce, so we need to create them on-the-fly:
	$(LIBLINKS) $(PRECOMPILED_DIR)/*.so*

clean_build_intermediate_artifacts:
	rm -rf hiredis-$(HIREDIS_VER)
	
clean_build_outputs: clean
	rm -f $(BUILDID)/*.so*
	rm -f $(BUILDID)/*.a*

include $(TOPDIR)/Makefiles/ThirdPartyTargetHelpers.mk
