Closes #4982 Closes #4964 Switched to CMake, added an installer/uninstaller

This commit is contained in:
Eric Gregory 2012-04-23 18:54:26 -07:00
parent 3b1c6d8122
commit 9e3bab47f0
21 changed files with 1175 additions and 483 deletions

42
CMakeLists.txt Normal file
View file

@ -0,0 +1,42 @@
# Geary build script
# Copyright 2011-2012 Yorba Foundation
#
# Check http://webdev.elementaryos.org/docs/developer-guide/cmake for documentation
cmake_minimum_required(VERSION 2.8)
cmake_policy(VERSION 2.6)
project(geary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake )
#
# Base bits
#
set(GETTEXT_PACKAGE "geary")
set(RELEASE_NAME "Lightweight email client for Gnome.")
set(VERSION "0.0.0+trunk")
set(VERSION_INFO "Release")
add_subdirectory(src)
add_subdirectory(icons)
add_subdirectory(sql)
add_subdirectory(ui)
#
# Uninstall target
#
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY
)
add_custom_target(
uninstall
COMMAND
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
COMMAND
${glib_schema_compiler} ${GSETTINGS_DIR}
)

65
cmake/FindVala.cmake Normal file
View file

@ -0,0 +1,65 @@
##
# Copyright 2009-2010 Jakob Westhoff. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of Jakob Westhoff
##
##
# Find module for the Vala compiler (valac)
#
# This module determines wheter a Vala compiler is installed on the current
# system and where its executable is.
#
# Call the module using "find_package(Vala) from within your CMakeLists.txt.
#
# The following variables will be set after an invocation:
#
# VALA_FOUND Whether the vala compiler has been found or not
# VALA_EXECUTABLE Full path to the valac executable if it has been found
# VALA_VERSION Version number of the available valac
##
# Search for the valac executable in the usual system paths.
find_program(VALA_EXECUTABLE
NAMES valac)
# Handle the QUIETLY and REQUIRED arguments, which may be given to the find call.
# Furthermore set VALA_FOUND to TRUE if Vala has been found (aka.
# VALA_EXECUTABLE is set)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Vala DEFAULT_MSG VALA_EXECUTABLE)
mark_as_advanced(VALA_EXECUTABLE)
# Determine the valac version
if(VALA_FOUND)
execute_process(COMMAND ${VALA_EXECUTABLE} "--version"
OUTPUT_VARIABLE "VALA_VERSION")
string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION})
string(STRIP ${VALA_VERSION} "VALA_VERSION")
endif(VALA_FOUND)

108
cmake/GSettings.cmake Normal file
View file

