Makefile 4.09 KB
Newer Older
1 2 3 4
# Minimum version numbers for software required to build IPFS
IPFS_MIN_GO_VERSION = 1.5.2
IPFS_MIN_GX_VERSION = 0.6
IPFS_MIN_GX_GO_VERSION = 1.1
5 6

ifeq ($(TEST_NO_FUSE),1)
7
  go_test=go test -tags nofuse
8
else
9
  go_test=go test
10 11
endif

12 13 14 15 16 17

gx_bin=bin/gx-v0.6.0
gx-go_bin=bin/gx-go-v1.1.0

# use things in our bin before any other system binaries
export PATH := bin:$(PATH)
18
export IPFS_API ?= v04x.ipfs.io
19

20
all: help
21 22 23 24

godep:
	go get github.com/tools/godep

25 26
toolkit_upgrade: gx_upgrade gxgo_upgrade

27
go_check:
28
	@bin/check_go_version $(IPFS_MIN_GO_VERSION)
29

30 31 32
bin/gx-%:
	@echo "installing gx $(@:bin/gx-%=%)"
	@bin/dist_get gx $@ $(@:bin/gx-%=%)
33

34 35 36 37 38 39 40
bin/gx-go-%:
	@echo "installing gx-go $(@:bin/gx-go-%=%)"
	@bin/dist_get gx-go $@ $(@:bin/gx-go-%=%)
	rm -f bin/gx-go
	ln -s $(@:bin/%=%) bin/gx-go

gx_check: ${gx_bin} ${gx-go_bin}
41

42
path_check:
43
	@bin/check_go_path $(realpath $(shell pwd)) $(realpath $(GOPATH)/src/github.com/ipfs/go-ipfs)
44

Jeromy's avatar
Jeromy committed
45
deps: go_check gx_check path_check
46
	${gx_bin} --verbose install --global
47

48 49 50 51 52
# saves/vendors third-party dependencies to Godeps/_workspace
# -r flag rewrites import paths to use the vendored path
# ./... performs operation on all packages in tree
vendor: godep
	godep save -r ./...
53

54
install: deps
Kevin Atkinson's avatar
Kevin Atkinson committed
55
	make -C cmd/ipfs install
56

Jeromy's avatar
Jeromy committed
57
build: deps
Kevin Atkinson's avatar
Kevin Atkinson committed
58
	make -C cmd/ipfs build
59

Jeromy's avatar
Jeromy committed
60
nofuse: deps
Kevin Atkinson's avatar
Kevin Atkinson committed
61
	make -C cmd/ipfs nofuse
Henry's avatar
Henry committed
62

63
clean:
Kevin Atkinson's avatar
Kevin Atkinson committed
64
	make -C cmd/ipfs clean
65 66

uninstall:
Kevin Atkinson's avatar
Kevin Atkinson committed
67
	make -C cmd/ipfs uninstall
68

69
PHONY += all help godep toolkit_upgrade gx_check
70
PHONY += go_check deps vendor install build nofuse clean uninstall
71

72 73 74
##############################################################
# tests targets

75
test: test_expensive
76

77
test_short: build test_go_short test_sharness_short
78

79
test_expensive: build test_go_expensive test_sharness_expensive windows_build_check
80

81 82
test_3node:
	cd test/3nodetest && make
Brian Tiger Chow's avatar
Brian Tiger Chow committed
83

84
test_go_short:
85
	$(go_test) -test.short ./...
86 87

test_go_expensive:
88
	$(go_test) ./...
89

Brian Tiger Chow's avatar
Brian Tiger Chow committed
90
test_go_race:
91
	$(go_test) ./... -race
Brian Tiger Chow's avatar
Brian Tiger Chow committed
92

93
test_sharness_short:
94
	cd test/sharness/ && make
95 96

test_sharness_expensive:
97
	cd test/sharness/ && TEST_EXPENSIVE=1 make
98 99 100 101 102 103

test_all_commits:
	@echo "testing all commits between origin/master..HEAD"
	@echo "WARNING: this will 'git rebase --exec'."
	@test/bin/continueyn
	GIT_EDITOR=true git rebase -i --exec "make test" origin/master
104 105 106 107 108 109 110 111

test_all_commits_travis:
	# these are needed because travis.
	# we don't use this yet because it takes way too long.
	git config --global user.email "nemo@ipfs.io"
	git config --global user.name "IPFS BOT"
	git fetch origin master:master
	GIT_EDITOR=true git rebase -i --exec "make test" master
112 113 114

# since we have CI for osx and linux but not windows, this should help
windows_build_check:
115
	GOOS=windows GOARCH=amd64 go build -o .test.ipfs.exe ./cmd/ipfs
116
	rm .test.ipfs.exe
117 118 119 120 121 122 123 124 125

PHONY += test test_short test_expensive

##############################################################
# A semi-helpful help message

help:
	@echo 'DEPENDENCY TARGETS:'
	@echo ''
126 127 128
	@echo '  toolkit_upgrade - Installs or upgrades gx'
	@echo '  deps            - Download dependencies using gx'
	@echo '  vendor          - Create a Godep workspace of 3rd party dependencies'
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
	@echo ''
	@echo 'BUILD TARGETS:'
	@echo ''
	@echo '  all          - print this help message'
	@echo '  build        - Build binary at ./cmd/ipfs/ipfs'
	@echo '  nofuse       - Build binary with no fuse support'
	@echo '  install      - Build binary and install into $$GOPATH/bin'
#	@echo '  dist_install - TODO: c.f. ./cmd/ipfs/dist/README.md'
	@echo ''
	@echo 'CLEANING TARGETS:'
	@echo ''
	@echo '  clean        - Remove binary from build directory'
	@echo '  uninstall    - Remove binary from $$GOPATH/bin'
	@echo ''
	@echo 'TESTING TARGETS:'
	@echo ''
	@echo '  test                    - Run expensive tests and Window$$ check'
	@echo '  test_short              - Run short tests and sharness tests'
	@echo '  test_expensive          - Run a few extras'
	@echo '  test_3node'
	@echo '  test_go_short'
	@echo '  test_go_expensive'
	@echo '  test_go_race'
	@echo '  test_sharness_short'
	@echo '  test_sharness_expensive'
	@echo '  test_all_commits'
	@echo "  test_all_commits_travis - DON'T USE: takes way too long"
	@echo '  windows_build_check'
	@echo ''

PHONY += help

.PHONY: $(PHONY)