PageRenderTime 78ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/Makefile

https://github.com/abrauchli/shotwell
Makefile | 739 lines | 641 code | 87 blank | 11 comment | 15 complexity | 2a16afc68add7163a3a8c7ce11c11e01 MD5 | raw file
Possible License(s): LGPL-2.1
  1. PROGRAM = shotwell
  2. PROGRAM_THUMBNAILER = shotwell-video-thumbnailer
  3. PROGRAM_MIGRATOR = shotwell-settings-migrator
  4. VERSION = 0.23.2
  5. GITVER := $(shell git rev-parse HEAD)
  6. GETTEXT_PACKAGE = $(PROGRAM)
  7. BUILD_ROOT = 1
  8. ifndef VALAC
  9. VALAC := $(shell which valac)
  10. else
  11. VALAC := $(shell which $(VALAC))
  12. endif
  13. VALAC_VERSION := `$(VALAC) --version | awk '{print $$2}'`
  14. MIN_VALAC_VERSION := 0.28.0
  15. INSTALL_PROGRAM := install
  16. INSTALL_DATA := install -m 644
  17. export MIN_GLIB_VERSION=2.30.0
  18. # defaults that may be overridden by configure.mk
  19. PREFIX=/usr/local
  20. BUILD_RELEASE=1
  21. LIB=lib
  22. -include configure.mk
  23. ifndef LIBEXECDIR
  24. LIBEXECDIR=$(PREFIX)/libexec/shotwell
  25. endif
  26. CORE_SUPPORTED_LANGUAGES=$(shell cat po/LINGUAS)
  27. LOCAL_LANG_DIR=locale-langpack
  28. SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale
  29. VALAFLAGS := -g --enable-checking --target-glib=2.32 --thread --fatal-warnings --enable-experimental --enable-deprecated $(USER_VALAFLAGS)
  30. ifdef UNITY_SUPPORT
  31. VALAFLAGS := $(VALAFLAGS) --define UNITY_SUPPORT
  32. endif
  33. DEFINES := _PREFIX='"$(PREFIX)"' _VERSION='"$(VERSION)"' GETTEXT_PACKAGE='"$(GETTEXT_PACKAGE)"' \
  34. _LANG_SUPPORT_DIR='"$(SYSTEM_LANG_DIR)"' _LIB='"${LIB}"' _LIBEXECDIR='"$(LIBEXECDIR)"'
  35. ifdef GITVER
  36. DEFINES := $(DEFINES) _GIT_VERSION='"$(GITVER)"'
  37. VALAFLAGS := $(VALAFLAGS) --define=_GITVERSION
  38. endif
  39. EXPORT_FLAGS = -export-dynamic
  40. include units.mk
  41. include plugins/plugins.mk
  42. UNUNITIZED_SRC_FILES = \
  43. main.vala \
  44. AppWindow.vala \
  45. CollectionPage.vala \
  46. NaturalCollate.vala \
  47. Thumbnail.vala \
  48. ThumbnailCache.vala \
  49. CheckerboardLayout.vala \
  50. PhotoPage.vala \
  51. Page.vala \
  52. SortedList.vala \
  53. Dimensions.vala \
  54. Box.vala \
  55. Photo.vala \
  56. Orientation.vala \
  57. BatchImport.vala \
  58. Dialogs.vala \
  59. Resources.vala \
  60. Debug.vala \
  61. ColorTransformation.vala \
  62. Properties.vala \
  63. MapWidget.vala \
  64. CustomComponents.vala \
  65. Event.vala \
  66. International.vala \
  67. AppDirs.vala \
  68. PixbufCache.vala \
  69. CommandManager.vala \
  70. Commands.vala \
  71. SlideshowPage.vala \
  72. LibraryFiles.vala \
  73. Printing.vala \
  74. Tag.vala \
  75. Screensaver.vala \
  76. Exporter.vala \
  77. DirectoryMonitor.vala \
  78. LibraryMonitor.vala \
  79. VideoSupport.vala \
  80. Tombstone.vala \
  81. MetadataWriter.vala \
  82. Application.vala \
  83. TimedQueue.vala \
  84. MediaPage.vala \
  85. MediaDataRepresentation.vala \
  86. DesktopIntegration.vala \
  87. MediaInterfaces.vala \
  88. MediaMetadata.vala \
  89. VideoMetadata.vala \
  90. MediaMonitor.vala \
  91. PhotoMonitor.vala \
  92. VideoMonitor.vala \
  93. SearchFilter.vala \
  94. MediaViewTracker.vala \
  95. UnityProgressBar.vala \
  96. Upgrades.vala
  97. THUMBNAILER_SRC_FILES = \
  98. shotwell-video-thumbnailer.vala
  99. VAPI_FILES = \
  100. LConv.vapi \
  101. libexif.vapi \
  102. libraw.vapi \
  103. unity.vapi \
  104. libgphoto2.vapi
  105. DEPS_FILES = \
  106. unity.deps
  107. RESOURCE_FILES = \
  108. collection.ui \
  109. direct.ui \
  110. direct_context.ui \
  111. events_directory.ui \
  112. event.ui \
  113. fullscreen.ui \
  114. import_queue.ui \
  115. import.ui \
  116. media.ui \
  117. offline.ui \
  118. photo.ui \
  119. photo_context.ui \
  120. savedsearch.ui \
  121. search_bar.ui \
  122. search_sidebar_context.ui \
  123. set_background_dialog.glade \
  124. set_background_slideshow_dialog.glade \
  125. shotwell.glade \
  126. shotwell.xml \
  127. sidebar_default_context.ui \
  128. tag_sidebar_context.ui \
  129. tags.ui \
  130. top.ui \
  131. trash.ui
  132. SYS_INTEGRATION_FILES = \
  133. shotwell.appdata.xml \
  134. shotwell.desktop.head \
  135. shotwell-viewer.desktop.head \
  136. org.yorba.shotwell.gschema.xml \
  137. org.yorba.shotwell-extras.gschema.xml \
  138. shotwell.convert
  139. SCHEMA_FILES := $(shell ls misc/*.gschema.xml)
  140. SRC_HEADER_FILES = \
  141. gphoto.h
  142. TEXT_FILES = \
  143. AUTHORS \
  144. COPYING \
  145. INSTALL \
  146. MAINTAINERS \
  147. NEWS \
  148. README \
  149. THANKS
  150. ICON_FILES = \
  151. all-rejected.png \
  152. crop-pivot-reticle.png \
  153. crop.svg \
  154. drag_nub.png \
  155. five-star-filter.svg \
  156. five-stars.svg \
  157. flag-page.png \
  158. flag-trinket.png \
  159. four-star-filter-plus.svg \
  160. four-stars.svg \
  161. image-adjust.svg \
  162. import-all.png \
  163. import.svg \
  164. make-primary.svg \
  165. merge.svg \
  166. multiple-events.png \
  167. multiple-tags.png \
  168. no-event.png \
  169. noninterpretable-video.png \
  170. one-event.png \
  171. one-star-filter-plus.svg \
  172. one-star.svg \
  173. one-tag.png \
  174. pin-toolbar.svg \
  175. publish.png \
  176. redeye.png \
  177. rejected.svg \
  178. shotwell-street.jpg \
  179. shotwell-auto-enhance.png \
  180. sprocket.png \
  181. straighten.svg \
  182. three-star-filter-plus.svg \
  183. three-stars.svg \
  184. two-star-filter-plus.svg \
  185. two-stars.svg \
  186. videos-page.png \
  187. zoom-in.png \
  188. zoom-out.png \
  189. slideshow-extension-point.png \
  190. generic-plugin.png \
  191. filter-raw.png \
  192. filter-photos.png \
  193. filter-videos.png \
  194. filter-flagged.png
  195. VAPI_DIRS = \
  196. ./vapi
  197. HEADER_DIRS = \
  198. ./vapi
  199. LOCAL_PKGS = \
  200. posix \
  201. LConv
  202. EXT_PKGS = \
  203. atk \
  204. champlain-0.12 \
  205. champlain-gtk-0.12 \
  206. clutter-1.0 \
  207. clutter-gtk-1.0 \
  208. gdk-3.0 \
  209. gee-0.8 \
  210. gexiv2 \
  211. gio-unix-2.0 \
  212. glib-2.0 \
  213. gmodule-2.0 \
  214. gstreamer-1.0 \
  215. gstreamer-base-1.0 \
  216. gstreamer-pbutils-1.0 \
  217. gtk+-3.0 \
  218. gudev-1.0 \
  219. libexif \
  220. libgphoto2 \
  221. json-glib-1.0 \
  222. libraw \
  223. libsoup-2.4 \
  224. libxml-2.0 \
  225. sqlite3 \
  226. webkit2gtk-4.0
  227. ifdef UNITY_SUPPORT
  228. EXT_PKGS += unity
  229. endif
  230. THUMBNAILER_PKGS = \
  231. gtk+-3.0 \
  232. gee-0.8 \
  233. gstreamer-1.0 \
  234. gstreamer-base-1.0
  235. DIRECT_LIBS =
  236. EXT_PKG_VERSIONS = \
  237. gee-0.8 >= 0.10.0 \
  238. champlain-0.12 >= 0.12.4 \
  239. champlain-gtk-0.12 >= 0.12.0 \
  240. clutter-1.0 >= 1.12.0 \
  241. clutter-gtk-1.0 >= 1.0.0 \
  242. gexiv2 >= 0.4.90 \
  243. gio-unix-2.0 >= 2.20 \
  244. glib-2.0 >= $(MIN_GLIB_VERSION) \
  245. gmodule-2.0 >= 2.24.0 \
  246. gstreamer-1.0 >= 1.0.0 \
  247. gstreamer-base-1.0 >= 1.0.0 \
  248. gstreamer-plugins-base-1.0 >= 1.0.0 \
  249. gstreamer-pbutils-1.0 >= 1.0.0 \
  250. gtk+-3.0 >= 3.12.2 \
  251. gudev-1.0 >= 145 \
  252. libexif >= 0.6.16 \
  253. libgphoto2 >= 2.4.2 \
  254. libraw >= 0.13.2 \
  255. libsoup-2.4 >= 2.26.0 \
  256. libxml-2.0 >= 2.6.32 \
  257. rest-0.7 >= 0.7 \
  258. sqlite3 >= 3.5.9 \
  259. webkit2gtk-4.0
  260. DIRECT_LIBS_VERSIONS =
  261. VALA_PKGS = $(EXT_PKGS) $(LOCAL_PKGS)
  262. ifndef BUILD_DIR
  263. BUILD_DIR=src
  264. endif
  265. DESKTOP_APP_SHORT_NAME="Shotwell"
  266. DESKTOP_APP_FULL_NAME="Shotwell Photo Manager"
  267. DESKTOP_APPLICATION_COMMENT="Organize your photos"
  268. DESKTOP_APPLICATION_CLASS="Photo Manager"
  269. 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;"
  270. DIRECT_EDIT_DESKTOP_APP_SHORT_NAME="Shotwell"
  271. DIRECT_EDIT_DESKTOP_APP_FULL_NAME="Shotwell Photo Viewer"
  272. DIRECT_EDIT_DESKTOP_APPLICATION_CLASS="Photo Viewer"
  273. TEMPORARY_DESKTOP_FILES = misc/shotwell.desktop misc/shotwell-viewer.desktop
  274. # for help page and translation .po files
  275. include help/Makefile.am
  276. # Process the units
  277. UNIT_MKS := $(foreach unit,$(UNITS),src/$(unit)/mk/$(notdir $(unit)).mk)
  278. include $(UNIT_MKS)
  279. UNITIZE_DIR := src/.unitize
  280. UNITIZE_ENTRIES := $(foreach unit,$(APP_UNITS),$(UNITIZE_DIR)/_$(unit)_unitize_entry.vala)
  281. UNITIZE_INITS := $(foreach nm,$(UNIT_NAMESPACES),$(UNITIZE_DIR)/_$(nm)Internals.vala)
  282. UNITIZE_STAMP := $(UNITIZE_DIR)/.unitized
  283. PLUGINS_DIR := plugins
  284. INSTALL_PLUGINS = $(filter-out common,$(PLUGINS))
  285. PLUGINS_SO := $(foreach plugin,$(INSTALL_PLUGINS),$(PLUGINS_DIR)/$(plugin)/$(plugin).so)
  286. EXTRA_PLUGINS_SO := $(foreach plugin,$(EXTRA_PLUGINS),$(PLUGINS_DIR)/$(plugin)/$(plugin).so)
  287. PLUGINS_DIST_FILES := `$(MAKE) --directory=plugins --no-print-directory listfiles`
  288. THUMBNAILER_DIR := thumbnailer
  289. THUMBNAILER_BIN := $(THUMBNAILER_DIR)/$(PROGRAM_THUMBNAILER)
  290. EXPANDED_THUMBNAILER_SRC_FILES := $(foreach file, $(THUMBNAILER_SRC_FILES), $(THUMBNAILER_DIR)/$(file))
  291. MIGRATOR_DIR := settings-migrator
  292. MIGRATOR_BIN := $(MIGRATOR_DIR)/$(PROGRAM_MIGRATOR)
  293. EXPANDED_CORE_PO_FILES := $(foreach po,$(CORE_SUPPORTED_LANGUAGES),po/$(po).po)
  294. EXPANDED_SRC_FILES := $(UNITIZED_SRC_FILES) $(foreach src,$(UNUNITIZED_SRC_FILES),src/$(src)) \
  295. $(UNITIZE_INITS) $(UNITIZE_ENTRIES)
  296. EXPANDED_DIST_SRC_FILES := $(UNITIZED_SRC_FILES) $(foreach src,$(UNUNITIZED_SRC_FILES),src/$(src))
  297. EXPANDED_C_FILES := $(foreach file,$(subst src,$(BUILD_DIR),$(EXPANDED_SRC_FILES)),$(file:.vala=.c))
  298. EXPANDED_OBJ_FILES := $(foreach file,$(subst src,$(BUILD_DIR),$(EXPANDED_SRC_FILES)),$(file:.vala=.o))
  299. EXPANDED_SYS_INTEGRATION_FILES := $(foreach file,$(SYS_INTEGRATION_FILES),misc/$(file))
  300. EXPANDED_ICON_FILES := $(foreach file,$(ICON_FILES),icons/$(file))
  301. EXPANDED_APP_ICON_FILES := $(shell find app-icons -type f)
  302. EXPANDED_VAPI_FILES := $(foreach vapi,$(VAPI_FILES),vapi/$(vapi))
  303. EXPANDED_DEPS_FILES := $(foreach deps,$(DEPS_FILES),vapi/$(deps))
  304. EXPANDED_SRC_HEADER_FILES := $(foreach header,$(SRC_HEADER_FILES),vapi/$(header))
  305. EXPANDED_RESOURCE_FILES := $(foreach res,$(RESOURCE_FILES),ui/$(res))
  306. EXPANDED_DOC_IMAGES := $(foreach file,$(DOC_IMAGES),help/C/figures/$(file))
  307. EXPANDED_DOC_PAGES := $(foreach page,$(DOC_PAGES),help/C/$(page))
  308. EXPANDED_DOC_PO := $(foreach lang,$(DOC_LINGUAS),help/$(lang)/$(lang).po)
  309. EXPANDED_XLAT_DOC_PAGES := \
  310. $(foreach lang,$(DOC_LINGUAS),\
  311. $(foreach page,$(DOC_PAGES),help/$(lang)/$(page)))
  312. VALA_STAMP := $(BUILD_DIR)/.stamp
  313. LANG_STAMP := $(LOCAL_LANG_DIR)/.langstamp
  314. DOC_LANG_STAMP := help/.langstamp
  315. MAKE_FILES := Makefile $(CONFIG_IN) $(UNIT_MKS) unitize.mk units.mk
  316. PC_INPUT := shotwell-plugin-dev-1.0.m4
  317. PC_FILE := $(PC_INPUT:.m4=.pc)
  318. DIST_FILES = Makefile configure chkver $(EXPANDED_DIST_SRC_FILES) $(EXPANDED_VAPI_FILES) \
  319. $(EXPANDED_DEPS_FILES) $(EXPANDED_SRC_HEADER_FILES) $(EXPANDED_RESOURCE_FILES) $(TEXT_FILES) \
  320. $(EXPANDED_ICON_FILES) $(EXPANDED_APP_ICON_FILES) $(EXPANDED_SYS_INTEGRATION_FILES) $(EXPANDED_CORE_PO_FILES) \
  321. po/LINGUAS po/POTFILES.in po/POTFILES.skip \
  322. $(EXPANDED_DOC_PAGES) $(EXPANDED_DOC_IMAGES) $(EXPANDED_DOC_PO) help/Makefile.am \
  323. apport/shotwell.py $(UNIT_RESOURCES) $(UNIT_MKS) \
  324. unitize.mk units.mk $(PC_INPUT) $(PLUGINS_DIST_FILES) \
  325. $(EXPANDED_THUMBNAILER_SRC_FILES) $(MIGRATOR_BIN)
  326. DIST_TAR = $(PROGRAM)-$(VERSION).tar
  327. DIST_TAR_XZ = $(DIST_TAR).xz
  328. PACKAGE_ORIG_XZ = $(PROGRAM)_`parsechangelog | grep Version | sed 's/.*: //'`.orig.tar.xz
  329. VALAFLAGS := $(VALAFLAGS) $(VALA_DEFINES) --vapidir=plugins/
  330. VALA_CFLAGS := $(shell pkg-config --cflags $(EXT_PKGS) $(DIRECT_LIBS)) \
  331. $(foreach hdir,$(HEADER_DIRS),-I$(hdir)) \
  332. $(foreach def,$(DEFINES),-D$(def))
  333. VALA_LDFLAGS := $(shell pkg-config --libs $(EXT_PKGS) $(DIRECT_LIBS) gthread-2.0)
  334. # REQUIRED_CFLAGS absolutely get appended to CFLAGS, whatever the
  335. # the value of CFLAGS in the environment
  336. REQUIRED_CFLAGS := -fPIC
  337. # setting CFLAGS in configure.mk overrides build type
  338. ifndef CFLAGS
  339. ifdef BUILD_DEBUG
  340. CFLAGS = -O0 -g -pipe
  341. PLUGIN_CFLAGS = -O0 -g -pipe
  342. else
  343. CFLAGS = -O2 -g -pipe
  344. PLUGIN_CFLAGS = -O2 -g -pipe
  345. endif
  346. endif
  347. CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS)
  348. PLUGIN_CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS)
  349. # Required for gudev-1.0
  350. CFLAGS += -DG_UDEV_API_IS_SUBJECT_TO_CHANGE
  351. all: pkgcheck valacheck desktop
  352. ifdef ENABLE_BUILD_FOR_GLADE
  353. all: $(PLUGINS_DIR) lib$(PROGRAM).so $(PROGRAM) $(PC_FILE)
  354. else
  355. all: $(PLUGINS_DIR) $(PROGRAM) $(PC_FILE)
  356. endif
  357. include src/plugins/mk/interfaces.mk
  358. $(LANG_STAMP): $(EXPANDED_CORE_PO_FILES)
  359. @$(foreach po,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES ; \
  360. msgfmt -c -o $(LOCAL_LANG_DIR)/$(po)/LC_MESSAGES/shotwell.mo po/$(po).po`)
  361. @touch $(LANG_STAMP)
  362. clean:
  363. rm -f $(EXPANDED_C_FILES)
  364. rm -f $(EXPANDED_OBJ_FILES)
  365. rm -f $(VALA_STAMP)
  366. rm -rf $(PROGRAM)-$(VERSION)
  367. rm -f $(PROGRAM)
  368. rm -f $(THUMBNAILER_DIR)/$(PROGRAM_THUMBNAILER)
  369. rm -rf $(LOCAL_LANG_DIR)
  370. rm -f $(LANG_STAMP)
  371. rm -f $(DOC_LANG_STAMP)
  372. rm -f $(EXPANDED_XLAT_DOC_PAGES)
  373. rm -f $(TEMPORARY_DESKTOP_FILES)
  374. rm -f lib$(PROGRAM).so
  375. rm -rf $(UNITIZE_DIR)
  376. rm -f $(PLUGIN_VAPI)
  377. rm -f $(PLUGIN_HEADER)
  378. rm -f $(PLUGIN_DEPS)
  379. rm -f $(PLUGINS_SO)
  380. rm -f $(EXTRA_PLUGINS_SO)
  381. @$(MAKE) --directory=plugins clean
  382. rm -f $(PC_FILE)
  383. cleantemps:
  384. rm -f $(EXPANDED_C_FILES)
  385. rm -f $(EXPANDED_OBJ_FILES)
  386. rm -f $(VALA_STAMP)
  387. rm -f $(LANG_STAMP)
  388. rm -f $(DOC_LANG_STAMP)
  389. rm -f $(TEMPORARY_DESKTOP_FILES)
  390. @$(MAKE) --directory=plugins cleantemps
  391. rm -f misc/gschemas.compiled
  392. package:
  393. $(MAKE) dist
  394. cp $(DIST_TAR_XZ) $(PACKAGE_ORIG_XZ)
  395. rm -f $(DIST_TAR_XZ)
  396. misc/shotwell.desktop: misc/shotwell.desktop.head $(EXPANDED_CORE_PO_FILES)
  397. cp misc/shotwell.desktop.head misc/shotwell.desktop
  398. @ $(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \
  399. LANGUAGE=$(lang) gettext --domain=shotwell $(DESKTOP_APP_FULL_NAME)` \
  400. >> misc/shotwell.desktop ; \
  401. echo GenericName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) \
  402. gettext --domain=shotwell $(DESKTOP_APPLICATION_CLASS)` >> misc/shotwell.desktop ; \
  403. echo Comment[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
  404. --domain=shotwell $(DESKTOP_APPLICATION_COMMENT)` >> misc/shotwell.desktop ; \
  405. echo Keywords[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
  406. --domain=shotwell $(DESKTOP_APP_KEYWORDS)` >> misc/shotwell.desktop ;)
  407. ifndef DISABLE_DESKTOP_VALIDATE
  408. @ desktop-file-validate misc/shotwell.desktop 1>misc/shotwell.desktop.errors 2>&1; \
  409. if test -s misc/shotwell.desktop.errors; then \
  410. 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."; \
  411. exit 1; \
  412. else rm -f misc/shotwell.desktop.errors; \
  413. fi
  414. endif
  415. misc/shotwell-viewer.desktop: misc/shotwell-viewer.desktop.head $(EXPANDED_CORE_PO_FILES)
  416. cp misc/shotwell-viewer.desktop.head misc/shotwell-viewer.desktop
  417. $(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \
  418. LANGUAGE=$(lang) gettext --domain=shotwell $(DIRECT_EDIT_DESKTOP_APP_FULL_NAME)` \
  419. >> misc/shotwell-viewer.desktop ; \
  420. echo GenericName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \
  421. --domain=shotwell $(DIRECT_EDIT_DESKTOP_APPLICATION_CLASS)` >> misc/shotwell-viewer.desktop ;)
  422. ifndef DISABLE_DESKTOP_VALIDATE
  423. @ desktop-file-validate misc/shotwell-viewer.desktop 1>misc/shotwell-viewer.desktop.errors 2>&1; \
  424. if test -s misc/shotwell-viewer.desktop.errors; then \
  425. 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."; \
  426. exit 1; \
  427. else rm -f misc/shotwell-viewer.desktop.errors; \
  428. fi
  429. endif
  430. .PHONY: desktop
  431. desktop: misc/shotwell.desktop misc/shotwell-viewer.desktop
  432. .PHONY: dist
  433. dist:
  434. mkdir -p $(PROGRAM)-$(VERSION)
  435. cp --parents --preserve $(DIST_FILES) $(PROGRAM)-$(VERSION)
  436. tar --xz -cvf $(DIST_TAR_XZ) $(PROGRAM)-$(VERSION)
  437. rm -rf $(PROGRAM)-$(VERSION)
  438. distclean: clean
  439. rm -f configure.mk
  440. rm -f $(DIST_TAR_XZ)
  441. @$(MAKE) --directory=plugins distclean
  442. .PHONY: install
  443. install:
  444. touch $(LANG_STAMP)
  445. mkdir -p $(DESTDIR)$(PREFIX)/bin
  446. $(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin
  447. mkdir -p $(DESTDIR)$(LIBEXECDIR)
  448. $(INSTALL_PROGRAM) $(THUMBNAILER_BIN) $(DESTDIR)$(LIBEXECDIR)
  449. $(INSTALL_PROGRAM) $(MIGRATOR_BIN) $(DESTDIR)$(LIBEXECDIR)
  450. mkdir -p $(DESTDIR)$(PREFIX)/share/shotwell/icons
  451. $(INSTALL_DATA) icons/* $(DESTDIR)$(PREFIX)/share/shotwell/icons
  452. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps
  453. $(INSTALL_DATA) app-icons/16x16/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/shotwell.png
  454. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/22x22/apps
  455. $(INSTALL_DATA) app-icons/22x22/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/22x22/apps/shotwell.png
  456. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps
  457. $(INSTALL_DATA) app-icons/24x24/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps/shotwell.png
  458. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps
  459. $(INSTALL_DATA) app-icons/32x32/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps/shotwell.png
  460. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps
  461. $(INSTALL_DATA) app-icons/256x256/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/shotwell.png
  462. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps
  463. $(INSTALL_DATA) app-icons/48x48/apps/shotwell.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/shotwell.png
  464. mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps
  465. $(INSTALL_DATA) app-icons/symbolic/apps/shotwell-symbolic.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps/shotwell-symbolic.svg
  466. mkdir -p $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
  467. $(INSTALL_DATA) misc/org.yorba.shotwell.gschema.xml $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
  468. $(INSTALL_DATA) misc/org.yorba.shotwell-extras.gschema.xml $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
  469. ifndef DISABLE_SCHEMAS_COMPILE
  470. glib-compile-schemas $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
  471. endif
  472. ifndef DISABLE_GSETTINGS_CONVERT_INSTALL
  473. mkdir -p $(DESTDIR)/usr/share/GConf/gsettings
  474. $(INSTALL_DATA) misc/shotwell.convert $(DESTDIR)/usr/share/GConf/gsettings
  475. endif
  476. ifndef DISABLE_ICON_UPDATE
  477. -gtk-update-icon-cache -t -f $(DESTDIR)$(PREFIX)/share/icons/hicolor || :
  478. endif
  479. mkdir -p $(DESTDIR)$(PREFIX)/share/shotwell/ui
  480. $(INSTALL_DATA) ui/* $(DESTDIR)$(PREFIX)/share/shotwell/ui
  481. mkdir -p $(DESTDIR)$(PREFIX)/share/applications
  482. mkdir -p $(DESTDIR)$(PREFIX)/share/appdata
  483. $(INSTALL_DATA) misc/shotwell.desktop $(DESTDIR)$(PREFIX)/share/applications
  484. $(INSTALL_DATA) misc/shotwell-viewer.desktop $(DESTDIR)$(PREFIX)/share/applications
  485. $(INSTALL_DATA) misc/shotwell.appdata.xml $(DESTDIR)$(PREFIX)/share/appdata
  486. ifndef DISABLE_DESKTOP_UPDATE
  487. -update-desktop-database || :
  488. endif
  489. ifdef ENABLE_APPORT_HOOK_INSTALL
  490. mkdir -p $(DESTDIR)$(PREFIX)/share/apport/package-hooks
  491. $(INSTALL_DATA) apport/shotwell.py $(DESTDIR)$(PREFIX)/share/apport/package-hooks
  492. endif
  493. ifndef DISABLE_HELP_INSTALL
  494. mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C
  495. $(INSTALL_DATA) $(EXPANDED_DOC_PAGES) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C
  496. mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures
  497. $(INSTALL_DATA) $(EXPANDED_DOC_IMAGES) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/C/figures
  498. $(foreach lang,$(DOC_LINGUAS),`mkdir -p $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/$(lang)`)
  499. $(foreach lang,$(DOC_LINGUAS),\
  500. $(foreach page,$(DOC_PAGES),\
  501. `$(INSTALL_DATA) help/$(lang)/$(page) $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell/$(lang)`\
  502. )\
  503. )
  504. endif
  505. -$(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`mkdir -p $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES ; \
  506. $(INSTALL_DATA) $(LOCAL_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo \
  507. $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
  508. mkdir -p $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  509. $(INSTALL_PROGRAM) $(PLUGINS_SO) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  510. $(INSTALL_PROGRAM) plugins/common/libshotwell-plugin-common.so $(DESTDIR)$(PREFIX)/$(LIB)
  511. ifdef PLUGINS_RC
  512. $(INSTALL_DATA) $(PLUGINS_RC) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  513. endif
  514. ifndef DISABLE_EXTRA_PLUGINS_INSTALL
  515. $(INSTALL_PROGRAM) $(EXTRA_PLUGINS_SO) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  516. ifdef EXTRA_PLUGINS_RC
  517. $(INSTALL_DATA) $(EXTRA_PLUGINS_RC) $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  518. endif
  519. endif
  520. ifdef INSTALL_HEADERS
  521. mkdir -p $(DESTDIR)$(PREFIX)/include/shotwell/plugins
  522. $(INSTALL_DATA) $(PLUGIN_HEADER) $(DESTDIR)$(PREFIX)/include/shotwell/plugins
  523. mkdir -p $(DESTDIR)$(PREFIX)/share/vala/vapi
  524. $(INSTALL_DATA) $(PLUGIN_VAPI) $(DESTDIR)$(PREFIX)/share/vala/vapi
  525. $(INSTALL_DATA) $(PLUGIN_DEPS) $(DESTDIR)$(PREFIX)/share/vala/vapi
  526. test -d $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig || mkdir -p $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig
  527. $(INSTALL_DATA) $(PC_FILE) $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig
  528. endif
  529. # Old versions of Makefile installed util binaries to $(PREFIX)/bin, so uninstall from there for now
  530. uninstall:
  531. rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM)
  532. rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_THUMBNAILER)
  533. rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_MIGRATOR)
  534. rm -f $(DESTDIR)$(LIBEXECDIR)/$(PROGRAM_THUMBNAILER)
  535. rm -f $(DESTDIR)$(LIBEXECDIR)/$(PROGRAM_MIGRATOR)
  536. rm -fr $(DESTDIR)$(PREFIX)/share/shotwell
  537. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/shotwell.png
  538. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/22x22/apps/shotwell.png
  539. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/24x24/apps/shotwell.png
  540. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps/shotwell.png
  541. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/shotwell.png
  542. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/shotwell.png
  543. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps/shotwell-symbolic.svg
  544. rm -f $(DESTDIR)$(PREFIX)/share/applications/shotwell.desktop
  545. rm -f $(DESTDIR)$(PREFIX)/share/applications/shotwell-viewer.desktop
  546. rm -f $(DESTDIR)$(PREFIX)/share/appdata/shotwell.appdata.xml
  547. ifndef DISABLE_DESKTOP_UPDATE
  548. -update-desktop-database || :
  549. endif
  550. ifndef DISABLE_HELP_INSTALL
  551. rm -rf $(DESTDIR)$(PREFIX)/share/gnome/help/shotwell
  552. endif
  553. ifdef ENABLE_APPORT_HOOK_INSTALL
  554. rm -f $(DESTDIR)$(PREFIX)/share/apport/package-hooks/shotwell.py
  555. endif
  556. $(foreach lang,$(CORE_SUPPORTED_LANGUAGES),`rm -f $(SYSTEM_LANG_DIR)/$(lang)/LC_MESSAGES/shotwell.mo`)
  557. rm -rf $(DESTDIR)$(PREFIX)/$(LIB)/shotwell/plugins/builtin
  558. rm -rf $(DESTDIR)$(PREFIX)/$(LIB)/libshotwell-plugin-common.so
  559. ifdef INSTALL_HEADERS
  560. rm -rf $(DESTDIR)$(PREFIX)/include/shotwell
  561. rm -f $(foreach vapi,$(PLUGIN_VAPI),$(DESTDIR)$(PREFIX)/share/vala/vapi/$(notdir $(vapi)))
  562. rm -f $(foreach dep,$(PLUGIN_DEPS),$(DESTDIR)$(PREFIX)/share/vala/vapi/$(notdir $(dep)))
  563. rm -f $(DESTDIR)$(PREFIX)/$(LIB)/pkgconfig/$(PC_FILE)
  564. endif
  565. rm -f $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/org.yorba.shotwell.gschema.xml
  566. rm -f $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/org.yorba.shotwell-extras.gschema.xml
  567. ifndef DISABLE_SCHEMAS_COMPILE
  568. glib-compile-schemas $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas
  569. endif
  570. ifndef DISABLE_GSETTINGS_CONVERT_INSTALL
  571. rm -f $(DESTDIR)/usr/share/GConf/gsettings/shotwell.convert
  572. endif
  573. $(PC_FILE): $(PC_INPUT) $(MAKE_FILES)
  574. m4 '-D_VERSION_=$(VERSION)' '-D_PREFIX_=$(PREFIX)' '-D_REQUIREMENTS_=$(PLUGIN_PKG_REQS)' \
  575. '-D_LIB_=$(LIB)' $< > $@
  576. $(UNITIZE_STAMP): $(MAKE_FILES) src/unit/rc/UnitInternals.m4 src/unit/rc/unitize_entry.m4
  577. @mkdir -p $(UNITIZE_DIR)
  578. @$(foreach unit,$(APP_UNITS),\
  579. `m4 '-D_APP_UNIT_=$(unit)' src/unit/rc/unitize_entry.m4 > $(UNITIZE_DIR)/_$(unit)_unitize_entry.vala`)
  580. @$(foreach nm,$(UNIT_NAMESPACES),\
  581. `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`)
  582. @touch $@
  583. $(UNITIZE_INITS) $(UNITIZE_ENTRIES): $(UNITIZE_STAMP)
  584. @
  585. # EXPANDED_SRC_FILES includes UNITIZE_INITS and UNITIZE_ENTRY
  586. $(VALA_STAMP): $(EXPANDED_SRC_FILES) $(EXPANDED_VAPI_FILES) $(EXPANDED_SRC_HEADER_FILES)
  587. $(call check_valac_version)
  588. @echo Compiling Vala code...
  589. @mkdir -p $(BUILD_DIR)
  590. $(VALAC) --ccode --directory=$(BUILD_DIR) --basedir=src \
  591. $(foreach pkg,$(VALA_PKGS),--pkg=$(pkg)) \
  592. $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
  593. $(VALAFLAGS) \
  594. $(EXPANDED_SRC_FILES)
  595. @touch $@
  596. # Do not remove hard tab or at symbol; necessary for dependencies to complete.
  597. $(EXPANDED_C_FILES): $(VALA_STAMP)
  598. @
  599. $(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile
  600. $(CC) -c $(VALA_CFLAGS) $(CFLAGS) -o $@ $<
  601. $(PROGRAM): $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP) $(THUMBNAILER_BIN) misc/gschemas.compiled $(DOC_LANG_STAMP)
  602. $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(LDFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(EXPORT_FLAGS) -o $@
  603. misc/gschemas.compiled: $(SCHEMA_FILES)
  604. rm -f misc/gschemas.compiled
  605. glib-compile-schemas misc
  606. $(DOC_LANG_STAMP): $(EXPANDED_DOC_PAGES) $(EXPANDED_DOC_PO)
  607. $(foreach lang,$(DOC_LINGUAS), \
  608. $(foreach page,$(DOC_PAGES), `xml2po -m mallard -p help/$(lang)/$(lang).po -o help/$(lang)/$(page) help/C/$(page)`))
  609. @touch $(DOC_LANG_STAMP)
  610. $(THUMBNAILER_BIN): $(EXPANDED_THUMBNAILER_SRC_FILES)
  611. $(VALAC) $(EXPANDED_THUMBNAILER_SRC_FILES) $(VALAFLAGS) -o $@ $(foreach pkg,$(THUMBNAILER_PKGS),--pkg=$(pkg))
  612. $(PLUGINS_SO) $(EXTRA_PLUGINS_SO): $(PLUGINS_DIR)
  613. @
  614. .PHONY: $(PLUGINS_DIR)
  615. $(PLUGINS_DIR): $(PLUGIN_VAPI) $(PLUGIN_HEADER) $(PLUGIN_DEPS)
  616. $(call check_valac_version)
  617. @$(MAKE) --directory=$@ PLUGINS_VERSION="$(VERSION)" USER_VALAFLAGS="$(USER_VALAFLAGS)" \
  618. PLUGIN_CFLAGS="$(PLUGIN_CFLAGS)"
  619. .PHONY: docs
  620. docs:
  621. # valadoc complains if the directory already exists
  622. @rm -rf docs
  623. valadoc --directory=docs --package-name=shotwell-plugin-dev --package-version=$(VERSION) --verbose \
  624. --no-protected \
  625. $(foreach def,$(DEFINES),--define=$(def)) \
  626. $(foreach pkg,$(VALA_PKGS),--pkg=$(pkg)) \
  627. $(foreach vapidir,$(VAPI_DIRS),--vapidir=$(vapidir)) \
  628. $(PLUGIN_INTERFACES)
  629. glade: lib$(PROGRAM).so
  630. lib$(PROGRAM).so: $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP)
  631. $(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(LDFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(EXPORT_FLAGS) -shared -o $@
  632. .PHONY: pkgcheck
  633. pkgcheck:
  634. @if ! test -f configure.mk; then echo "Please run ./configure first."; exit 2; fi
  635. .PHONY: valacheck
  636. valacheck:
  637. @ $(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 )
  638. @ ./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 )
  639. $(if $(MAX_VALAC_VERSION),\
  640. @ ./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 ),)
  641. ifndef ASSUME_PKGS
  642. ifdef EXT_PKG_VERSIONS
  643. @pkg-config --print-errors --exists '$(EXT_PKG_VERSIONS) $(DIRECT_LIBS_VERSIONS)'
  644. endif
  645. ifdef EXT_PKGS
  646. @pkg-config --print-errors --exists $(EXT_PKGS) $(DIRECT_LIBS_VERSIONS)
  647. endif
  648. endif
  649. @ type msgfmt > /dev/null || ( echo 'msgfmt (usually found in the gettext package) is missing and is required to build Shotwell. ' ; exit 1 )
  650. ifndef DISABLE_DESKTOP_VALIDATE
  651. @ 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 )
  652. endif