Integrate first QUIC protocol implementation
[vpp.git] / build / external / packages.mk
index 4056b2f..d1126db 100644 (file)
@@ -31,12 +31,12 @@ $1_install_log ?= $(B)/$1.install.log
 downloads/$($1_tarball):
        mkdir -p downloads
        @if [ -e $(DL_CACHE_DIR)/$($1_tarball) ] ; \
-               then cp $(DL_CACHE_DIR)/$($1_tarball) downloads/ ; \
+               then cp $(DL_CACHE_DIR)/$($1_tarball) $$@ ; \
        else \
                echo "Downloading $($1_url)" ; \
-               curl -o downloads/$($1_tarball) -LO $($1_url) ; \
+               curl -o $$@ -LO $($1_url) ; \
        fi
-       @rm -f $(B)/.download.ok
+       @rm -f $(B)/.$1.download.ok
 
 $(B)/.$1.download.ok: downloads/$($1_tarball)
        @mkdir -p $(B)
@@ -71,10 +71,40 @@ $(B)/.$1.extract.ok: $(B)/.$1.download.ok
 .PHONY: $1-extract
 $1-extract: $(B)/.$1.extract.ok
 
+##############################################################################
+# Git clone & checkout
+##############################################################################
+
+$(B)/.$1.clone.ok:
+       $$(call h1,"Cloning $1 $($1_repository)")
+       @mkdir -p $$($1_src_dir)
+       @git clone --recursive $$($1_repository) $$($1_src_dir)
+ifneq ($$($1_version),)
+       $$(call h1,"Checking out $1 $($1_version)")
+       cd $$($1_src_dir) && git -c advice.detachedHead=false checkout $$($1_version)
+       cd $$($1_src_dir) && git submodule update --init
+endif
+       @touch $$@
+
+.PHONY: $1-clone
+$1-clone: $(B)/.$1.clone.ok
+
+##############################################################################
+# Fetch source : clone or extract
+##############################################################################
+
+ifeq ($$($1_repository),)
+$(B)/.$1.fetchsrc.ok: $(B)/.$1.extract.ok
+       @touch $$@
+else
+$(B)/.$1.fetchsrc.ok: $(B)/.$1.clone.ok
+       @touch $$@
+endif
+
 ##############################################################################
 # Patch
 ##############################################################################
-$(B)/.$1.patch.ok: $(B)/.$1.extract.ok
+$(B)/.$1.patch.ok: $(B)/.$1.fetchsrc.ok
        $$(call h1,"patching $1 $($1_version)")
 ifneq ($$(wildcard $$($1_patch_dir)/*.patch),)
        @for f in $$($1_patch_dir)/*.patch ; do \