-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
111 lines (77 loc) · 2.32 KB
/
Makefile
File metadata and controls
111 lines (77 loc) · 2.32 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
BUILD := .build/
DIR := $(CURDIR)
BASE := $(shell cd $(DIR);pwd)
HOST := $(shell hostname|tr '.' '-')
ENV_NAME ?= $(shell [ -n "$$ENV_NAME" ] && echo $$ENV_NAME || echo development)
# See GIT versioning project for more complete PROJECT heuristic
ifneq ($(wildcard package.yml package.yaml),)
PROJECT := $(shell grep '^main: ' $(wildcard package.yml package.yaml) | sed 's/^main: //' )
endif
ifeq ($(PROJECT),)
PROJECT := $(notdir $(BASE))
endif
#VERSION := $(./bin/cli-version version)
VERSION := 0.2.10-dev# git-versioning
$(info Version: $(VERSION))
#ID := git-versioning/0.0.16-master
#VERSION := $(patsubst $(PROJECT)/%,%,$(ID))
# BSD weirdness
echo = /bin/echo
# ------------ --
## Make internals
# make include search path
VPATH := . /
# make shell
SHELL := /bin/bash
# reset file extensions
# xxx for imlicit rules?
.SUFFIXES:
#.SUFFIXES: .rst .js .xhtml .mk .tex .pdf .list
.SUFFIXES: .rst .mk
# ------------ --
## Local setup
# name default target, dont set deps yet
default::
# preset DEFAULT based on environment/goals
include Makefile.default-goals
# global path/file lists
SRC :=
DMK :=
#already setMK :=
DEP :=
TRGT :=
STRGT := default usage stat build test install check clean info
CLN :=
TEST :=
INSTALL :=
relative = $(patsubst $(BASE)%,$(PROJECT):%,$1)
where-am-i = $(call relative,$(lastword $(MAKEFILE_LIST)))
# rules: return Rules files for each directory in $1
rules = $(foreach D,$1,\
$(wildcard \
$DRules.mk $D.Rules.mk \
$DRules.$(PROJECT).mk $D.Rules.$(PROJECT).mk \
$DRules.$(HOST).mk $D.Rules.$(HOST).mk))
# Include local rules
#
include $(call rules,$(DIR)/)
# pseudo targets are not files, don't check with OS
.PHONY: $(STRGT)
DEFAULT ?= usage
# ------------ --
## Main rules/deps
deps:: $(DMK) $(DEP)
default:: deps $(DEFAULT)
usage::
stat:: $(SRC)
build:: deps stat $(TRGT)
test:: deps stat $(TEST)
install:: deps stat $(INSTALL)
clean-dep::
rm -rf $(DEP)
clean:: .
rm -rf $(CLN)
info::
@echo "Id: $(PROJECT)/$(VERSION)"
@echo "Name: $(PROJECT)"
@echo "Version: $(VERSION)"