comparison Makefile @ 0:6884bb8130ca

Initial revision
author Guido Berhoerster <guido+pui@berhoerster.name>
date Sun, 20 May 2018 11:32:57 +0200
parents
children 2f04ec9e0506
comparison
equal deleted inserted replaced
-1:000000000000 0:6884bb8130ca
1 #
2 # Copyright (C) 2018 Guido Berhoerster <guido+pui@berhoerster.name>
3 #
4 # Permission is hereby granted, free of charge, to any person obtaining
5 # a copy of this software and associated documentation files (the
6 # "Software"), to deal in the Software without restriction, including
7 # without limitation the rights to use, copy, modify, merge, publish,
8 # distribute, sublicense, and/or sell copies of the Software, and to
9 # permit persons to whom the Software is furnished to do so, subject to
10 # the following conditions:
11 #
12 # The above copyright notice and this permission notice shall be included
13 # in all copies or substantial portions of the Software.
14 #
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 #
23
24 PACKAGE = package-update-indicator
25 APPLICATION_ID = org.guido-berhoerster.code.package-update-indicator
26 VERSION = 1
27 DISTNAME = $(PACKAGE)-$(VERSION)
28 AUTHOR = Guido Berhoerster
29 BUG_ADDRESS = guido+pui@berhoerster.name
30
31 # gcc, clang, icc, Sun/Solaris Studio
32 CC := $(CC) -std=c99
33 COMPILE.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(TARGET_ARCH) -c
34 # gcc, clang, icc
35 MAKEDEPEND.c = $(CC) -MM $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS)
36 # Sun/Solaris Studio
37 #MAKEDEPEND.c = $(CC) -xM1 $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS)
38 # X makedepend
39 #MAKEDEPEND.c = makedepend -f- -Y -- $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) --
40 LINK.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH)
41 LINK.o = $(CC) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH)
42 CP := cp
43 INSTALL := install
44 INSTALL.exec := $(INSTALL) -D -m 0755
45 INSTALL.data := $(INSTALL) -D -m 0644
46 INSTALL.link := $(CP) -f -P
47 PAX := pax
48 GZIP := gzip
49 SED := sed
50 GLIB_COMPILE_SCHEMAS := $(shell pkg-config --variable=glib_compile_schemas gio-2.0)
51 XSLTPROC := xsltproc
52 DOCBOOK5_MANPAGES_STYLESHEET = http://docbook.sourceforge.net/release/xsl-ns/current/manpages/docbook.xsl
53 DOCBOOK5_MANPAGES_FLAGS = --stringparam man.authors.section.enabled 0 \
54 --stringparam man.copyright.section.enabled 0
55 MSGFMT = msgfmt
56 MSGMERGE = msgmerge
57 XGETTEXT = xgettext
58 XGETTEXT_OPTIONS = --copyright-holder "$(AUTHOR)" \
59 --package-name '$(PACKAGE)' \
60 --package-version '$(VERSION)' \
61 --msgid-bugs-address '$(BUG_ADDRESS)' \
62 --default-domain '$(PACKAGE)' \
63 --from-code UTF-8 \
64 --keyword=_ \
65 --keyword=N_ \
66 --keyword=C_:1c,2 \
67 --keyword=NC_:1c,2 \
68 --keyword=g_dngettext:2,3 \
69 --add-comments
70
71 define generate-manpage-rule =
72 %.$1: %.$(addsuffix .xml,$1) docbook-update-source-data.xsl
73 $$(XSLTPROC) \
74 --xinclude \
75 --stringparam package $$(PACKAGE) \
76 --stringparam version $$(VERSION) \
77 docbook-update-source-data.xsl $$< | \
78 $$(XSLTPROC) \
79 --xinclude \
80 --output $$@ \
81 $$(DOCBOOK5_MANPAGES_FLAGS) \
82 $$(DOCBOOK5_MANPAGES_STYLESHEET) \
83 -
84 endef
85
86 DESTDIR ?=
87 prefix ?= /usr/local
88 bindir ?= $(prefix)/bin
89 datadir ?= $(prefix)/share
90 mandir ?= $(datadir)/man
91 localedir ?= $(datadir)/locale
92 sysconfdir ?= /etc
93 xdgautostartdir ?= $(sysconfdir)/xdg/autostart
94
95 OS_NAME := $(shell uname -s)
96 OS_RELEASE := $(shell uname -r)
97
98 OBJS = package-update-indicator.o \
99 pui-application.o \
100 pui-backend.o \
101 pui-get-updates.o \
102 pui-types.o
103
104 GSETTINGS_SCHEMAS = $(APPLICATION_ID).gschema.xml
105
106 AUTOSTART_FILES = $(APPLICATION_ID).desktop
107
108 LINGUAS := $(shell sed 's/\#.*//' po/LINGUAS)
109 MOFILES := $(patsubst %,po/%.mo,$(LINGUAS))
110 POTFILES_IN := $(shell sed 's/\#.*//' po/POTFILES.in)
111 POTFILE = po/$(PACKAGE).pot
112
113 MANPAGES = $(PACKAGE).1
114
115 .DEFAULT_TARGET = all
116
117 .PHONY: all pot update-po clean clobber dist install
118
119 all: $(PACKAGE) $(AUTOSTART_FILES) $(MOFILES) $(MANPAGES)
120
121 $(PACKAGE): XCPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" \
122 -DAPPLICATION_ID=\"$(APPLICATION_ID)\" \
123 -DVERSION=\"$(VERSION)\" \
124 -DG_LOG_DOMAIN=\"$(PACKAGE)\" \
125 -DPACKAGE_LOCALE_DIR="\"$(localedir)\"" \
126 -DGETTEXT_PACKAGE=\"$(PACKAGE)\" \
127 -DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE
128 $(PACKAGE): XCFLAGS = $(shell pkg-config --cflags gtk+-3.0 \
129 appindicator3-0.1 packagekit-glib2)
130 $(PACKAGE): LDLIBS = $(shell pkg-config --libs gtk+-3.0 \
131 appindicator3-0.1 packagekit-glib2)
132
133 ifneq ($(findstring $(OS_NAME),FreeBSD DragonFly OpenBSD),)
134 $(PACKAGE): XCPPFLAGS += -I/usr/local/include
135 $(PACKAGE): XLDFLAGS += -L/usr/local/lib
136 else ifeq ($(OS_NAME),NetBSD)
137 $(PACKAGE): XCPPFLAGS += -I/usr/pkg/include
138 $(PACKAGE): XLDFLAGS += -L/usr/pkg/lib
139 endif
140 ifeq ($(findstring $(OS_NAME),FreeBSD DragonFly NetBSD OpenBSD),)
141 $(PACKAGE): XCPPFLAGS += -D_XOPEN_SOURCE=600
142 endif
143
144 $(PACKAGE): $(OBJS)
145 $(LINK.o) $^ $(LDLIBS) -o $@
146
147 $(POTFILE): po/POTFILES.in $(POTFILES_IN)
148 $(XGETTEXT) $(XGETTEXT_OPTIONS) --files-from $< --output $@
149
150 pot: $(POTFILE)
151
152 update-po: $(POTFILE)
153 for pofile in $(patsubst %.mo,%.po,$(MOFILES)); do \
154 $(MSGMERGE) --update --backup off $$pofile $<; \
155 done
156
157 %.mo: %.po
158 $(MSGFMT) --output $@ $<
159
160 %.desktop: %.desktop.in
161 $(MSGFMT) --desktop --template $< -d po --output $@
162
163 $(foreach section,1 2 3 4 5 6 7 8 9,$(eval $(call generate-manpage-rule,$(section))))
164
165 %.o: %.c
166 $(MAKEDEPEND.c) $< | $(SED) -f deps.sed >$*.d
167 $(COMPILE.c) -o $@ $<
168
169 install: all
170 $(INSTALL.exec) $(PACKAGE) "$(DESTDIR)$(bindir)/$(PACKAGE)"
171 for schema in $(GSETTINGS_SCHEMAS); do \
172 $(INSTALL.data) $${schema} \
173 $(DESTDIR)$(datadir)/glib-2.0/schemas/$${schema}; \
174 done
175 [ -n "$(GSETTINGS_SCHEMAS)" ] && \
176 $(GLIB_COMPILE_SCHEMAS) $(datadir)/glib-2.0/schemas
177 for desktop_file in $(AUTOSTART_FILES); do \
178 $(INSTALL.data) $${desktop_file} \
179 $(DESTDIR)$(xdgautostartdir)/$${desktop_file}; \
180 done
181 for lang in $(LINGUAS); do \
182 $(INSTALL.data) po/$${lang}.mo \
183 $(DESTDIR)$(localedir)/$${lang}/LC_MESSAGES/$(PACKAGE).mo; \
184 done
185 for manpage in $(MANPAGES); do \
186 $(INSTALL.data) $${manpage} \
187 "$(DESTDIR)$(mandir)/man$${manpage##*.}/$${manpage##*/}"; \
188 done
189
190 clean:
191 rm -f $(PACKAGE) $(OBJS) $(AUTOSTART_FILES) $(POTFILE) $(MOFILES) \
192 $(MANPAGES)
193
194 clobber: clean
195 rm -f $(patsubst %.o,%.d,$(OBJS))
196
197 dist: clobber
198 $(PAX) -w -x ustar -s ',.*/\..*,,' -s ',./[^/]*\.tar\.gz,,' \
199 -s ',^\.$$,,' -s ',\./,$(DISTNAME)/,' . | \
200 $(GZIP) > $(DISTNAME).tar.gz
201
202 -include local.mk
203
204 -include $(patsubst %.o,%.d,$(OBJS))