@ -0,0 +1,108 @@
# GSettings.cmake
# Originally based on CMake macros written for Marlin
# Updated by Yorba for newer versions of GLib.
#
# NOTE: This module does an in-place compilation of GSettings; the
# resulting gschemas.compiled file will end up in the same
# source folder as the original schema(s).
option(GSETTINGS_COMPILE "Compile GSettings schemas. Can be disabled for packaging reasons." ON)
option(GSETTINGS_COMPILE_IN_PLACE "Compile GSettings schemas in the build folder. This is used for running an appliction without installing the GSettings systemwide. The application will need to set GSETTINGS_SCHEMA_DIR" ON)
if (GSETTINGS_COMPILE)
message(STATUS "GSettings schemas will be compiled.")
endif ()
if (GSETTINGS_COMPILE_IN_PLACE)
message(STATUS "GSettings schemas will be compiled in-place.")
endif ()
macro(add_schemas GSETTINGS_TARGET SCHEMA_DIRECTORY)
set(PKG_CONFIG_EXECUTABLE pkg-config)
# Locate all schema files.
file(GLOB all_schema_files
"${SCHEMA_DIRECTORY}/*.gschema.xml"
)
# Find the GLib path for schema installation
execute_process(
COMMAND
${PKG_CONFIG_EXECUTABLE}
glib-2.0
--variable prefix
OUTPUT_VARIABLE
_glib_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/" CACHE INTERNAL "")
# Fetch path for schema compiler from pkg-config
execute_process(
COMMAND
${PKG_CONFIG_EXECUTABLE}
gio-2.0
--variable
glib_compile_schemas
OUTPUT_VARIABLE
_glib_compile_schemas
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(glib_schema_compiler ${_glib_compile_schemas} CACHE INTERNAL "")
if (GSETTINGS_COMPILE_IN_PLACE)
set(COMPILE_IN_PLACE_DIR ${CMAKE_BINARY_DIR}/gsettings)
add_custom_command(
TARGET
${GSETTINGS_TARGET}
COMMAND
${CMAKE_COMMAND} -E make_directory "${COMPILE_IN_PLACE_DIR}"
)
# Copy all schemas to the build folder.
foreach(schema_file ${all_schema_files})
add_custom_command(
TARGET
${GSETTINGS_TARGET}
COMMAND
${CMAKE_COMMAND} -E copy "${schema_file}" "${COMPILE_IN_PLACE_DIR}"
COMMENT "Copying schema ${schema_file} to ${COMPILE_IN_PLACE_DIR}"
)
endforeach()
# Compile schema in-place.
add_custom_command(
TARGET
${GSETTINGS_TARGET}
COMMAND
${glib_schema_compiler} ${COMPILE_IN_PLACE_DIR}
COMMENT "Compiling schemas in folder: ${COMPILE_IN_PLACE_DIR}"
)
endif ()
# Install and recompile schemas
message(STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}")
install(
FILES
${all_schema_files}
DESTINATION
${GSETTINGS_DIR}
OPTIONAL
)
if (GSETTINGS_COMPILE)
install(
CODE
"message (STATUS \"Compiling GSettings schemas\")"
)
install(
CODE
"execute_process (COMMAND ${glib_schema_compiler} ${GSETTINGS_DIR})"
)
endif ()
endmacro(add_schemas)

View file

@ -0,0 +1,36 @@
##
# This is a helper Macro to parse optional arguments in Macros/Functions
# It has been taken from the public CMake wiki.
# See http://www.cmake.org/Wiki/CMakeMacroParseArguments for documentation and
# licensing.
##
macro(parse_arguments prefix arg_names option_names)
set(DEFAULT_ARGS)
foreach(arg_name ${arg_names})
set(${prefix}_${arg_name})
endforeach(arg_name)
foreach(option ${option_names})
set(${prefix}_${option} FALSE)
endforeach(option)
set(current_arg_name DEFAULT_ARGS)
set(current_arg_list)
foreach(arg ${ARGN})
set(larg_names ${arg_names})
list(FIND larg_names "${arg}" is_arg_name)
if(is_arg_name GREATER -1)
set(${prefix}_${current_arg_name} ${current_arg_list})
set(current_arg_name ${arg})
set(current_arg_list)
else(is_arg_name GREATER -1)
set(loption_names ${option_names})
list(FIND loption_names "${arg}" is_option)
if(is_option GREATER -1)
set(${prefix}_${arg} TRUE)
else(is_option GREATER -1)
set(current_arg_list ${current_arg_list} ${arg})
endif(is_option GREATER -1)
endif(is_arg_name GREATER -1)
endforeach(arg)
set(${prefix}_${current_arg_name} ${current_arg_list})
endmacro(parse_arguments)

173
cmake/README.rst Normal file
View file

@ -0,0 +1,173 @@
==========
Vala CMake
==========
:Author:
Jakob Westhoff
:Version:
Draft
Overview
========
Vala CMake is a collection of macros for the CMake_ build system to allow the
creation and management of projects developed using the Vala_ programming
language or its "Genie" flavor (less tested).
Installation
============
To use the Vala macros in your own project you need to copy the macro files to
an arbitrary folder in your projects directory and reference them in your
``CMakeLists.txt`` file.
Assuming the macros are stored under ``cmake/vala`` in your projects folder you
need to add the following information to your base ``CMakeLists.txt``::
list(APPEND CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/cmake/vala
)
After the new module path as been added you can simply include the provided
modules or use the provided find routines.
Finding Vala
============
The find module for vala works like any other Find module in CMake.
You can use it by simply calling the usual ``find_package`` function. Default
parameters like ``REQUIRED`` and ``QUIETLY`` are supported.
::
find_package(Vala REQUIRED)
After a successful call to the find_package function the following variables
will be set:
VALA_FOUND
Whether the vala compiler has been found or not
VALA_EXECUTABLE
Full path to the valac executable if it has been found
VALA_VERSION
Version number of the available valac
Precompiling Vala sources
=========================
CMake is mainly supposed to handle c or c++ based projects. Luckily every vala
program is translated into plain c code using the vala compiler, followed by
normal compilation of the generated c program using gcc.
The macro ``vala_precompile`` uses that fact to create c files from your .vala
sources for further CMake processing.
The first parameter provided is a variable, which will be filled with a list of
c files outputted by the vala compiler. This list can than be used in
conjunction with functions like ``add_executable`` or others to create the
necessary compile rules with CMake.
The initial variable is followed by a list of .vala files to be compiled.
Please take care to add every vala file belonging to the currently compiled
project or library as Vala will otherwise not be able to resolve all
dependencies.
The following sections may be specified afterwards to provide certain options
to the vala compiler:
PACKAGES
A list of vala packages/libraries to be used during the compile cycle. The
package names are exactly the same, as they would be passed to the valac
"--pkg=" option.
OPTIONS
A list of optional options to be passed to the valac executable. This can be
used to pass "--thread" for example to enable multi-threading support.
DIRECTORY
Specify the directory where the output source files will be stored. If
ommitted, the source files will be stored in CMAKE_CURRENT_BINARY_DIR.
CUSTOM_VAPIS
A list of custom vapi files to be included for compilation. This can be
useful to include freshly created vala libraries without having to install
them in the system.
GENERATE_VAPI
Pass all the needed flags to the compiler to create an internal vapi for
the compiled library. The provided name will be used for this and a
<provided_name>.vapi file will be created.
GENERATE_HEADER
Let the compiler generate a header file for the compiled code. There will
be a header file as well as an internal header file being generated called
<provided_name>.h and <provided_name>_internal.h
The following call is a simple example to the vala_precompile macro showing an
example to every of the optional sections::
vala_precompile(VALA_C
source1.vala
source2.vala
source3.vala
PACKAGES
gtk+-2.0
gio-1.0
posix
OPTIONS
--thread
CUSTOM_VAPIS
some_vapi.vapi
GENERATE_VAPI
myvapi
GENERATE_HEADER
myheader
)
Most important is the variable VALA_C which will contain all the generated c
file names after the call. The easiest way to use this information is to tell
CMake to create an executable out of it.
::
add_executable(myexecutable ${VALA_C})
Further reading
===============
The `Pdf Presenter Console`__ , which is a vala based project of mine, makes
heavy usage of the here described macros. To look at a real world example of
these macros the mentioned project is the right place to take a look. The svn
trunk of it can be found at::
svn://pureenergy.cc/pdf_presenter_console/trunk
__ http://westhoffswelt.de/projects/pdf_presenter_console.html
Acknowledgments
===============
Thanks go out to Florian Sowade, a fellow local PHP-Usergroupie, who helped me
a lot with the initial version of this macros and always answered my mostly
dumb CMake questions.
.. _CMake: http://cmake.org
.. _Vala: http://live.gnome.org/Vala
.. _Genie: http://live.gnome.org/Genie
..
Local Variables:
mode: rst
fill-column: 79
End:
vim: et syn=rst tw=79

187
cmake/ValaPrecompile.cmake Normal file
View file

@ -0,0 +1,187 @@
##
# Copyright 2009-2010 Jakob Westhoff. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of Jakob Westhoff
##
include(ParseArguments)
find_package(Vala REQUIRED)
##
# Compile vala files to their c equivalents for further processing.
#
# The "vala_precompile" macro takes care of calling the valac executable on the
# given source to produce c files which can then be processed further using
# default cmake functions.
#
# The first parameter provided is a variable, which will be filled with a list
# of c files outputted by the vala compiler. This list can than be used in
# conjuction with functions like "add_executable" or others to create the
# neccessary compile rules with CMake.
#
# The initial variable is followed by a list of .vala files to be compiled.
# Please take care to add every vala file belonging to the currently compiled
# project or library as Vala will otherwise not be able to resolve all
# dependencies.
#
# The following sections may be specified afterwards to provide certain options
# to the vala compiler:
#
# PACKAGES
# A list of vala packages/libraries to be used during the compile cycle. The
# package names are exactly the same, as they would be passed to the valac
# "--pkg=" option.
#
# OPTIONS
# A list of optional options to be passed to the valac executable. This can be
# used to pass "--thread" for example to enable multi-threading support.
#
# CUSTOM_VAPIS
# A list of custom vapi files to be included for compilation. This can be
# useful to include freshly created vala libraries without having to install
# them in the system.
#
# GENERATE_VAPI
# Pass all the needed flags to the compiler to create an internal vapi for
# the compiled library. The provided name will be used for this and a
# <provided_name>.vapi file will be created.
#
# GENERATE_HEADER
# Let the compiler generate a header file for the compiled code. There will
# be a header file as well as an internal header file being generated called
# <provided_name>.h and <provided_name>_internal.h
#
# The following call is a simple example to the vala_precompile macro showing
# an example to every of the optional sections:
#
# vala_precompile(VALA_C
# source1.vala
# source2.vala
# source3.vala
# PACKAGES
# gtk+-2.0
# gio-1.0
# posix
# DIRECTORY
# gen
# OPTIONS
# --thread
# CUSTOM_VAPIS
# some_vapi.vapi
# GENERATE_VAPI
# myvapi
# GENERATE_HEADER
# myheader
# )
#
# Most important is the variable VALA_C which will contain all the generated c
# file names after the call.
##
macro(vala_precompile output)
parse_arguments(ARGS "PACKAGES;OPTIONS;DIRECTORY;GENERATE_HEADER;GENERATE_VAPI;CUSTOM_VAPIS" "" ${ARGN})
if(ARGS_DIRECTORY)
set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ARGS_DIRECTORY})
else(ARGS_DIRECTORY)
set(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif(ARGS_DIRECTORY)
include_directories(${DIRECTORY})
set(vala_pkg_opts "")
foreach(pkg ${ARGS_PACKAGES})
list(APPEND vala_pkg_opts "--pkg=${pkg}")
endforeach(pkg ${ARGS_PACKAGES})
set(in_files "")
set(out_files "")
set(${output} "")
foreach(src ${ARGS_DEFAULT_ARGS})
string(REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/ "" src ${src})
string(REGEX MATCH "^/" IS_MATCHED ${src})
if(${IS_MATCHED} MATCHES "/")
list(APPEND in_files "${src}")
else()
list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
endif()
string(REPLACE ".vala" ".c" src ${src})
string(REPLACE ".gs" ".c" src ${src})
if(${IS_MATCHED} MATCHES "/")
get_filename_component(VALA_FILE_NAME ${src} NAME)
set(out_file "${CMAKE_CURRENT_BINARY_DIR}/${VALA_FILE_NAME}")
list(APPEND out_files "${CMAKE_CURRENT_BINARY_DIR}/${VALA_FILE_NAME}")
else()
set(out_file "${DIRECTORY}/${src}")
list(APPEND out_files "${DIRECTORY}/${src}")
endif()
list(APPEND ${output} ${out_file})
endforeach(src ${ARGS_DEFAULT_ARGS})
set(custom_vapi_arguments "")
if(ARGS_CUSTOM_VAPIS)
foreach(vapi ${ARGS_CUSTOM_VAPIS})
if(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
list(APPEND custom_vapi_arguments ${vapi})
else (${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
list(APPEND custom_vapi_arguments ${CMAKE_CURRENT_SOURCE_DIR}/${vapi})
endif(${vapi} MATCHES ${CMAKE_SOURCE_DIR} OR ${vapi} MATCHES ${CMAKE_BINARY_DIR})
endforeach(vapi ${ARGS_CUSTOM_VAPIS})
endif(ARGS_CUSTOM_VAPIS)
set(vapi_arguments "")
if(ARGS_GENERATE_VAPI)
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_VAPI}.vapi")
set(vapi_arguments "--internal-vapi=${ARGS_GENERATE_VAPI}.vapi")
# Header and internal header is needed to generate internal vapi
if (NOT ARGS_GENERATE_HEADER)
set(ARGS_GENERATE_HEADER ${ARGS_GENERATE_VAPI})
endif(NOT ARGS_GENERATE_HEADER)
endif(ARGS_GENERATE_VAPI)
set(header_arguments "")
if(ARGS_GENERATE_HEADER)
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_HEADER}.h")
list(APPEND out_files "${DIRECTORY}/${ARGS_GENERATE_HEADER}_internal.h")
list(APPEND header_arguments "--header=${DIRECTORY}/${ARGS_GENERATE_HEADER}.h")
list(APPEND header_arguments "--internal-header=${DIRECTORY}/${ARGS_GENERATE_HEADER}_internal.h")
endif(ARGS_GENERATE_HEADER)
add_custom_command(OUTPUT ${out_files}
COMMAND
${VALA_EXECUTABLE}
ARGS
"-C"
${header_arguments}
${vapi_arguments}
"-b" ${CMAKE_CURRENT_SOURCE_DIR}
"-d" ${DIRECTORY}
${vala_pkg_opts}
${ARGS_OPTIONS}
${in_files}
${custom_vapi_arguments}
DEPENDS
${in_files}
${ARGS_CUSTOM_VAPIS}
)
endmacro(vala_precompile)

96
cmake/ValaVersion.cmake Normal file
View file

@ -0,0 +1,96 @@
##
# Copyright 2009-2010 Jakob Westhoff. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY JAKOB WESTHOFF ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL JAKOB WESTHOFF OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of Jakob Westhoff
##
include(ParseArguments)
find_package(Vala REQUIRED)
##
# Ensure a certain valac version is available
#
# The initial argument is the version to check for
#
# It may be followed by a optional parameter to specifiy a version range. The
# following options are valid:
#
# EXACT
# Vala needs to be available in the exact version given
#
# MINIMUM
# The provided version is the minimum version. Therefore Vala needs to be
# available in the given version or any higher version
#
# MAXIMUM
# The provided version is the maximum. Therefore Vala needs to be available
# in the given version or any version older than this
#
# If no option is specified the version will be treated as a minimal version.
##
macro(ensure_vala_version version)
parse_arguments(ARGS "" "MINIMUM;MAXIMUM;EXACT" ${ARGN})
set(compare_message "")
set(error_message "")
if(ARGS_MINIMUM)
set(compare_message "a minimum ")
set(error_message "or greater ")
elseif(ARGS_MAXIMUM)
set(compare_message "a maximum ")
set(error_message "or less ")
endif(ARGS_MINIMUM)
message(STATUS
"checking for ${compare_message}Vala version of ${version}"
)
unset(version_accepted)
# MINIMUM is the default if no option is specified
if(ARGS_EXACT)
if(${VALA_VERSION} VERSION_EQUAL ${version} )
set(version_accepted TRUE)
endif(${VALA_VERSION} VERSION_EQUAL ${version})
elseif(ARGS_MAXIMUM)
if(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version})
set(version_accepted TRUE)
endif(${VALA_VERSION} VERSION_LESS ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version})
else(ARGS_MAXIMUM)
if(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version})
set(version_accepted TRUE)
endif(${VALA_VERSION} VERSION_GREATER ${version} OR ${VALA_VERSION} VERSION_EQUAL ${version})
endif(ARGS_EXACT)
if (NOT version_accepted)
message(FATAL_ERROR
"Vala version ${version} ${error_message}is required."
)
endif(NOT version_accepted)
message(STATUS
" found Vala, version ${VALA_VERSION}"
)
endmacro(ensure_vala_version)

