summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile742
1 files changed, 742 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..18f1e02
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,742 @@
+PROGRAM = shotwell
+PROGRAM_THUMBNAILER = shotwell-video-thumbnailer
+PROGRAM_MIGRATOR = shotwell-settings-migrator
+
+VERSION = 0.18.1
+GITVER := $(shell git log -n 1 2>/dev/null | head -n 1 | awk '{print $$2}')
+GETTEXT_PACKAGE = $(PROGRAM)
+BUILD_ROOT = 1
+
+ifndef VALAC
+VALAC := $(shell which valac)
+else
+VALAC := $(shell which $(VALAC))
+endif
+
+VALAC_VERSION := `$(VALAC) --version | awk '{print $$2}'`
+MIN_VALAC_VERSION := 0.20.1
+INSTALL_PROGRAM := install
+INSTALL_DATA := install -m 644
+
+export MIN_GLIB_VERSION=2.30.0
+
+# defaults that may be overridden by configure.mk
+PREFIX=/usr/local
+BUILD_RELEASE=1
+LIB=lib
+
+-include configure.mk
+ifndef LIBEXECDIR
+LIBEXECDIR=$(PREFIX)/libexec/shotwell
+endif
+
+CORE_SUPPORTED_LANGUAGES=$(shell cat po/LINGUAS)
+
+LOCAL_LANG_DIR=locale-langpack
+SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale
+
+VALAFLAGS := -g --enable-checking --target-glib=2.32 --thread --fatal-warnings --enable-experimental --enable-deprecated $(USER_VALAFLAGS)
+ifdef UNITY_SUPPORT
+VALAFLAGS := $(VALAFLAGS) --define UNITY_SUPPORT
+endif
+
+ifdef WITH_GPHOTO_25
+VALAFLAGS := $(VALAFLAGS) --define WITH_GPHOTO_25
+endif
+
+DEFINES := _PREFIX='"$(PREFIX)"' _VERSION='"$(VERSION)"' GETTEXT_PACKAGE='"$(GETTEXT_PACKAGE)"' \
+ _LANG_SUPPORT_DIR='"$(SYSTEM_LANG_DIR)"' _LIB='"${LIB}"' _LIBEXECDIR='"$(LIBEXECDIR)"'
+
+ifdef GITVER
+DEFINES := $(DEFINES) _GIT_VERSION='"$(GITVER)"'
+VALAFLAGS := $(VALAFLAGS) --define=_GITVERSION
+endif
+
+EXPORT_FLAGS = -export-dynamic
+
+include units.mk
+include plugins/plugins.mk
+
+UNUNITIZED_SRC_FILES = \
+ main.vala \
+ AppWindow.vala \
+ CollectionPage.vala \
+ Thumbnail.vala \
+ ThumbnailCache.vala \
+ CheckerboardLayout.vala \
+ PhotoPage.vala \
+ Page.vala \
+ SortedList.vala \
+ Dimensions.vala \
+ Box.vala \
+ Photo.vala \
+ Orientation.vala \
+ BatchImport.vala \
+ Dialogs.vala \
+ Resources.vala \
+ Debug.vala \
+ ColorTransformation.vala \
+ Properties.vala \
+ CustomComponents.vala \
+ Event.vala \
+ International.vala \
+ AppDirs.vala \
+ PixbufCache.vala \
+ CommandManager.vala \
+ Commands.vala \
+ SlideshowPage.vala \
+ LibraryFiles.vala \
+ Printing.vala \
+ Tag.vala \
+ Screensaver.vala \
+ Exporter.vala \
+ DirectoryMonitor.vala \
+ LibraryMonitor.vala \
+ VideoSupport.vala \
+ Tombstone.vala \
+ MetadataWriter.vala \
+ Application.vala \
+ TimedQueue.vala \
+ MediaPage.vala \
+ MediaDataRepresentation.vala \
+ DesktopIntegration.vala \
+ MediaInterfaces.vala \
+ MediaMetadata.vala \
+ VideoMetadata.vala \
+ MediaMonitor.vala \
+ PhotoMonitor.vala \
+ VideoMonitor.vala \
+ SearchFilter.vala \
+ MediaViewTracker.vala \
+ UnityProgressBar.vala \
+ Upgrades.vala
+
+THUMBNAILER_SRC_FILES = \
+ shotwell-video-thumbnailer.vala
+
+VAPI_FILES = \
+ ExtendedPosix.vapi \
+ LConv.vapi \
+ libexif.vapi \
+ libraw.vapi \
+ webkitgtk-3.0.vapi \
+ unique-3.0.vapi \
+ unity.vapi
+
+DEPS_FILES = \
+ webkitgtk-3.0.deps \
+ unique-3.0.deps \
+ unity.deps
+
+ifdef WITH_GPHOTO_25
+GPHOTO_VAPI_FILE = vapi/gphoto-2.5/libgphoto2.vapi
+else
+GPHOTO_VAPI_FILE = vapi/gphoto-2.4/libgphoto2.vapi
+endif
+
+RESOURCE_FILES = \
+ collection.ui \
+ direct.ui \
+ direct_context.ui \
+ events_directory.ui \
+ event.ui \
+ fullscreen.ui \
+ import_queue.ui \
+ import.ui \
+ media.ui \
+ offline.ui \
+ photo.ui \
+ photo_context.ui \
+ savedsearch.ui \
+ search_bar.ui \
+ search_sidebar_context.ui \
+ set_background_dialog.glade \
+ shotwell.glade \
+ shotwell.xml \
+ sidebar_default_context.ui \
+ tag_sidebar_context.ui \
+ tags.ui \
+ top.ui \
+ trash.ui
+
+SYS_INTEGRATION_FILES = \
+ shotwell.appdata.xml \
+ shotwell.desktop.head \
+ shotwell-viewer.desktop.head \
+ org.yorba.shotwell.gschema.xml \
+ org.yorba.shotwell-extras.gschema.xml \
+ shotwell.convert
+
+SCHEMA_FILES := $(shell ls misc/*.gschema.xml)
+
+SRC_HEADER_FILES = \
+ gphoto.h
+
+TEXT_FILES = \
+ AUTHORS \
+ COPYING \
+ INSTALL \
+ MAINTAINERS \
+ NEWS \
+ README \
+ THANKS
+
+ICON_FILES = \
+ all-rejected.png \
+ crop-pivot-reticle.png \
+ crop.svg \
+ drag_nub.png \
+ enhance.png \
+ five-star-filter.svg \
+ five-stars.svg \
+ flag-page.png \
+ flag-trinket.png \
+ four-star-filter-plus.svg \
+ four-stars.svg \
+ image-adjust.svg \
+ import-all.png \
+ import.svg \
+ make-primary.svg \
+ merge.svg \
+ multiple-events.png \
+ multiple-tags.png \
+ no-event.png \
+ noninterpretable-video.png \
+ one-event.png \
+ one-star-filter-plus.svg \
+ one-star.svg \
+ one-tag.png \
+ pin-toolbar.svg \
+ publish.png \
+ redeye.png \
+ rejected.svg \
+ shotwell-16.svg \
+ shotwell-24.svg \
+ shotwell.ico \
+ shotwell-street.jpg \
+ shotwell.svg \
+ sprocket.png \
+ straighten.svg \
+ three-star-filter-plus.svg \
+ three-stars.svg \
+ two-star-filter-plus.svg \
+ two-stars.svg \
+ videos-page.png \
+ zoom-in.png \
+ zoom-out.png \
+ slideshow-extension-point.png \
+ generic-plugin.png \
+ filter-raw.png \
+ filter-photos.png \
+ filter-videos.png \
+ filter-flagged.png
+
+VAPI_DIRS = \
+ ./vapi
+
+ifdef WITH_GPHOTO_25
+VAPI_DIRS += ./vapi/gphoto-2.5
+else
+VAPI_DIRS += ./vapi/gphoto-2.4
+endif
+
+
+HEADER_DIRS = \
+ ./vapi
+
+LOCAL_PKGS = \
+ ExtendedPosix \
+ posix \
+ LConv
+
+EXT_PKGS = \
+ atk \
+ gdk-3.0 \
+ gee-0.8 \
+ gexiv2 \
+ gio-unix-2.0 \
+ glib-2.0 \
+ gmodule-2.0 \
+ gstreamer-1.0 \
+ gstreamer-base-1.0 \
+ gstreamer-pbutils-1.0 \
+ gtk+-3.0 \
+ gudev-1.0 \
+ libexif \
+ libgphoto2 \
+ json-glib-1.0 \
+ libraw \
+ libsoup-2.4 \
+ libxml-2.0 \
+ sqlite3 \
+ webkitgtk-3.0
+ifdef UNITY_SUPPORT
+EXT_PKGS += unity
+endif
+
+THUMBNAILER_PKGS = \
+ gtk+-3.0 \
+ gee-0.8 \
+ gstreamer-1.0 \
+ gstreamer-base-1.0
+
+DIRECT_LIBS =
+
+EXT_PKG_VERSIONS = \
+ gee-0.8 >= 0.8.5 \
+ gexiv2 >= 0.4.90 \
+ gio-unix-2.0 >= 2.20 \
+ glib-2.0 >= $(MIN_GLIB_VERSION) \
+ gmodule-2.0 >= 2.24.0 \
+ gstreamer-1.0 >= 1.0.0 \
+ gstreamer-base-1.0 >= 1.0.0 \
+ gstreamer-plugins-base-1.0 >= 1.0.0 \
+ gstreamer-pbutils-1.0 >= 1.0.0 \
+ gtk+-3.0 >= 3.6.0 \
+ gudev-1.0 >= 145 \
+ libexif >= 0.6.16 \
+ libgphoto2 >= 2.4.2 \
+ libraw >= 0.13.2 \
+ libsoup-2.4 >= 2.26.0 \
+ libxml-2.0 >= 2.6.32 \
+ rest-0.7 >= 0.7 \
+ sqlite3 >= 3.5.9 \
+ webkitgtk-3.0 >= 1.4.0 \
+ gnome-doc-utils
+
+DIRECT_LIBS_VERSIONS =
+
+VALA_PKGS = $(EXT_PKGS) $(LOCAL_PKGS)
+
+ifndef BUILD_DIR
+BUILD_DIR=src
+endif
+
+DESKTOP_APP_SHORT_NAME="Shotwell"
+DESKTOP_APP_FULL_NAME="Shotwell Photo Manager"
+DESKTOP_APPLICATION_COMMENT="Organize your photos"
+DESKTOP_APPLICATION_CLASS="Photo Manager"
+DESKTOP_APP_KEYWORDS="album;camera;cameras;crop;edit;enhance;export;gallery;image;images;import;organize;photo;photographs;photos;picture;pictures;photography;print;publish;rotate;share;tags;video;facebook;flickr;picasa;youtube;piwigo;"
+DIRECT_EDIT_DESKTOP_APP_SHORT_NAME="Shotwell"
+DIRECT_EDIT_DESKTOP_APP_FULL_NAME="Shotwell Photo Viewer"
+DIRECT_EDIT_DESKTOP_APPLICATION_CLASS="Photo Viewer"
+TEMPORARY_DESKTOP_FILES = misc/shotwell.desktop misc/shotwell-viewer.desktop
+
+# for help page and translation .po files
+include help/Makefile.am
+
+# Process the units
+UNIT_MKS := $(foreach unit,$(UNITS),src/$(unit)/mk/$(notdir $(unit)).mk)
+include $(UNIT_MKS)
+
+UNITIZE_DIR := src/.unitize
+UNITIZE_ENTRIES := $(foreach unit,$(APP_UNITS),$(UNITIZE_DIR)/_$(unit)_unitize_entry.vala)
+UNITIZE_INITS := $(foreach nm,$(UNIT_NAMESPACES),$(UNITIZE_DIR)/_$(nm)Internals.vala)
+UNITIZE_STAMP := $(UNITIZE_DIR)/.unitized
+
+PLUGINS_DIR := plugins
+PLUGINS_SO := $(foreach plugin,$(PLUGINS),$(PLUGINS_DIR)/$(plugin)/$(plugin).so)
+EXTRA_PLUGINS_SO := $(foreach plugin,$(EXTRA_PLUGINS),$(PLUGINS_DIR)/$(plugin)/$(plugin).so)
+PLUGINS_DIST_FILES := `$(MAKE) --directory=plugins --no-print-directory listfiles`
+
+THUMBNAILER_DIR := thumbnailer
+THUMBNAILER_BIN := $(THUMBNAILER_DIR)/$(PROGRAM_THUMBNAILER)
+EXPANDED_THUMBNAILER_SRC_FILES := $(foreach file, $(THUMBNAILER_SRC_FILES), $(THUMBNAILER_DIR)/$(file))
+
+MIGRATOR_DIR := settings-migrator
+MIGRATOR_BIN := $(MIGRATOR_DIR)/$(PROGRAM_MIGRATOR)
+
+EXPANDED_CORE_PO_FILES := $(foreach po,$(CORE_SUPPORTED_LANGUAGES),po/$(po).po)
+
+EXPANDED_SRC_FILES := $(UNITIZED_SRC_FILES) $(foreach src,$(UNUNITIZED_SRC_FILES),src/$(src)) \
+ $(UNITIZE_INITS) $(UNITIZE_ENTRIES)
+EXPANDED_DIST_SRC_FILES := $(UNITIZED_SRC_FILES) $(foreach src,$(UNUNITIZED_SRC_FILES),src/$(src))
+EXPANDED_C_FILES := $(foreach file,$(subst src,$(BUILD_DIR),$(EXPANDED_SRC_FILES)),$(file:.vala=.c))
+EXPANDED_OBJ_FILES := $(foreach file,$(subst src,$(BUILD_DIR),$(EXPANDED_SRC_FILES)),$(file:.vala=.o))
+EXPANDED_SYS_INTEGRATION_FILES := $(foreach file,$(SYS_INTEGRATION_FILES),misc/$(file))
+EXPANDED_ICON_FILES := $(foreach file,$(ICON_FILES),icons/$(file))
+EXPANDED_VAPI_FILES := $(foreach vapi,$(VAPI_FILES),vapi/$(vapi))
+EXPANDED_DEPS_FILES := $(foreach deps,$(DEPS_FILES),vapi/$(deps))
+EXPANDED_SRC_HEADER_FILES := $(foreach header,$(SRC_HEADER_FILES),vapi/$(header))
+EXPANDED_RESOURCE_FILES := $(foreach res,$(RESOURCE_FILES),ui/$(res))
+EXPANDED_DOC_IMAGES := $(foreach file,$(DOC_IMAGES),help/C/figures/$(file))
+EXPANDED_DOC_PAGES := $(foreach page,$(DOC_PAGES),help/C/$(page))
+EXPANDED_DOC_PO := $(foreach lang,$(DOC_LINGUAS),help/$(lang)/$(lang).po)
+EXPANDED_XLAT_DOC_PAGES := \
+ $(foreach lang,$(DOC_LINGUAS),\
+ $(foreach page,$(DOC_PAGES),help/$(lang)/$(page)))
+VALA_STAMP := $(BUILD_DIR)/.stamp
+LANG_STAMP := $(LOCAL_LANG_DIR)/.langstamp
+DOC_LANG_STAMP := help/.langstamp
+MAKE_FILES := Makefile $(CONFIG_IN) $(UNIT_MKS) unitize.mk units.mk
+PC_INPUT := shotwell-plugin-dev-1.0.m4
+PC_FILE := $(PC_INPUT:.m4=.pc)
+
+DIST_FILES = Makefile configure chkver $(EXPANDED_DIST_SRC_FILES) $(EXPANDED_VAPI_FILES) \
+ $(EXPANDED_DEPS_FILES) $(EXPANDED_SRC_HEADER_FILES) $(EXPANDED_RESOURCE_FILES) $(TEXT_FILES) \
+ $(EXPANDED_ICON_FILES) $(EXPANDED_SYS_INTEGRATION_FILES) $(EXPANDED_CORE_PO_FILES) \
+ po/LINGUAS po/POTFILES.in po/POTFILES.skip \
+ $(EXPANDED_DOC_PAGES) $(EXPANDED_DOC_IMAGES) $(EXPANDED_DOC_PO) help/Makefile.am \
+ apport/shotwell.py $(UNIT_RESOURCES) $(UNIT_MKS) \
+ unitize.mk units.mk $(PC_INPUT) $(PLUGINS_DIST_FILES) \
+ vapi/gphoto-2.5/libgphoto2.vapi vapi/gphoto-2.4/libgphoto2.vapi \
+ $(EXPANDED_THUMBNAILER_SRC_FILES) $(MIGRATOR_BIN)
+
+DIST_TAR = $(PROGRAM)-$(VERSION).tar
+DIST_TAR_XZ = $(DIST_TAR).xz
+PACKAGE_ORIG_XZ = $(PROGRAM)_`parsechangelog | grep Version | sed 's/.*: //'`.orig.tar.xz
+
+VALAFLAGS := $(VALAFLAGS) $(VALA_DEFINES) --vapidir=plugins/
+
+VALA_CFLAGS := `pkg-config --cflags $(EXT_PKGS) $(DIRECT_LIBS) gthread-2.0` \
+ $(foreach hdir,$(HEADER_DIRS),-I$(hdir)) \
+ $(foreach def,$(DEFINES),-D$(def))
+
+VALA_LDFLAGS := `pkg-config --libs $(EXT_PKGS) $(DIRECT_LIBS) gthread-2.0`
+
+# REQUIRED_CFLAGS absolutely get appended to CFLAGS, whatever the
+# the value of CFLAGS in the environment
+REQUIRED_CFLAGS := -fPIC
+
+# setting CFLAGS in configure.mk overrides build type
+ifndef CFLAGS
+ifdef BUILD_DEBUG
+CFLAGS = -O0 -g -pipe
+PLUGIN_CFLAGS = -O0 -g -pipe
+else
+CFLAGS = -O2 -g -pipe
+PLUGIN_CFLAGS = -O2 -g -pipe
+endif
+endif
+
+CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS)
+PLUGIN_CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS)
+
+# Required for gudev-1.0
+CFLAGS += -DG_UDEV_API_IS_SUBJECT_TO_CHANGE
+
+all: pkgcheck valacheck desktop
+
+ifdef ENABLE_BUILD_FOR_GLADE
+all: $(PLUGINS_DIR) lib$(PROGRAM).so $(PROGRAM) $(PC_FILE)
+else
+all: $(PLUGINS_DIR) $(PROGRAM) $(PC_FILE)
+endif
+
+
+include src/plugins/mk/interfaces.mk
+
+$(LANG_STAMP): $(EXPANDED_CORE_PO_FILES)
+ @$(foreach po,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES ; \
+ msgfmt -c -o $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES/shotwell.mo po/$(po).po`)
+ @touch $(LANG_STAMP)
+
+clean:
+ rm -f $(EXPANDED_C_FILES)
+ rm -f $(EXPANDED_OBJ_FILES)
+ rm -f $(VALA_STAMP)
+ rm -rf $(PROGRAM)-$(VERSION)
+ rm -f $(PROGRAM)
+ rm -f $(THUMBNAILER_DIR)/$(PROGRAM_THUMBNAILER)
+ rm -rf $(LOCAL_LANG_DIR)
+ rm -f $(LANG_STAMP)
+ rm -f $(DOC_LANG_STAMP)
+ rm -f $(EXPANDED_XLAT_DOC_PAGES)
+ rm -f $(TEMPORARY_DESKTOP_FILES)
+ rm -f lib$(PROGRAM).so
+ rm -rf $(UNITIZE_DIR)
+ rm -f $(PLUGIN_VAPI)
+ rm -f $(PLUGIN_HEADER)
+ rm -f $(PLUGIN_DEPS)
+ rm -f $(PLUGINS_SO)
+ rm -f $(EXTRA_PLUGINS_SO)
+ @$(MAKE) --directory=plugins clean
+ rm -f $(PC_FILE)
+
+cleantemps:
+ rm -f $(EXPANDED_C_FILES)
+ rm -f $(EXPANDED_OBJ_FILES)
+ rm -f $(VALA_STAMP)
+ rm -f $(LANG_STAMP)
+ rm -f $(DOC_LANG_STAMP)
+ rm -f $(TEMPORARY_DESKTOP_FILES)
+ @$(MAKE) --directory=plugins cleantemps
+ rm -f misc/gschemas.compiled
+
+package:
+ $(MAKE) dist
+ cp $(DIST_TAR_XZ) $(PACKAGE_ORIG_XZ)
+ rm -f $(DIST_TAR_XZ)
+
+misc/shotwell.desktop: misc/shotwell.desktop.head $(EXPANDED_CORE_PO_FILES)
+ cp misc/shotwell.desktop.head misc/shotwell.desktop
+ @ $(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \
+ LANGUAGE=$(lang) gettext --domain=shotwell $(DESKTOP_APP_FULL_NAME)` \
+ >> misc/shotwell.desktop ; \
+ echo GenericName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) \
+ gettext --domain=shotwell $(DESKTOP_APPLICATION_CLASS)` >> misc/shotwell.desktop ; \
+ echo Comment[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
+ --domain=shotwell $(DESKTOP_APPLICATION_COMMENT)` >> misc/shotwell.desktop ; \
+ echo Keywords[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
+ --domain=shotwell $(DESKTOP_APP_KEYWORDS)` >> misc/shotwell.desktop ;)
+ifndef DISABLE_DESKTOP_VALIDATE
+ @ desktop-file-validate misc/shotwell.desktop 1>misc/shotwell.desktop.errors 2>&1; \
+ if test -s misc/shotwell.desktop.errors; then \
+ echo -e "\nThe file misc/shotwell.desktop.head or one of the .po files contains errors and may need to be edited.\nPlease see the file misc/shotwell.desktop.errors for details."; \
+ exit 1; \
+ else rm -f misc/shotwell.desktop.errors; \
+ fi
+endif
+
+misc/shotwell-viewer.desktop: misc/shotwell-viewer.desktop.head $(EXPANDED_CORE_PO_FILES)
+ cp misc/shotwell-viewer.desktop.head misc/shotwell-viewer.desktop
+ $(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \
+ LANGUAGE=$(lang) gettext --domain=shotwell $(DESKTOP_APP_FULL_NAME)` \
+ echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
+ --domain=shotwell $(DIRECT_EDIT_DESKTOP_APP_FULL_NAME)` >> misc/shotwell-viewer.desktop ; \
+ echo GenericName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
+ --domain=shotwell $(DIRECT_EDIT_DESKTOP_APPLICATION_CLASS)` >> misc/shotwell-viewer.desktop ;)
+ifndef DISABLE_DESKTOP_VALIDATE
+ @ desktop-file-validate misc/shotwell-viewer.desktop 1>misc/shotwell-viewer.desktop.errors 2>&1; \
+ if test -s misc/shotwell-viewer.desktop.errors; then \
+ echo -e S"\nThe file misc/shotwell-viewer.desktop.head or one of the .po files contains errors and may need to be edited.\nPlease see the file misc/shotwell-viewer.desktop.errors for details."; \
+ exit 1; \
+ else rm -f misc/shotwell-viewer.desktop.errors; \
+ fi
+endif
+
+.PHONY: desktop
+desktop: misc/shotwell.desktop misc/shotwell-viewer.desktop
+
+.PHONY: dist
+dist:
+ mkdir -p $(PROGRAM)-$(VERSION)
+ cp --parents --preserve $(DIST_FILES) $(PROGRAM)-$(VERSION)
+ tar --xz -cvf $(DIST_TAR_XZ) $(PROGRAM)-$(VERSION)
+ rm -rf $(PROGRAM)-$(VERSION)
+
+distclean: clean
+ rm -f configure.mk
+ rm -f $(DIST_TAR_XZ)
+ @$(MAKE) --directory=plugins distclean
+
+.PHONY: install
+install:
+ touch $(LANG_STAMP)
+ mkdir -p $(DESTDIR)$(PREFIX)/bin
+ $(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin
+ mkdir -p $(DESTDIR)$(LIBEXECDIR)
+ $(INSTALL_PROGRAM) $(THUMBNAILER_BIN) $(DESTDIR)$(LIBEXECDIR)
+ $(INSTALL_PROGRAM) $(MIGRATOR_BIN) $(DESTDIR)$(LIBEXECDIR)
+ mkdir -p $(DESTDIR)$(PREFIX)/share/shotwell/icons
+ $(INSTALL_DATA) icons/* $(DESTDIR)$(PREFIX)/share/shotwell/icons
+ mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
+ $(INSTALL_DATA) icons/shotwell.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
+ mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps
+ $(INSTALL_DATA) icons/shotwell-16.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/shotwell.svg
+ mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps
+ $(INSTALL_DATA) icons/shotwell-24.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps/shotwell.svg
+ mkdir -p $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
+ $(INSTALL_DATA) misc/org.yorba.shotwell.gschema.xml $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
+ $(INSTALL_DATA) misc/org.yorba.shotwell-extras.gschema.xml $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
+ifndef DISABLE_SCHEMAS_COMPILE
+ glib-compile-schemas $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
+endif
+ifndef DISABLE_GSETTINGS_CONVERT_INSTALL
+ mkdir -p $(DESTDIR)/usr/share/GConf/gsettings
+ $(INSTALL_DATA) misc/shotwell.convert $(DESTDIR)/usr/share/GConf/gsettings
+endif
+ifndef DISABLE_ICON_UPDATE
+ -gtk-update-icon-cache -t -f $(DESTDIR)$(PREFIX)/share/icons/hicolor || :
+endif
+ mkdir -p $(DESTDIR)$(PREFIX)/share/shotwell/ui
+ $(INSTALL_DATA) ui/* $(DESTDIR)$(PREFIX)/share/shotwell/ui
+ mkdir -p $(DESTDIR)$(PREFIX)/share/applications
+ mkdir -p $(DESTDIR)$(PREFIX)/share/appdata
+ $(INSTALL_DATA) misc/shotwell.desktop $(DESTDIR)$(PREFIX)/share/applications
+ $(INSTALL_DATA) misc/shotwell-viewer.desktop $(DESTDIR)$(PREFIX)/share/applications
+ $(INSTALL_DATA) misc/shotwell.appdata.xml $(DESTDIR)$(PREFIX)/share/appdata
+ifndef DISABLE_DESKTOP_UPDATE
+ -update-desktop-database || :
+endif
+ifdef ENABLE_APPORT_HOOK_INSTALL
+ mkdir -p $(DESTDIR)$(PREFIX)/share/apport/package-hooks
+ $(INSTALL_DATA) apport/shotwell.py $(DESTDIR)$(PREFIX)/share/apport/package-hooks
+endif
+ifndef DISABLE_HELP_INSTALL
+ mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C
+ $(INSTALL_DATA) $(EXPANDED_DOC_PAGES) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C
+ mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures
+ $(INSTALL_DATA) $(EXPANDED_DOC_IMAGES) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures
+ $(foreach lang,$(DOC_LINGUAS),`mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/$(lang)`)
+ $(foreach lang,$(DOC_LINGUAS),\
+ $(foreach page,$(DOC_PAGES),\
+ `$(INSTALL_DATA) help/$(lang)/$(page) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/$(lang)`\
+ )\
+ )
+endif
+ -$(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES ; \
+ $(INSTALL_DATA) $(LOCAL_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo \
+ $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
+ mkdir -p $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+ $(INSTALL_PROGRAM) $(PLUGINS_SO) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+ifdef PLUGINS_RC
+ $(INSTALL_DATA) $(PLUGINS_RC) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+endif
+ifndef DISABLE_EXTRA_PLUGINS_INSTALL
+ $(INSTALL_PROGRAM) $(EXTRA_PLUGINS_SO) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+ifdef EXTRA_PLUGINS_RC
+ $(INSTALL_DATA) $(EXTRA_PLUGINS_RC) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+endif
+endif
+ifdef INSTALL_HEADERS
+ mkdir -p $(DESTDIR)$(PREFIX)/include/shotwell/plugins
+ $(INSTALL_DATA) $(PLUGIN_HEADER) $(DESTDIR)$(PREFIX)/include/shotwell/plugins
+ mkdir -p $(DESTDIR)$(PREFIX)/share/vala/vapi
+ $(INSTALL_DATA) $(PLUGIN_VAPI) $(DESTDIR)$(PREFIX)/share/vala/vapi
+ $(INSTALL_DATA) $(PLUGIN_DEPS) $(DESTDIR)$(PREFIX)/share/vala/vapi
+ test -d $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig || mkdir -p $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig
+ $(INSTALL_DATA) $(PC_FILE) $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig
+endif
+
+# Old versions of Makefile installed util binaries to $(PREFIX)/bin, so uninstall from there for now
+uninstall:
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_THUMBNAILER)
+ rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_MIGRATOR)
+ rm -f $(DESTDIR)$(LIBEXECDIR)/$(PROGRAM_THUMBNAILER)
+ rm -f $(DESTDIR)$(LIBEXECDIR)/$(PROGRAM_MIGRATOR)
+ rm -fr $(DESTDIR)$(PREFIX)/share/shotwell
+ rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/shotwell.svg
+ rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/shotwell.svg
+ rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps/shotwell.svg
+ rm -f $(DESTDIR)$(PREFIX)/share/applications/shotwell.desktop
+ rm -f $(DESTDIR)$(PREFIX)/share/applications/shotwell-viewer.desktop
+ rm -f $(DESTDIR)$(PREFIX)/share/appdata/shotwell.appdata.xml
+ifndef DISABLE_DESKTOP_UPDATE
+ -update-desktop-database || :
+endif
+ifndef DISABLE_HELP_INSTALL
+ rm -rf $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell
+endif
+ifdef ENABLE_APPORT_HOOK_INSTALL
+ rm -f $(DESTDIR)$(PREFIX)/share/apport/package-hooks/shotwell.py
+endif
+ $(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`rm -f $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
+ rm -rf $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
+ifdef INSTALL_HEADERS
+ rm -rf $(DESTDIR)$(PREFIX)/include/shotwell
+ rm -f $(foreach vapi,$(PLUGIN_VAPI),$(DESTDIR)$(PREFIX)/share/vala/vapi/$(notdir $(vapi)))
+ rm -f $(foreach dep,$(PLUGIN_DEPS),$(DESTDIR)$(PREFIX)/share/vala/vapi/$(notdir $(dep)))
+ rm -f $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig/$(PC_FILE)
+endif
+ rm -f $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/org.yorba.shotwell.gschema.xml
+ rm -f $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/org.yorba.shotwell-extras.gschema.xml
+ifndef DISABLE_SCHEMAS_COMPILE
+ glib-compile-schemas $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
+endif
+ifndef DISABLE_GSETTINGS_CONVERT_INSTALL
+ rm -f $(DESTDIR)/usr/share/GConf/gsettings/shotwell.convert
+endif
+
+$(PC_FILE): $(PC_INPUT) $(MAKE_FILES)
+ m4 '-D_VERSION_=$(VERSION)' '-D_PREFIX_=$(PREFIX)' '-D_REQUIREMENTS_=$(PLUGIN_PKG_REQS)' \
+ '-D_LIB_=$(LIB)' $< > $@
+
+$(UNITIZE_STAMP): $(MAKE_FILES) src/unit/rc/UnitInternals.m4 src/unit/rc/unitize_entry.m4
+ @mkdir -p $(UNITIZE_DIR)
+ @$(foreach unit,$(APP_UNITS),\
+ `m4 '-D_APP_UNIT_=$(unit)' src/unit/rc/unitize_entry.m4 > $(UNITIZE_DIR)/_$(unit)_unitize_entry.vala`)
+ @$(foreach nm,$(UNIT_NAMESPACES),\
+ `m4 '-D_UNIT_NAME_=$(nm)' '-D_UNIT_USES_INITS_=$($(nm)_USES_INITS)' '-D_UNIT_USES_TERMINATORS_=$($(nm)_USES_TERMINATORS)' src/unit/rc/UnitInternals.m4 > $(UNITIZE_DIR)/_$(nm)Internals.vala`)
+ @touch $@
+
+$(UNITIZE_INITS) $(UNITIZE_ENTRIES): $(UNITIZE_STAMP)
+ @
+
+# EXPANDED_SRC_FILES includes UNITIZE_INITS and UNITIZE_ENTRY
+$(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(GPHOTO_VAPI_FILE) $(EXPANDED_SRC_HEADER_FILES)
+ $(call check_valac_version)
+ @echo Compiling Vala code...
+ @mkdir -p $(BUILD_DIR)
+ $(VALAC) --ccode --directory=$(BUILD_DIR) --basedir=src \
+ $(foreach pkg,$(VALA_PKGS),--pkg=$(pkg)) \
+ $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
+ $(foreach def,$(DEFINES),-X -D$(def)) \
+ $(foreach hdir,$(HEADER_DIRS),-X -I$(hdir)) \
+ $(VALAFLAGS) \
+ $(EXPANDED_SRC_FILES)
+ @touch $@
+
+# Do not remove hard tab or at symbol; necessary for dependencies to complete.
+$(EXPANDED_C_FILES): $(VALA_STAMP)
+ @
+
+$(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile
+ $(CC) -c $(VALA_CFLAGS) $(CFLAGS) -o $@ $<
+
+$(PROGRAM): $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP) $(THUMBNAILER_BIN) misc/gschemas.compiled $(DOC_LANG_STAMP)
+ $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(LDFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(EXPORT_FLAGS) -o $@
+
+misc/gschemas.compiled: $(SCHEMA_FILES)
+ rm -f misc/gschemas.compiled
+ glib-compile-schemas misc
+
+$(DOC_LANG_STAMP): $(EXPANDED_DOC_PAGES) $(EXPANDED_DOC_PO)
+ $(foreach lang,$(DOC_LINGUAS), \
+ $(foreach page,$(DOC_PAGES), `xml2po -m mallard -p help/$(lang)/$(lang).po -o help/$(lang)/$(page) help/C/$(page)`))
+ @touch $(DOC_LANG_STAMP)
+
+$(THUMBNAILER_BIN): $(EXPANDED_THUMBNAILER_SRC_FILES)
+ $(VALAC) $(EXPANDED_THUMBNAILER_SRC_FILES) $(VALAFLAGS) -o $@ $(foreach pkg,$(THUMBNAILER_PKGS),--pkg=$(pkg))
+
+$(PLUGINS_SO) $(EXTRA_PLUGINS_SO): $(PLUGINS_DIR)
+ @
+
+.PHONY: $(PLUGINS_DIR)
+$(PLUGINS_DIR): $(PLUGIN_VAPI) $(PLUGIN_HEADER) $(PLUGIN_DEPS)
+ $(call check_valac_version)
+ @$(MAKE) --directory=$@ PLUGINS_VERSION="$(VERSION)" USER_VALAFLAGS="$(USER_VALAFLAGS)" \
+ PLUGIN_CFLAGS="$(PLUGIN_CFLAGS)"
+
+.PHONY: docs
+docs:
+# valadoc complains if the directory already exists
+ @rm -rf docs
+ valadoc --directory=docs --package-name=shotwell-plugin-dev --package-version=$(VERSION) --verbose \
+ --no-protected \
+ $(foreach def,$(DEFINES),--define=$(def)) \
+ $(foreach pkg,$(VALA_PKGS),--pkg=$(pkg)) \
+ $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
+ $(PLUGIN_INTERFACES)
+
+glade: lib$(PROGRAM).so
+
+lib$(PROGRAM).so: $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP)
+ $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(LDFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(EXPORT_FLAGS) -shared -o $@
+
+.PHONY: pkgcheck
+pkgcheck:
+ @if ! test -f configure.mk; then echo "Please run ./configure first."; exit 2; fi
+
+.PHONY: valacheck
+valacheck:
+ @ $(VALAC) --version >/dev/null 2>/dev/null || ( echo 'Shotwell requires Vala compiler $(MIN_VALAC_VERSION) or greater. No valac found in path or $$VALAC.'; exit 1 )
+ @ ./chkver min $(VALAC_VERSION) $(MIN_VALAC_VERSION) || ( echo 'Shotwell requires Vala compiler $(MIN_VALAC_VERSION) or greater. You are running' $(VALAC_VERSION) '\b.'; exit 1 )
+ $(if $(MAX_VALAC_VERSION),\
+ @ ./chkver max $(VALAC_VERSION) $(MAX_VALAC_VERSION) || ( echo 'Shotwell cannot be built by Vala compiler $(MAX_VALAC_VERSION) or greater. You are running' $(VALAC_VERSION) '\b.'; exit 1 ),)
+
+
+
+ifndef ASSUME_PKGS
+ifdef EXT_PKG_VERSIONS
+ @pkg-config --print-errors --exists '$(EXT_PKG_VERSIONS) $(DIRECT_LIBS_VERSIONS)'
+endif
+ifdef EXT_PKGS
+ @pkg-config --print-errors --exists $(EXT_PKGS) $(DIRECT_LIBS_VERSIONS)
+endif
+endif
+ @ type msgfmt > /dev/null || ( echo 'msgfmt (usually found in the gettext package) is missing and is required to build Shotwell. ' ; exit 1 )
+ifndef DISABLE_DESKTOP_VALIDATE
+ @ type desktop-file-validate > /dev/null || ( echo 'desktop-file-validate (usually found in the desktop-file-utils package) is missing and is required to build Shotwell. ' ; exit 1 )
+endif