guido+pui@0: # guido+pui@0: # Copyright (C) 2018 Guido Berhoerster guido+pui@0: # guido+pui@0: # Permission is hereby granted, free of charge, to any person obtaining guido+pui@0: # a copy of this software and associated documentation files (the guido+pui@0: # "Software"), to deal in the Software without restriction, including guido+pui@0: # without limitation the rights to use, copy, modify, merge, publish, guido+pui@0: # distribute, sublicense, and/or sell copies of the Software, and to guido+pui@0: # permit persons to whom the Software is furnished to do so, subject to guido+pui@0: # the following conditions: guido+pui@0: # guido+pui@0: # The above copyright notice and this permission notice shall be included guido+pui@0: # in all copies or substantial portions of the Software. guido+pui@0: # guido+pui@0: # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, guido+pui@0: # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF guido+pui@0: # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. guido+pui@0: # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY guido+pui@0: # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, guido+pui@0: # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE guido+pui@0: # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. guido+pui@0: # guido+pui@0: guido+pui@0: PACKAGE = package-update-indicator guido+pui@0: APPLICATION_ID = org.guido-berhoerster.code.package-update-indicator guido+pui@1: PREFS_APPLICATION_ID = org.guido-berhoerster.code.package-update-indicator.preferences guido+pui@0: VERSION = 1 guido+pui@0: DISTNAME = $(PACKAGE)-$(VERSION) guido+pui@0: AUTHOR = Guido Berhoerster guido+pui@0: BUG_ADDRESS = guido+pui@berhoerster.name guido+pui@0: guido+pui@0: # gcc, clang, icc, Sun/Solaris Studio guido+pui@0: CC := $(CC) -std=c99 guido+pui@0: COMPILE.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(TARGET_ARCH) -c guido+pui@0: # gcc, clang, icc guido+pui@0: MAKEDEPEND.c = $(CC) -MM $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) guido+pui@0: # Sun/Solaris Studio guido+pui@0: #MAKEDEPEND.c = $(CC) -xM1 $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) guido+pui@0: # X makedepend guido+pui@0: #MAKEDEPEND.c = makedepend -f- -Y -- $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) -- guido+pui@0: LINK.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH) guido+pui@0: LINK.o = $(CC) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH) guido+pui@0: CP := cp guido+pui@0: INSTALL := install guido+pui@0: INSTALL.exec := $(INSTALL) -D -m 0755 guido+pui@0: INSTALL.data := $(INSTALL) -D -m 0644 guido+pui@0: INSTALL.link := $(CP) -f -P guido+pui@0: PAX := pax guido+pui@0: GZIP := gzip guido+pui@0: SED := sed guido+pui@0: GLIB_COMPILE_SCHEMAS := $(shell pkg-config --variable=glib_compile_schemas gio-2.0) guido+pui@1: GLIB_COMPILE_RESOURCES := $(shell pkg-config --variable=glib_compile_resources gio-2.0) guido+pui@10: GLIB_MKENUMS := $(shell pkg-config --variable=glib_mkenums glib-2.0) guido+pui@0: XSLTPROC := xsltproc guido+pui@0: DOCBOOK5_MANPAGES_STYLESHEET = http://docbook.sourceforge.net/release/xsl-ns/current/manpages/docbook.xsl guido+pui@0: DOCBOOK5_MANPAGES_FLAGS = --stringparam man.authors.section.enabled 0 \ guido+pui@0: --stringparam man.copyright.section.enabled 0 guido+pui@0: MSGFMT = msgfmt guido+pui@0: MSGMERGE = msgmerge guido+pui@0: XGETTEXT = xgettext guido+pui@0: XGETTEXT_OPTIONS = --copyright-holder "$(AUTHOR)" \ guido+pui@0: --package-name '$(PACKAGE)' \ guido+pui@0: --package-version '$(VERSION)' \ guido+pui@0: --msgid-bugs-address '$(BUG_ADDRESS)' \ guido+pui@0: --default-domain '$(PACKAGE)' \ guido+pui@0: --from-code UTF-8 \ guido+pui@0: --keyword=_ \ guido+pui@0: --keyword=N_ \ guido+pui@0: --keyword=C_:1c,2 \ guido+pui@0: --keyword=NC_:1c,2 \ guido+pui@0: --keyword=g_dngettext:2,3 \ guido+pui@0: --add-comments guido+pui@0: guido+pui@0: define generate-manpage-rule = guido+pui@0: %.$1: %.$(addsuffix .xml,$1) docbook-update-source-data.xsl guido+pui@0: $$(XSLTPROC) \ guido+pui@0: --xinclude \ guido+pui@0: --stringparam package $$(PACKAGE) \ guido+pui@0: --stringparam version $$(VERSION) \ guido+pui@0: docbook-update-source-data.xsl $$< | \ guido+pui@0: $$(XSLTPROC) \ guido+pui@0: --xinclude \ guido+pui@0: --output $$@ \ guido+pui@0: $$(DOCBOOK5_MANPAGES_FLAGS) \ guido+pui@0: $$(DOCBOOK5_MANPAGES_STYLESHEET) \ guido+pui@0: - guido+pui@0: endef guido+pui@0: guido+pui@0: DESTDIR ?= guido+pui@0: prefix ?= /usr/local guido+pui@0: bindir ?= $(prefix)/bin guido+pui@0: datadir ?= $(prefix)/share guido+pui@0: mandir ?= $(datadir)/man guido+pui@0: localedir ?= $(datadir)/locale guido+pui@0: sysconfdir ?= /etc guido+pui@0: xdgautostartdir ?= $(sysconfdir)/xdg/autostart guido+pui@1: xdgapplicationsdir ?= $(datadir)/applications guido+pui@0: guido+pui@0: OS_NAME := $(shell uname -s) guido+pui@0: OS_RELEASE := $(shell uname -r) guido+pui@0: guido+pui@1: $(PACKAGE)_OBJS = package-update-indicator.o \ guido+pui@0: pui-application.o \ guido+pui@0: pui-backend.o \ guido+pui@0: pui-get-updates.o \ guido+pui@1: pui-settings.o \ guido+pui@2: pui-types.o \ guido+pui@2: pui-resources.o guido+pui@0: guido+pui@1: $(PACKAGE)-prefs_OBJS = package-update-indicator-prefs.o \ guido+pui@1: pui-prefs-application.o \ guido+pui@1: pui-settings.o \ guido+pui@1: pui-prefs-resources.o guido+pui@1: guido+pui@1: OBJS = $($(PACKAGE)_OBJS) $($(PACKAGE)-prefs_OBJS) guido+pui@1: guido+pui@10: ENUM_DEPS = pui-backend.h \ guido+pui@10: pui-application.h guido+pui@10: guido+pui@10: ENUM_HEADER = pui-types.h guido+pui@10: guido+pui@10: ENUM_FILES = $(ENUM_HEADER) \ guido+pui@10: pui-types.c guido+pui@10: guido+pui@0: GSETTINGS_SCHEMAS = $(APPLICATION_ID).gschema.xml guido+pui@0: guido+pui@1: GRESOURCE_FILES = pui-prefs.gresource.xml guido+pui@1: guido+pui@1: AUTOSTART_FILE = $(APPLICATION_ID).desktop guido+pui@1: guido+pui@1: DESKTOP_FILES = $(PREFS_APPLICATION_ID).desktop guido+pui@0: guido+pui@0: LINGUAS := $(shell sed 's/\#.*//' po/LINGUAS) guido+pui@0: MOFILES := $(patsubst %,po/%.mo,$(LINGUAS)) guido+pui@0: POTFILES_IN := $(shell sed 's/\#.*//' po/POTFILES.in) guido+pui@0: POTFILE = po/$(PACKAGE).pot guido+pui@0: guido+pui@1: MANPAGES = $(PACKAGE).1 $(PACKAGE)-prefs.1 guido+pui@0: guido+pui@0: .DEFAULT_TARGET = all guido+pui@0: guido+pui@0: .PHONY: all pot update-po clean clobber dist install guido+pui@0: guido+pui@1: all: $(PACKAGE) $(PACKAGE)-prefs $(AUTOSTART_FILE) $(DESKTOP_FILES) $(MOFILES) $(MANPAGES) guido+pui@0: guido+pui@0: $(PACKAGE): XCPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" \ guido+pui@0: -DAPPLICATION_ID=\"$(APPLICATION_ID)\" \ guido+pui@0: -DVERSION=\"$(VERSION)\" \ guido+pui@0: -DG_LOG_DOMAIN=\"$(PACKAGE)\" \ guido+pui@0: -DPACKAGE_LOCALE_DIR="\"$(localedir)\"" \ guido+pui@0: -DGETTEXT_PACKAGE=\"$(PACKAGE)\" \ guido+pui@1: -DSETTINGS_SCHEMA_ID=\"$(APPLICATION_ID)\" \ guido+pui@0: -DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE guido+pui@0: $(PACKAGE): XCFLAGS = $(shell pkg-config --cflags gtk+-3.0 \ guido+pui@6: appindicator3-0.1 packagekit-glib2 \ guido+pui@6: polkit-gobject-1 upower-glib) guido+pui@0: $(PACKAGE): LDLIBS = $(shell pkg-config --libs gtk+-3.0 \ guido+pui@6: appindicator3-0.1 packagekit-glib2 \ guido+pui@6: polkit-gobject-1 upower-glib) guido+pui@0: guido+pui@1: $(PACKAGE)-prefs: XCPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" \ guido+pui@1: -DAPPLICATION_ID=\"$(PREFS_APPLICATION_ID)\" \ guido+pui@1: -DVERSION=\"$(VERSION)\" \ guido+pui@1: -DG_LOG_DOMAIN=\"$(PACKAGE)\" \ guido+pui@1: -DPACKAGE_LOCALE_DIR="\"$(localedir)\"" \ guido+pui@1: -DGETTEXT_PACKAGE=\"$(PACKAGE)\" \ guido+pui@1: -DSETTINGS_SCHEMA_ID=\"$(APPLICATION_ID)\" guido+pui@1: $(PACKAGE)-prefs: XCFLAGS = $(shell pkg-config --cflags gtk+-3.0) guido+pui@1: $(PACKAGE)-prefs: LDLIBS = $(shell pkg-config --libs gtk+-3.0) guido+pui@1: guido+pui@0: ifneq ($(findstring $(OS_NAME),FreeBSD DragonFly OpenBSD),) guido+pui@0: $(PACKAGE): XCPPFLAGS += -I/usr/local/include guido+pui@0: $(PACKAGE): XLDFLAGS += -L/usr/local/lib guido+pui@0: else ifeq ($(OS_NAME),NetBSD) guido+pui@0: $(PACKAGE): XCPPFLAGS += -I/usr/pkg/include guido+pui@0: $(PACKAGE): XLDFLAGS += -L/usr/pkg/lib guido+pui@0: endif guido+pui@0: ifeq ($(findstring $(OS_NAME),FreeBSD DragonFly NetBSD OpenBSD),) guido+pui@0: $(PACKAGE): XCPPFLAGS += -D_XOPEN_SOURCE=600 guido+pui@0: endif guido+pui@0: guido+pui@1: $(PACKAGE): $($(PACKAGE)_OBJS) guido+pui@1: $(LINK.o) $^ $(LDLIBS) -o $@ guido+pui@1: guido+pui@1: $(PACKAGE)-prefs: $($(PACKAGE)-prefs_OBJS) guido+pui@0: $(LINK.o) $^ $(LDLIBS) -o $@ guido+pui@0: guido+pui@10: $(OBJS): $(ENUM_HEADER) guido+pui@10: guido+pui@10: %-types.h: %-types.h.in $(ENUM_DEPS) guido+pui@10: $(GLIB_MKENUMS) --template $< >$@ $(filter-out $<,$^) guido+pui@10: guido+pui@10: %-types.c: %-types.c.in $(ENUM_DEPS) guido+pui@10: $(GLIB_MKENUMS) --template $< >$@ $(filter-out $<,$^) guido+pui@10: guido+pui@1: %-resources.c: %.gresource.xml guido+pui@1: $(GLIB_COMPILE_RESOURCES) --generate-dependencies $< | \ guido+pui@1: while read -r resource_file; do \ guido+pui@1: printf '%s: %s\n' $@ "$${resource_file}"; \ guido+pui@1: done guido+pui@1: $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=. --generate-source $< guido+pui@1: guido+pui@0: $(POTFILE): po/POTFILES.in $(POTFILES_IN) guido+pui@0: $(XGETTEXT) $(XGETTEXT_OPTIONS) --files-from $< --output $@ guido+pui@0: guido+pui@0: pot: $(POTFILE) guido+pui@0: guido+pui@0: update-po: $(POTFILE) guido+pui@0: for pofile in $(patsubst %.mo,%.po,$(MOFILES)); do \ guido+pui@0: $(MSGMERGE) --update --backup off $$pofile $<; \ guido+pui@0: done guido+pui@0: guido+pui@0: %.mo: %.po guido+pui@0: $(MSGFMT) --output $@ $< guido+pui@0: guido+pui@0: %.desktop: %.desktop.in guido+pui@0: $(MSGFMT) --desktop --template $< -d po --output $@ guido+pui@0: guido+pui@0: $(foreach section,1 2 3 4 5 6 7 8 9,$(eval $(call generate-manpage-rule,$(section)))) guido+pui@0: guido+pui@0: %.o: %.c guido+pui@0: $(MAKEDEPEND.c) $< | $(SED) -f deps.sed >$*.d guido+pui@0: $(COMPILE.c) -o $@ $< guido+pui@0: guido+pui@0: install: all guido+pui@0: $(INSTALL.exec) $(PACKAGE) "$(DESTDIR)$(bindir)/$(PACKAGE)" guido+pui@1: $(INSTALL.exec) $(PACKAGE)-prefs \ guido+pui@1: "$(DESTDIR)$(bindir)/$(PACKAGE)-prefs" guido+pui@0: for schema in $(GSETTINGS_SCHEMAS); do \ guido+pui@0: $(INSTALL.data) $${schema} \ guido+pui@0: $(DESTDIR)$(datadir)/glib-2.0/schemas/$${schema}; \ guido+pui@0: done guido+pui@0: [ -n "$(GSETTINGS_SCHEMAS)" ] && \ guido+pui@0: $(GLIB_COMPILE_SCHEMAS) $(datadir)/glib-2.0/schemas guido+pui@1: $(INSTALL.data) $(AUTOSTART_FILE) \ guido+pui@1: $(DESTDIR)$(xdgautostartdir)/$(AUTOSTART_FILE) guido+pui@1: for desktop_file in $(DESKTOP_FILES); do \ guido+pui@0: $(INSTALL.data) $${desktop_file} \ guido+pui@1: $(DESTDIR)$(xdgapplicationsdir)/$${desktop_file}; \ guido+pui@0: done guido+pui@0: for lang in $(LINGUAS); do \ guido+pui@0: $(INSTALL.data) po/$${lang}.mo \ guido+pui@0: $(DESTDIR)$(localedir)/$${lang}/LC_MESSAGES/$(PACKAGE).mo; \ guido+pui@0: done guido+pui@0: for manpage in $(MANPAGES); do \ guido+pui@0: $(INSTALL.data) $${manpage} \ guido+pui@0: "$(DESTDIR)$(mandir)/man$${manpage##*.}/$${manpage##*/}"; \ guido+pui@0: done guido+pui@0: guido+pui@0: clean: guido+pui@10: rm -f $(PACKAGE) $(OBJS) $(ENUM_FILES) $(AUTOSTART_FILE) \ guido+pui@10: $(DESKTOP_FILES) $(POTFILE) $(MOFILES) $(MANPAGES) guido+pui@0: guido+pui@0: clobber: clean guido+pui@0: rm -f $(patsubst %.o,%.d,$(OBJS)) guido+pui@0: guido+pui@0: dist: clobber guido+pui@0: $(PAX) -w -x ustar -s ',.*/\..*,,' -s ',./[^/]*\.tar\.gz,,' \ guido+pui@0: -s ',^\.$$,,' -s ',\./,$(DISTNAME)/,' . | \ guido+pui@0: $(GZIP) > $(DISTNAME).tar.gz guido+pui@0: guido+pui@0: -include local.mk guido+pui@0: guido+pui@0: -include $(patsubst %.o,%.d,$(OBJS)) guido+pui@1: -include $(patsubst %.gresource.xml,%.gresource.d,$(GRESOURCE_FILES))