prometheus/Makefile.TRAVIS
Matt T. Proud 3e97a3630d Include nascent curator scaffolding.
The curator doesn't do anything yet; rather, this is the type
definition including the anciliary testing scaffold.

Improve Makefile and Git developer experience.

The top-level Makefile was a bit overloaded in terms of generation of
assets and their management.  This has been offloaded into separate
Makefiles.

The Git developer experience sucked due to lack of .gitignore
policies.

Also: Fix faulty skiplist naming from old merge.
2013-03-25 19:38:14 +01:00

193 lines
5.2 KiB
Makefile

# Copyright 2013 Prometheus Team
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
GO_VERSION := 1.0.3
LEVELDB_VERSION := 1.7.0
PROTOCOL_BUFFERS_VERSION := 2.4.1
SNAPPY_VERSION := 1.0.5
OVERLAY_ROOT := ${HOME}/overlay_root
export PATH := $(PATH):$(OVERLAY_ROOT)/bin
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(OVERLAY_ROOT)/lib
export CFLAGS := $(CFLAGS) -I$(OVERLAY_ROOT)/include
export CXXFLAGS := $(CXXFLAGS) -I$(OVERLAY_ROOT)/include
export CPPFLAGS := $(CPPFLAGS) -I$(OVERLAY_ROOT)/include
export LDFLAGS := $(LDFLAGS) -L$(OVERLAY_ROOT)/lib
export CGO_CFLAGS := $(CFLAGS) -lsnappy
export CGO_LDFLAGS := $(LDFLAGS)
GO_GET := go get -u -v -x
APT_GET_INSTALL := sudo apt-get install -y
WGET := wget -c
all: test
preparation: preparation-stamp
preparation-stamp: build-dependencies
touch $@
build-dependencies: build-dependencies-stamp
build-dependencies-stamp: bison cc go goprotobuf gorest goskiplist instrumentation leveldb levigo mercurial protoc
touch $@
overlay: overlay-stamp
overlay-stamp:
[ -d "$(OVERLAY_ROOT)" ] || mkdir -vp $(OVERLAY_ROOT)
touch $@
bison: bison-stamp
bison-stamp:
[ -x "$$(which bison)" ] || $(APT_GET_INSTALL) bison
cc: cc-stamp
cc-stamp:
[ -x "$$(which cc)" ] || $(APT_GET_INSTALL) build-essential
touch $@
go: go-stamp
go-stamp: bison
gvm install go$(GO_VERSION) || true
gvm use go$(GO_VERSION) || true
[ -x "$$(which go)" ]
touch $@
mercurial: mercurial-stamp
mercurial-stamp:
[ -x "$$(which hg)" ] || $(APT_GET_INSTALL) mercurial
touch $@
wget: wget-stamp
wget-stamp:
[ -x "$$(which wget)" ] || $(APT_GET_INSTALL) wget
touch $@
protobuf-$(PROTOCOL_BUFFERS_VERSION).tar.bz2: wget
$(WGET) http://protobuf.googlecode.com/files/$@
protoc: protoc-stamp
protoc-stamp: cc protobuf-$(PROTOCOL_BUFFERS_VERSION).tar.bz2 overlay
([ ! -x "$$(which protoc)" ] && tar xjvf protobuf-$(PROTOCOL_BUFFERS_VERSION).tar.bz2) || true
([ ! -x "$$(which protoc)" ] && cd protobuf-$(PROTOCOL_BUFFERS_VERSION) && ./configure --prefix="$(OVERLAY_ROOT)") || true
([ ! -x "$$(which protoc)" ] && $(MAKE) -C protobuf-$(PROTOCOL_BUFFERS_VERSION)) || true
([ ! -x "$$(which protoc)" ] && $(MAKE) -C protobuf-$(PROTOCOL_BUFFERS_VERSION) install) || true
[ -x "$$(which protoc)" ]
touch $@
gorest: gorest-stamp
gorest-stamp: go source
$(GO_GET) code.google.com/p/gorest
touch $@
goprotobuf: goprotobuf-stamp
goprotobuf-stamp: go protoc source
$(GO_GET) code.google.com/p/goprotobuf/proto
$(GO_GET) code.google.com/p/goprotobuf/protoc-gen-go
touch $@
instrumentation: instrumentation-stamp
instrumentation-stamp: go source
$(GO_GET) github.com/prometheus/client_golang
touch $@
leveldb: leveldb-stamp
leveldb-stamp: cc rsync leveldb-$(LEVELDB_VERSION).tar.gz snappy overlay
tar xzvf leveldb-$(LEVELDB_VERSION).tar.gz
$(MAKE) -C leveldb-$(LEVELDB_VERSION)
rsync -av "leveldb-$(LEVELDB_VERSION)/include/" "$(OVERLAY_ROOT)/include/"
-rsync -av "leveldb-$(LEVELDB_VERSION)/"*.*so* "$(OVERLAY_ROOT)/lib/"
-rsync -av "leveldb-$(LEVELDB_VERSION)/"*.*dylib* "$(OVERLAY_ROOT)/lib/"
rsync -av "leveldb-$(LEVELDB_VERSION)/"*.a "$(OVERLAY_ROOT)/lib/"
touch $@
leveldb-$(LEVELDB_VERSION).tar.gz: wget
$(WGET) http://leveldb.googlecode.com/files/leveldb-$(LEVELDB_VERSION).tar.gz
levigo: levigo-stamp
levigo-stamp: leveldb go snappy source
$(GO_GET) github.com/jmhodges/levigo
touch $@
goskiplist: goskiplist-stamp
goskiplist-stamp: go source
$(GO_GET) github.com/ryszard/goskiplist/skiplist
touch $@
rsync: rsync-stamp
rsync-stamp:
[ -x "$$(which rsync)" ] || $(APT_GET_INSTALL) rsync
vim-common: vim-common-stamp
vim-common-stamp:
$(APT_GET_INSTALL) vim-common
touch $@
test: test-stamp
test-stamp: preparation source
cd ${GOPATH}/src/github.com/prometheus
$(MAKE) build
$(MAKE) test
touch $@
snappy-$(SNAPPY_VERSION).tar.gz: wget
$(WGET) http://snappy.googlecode.com/files/snappy-$(SNAPPY_VERSION).tar.gz
tar xzvf snappy-$(SNAPPY_VERSION).tar.gz
cd snappy-$(SNAPPY_VERSION) && ./configure --prefix="$(OVERLAY_ROOT)"
$(MAKE) -C snappy-$(SNAPPY_VERSION)
$(MAKE) -C snappy-$(SNAPPY_VERSION) install
snappy: snappy-stamp
tar xzvf snappy-$(SNAPPY_VERSION).tar.gz
snappy-stamp: cc overlay rsync snappy-$(SNAPPY_VERSION).tar.gz
touch $@
source: source-stamp
source-stamp:
-mkdir -vp ${GOPATH}/src/github.com/prometheus
ln -sf $${PWD} ${GOPATH}/src/github.com/prometheus/prometheus
touch $@
clean:
-rm *-stamp
-rm -rf "$(OVERLAY_ROOT)"
-rm -rf leveldb-$(LEVELDB_VERSION)
-rm -rf protobuf-$(PROTOCOL_BUFFERS_VERSION)
-rm -rf snappy-$(SNAPPY_VERSION)
-rm leveldb-$(LEVELDB_VERSION).tar.gz
-rm protobuf-$(PROTOCOL_BUFFERS_VERSION).tar.bz2
-rm snappy-$(SNAPPY_VERSION).tar.gz
.PHONY: all bison build-dependencies cc clean go goprotobuf gorest instrumentation leveldb levigo mercurial overlay preparation protoc rsync snappy source test wget vim-common