geary/Makefile
Jim Nelson d179cb9bdd Persist messages locally: #3742
This completes the heavy lifting of persisting messages locally.  The strategy is that the local database may be sparsely populated, both in the availability of messages in a folder and the fields of a message that is partially stored.  As data is pulled from the remote server it's always stored in the database.  Future requests will always go to the database first, preventing unnecessary network traffic.

Also, this patch will detect when a message is stored in multiple folders on the server.  The database uses soft links from the folder to the message, so the message is stored only once in the database.  This technique relies heavily on the availability and validity of the Message-ID header, but we expect this to be reliable the vast majority of the time.
2011-06-23 19:07:04 -07:00

158 lines
4.7 KiB
Makefile

# Only geary is built by default. Use "make all" to build command-line tools.
PROGRAM = geary
BUILD_ROOT = 1
VALAC := valac
VALAFLAGS := -g --enable-checking --fatal-warnings --vapidir=vapi
APPS := geary console watchmbox
ENGINE_SRC := \
src/engine/Engine.vala \
src/engine/ImapEngine.vala \
src/engine/EngineFolder.vala \
src/engine/api/Account.vala \
src/engine/api/Email.vala \
src/engine/api/EmailProperties.vala \
src/engine/api/EmailLocation.vala \
src/engine/api/Folder.vala \
src/engine/api/FolderProperties.vala \
src/engine/api/Credentials.vala \
src/engine/api/EngineError.vala \
src/engine/api/RemoteInterfaces.vala \
src/engine/api/LocalInterfaces.vala \
src/engine/sqlite/Database.vala \
src/engine/sqlite/Table.vala \
src/engine/sqlite/Row.vala \
src/engine/sqlite/MailDatabase.vala \
src/engine/sqlite/FolderTable.vala \
src/engine/sqlite/FolderRow.vala \
src/engine/sqlite/MessageRow.vala \
src/engine/sqlite/MessageTable.vala \
src/engine/sqlite/MessageLocationRow.vala \
src/engine/sqlite/MessageLocationTable.vala \
src/engine/sqlite/ImapMessageLocationPropertiesTable.vala \
src/engine/sqlite/ImapMessageLocationPropertiesRow.vala \
src/engine/sqlite/api/Account.vala \
src/engine/sqlite/api/Folder.vala \
src/engine/state/Machine.vala \
src/engine/state/MachineDescriptor.vala \
src/engine/state/Mapping.vala \
src/engine/common/MessageData.vala \
src/engine/imap/ClientConnection.vala \
src/engine/imap/ClientSession.vala \
src/engine/imap/ClientSessionManager.vala \
src/engine/imap/DataFormat.vala \
src/engine/imap/Mailbox.vala \
src/engine/imap/Parameter.vala \
src/engine/imap/Tag.vala \
src/engine/imap/Command.vala \
src/engine/imap/Commands.vala \
src/engine/imap/ResponseCode.vala \
src/engine/imap/ResponseCodeType.vala \
src/engine/imap/ServerResponse.vala \
src/engine/imap/StatusResponse.vala \
src/engine/imap/StatusDataType.vala \
src/engine/imap/ServerData.vala \
src/engine/imap/ServerDataType.vala \
src/engine/imap/FetchDataType.vala \
src/engine/imap/Status.vala \
src/engine/imap/CommandResponse.vala \
src/engine/imap/MessageData.vala \
src/engine/imap/MessageSet.vala \
src/engine/imap/Serializable.vala \
src/engine/imap/Serializer.vala \
src/engine/imap/Deserializer.vala \
src/engine/imap/Error.vala \
src/engine/imap/Flag.vala \
src/engine/imap/decoders/CommandResults.vala \
src/engine/imap/decoders/FetchDataDecoder.vala \
src/engine/imap/decoders/FetchResults.vala \
src/engine/imap/decoders/NoopResults.vala \
src/engine/imap/decoders/ListResults.vala \
src/engine/imap/decoders/SelectExamineResults.vala \
src/engine/imap/decoders/StatusResults.vala \
src/engine/imap/api/Account.vala \
src/engine/imap/api/EmailLocation.vala \
src/engine/imap/api/EmailProperties.vala \
src/engine/imap/api/Folder.vala \
src/engine/imap/api/FolderProperties.vala \
src/engine/rfc822/MailboxAddress.vala \
src/engine/rfc822/MailboxAddresses.vala \
src/engine/rfc822/MessageData.vala \
src/engine/util/Memory.vala \
src/engine/util/ReferenceSemantics.vala \
src/engine/util/Trillian.vala
COMMON_SRC := \
src/common/String.vala \
src/common/Interfaces.vala \
src/common/YorbaApplication.vala \
src/common/Date.vala
CLIENT_SRC := \
src/client/main.vala \
src/client/GearyApplication.vala \
src/client/ui/MainWindow.vala \
src/client/ui/MessageListView.vala \
src/client/ui/MessageListStore.vala \
src/client/ui/FolderListView.vala \
src/client/ui/FolderListStore.vala \
src/client/ui/MessageViewer.vala \
src/client/ui/MessageBuffer.vala \
src/client/util/Intl.vala
CONSOLE_SRC := \
src/console/main.vala
WATCHMBOX_SRC := \
src/tests/watchmbox.vala
ALL_SRC := $(ENGINE_SRC) $(COMMON_SRC) $(CLIENT_SRC) $(CONSOLE_SRC) $(WATCHMBOX_SRC)
EXTERNAL_PKGS := \
gio-2.0 >= 2.28.0 \
gee-1.0 >= 0.6.1 \
gtk+-2.0 >= 2.22.0 \
unique-1.0 >= 1.0.0 \
gmime-2.4 >= 2.4.14 \
sqlheavy-0.1 >= 0.0.1
EXTERNAL_BINDINGS := \
gio-2.0 \
gee-1.0 \
gtk+-2.0 \
unique-1.0 \
posix \
gmime-2.4 \
sqlheavy-0.1
VAPI_FILES := \
vapi/gmime-2.4.vapi
geary: $(ENGINE_SRC) $(COMMON_SRC) $(CLIENT_SRC) Makefile $(VAPI_FILES)
pkg-config --exists --print-errors '$(EXTERNAL_PKGS)'
$(VALAC) $(VALAFLAGS) $(foreach binding,$(EXTERNAL_BINDINGS),--pkg=$(binding)) \
$(ENGINE_SRC) $(COMMON_SRC) $(CLIENT_SRC) \
-o $@
.PHONY: all
all: $(APPS)
.PHONY: clean
clean:
rm -f $(ALL_SRC:.vala=.c)
rm -f $(ALL_SRC:.vala=.vala.c)
rm -f $(APPS)
console: $(ENGINE_SRC) $(COMMON_SRC) $(CONSOLE_SRC) Makefile
$(VALAC) $(VALAFLAGS) $(foreach binding,$(EXTERNAL_BINDINGS),--pkg=$(binding)) \
$(ENGINE_SRC) $(COMMON_SRC) $(CONSOLE_SRC) \
-o $@
watchmbox: $(ENGINE_SRC) $(COMMON_SRC) $(WATCHMBOX_SRC) Makefile
$(VALAC) $(VALAFLAGS) $(foreach binding,$(EXTERNAL_BINDINGS),--pkg=$(binding)) \
$(ENGINE_SRC) $(COMMON_SRC) $(WATCHMBOX_SRC) \
-o $@