-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
129 lines (104 loc) · 4.01 KB
/
Copy pathMakefile
File metadata and controls
129 lines (104 loc) · 4.01 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
######################################################################
# Copyright 2006, 2014 The University of British Columbia and Derek Poon
# Released under the Mozilla Public License v2.0.
#
# GNU Makefile for RT Ticket Manager extension. For a fancier Makefile, see
# http://kb.mozillazine.org/Makefile_for_packaging_an_extension
######################################################################
# When changing these metadata, be sure to edit install.rdf accordingly
PROJECT = rtticket
include Version.mak
VERSION = $(VER_MAJOR)$(if \
$(VER_MINOR),.$(VER_MINOR),)$(if \
$(VER_PATCH),.$(VER_PATCH),)
NAME = Request Tracker Ticket Manager
RELEASE_BASE_DIR = ~/etc/src/mozapps
RELEASE_DIR = $(RELEASE_BASE_DIR)/$(PROJECT)
RELEASE_BASE_URL = https://www.ece.ubc.ca/~derekp/mozapps/
RELEASE_URL = $(RELEASE_BASE_URL)/$(PROJECT)
HOMEPAGE = $(RELEASE_URL)/
BUILD_DIR = build
PERL = perl
JAR = zip -9
BUILD_XPI = $(BUILD_DIR)/$(PROJECT).xpi
RELEASE_XPI = $(RELEASE_DIR)/$(PROJECT)-$(VERSION).xpi
UPDATE_RDF = $(RELEASE_BASE_DIR)/update.rdf
JAR_CONTENTS := $(shell find content locale skin -type f)
STATIC_XPI_CONTENTS = \
chrome.manifest \
defaults/preferences/$(PROJECT).js \
$(NULL)
XPI_CONTENTS = \
install.rdf \
chrome/$(PROJECT).jar \
$(STATIC_XPI_CONTENTS) \
$(NULL)
all: $(BUILD_XPI)
$(BUILD_XPI): $(XPI_CONTENTS:%=$(BUILD_DIR)/%)
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
( cd '$(BUILD_DIR)' && $(JAR) - $(XPI_CONTENTS) ) > '$@'
$(BUILD_DIR)/install.rdf: Version.mak Makefile install.rdf.in
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
sed -e 's/\$$(PROJECT)/$(subst /,\/,$(PROJECT))/g' \
-e 's/\$$(VERSION)/$(subst /,\/,$(VERSION))/g' \
-e 's/\$$(NAME)/$(subst /,\/,$(NAME))/g' \
-e 's/\$$(RELEASE_BASE_DIR)/$(subst /,\/,$(RELEASE_BASE_DIR))/g' \
-e 's/\$$(RELEASE_DIR)/$(subst /,\/,$(RELEASE_DIR))/g' \
-e 's/\$$(RELEASE_BASE_URL)/$(subst /,\/,$(RELEASE_BASE_URL))/g' \
-e 's/\$$(RELEASE_URL)/$(subst /,\/,$(RELEASE_URL))/g' \
-e 's/\$$(HOMEPAGE)/$(subst /,\/,$(HOMEPAGE))/g' \
< install.rdf.in > '$@'
$(BUILD_DIR)/chrome/$(PROJECT).jar: content/$(PROJECT)/release.dtd $(JAR_CONTENTS)
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
$(JAR) - $+ > '$@'
content/$(PROJECT)/release.dtd: Version.mak Makefile
( \
echo "<!ENTITY release.project \"$(PROJECT)\">" ; \
echo "<!ENTITY release.version \"$(VERSION)\">" ; \
echo "<!ENTITY release.name \"$(NAME)\">" ; \
echo "<!ENTITY release.homepage \"$(HOMEPAGE)\">" ; \
) > '$@'
$(STATIC_XPI_CONTENTS:%=$(BUILD_DIR)/%): $(BUILD_DIR)/%: %
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
cp '$<' '$@'
.PHONY: clean
clean:
@if [ -e '$(BUILD_DIR)' ]; then \
echo rm -rf '$(BUILD_DIR)' ; \
rm -rf '$(BUILD_DIR)' ; \
fi
.PHONY: release release-major release-minor release-patch release-files
RELEASE_FILES = $(RELEASE_XPI) $(UPDATE_RDF)
release:
@echo 'Invoke as "make release-patch", "make release-minor", or "make release-major"'
release-major:
( \
echo VER_MAJOR = $(shell echo '0$(VER_MAJOR)' + 1 | bc ) ; \
echo VER_MINOR = 0 ; \
echo VER_PATCH = ; \
) > Version.mak
$(MAKE) release-files
release-minor:
( \
echo VER_MAJOR = $(VER_MAJOR) ; \
echo VER_MINOR = $(shell echo '0$(VER_MINOR)' + 1 | bc ) ; \
echo VER_PATCH = ; \
) > Version.mak
$(MAKE) release-files
release-patch:
( \
echo VER_MAJOR = $(VER_MAJOR) ; \
echo VER_MINOR = $(VER_MINOR) ; \
echo VER_PATCH = $(shell echo '0$(VER_PATCH)' + 1 | bc ) ; \
) > Version.mak
$(MAKE) release-files
release-files:
$(MAKE) $(RELEASE_FILES)
$(RELEASE_XPI): $(BUILD_XPI)
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
cp '$<' '$@'
$(UPDATE_RDF): $(UPDATE_RDF).mason $(RELEASE_XPI) Version.mak
@if [ ! -d '$(@D)' ]; then mkdir -p '$(@D)' ; fi
@$(RM) '$@'
$(PERL) -MHTML::Mason::Interp -e 'HTML::Mason::Interp->new(comp_root => "$(<D)", data_dir => "$(if $(filter /%,$(BUILD_DIR)),$(BUILD_DIR),$(CURDIR)/$(BUILD_DIR))")->exec("/$(<F)", base_url => "$(RELEASE_BASE_URL)")' > '$@'
NULL =