blob: 222bbdf6bfbec252c48e49fa2dab4bbc6193a85e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# Copyright 2015 Luke Shumaker
_golang_cgo_variables = CGO_ENABLED CGO_CFLAGS CGO_CPPFLAGS CGO_CXXFLAGS CGO_LDFLAGS CC CXX
export $(_golang_cgo_variables)
_golang_src_cmd = find -L $1/src -name '.*' -prune -o \( -type f \( -false $(foreach e,go c s S cc cpp cxx h hh hpp hxx,-o -name '*.$e') \) -o -type d \) -print
# Iterate over external dependencies, and create a rule to download it
goget = $(foreach d,$2,$(eval $1/src/$d: $(NET); GOPATH='$(abspath $1)' go get -d -u $d))
#|| { rm -rf -- $$@; false; }))
gosrc = $(shell $(_golang_src_cmd)) $(addprefix .var.,$(_golang_cgo_variables))
define goinstall
$(Q)for target in $(addprefix $1/bin/,$(notdir $2)); do \
if test -e $$target; then \
for dep in $(filter .var.%,$^); do \
if test $$dep -nt $$target; then \
rm -rf -- $1/bin $1/pkg || exit $$?; \
exit 0; \
fi \
done \
fi \
done
GOPATH='$(abspath $1)' go install $2
$(Q)true $(foreach e,$(notdir $2), && test -f $1/bin/$e -a -x $1/bin/$e && touch $1/bin/$e)
endef
|