33
cmake_uninstall.cmake.in Normal file
View file

@ -0,0 +1,33 @@
# Generic uninstall script from the CMake manual
# Updated for CMake 2.8
cmake_policy(PUSH)
# Ignore empty list items.
cmake_policy(SET CMP0007 OLD)
if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
list(REVERSE files)
foreach (file ${files})
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
if (EXISTS "$ENV{DESTDIR}${file}")
execute_process(
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
OUTPUT_VARIABLE rm_out
RESULT_VARIABLE rm_retval
)
if(NOT ${rm_retval} EQUAL 0)
message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
endif (NOT ${rm_retval} EQUAL 0)
else (EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
endif (EXISTS "$ENV{DESTDIR}${file}")
endforeach(file)
cmake_policy(POP)

9
icons/CMakeLists.txt Normal file
View file

@ -0,0 +1,9 @@
set(ICONS_DEST share/geary/icons)
install(FILES archive-icon.png DESTINATION ${ICONS_DEST})
install(FILES geary.png DESTINATION ${ICONS_DEST})
install(FILES multiple-tags.png DESTINATION ${ICONS_DEST})
install(FILES non-starred-grey.png DESTINATION ${ICONS_DEST})
install(FILES one-tag.png DESTINATION ${ICONS_DEST})
install(FILES starred.png DESTINATION ${ICONS_DEST})

4
sql/CMakeLists.txt Normal file
View file

@ -0,0 +1,4 @@
set(SQL_DEST share/geary/sql)
install(FILES Create.sql DESTINATION ${SQL_DEST})

398
src/CMakeLists.txt Normal file
View file

@ -0,0 +1,398 @@
# Geary build script
# Copyright 2011-2012 Yorba Foundation
set(COMMON_SRC
common/common-arrays.vala
common/common-async.vala
common/common-date.vala
common/common-intl.vala
common/common-yorba-application.vala
)
set(ENGINE_SRC
engine/api/geary-account.vala
engine/api/geary-account-information.vala
engine/api/geary-batch-operations.vala
engine/api/geary-composed-email.vala
engine/api/geary-conversation.vala
engine/api/geary-conversations.vala
engine/api/geary-credentials.vala
engine/api/geary-email-flag.vala
engine/api/geary-email-flags.vala
engine/api/geary-email-identifier.vala
engine/api/geary-email-properties.vala
engine/api/geary-email.vala
engine/api/geary-endpoint.vala
engine/api/geary-engine-error.vala
engine/api/geary-engine.vala
engine/api/geary-folder-path.vala
engine/api/geary-folder.vala
engine/api/geary-logging.vala
engine/api/geary-personality.vala
engine/api/geary-service-provider.vala
engine/api/geary-special-folder.vala
engine/common/common-message-data.vala
engine/imap/api/imap-account.vala
engine/imap/api/imap-email-flags.vala
engine/imap/api/imap-email-identifier.vala
engine/imap/api/imap-email-properties.vala
engine/imap/api/imap-folder-properties.vala
engine/imap/api/imap-folder.vala
engine/imap/command/imap-command-response.vala
engine/imap/command/imap-commands.vala
engine/imap/command/imap-command.vala
engine/imap/command/imap-fetch-command.vala
engine/imap/decoders/imap-command-results.vala
engine/imap/decoders/imap-fetch-data-decoder.vala
engine/imap/decoders/imap-fetch-results.vala
engine/imap/decoders/imap-list-results.vala
engine/imap/decoders/imap-select-examine-results.vala
engine/imap/decoders/imap-status-results.vala
engine/imap/imap-error.vala
engine/imap/message/imap-data-format.vala
engine/imap/message/imap-fetch-data-type.vala
engine/imap/message/imap-fetch-body-data-type.vala
engine/imap/message/imap-flag.vala
engine/imap/message/imap-message-data.vala
engine/imap/message/imap-message-set.vala
engine/imap/message/imap-parameter.vala
engine/imap/message/imap-tag.vala
engine/imap/response/imap-continuation-response.vala
engine/imap/response/imap-response-code-type.vala
engine/imap/response/imap-response-code.vala
engine/imap/response/imap-server-data-type.vala
engine/imap/response/imap-server-data.vala
engine/imap/response/imap-server-response.vala
engine/imap/response/imap-status-data-type.vala
engine/imap/response/imap-status-response.vala
engine/imap/response/imap-status.vala
engine/imap/response/imap-unsolicited-server-data.vala
engine/imap/transport/imap-client-connection.vala
engine/imap/transport/imap-client-session-manager.vala
engine/imap/transport/imap-client-session.vala
engine/imap/transport/imap-deserializer.vala
engine/imap/transport/imap-mailbox.vala
engine/imap/transport/imap-serializable.vala
engine/imap/transport/imap-serializer.vala
engine/impl/geary-abstract-account.vala
engine/impl/geary-abstract-folder.vala
engine/impl/geary-email-flag-watcher.vala
engine/impl/geary-email-prefetcher.vala
engine/impl/geary-engine-account.vala
engine/impl/geary-generic-imap-account.vala
engine/impl/geary-generic-imap-folder.vala
engine/impl/geary-gmail-account.vala
engine/impl/geary-yahoo-account.vala
engine/impl/geary-other-account.vala
engine/impl/geary-receive-replay-operations.vala
engine/impl/geary-receive-replay-queue.vala
engine/impl/geary-send-replay-operations.vala
engine/impl/geary-send-replay-queue.vala
engine/nonblocking/nonblocking-abstract-semaphore.vala
engine/nonblocking/nonblocking-batch.vala
engine/nonblocking/nonblocking-mailbox.vala
engine/nonblocking/nonblocking-mutex.vala
engine/nonblocking/nonblocking-variants.vala
engine/rfc822/rfc822-error.vala
engine/rfc822/rfc822-mailbox-addresses.vala
engine/rfc822/rfc822-mailbox-address.vala
engine/rfc822/rfc822-message.vala
engine/rfc822/rfc822-message-data.vala
engine/rfc822/rfc822-utils.vala
engine/smtp/smtp-abstract-authenticator.vala
engine/smtp/smtp-authenticator.vala
engine/smtp/smtp-client-connection.vala
engine/smtp/smtp-client-session.vala
engine/smtp/smtp-command.vala
engine/smtp/smtp-data-format.vala
engine/smtp/smtp-error.vala
engine/smtp/smtp-greeting.vala
engine/smtp/smtp-login-authenticator.vala
engine/smtp/smtp-plain-authenticator.vala
engine/smtp/smtp-request.vala
engine/smtp/smtp-response.vala
engine/smtp/smtp-response-code.vala
engine/smtp/smtp-response-line.vala
engine/sqlite/abstract/sqlite-database.vala
engine/sqlite/abstract/sqlite-row.vala
engine/sqlite/abstract/sqlite-table.vala
engine/sqlite/abstract/sqlite-transaction.vala
engine/sqlite/api/sqlite-account.vala
engine/sqlite/api/sqlite-folder.vala
engine/sqlite/email/sqlite-folder-row.vala
engine/sqlite/email/sqlite-folder-table.vala
engine/sqlite/email/sqlite-mail-database.vala
engine/sqlite/email/sqlite-message-location-row.vala
engine/sqlite/email/sqlite-message-location-table.vala
engine/sqlite/email/sqlite-message-row.vala
engine/sqlite/email/sqlite-message-table.vala
engine/sqlite/imap/sqlite-imap-database.vala
engine/sqlite/imap/sqlite-imap-folder-properties-row.vala
engine/sqlite/imap/sqlite-imap-folder-properties-table.vala
engine/sqlite/imap/sqlite-imap-message-properties-row.vala
engine/sqlite/imap/sqlite-imap-message-properties-table.vala
engine/state/state-machine-descriptor.vala
engine/state/state-machine.vala
engine/state/state-mapping.vala
engine/util/util-collection.vala
engine/util/util-converter.vala
engine/util/util-html.vala
engine/util/util-inet.vala
engine/util/util-interfaces.vala
engine/util/util-memory.vala
engine/util/util-numeric.vala
engine/util/util-reference-semantics.vala
engine/util/util-scheduler.vala
engine/util/util-singleton.vala
engine/util/util-stream.vala
engine/util/util-string.vala
engine/util/util-trillian.vala
)
set(CLIENT_SRC
client/geary-application.vala
client/geary-config.vala
client/geary-controller.vala
client/main.vala
client/ui/composer-window.vala
client/ui/geary-login.vala
client/ui/email-entry.vala
client/ui/icon-factory.vala
client/ui/folder-list.vala
client/ui/main-toolbar.vala
client/ui/main-window.vala
client/ui/message-list-cell-renderer.vala
client/ui/message-list-store.vala
client/ui/message-list-view.vala
client/ui/message-viewer.vala
client/ui/preferences-dialog.vala
client/ui/sidebar/sidebar-branch.vala
client/ui/sidebar/sidebar-common.vala
client/ui/sidebar/sidebar-entry.vala
client/ui/sidebar/sidebar-tree.vala
client/util/util-email.vala
client/util/util-keyring.vala
client/util/util-menu.vala
)
set(CONSOLE_SRC
console/main.vala
)
set(MAILER_SRC
mailer/main.vala
)
set(DBUSSERVICE_SRC
dbusservice/controller.vala
dbusservice/database.vala
dbusservice/dbus-conversation.vala
dbusservice/dbus-conversations.vala
dbusservice/dbus-email.vala
dbusservice/main.vala
)
# Vala
find_package(Vala REQUIRED)
include(ValaVersion)
ensure_vala_version("0.16.0" MINIMUM)
include(ValaPrecompile)
# Packages
find_package(PkgConfig)
pkg_check_modules(DEPS REQUIRED
gthread-2.0
glib-2.0>=2.30.0
gio-2.0>=2.28.0
gtk+-3.0>=3.2.0
gee-1.0>=0.6.0
unique-3.0>=3.0.0
sqlite3>=3.7.4
sqlheavy-0.2>=0.2.0
gmime-2.4>=2.4.14
gnome-keyring-1>=2.32.0
webkitgtk-3.0>=1.4.3
)
set(ENGINE_PACKAGES
glib-2.0 gee-1.0 gio-2.0 sqlheavy-0.2 gmime-2.4 unique-3.0 posix
)
set(CLIENT_PACKAGES
gtk+-3.0 gnome-keyring-1 webkitgtk-3.0
)
set(CONSOLE_PACKAGES
gtk+-3.0
)
set(DBUSSERVICE_PACKAGES
gee-1.0 glib-2.0
)
set(GSETTINGS_DIR ${CMAKE_SOURCE_DIR}/src/client)
set(CFLAGS
${DEPS_CFLAGS}
${DEPS_CFLAGS_OTHER}
-D_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\"
-D_SOURCE_ROOT_DIR=\"${CMAKE_SOURCE_DIR}\"
-D_GSETTINGS_DIR=\"${CMAKE_BINARY_DIR}/gsettings\"
)
set(LIB_PATHS ${DEPS_LIBRARY_DIRS})
link_directories(${LIB_PATHS})
add_definitions(${CFLAGS})
# Engine (static library used for building)
#################################################
vala_precompile(ENGINE_VALA_C
${ENGINE_SRC}
${COMMON_SRC}
PACKAGES
${CONSOLE_PACKAGES}
${ENGINE_PACKAGES}
GENERATE_VAPI
geary-static
OPTIONS
--vapidir=${CMAKE_SOURCE_DIR}/vapi
--thread
--enable-checking
--fatal-warnings
)
add_library(geary-static STATIC ${ENGINE_VALA_C})
target_link_libraries(geary-static ${DEPS_LIBRARIES} gthread-2.0)
# Geary client app
#################################################
vala_precompile(GEARY_VALA_C
${CLIENT_SRC}
PACKAGES
${CLIENT_PACKAGES}
${ENGINE_PACKAGES}
geary-static
OPTIONS
--vapidir=${CMAKE_SOURCE_DIR}/vapi
--vapidir=${CMAKE_BINARY_DIR}/src
--thread
--enable-checking
--fatal-warnings
)
add_executable(geary ${GEARY_VALA_C})
target_link_libraries(geary ${DEPS_LIBRARIES} gthread-2.0 geary-static)
install(TARGETS geary RUNTIME DESTINATION bin)
add_custom_command(
TARGET
geary
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy geary ${CMAKE_BINARY_DIR}/
)
# GSettings
include(GSettings)
add_schemas(geary ${GSETTINGS_DIR})
# Console app
#################################################
vala_precompile(CONSOLE_VALA_C
${CONSOLE_SRC}
PACKAGES
${CONSOLE_PACKAGES}
${ENGINE_PACKAGES}
geary-static
OPTIONS
--vapidir=${CMAKE_SOURCE_DIR}/vapi
--vapidir=${CMAKE_BINARY_DIR}/src
--thread
--enable-checking
--fatal-warnings
)
add_executable(geary-console ${CONSOLE_VALA_C})
target_link_libraries(geary-console ${DEPS_LIBRARIES} gthread-2.0 geary-static)
add_custom_command(
TARGET
geary-console
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy geary-console ${CMAKE_BINARY_DIR}/
)
# Mailer app
#################################################
vala_precompile(MAILER_VALA_C
${MAILER_SRC}
PACKAGES
${ENGINE_PACKAGES}
geary-static
OPTIONS
--vapidir=${CMAKE_SOURCE_DIR}/vapi
--vapidir=${CMAKE_BINARY_DIR}/src
--thread
--enable-checking
--fatal-warnings
)
add_executable(geary-mailer ${MAILER_VALA_C})
target_link_libraries(geary-mailer ${DEPS_LIBRARIES} gthread-2.0 geary-static)
add_custom_command(
TARGET
geary-mailer
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy geary-mailer ${CMAKE_BINARY_DIR}/
)
# DBus Service
#################################################
vala_precompile(DBUS_VALA_C
${DBUSSERVICE_SRC}
PACKAGES
${DBUSSERVICE_PACKAGES}
${ENGINE_PACKAGES}
geary-static
OPTIONS
--vapidir=${CMAKE_SOURCE_DIR}/vapi
--vapidir=${CMAKE_BINARY_DIR}/src
--thread
--enable-checking
--fatal-warnings
)
add_executable(gearyd ${DBUS_VALA_C})
target_link_libraries(gearyd ${DEPS_LIBRARIES} gthread-2.0 geary-static)
add_custom_command(
TARGET
gearyd
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy gearyd ${CMAKE_BINARY_DIR}/
)
## Make clean: remove copied files
##################################################
set_property(
DIRECTORY ..
APPEND
PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
geary
geary-console
geary-mailer
gearyd
)

View file

@ -4,8 +4,10 @@
* (version 2.1 or later). See the COPYING file in this distribution.
*/
// Defined by wscript
extern const string _PREFIX;
// Defined by CMake build script.
extern const string _INSTALL_PREFIX;
extern const string _GSETTINGS_DIR;
extern const string _SOURCE_ROOT_DIR;
public class GearyApplication : YorbaApplication {
// TODO: replace static strings with const strings when gettext is integrated properly
@ -18,7 +20,9 @@ public class GearyApplication : YorbaApplication {
public static string WEBSITE_LABEL = _("Visit the Yorba web site");
public const string BUGREPORT = "http://redmine.yorba.org/projects/geary/issues";
public const string PREFIX = _PREFIX;
public const string INSTALL_PREFIX = _INSTALL_PREFIX;
public const string GSETTINGS_DIR = _GSETTINGS_DIR;
public const string SOURCE_ROOT_DIR = _SOURCE_ROOT_DIR;
public const string[] AUTHORS = {
"Jim Nelson <jim@yorba.org>",
@ -123,8 +127,7 @@ along with Geary; if not, write to the Free Software Foundation, Inc.,
public override int startup() {
exec_dir = (File.new_for_path(Environment.find_program_in_path(args[0]))).get_parent();
Configuration.init(GearyApplication.instance.get_install_dir() != null,
GearyApplication.instance.get_exec_dir().get_child("build/src/client").get_path());
Configuration.init(GearyApplication.instance.get_install_dir() != null, GSETTINGS_DIR);
int result = base.startup();
result = parse_arguments(args);
@ -270,12 +273,12 @@ along with Geary; if not, write to the Free Software Foundation, Inc.,
* application is running from its installed directory, this will point to
* $(BASEDIR)/share/<program name>. If it's running from the build directory, this points to
* that.
*
* TODO: Implement. This is placeholder code for build environments and assumes you're running
* the program in the build directory.
*/
public File get_resource_directory() {
return File.new_for_path(Environment.get_current_dir());
if (get_install_dir() != null)
return get_install_dir().get_child("share").get_child("geary");
else
return File.new_for_path(SOURCE_ROOT_DIR);
}
// Returns the directory the application is currently executing from.
@ -286,7 +289,7 @@ along with Geary; if not, write to the Free Software Foundation, Inc.,
// Returns the installation directory, or null if we're running outside of the installation
// directory.
public File? get_install_dir() {
File prefix_dir = File.new_for_path(PREFIX);
File prefix_dir = File.new_for_path(INSTALL_PREFIX);
return exec_dir.has_prefix(prefix_dir) ? prefix_dir : null;
}

View file

@ -1,55 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
client_src = [
'geary-application.vala',
'geary-config.vala',
'geary-controller.vala',
'main.vala',
'ui/composer-window.vala',
'ui/geary-login.vala',
'ui/email-entry.vala',
'ui/icon-factory.vala',
'ui/folder-list.vala',
'ui/main-toolbar.vala',
'ui/main-window.vala',
'ui/message-list-cell-renderer.vala',
'ui/message-list-store.vala',
'ui/message-list-view.vala',
'ui/message-viewer.vala',
'ui/preferences-dialog.vala',
'ui/sidebar/sidebar-branch.vala',
'ui/sidebar/sidebar-common.vala',
'ui/sidebar/sidebar-entry.vala',
'ui/sidebar/sidebar-tree.vala',
'util/util-email.vala',
'util/util-keyring.vala',
'util/util-menu.vala',
]
gsettings_schemas = [
'org.yorba.geary.gschema.xml'
]
client_uselib = 'GLIB GEE GTK GNOME-KEYRING WEBKITGTK JAVASCRIPTCOREGTK GTKSOURCEVIEW'
client_packages = [ 'gtk+-3.0', 'glib-2.0', 'gee-1.0', 'gnome-keyring-1', 'webkitgtk-3.0',
'javascriptcoregtk-3.0', 'gtksourceview-3.0' ]
app = bld.program(
target = 'geary',
vapi_dirs = '../../vapi',
threading = True,
use ='geary-static',
uselib = client_uselib + ' ' + bld.common_uselib + ' ' + bld.engine_uselib,
packages = client_packages + bld.common_packages + bld.engine_packages,
source = client_src
)
app.add_settings_schemas(gsettings_schemas)
app.process_settings()

View file

@ -1,22 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
console_src = [
'main.vala'
]
console_uselib = 'GEE GTK GLIB'
console_packages = [ 'gee-1.0', 'gtk+-3.0', 'glib-2.0' ]
bld.program(
target = 'console',
vapi_dirs = '../../vapi',
threading = True,
use ='geary-static',
uselib = console_uselib + ' ' + bld.engine_uselib + ' ' + bld.common_uselib,
packages = console_packages + bld.engine_packages + bld.common_packages,
source = console_src
)

View file

@ -1,27 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
dbusservice_src = [
'controller.vala',
'database.vala',
'dbus-conversation.vala',
'dbus-conversations.vala',
'dbus-email.vala',
'main.vala'
]
dbusservice_uselib = 'GEE GLIB'
dbusservice_packages = [ 'gee-1.0', 'glib-2.0' ]
bld.program(
target = 'gearyd',
vapi_dirs = '../../vapi',
threading = True,
use = 'geary-static',
uselib = dbusservice_uselib + ' ' + bld.engine_uselib + ' ' + bld.common_uselib,
packages = dbusservice_packages + bld.engine_packages + bld.common_packages,
source = dbusservice_src
)

View file

@ -1,22 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
norman_src = [
'main.vala'
]
norman_uselib = 'GEE GTK GLIB'
norman_packages = [ 'gee-1.0', 'glib-2.0' ]
bld.program(
target = 'norman',
vapi_dirs = '../../vapi',
threading = True,
use ='geary-static',
uselib = norman_uselib + ' ' + bld.engine_uselib + ' ' + bld.common_uselib,
packages = norman_packages + bld.engine_packages + bld.common_packages,
source = norman_src
)

View file

@ -1,183 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
def build(bld):
bld.common_src = [
'common/common-arrays.vala',
'common/common-async.vala',
'common/common-date.vala',
'common/common-intl.vala',
'common/common-yorba-application.vala'
]
bld.common_uselib = 'GLIB UNIQUE'
bld.common_packages = ['glib-2.0', 'unique-3.0', 'posix' ]
bld.engine_src = [
'engine/api/geary-account.vala',
'engine/api/geary-account-information.vala',
'engine/api/geary-batch-operations.vala',
'engine/api/geary-composed-email.vala',
'engine/api/geary-conversation.vala',
'engine/api/geary-conversations.vala',
'engine/api/geary-credentials.vala',
'engine/api/geary-email-flag.vala',
'engine/api/geary-email-flags.vala',
'engine/api/geary-email-identifier.vala',
'engine/api/geary-email-properties.vala',
'engine/api/geary-email.vala',
'engine/api/geary-endpoint.vala',
'engine/api/geary-engine-error.vala',
'engine/api/geary-engine.vala',
'engine/api/geary-folder-path.vala',
'engine/api/geary-folder.vala',
'engine/api/geary-logging.vala',
'engine/api/geary-personality.vala',
'engine/api/geary-service-provider.vala',
'engine/api/geary-special-folder.vala',
'engine/common/common-message-data.vala',
'engine/imap/api/imap-account.vala',
'engine/imap/api/imap-email-flags.vala',
'engine/imap/api/imap-email-identifier.vala',
'engine/imap/api/imap-email-properties.vala',
'engine/imap/api/imap-folder-properties.vala',
'engine/imap/api/imap-folder.vala',
'engine/imap/command/imap-command-response.vala',
'engine/imap/command/imap-commands.vala',
'engine/imap/command/imap-command.vala',
'engine/imap/command/imap-fetch-command.vala',
'engine/imap/decoders/imap-command-results.vala',
'engine/imap/decoders/imap-fetch-data-decoder.vala',
'engine/imap/decoders/imap-fetch-results.vala',
'engine/imap/decoders/imap-list-results.vala',
'engine/imap/decoders/imap-select-examine-results.vala',
'engine/imap/decoders/imap-status-results.vala',
'engine/imap/imap-error.vala',
'engine/imap/message/imap-data-format.vala',
'engine/imap/message/imap-fetch-data-type.vala',
'engine/imap/message/imap-fetch-body-data-type.vala',
'engine/imap/message/imap-flag.vala',
'engine/imap/message/imap-message-data.vala',
'engine/imap/message/imap-message-set.vala',
'engine/imap/message/imap-parameter.vala',
'engine/imap/message/imap-tag.vala',
'engine/imap/response/imap-continuation-response.vala',
'engine/imap/response/imap-response-code-type.vala',
'engine/imap/response/imap-response-code.vala',
'engine/imap/response/imap-server-data-type.vala',
'engine/imap/response/imap-server-data.vala',
'engine/imap/response/imap-server-response.vala',
'engine/imap/response/imap-status-data-type.vala',
'engine/imap/response/imap-status-response.vala',
'engine/imap/response/imap-status.vala',
'engine/imap/response/imap-unsolicited-server-data.vala',
'engine/imap/transport/imap-client-connection.vala',
'engine/imap/transport/imap-client-session-manager.vala',
'engine/imap/transport/imap-client-session.vala',
'engine/imap/transport/imap-deserializer.vala',
'engine/imap/transport/imap-mailbox.vala',
'engine/imap/transport/imap-serializable.vala',
'engine/imap/transport/imap-serializer.vala',
'engine/impl/geary-abstract-account.vala',
'engine/impl/geary-abstract-folder.vala',
'engine/impl/geary-email-flag-watcher.vala',
'engine/impl/geary-email-prefetcher.vala',
'engine/impl/geary-engine-account.vala',
'engine/impl/geary-generic-imap-account.vala',
'engine/impl/geary-generic-imap-folder.vala',
'engine/impl/geary-gmail-account.vala',
'engine/impl/geary-yahoo-account.vala',
'engine/impl/geary-other-account.vala',
'engine/impl/geary-receive-replay-operations.vala',
'engine/impl/geary-receive-replay-queue.vala',
'engine/impl/geary-send-replay-operations.vala',
'engine/impl/geary-send-replay-queue.vala',
'engine/nonblocking/nonblocking-abstract-semaphore.vala',
'engine/nonblocking/nonblocking-batch.vala',
'engine/nonblocking/nonblocking-mailbox.vala',
'engine/nonblocking/nonblocking-mutex.vala',
'engine/nonblocking/nonblocking-variants.vala',
'engine/rfc822/rfc822-error.vala',
'engine/rfc822/rfc822-mailbox-addresses.vala',
'engine/rfc822/rfc822-mailbox-address.vala',
'engine/rfc822/rfc822-message.vala',
'engine/rfc822/rfc822-message-data.vala',
'engine/rfc822/rfc822-utils.vala',
'engine/smtp/smtp-abstract-authenticator.vala',
'engine/smtp/smtp-authenticator.vala',
'engine/smtp/smtp-client-connection.vala',
'engine/smtp/smtp-client-session.vala',
'engine/smtp/smtp-command.vala',
'engine/smtp/smtp-data-format.vala',
'engine/smtp/smtp-error.vala',
'engine/smtp/smtp-greeting.vala',
'engine/smtp/smtp-login-authenticator.vala',
'engine/smtp/smtp-plain-authenticator.vala',
'engine/smtp/smtp-request.vala',
'engine/smtp/smtp-response.vala',
'engine/smtp/smtp-response-code.vala',
'engine/smtp/smtp-response-line.vala',
'engine/sqlite/abstract/sqlite-database.vala',
'engine/sqlite/abstract/sqlite-row.vala',
'engine/sqlite/abstract/sqlite-table.vala',
'engine/sqlite/abstract/sqlite-transaction.vala',
'engine/sqlite/api/sqlite-account.vala',
'engine/sqlite/api/sqlite-folder.vala',
'engine/sqlite/email/sqlite-folder-row.vala',
'engine/sqlite/email/sqlite-folder-table.vala',
'engine/sqlite/email/sqlite-mail-database.vala',
'engine/sqlite/email/sqlite-message-location-row.vala',
'engine/sqlite/email/sqlite-message-location-table.vala',
'engine/sqlite/email/sqlite-message-row.vala',
'engine/sqlite/email/sqlite-message-table.vala',
'engine/sqlite/imap/sqlite-imap-database.vala',
'engine/sqlite/imap/sqlite-imap-folder-properties-row.vala',
'engine/sqlite/imap/sqlite-imap-folder-properties-table.vala',
'engine/sqlite/imap/sqlite-imap-message-properties-row.vala',
'engine/sqlite/imap/sqlite-imap-message-properties-table.vala',
'engine/state/state-machine-descriptor.vala',
'engine/state/state-machine.vala',
'engine/state/state-mapping.vala',
'engine/util/util-collection.vala',
'engine/util/util-converter.vala',
'engine/util/util-html.vala',
'engine/util/util-inet.vala',
'engine/util/util-interfaces.vala',
'engine/util/util-memory.vala',
'engine/util/util-numeric.vala',
'engine/util/util-reference-semantics.vala',
'engine/util/util-scheduler.vala',
'engine/util/util-singleton.vala',
'engine/util/util-stream.vala',
'engine/util/util-string.vala',
'engine/util/util-trillian.vala'
]
bld.engine_uselib = 'GLIB GEE GIO SQLHEAVY GMIME'
bld.engine_packages = ['glib-2.0', 'gee-1.0', 'gio-2.0', 'sqlheavy-0.2', 'gmime-2.4']
bld.stlib(
target = 'geary-static',
vapi_dirs = '../vapi',
threading = True,
uselib = bld.engine_uselib + ' ' + bld.common_uselib,
packages = bld.engine_packages + bld.common_packages,
source = bld.common_src + bld.engine_src
)
bld.recurse('client')
bld.recurse('console')
bld.recurse('norman')
bld.recurse('dbusservice')

11
ui/CMakeLists.txt Normal file
View file

@ -0,0 +1,11 @@
set(UI_DEST share/geary/ui)
install(FILES accelerators.ui DESTINATION ${UI_DEST})
install(FILES composer.glade DESTINATION ${UI_DEST})
install(FILES composer_accelerators.ui DESTINATION ${UI_DEST})
install(FILES login.glade DESTINATION ${UI_DEST})
install(FILES message.glade DESTINATION ${UI_DEST})
install(FILES preferences.glade DESTINATION ${UI_DEST})
install(FILES toolbar.glade DESTINATION ${UI_DEST})
install(FILES toolbar_mark_menu.ui DESTINATION ${UI_DEST})
install(FILES toolbar_menu.ui DESTINATION ${UI_DEST})

BIN
waf vendored

Binary file not shown.

164
wscript
View file

@ -1,164 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
#
# Copyright 2011-2012 Yorba Foundation
import shutil
import os.path
import subprocess
# the following two variables are used by the target "waf dist"
VERSION = '0.0.0+trunk'
APPNAME = 'geary'
# these variables are mandatory ('/' are converted automatically)
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_c')
opt.load('vala')
opt.load('glib2')
opt.add_option(
'--debug',
help='performs a debug build',
action='store_true',
default=False)
def configure(conf):
conf.load('compiler_c vala glib2')
conf.check_vala((0, 15, 1))
conf.env.DEBUG = conf.options.debug
conf.check_cfg(
package='glib-2.0',
uselib_store='GLIB',
atleast_version='2.30.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='gio-2.0',
uselib_store='GIO',
atleast_version='2.28.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='gee-1.0',
uselib_store='GEE',
atleast_version='0.6.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='gtk+-3.0',
uselib_store='GTK',
atleast_version='3.2.',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='unique-3.0',
uselib_store='UNIQUE',
atleast_version='3.0.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='sqlite3',
uselib_store='SQLITE',
atleast_version='3.7.4',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='sqlheavy-0.2',
uselib_store='SQLHEAVY',
atleast_version='0.2.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='gmime-2.4',
uselib_store='GMIME',
atleast_version='2.4.14',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='gnome-keyring-1',
uselib_store='GNOME-KEYRING',
atleast_version='2.32.0',
mandatory=1,
args='--cflags --libs')
conf.check_cfg(
package='webkitgtk-3.0',
uselib_store='WEBKITGTK',
atleast_version='1.4.3',
mandatory=1,
args='--cflags --libs')
def build(bld):
bld.add_post_fun(post_build)
# Options for debug/release builds.
if bld.env.DEBUG:
bld.env.append_value('CFLAGS', ['-O0', '-g', '-D_PREFIX="' + bld.env.PREFIX + '"'])
bld.env.append_value('LINKFLAGS', ['-O0', '-g'])
bld.env.append_value('VALAFLAGS', ['-g', '--enable-checking', '--fatal-warnings'])
else:
bld.env.append_value('CFLAGS', ['-O2', '-g', '-D_PREFIX="' + bld.env.PREFIX + '"'])
bld.env.append_value('LINKFLAGS', ['-O2', '-g'])
bld.env.append_value('VALAFLAGS', ['-g', '--enable-checking', '--fatal-warnings'])
bld.recurse('src')
# Remove executables in root folder.
if bld.cmd == 'clean':
if os.path.isfile('geary') :
os.remove('geary')
if os.path.isfile('console') :
os.remove('console')
if os.path.isfile('norman') :
os.remove('norman')
if os.path.isfile('theseus') :
os.remove('theseus')
if os.path.isfile('gearyd') :
os.remove('gearyd')
def post_build(bld):
# Copy executables to root folder.
geary_path = 'build/src/client/geary'
console_path = 'build/src/console/console'
norman_path = 'build/src/norman/norman'
theseus_path = 'build/src/theseus/theseus'
gearyd_path = 'build/src/dbusservice/gearyd'
if os.path.isfile(geary_path) :
shutil.copy2(geary_path, 'geary')
if os.path.isfile(console_path) :
shutil.copy2(console_path, 'console')
if os.path.isfile(norman_path) :
shutil.copy2(norman_path, 'norman')
if os.path.isfile(theseus_path) :
shutil.copy2(theseus_path, 'theseus')
if os.path.isfile(gearyd_path) :
shutil.copy2(gearyd_path, 'gearyd')
# Compile schemas for local (non-intall) build.
client_build_path = 'build/src/client'
shutil.copy2('src/client/org.yorba.geary.gschema.xml', client_build_path)
subprocess.call(['glib-compile-schemas', client_build_path])