"Fossies" - the Fresh Open Source Software Archive

Member "evolution-mapi-3.46.1/CMakeLists.txt" (2 Dec 2022, 9494 Bytes) of package /linux/misc/evolution-mapi-3.46.1.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "CMakeLists.txt": 3.46.0_vs_3.46.1.

    1 # Evolution-MAPI build script
    2 
    3 cmake_minimum_required(VERSION 3.1)
    4 cmake_policy(VERSION 3.1)
    5 
    6 project(evolution-mapi
    7 	VERSION 3.46.1
    8 	LANGUAGES C)
    9 set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-mapi/issues/")
   10 
   11 # Required for FindIntltool module
   12 set(GETTEXT_PACKAGE ${PROJECT_NAME})
   13 set(GETTEXT_PO_DIR ${CMAKE_SOURCE_DIR}/po)
   14 
   15 # Required for 'disttest' and 'distcheck' of DistTarget module
   16 set(PROJECT_DISTCONFIGURE_PARAMS)
   17 
   18 # Keep these two definitions in agreement.
   19 set(glib_minimum_version 2.46)
   20 set(glib_encoded_version GLIB_VERSION_2_46)
   21 
   22 # Keep these two definitions in agreement.
   23 set(gdk_minimum_version 3.10)
   24 set(gdk_encoded_version GDK_VERSION_3_10)
   25 
   26 # Warn about API usage that violates our minimum requirements.
   27 add_definitions(-DGLIB_VERSION_MAX_ALLOWED=${glib_encoded_version})
   28 add_definitions(-DGDK_VERSION_MAX_ALLOWED=${gdk_encoded_version})
   29 
   30 # These will suppress warnings about newly-deprecated symbols. Ideally
   31 # these settings should match our minimum requirements and we will clean
   32 # up any new deprecation warnings after bumping our minimum requirements.
   33 # But if the warnings get to be overwhelming, use fixed versions instead.
   34 add_definitions(-DGLIB_VERSION_MIN_REQUIRED=${glib_encoded_version})
   35 add_definitions(-DGDK_VERSION_MIN_REQUIRED=${gdk_encoded_version})
   36 
   37 set(eds_minimum_version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
   38 set(evo_minimum_version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
   39 set(libmapi_minimum_version 2.0)
   40 
   41 # Load modules from the source tree
   42 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
   43 
   44 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
   45 # Packagers might want to need different settings for the RPATH related things
   46 # From experience, especially CMAKE_BUILD_WITH_INSTALL_RPATH might need to be
   47 # switched to ON, if CMake fails to set the right values during make install
   48 set(CMAKE_SKIP_RPATH OFF CACHE BOOL INTERNAL)
   49 set(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL INTERNAL)
   50 set(CMAKE_BUILD_WITH_INSTALL_RPATH OFF CACHE BOOL INTERNAL)
   51 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON CACHE BOOL INTERNAL)
   52 # CMAKE_INSTALL_RPATH is set below
   53 
   54 # CMake modules
   55 include(CheckCSourceCompiles)
   56 
   57 # Project custom modules
   58 include(PrintableOptions)
   59 
   60 add_printable_variable(LIB_SUFFIX "Library directory suffix, usually defined to '64' for x86_64 systems" "")
   61 add_printable_variable_bare(CMAKE_INSTALL_PREFIX)
   62 add_printable_variable_path(BIN_INSTALL_DIR "Install directory for binary files, defaults to CMAKE_INSTALL_PREFIX/bin" "")
   63 add_printable_variable_path(INCLUDE_INSTALL_DIR "Install directory for header files, defaults to CMAKE_INSTALL_PREFIX/include" "")
   64 add_printable_variable_path(LIB_INSTALL_DIR "Install directory for library files, defaults to CMAKE_INSTALL_PREFIX/lib{LIB_SUFFIX}" "")
   65 add_printable_variable_path(LIBEXEC_INSTALL_DIR "Install directory for library executable files, defaults to CMAKE_INSTALL_PREFIX/libexec" "")
   66 add_printable_variable_path(SHARE_INSTALL_PREFIX "Install directory for shared files, defaults to CMAKE_INSTALL_PREFIX/share" "")
   67 add_printable_variable_path(LOCALE_INSTALL_DIR "Install directory for locale files, defaults to SHARE_INSTALL_PREFIX/locale" "")
   68 add_printable_variable_path(SYSCONF_INSTALL_DIR "Install directory for system configuration files, defaults to CMAKE_INSTALL_PREFIX/etc" "")
   69 
   70 macro(ensure_default_value _var _defvalue)
   71 	if(${_var} STREQUAL "")
   72 		set(${_var} ${_defvalue})
   73 	endif(${_var} STREQUAL "")
   74 endmacro(ensure_default_value)
   75 
   76 ensure_default_value(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
   77 ensure_default_value(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
   78 ensure_default_value(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
   79 ensure_default_value(LIBEXEC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/libexec")
   80 ensure_default_value(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
   81 ensure_default_value(LOCALE_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/locale")
   82 ensure_default_value(SYSCONF_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/etc")
   83 
   84 # ******************************
   85 # Dependencies
   86 # ******************************
   87 
   88 include(CodeCoverageGCOV)
   89 include(CheckTarget)
   90 include(DistTargets)
   91 include(EvolutionMacros)
   92 include(GLibTools)
   93 include(PkgConfigEx)
   94 include(SetupBuildFlags)
   95 include(UninstallTarget)
   96 
   97 include(FindIntltool)
   98 
   99 add_printable_option(ENABLE_MAINTAINER_MODE "Enable maintainer mode" OFF)
  100 
  101 if(ENABLE_MAINTAINER_MODE)
  102 	set(BUILD_TESTING ON)
  103 endif(ENABLE_MAINTAINER_MODE)
  104 
  105 # Setup compiler/linker flags
  106 setup_build_flags(${ENABLE_MAINTAINER_MODE})
  107 
  108 if(${ENABLE_MAINTAINER_MODE})
  109 	add_definitions(-DCAMEL_DISABLE_DEPRECATED=1 -DEDS_DISABLE_DEPRECATED=1)
  110 endif(${ENABLE_MAINTAINER_MODE})
  111 
  112 pkg_check_modules(CAMEL REQUIRED camel-1.2>=${eds_minimum_version})
  113 pkg_check_modules(EVOLUTION_DATA_SERVER REQUIRED evolution-data-server-1.2>=${eds_minimum_version})
  114 pkg_check_modules(LIBEBACKEND REQUIRED libebackend-1.2>=${eds_minimum_version})
  115 pkg_check_modules(LIBEBOOK REQUIRED libebook-1.2>=${eds_minimum_version})
  116 pkg_check_modules(LIBECAL REQUIRED libecal-2.0>=${eds_minimum_version})
  117 pkg_check_modules(LIBEDATABOOK REQUIRED libedata-book-1.2>=${eds_minimum_version})
  118 pkg_check_modules(LIBEDATACAL REQUIRED libedata-cal-2.0>=${eds_minimum_version})
  119 pkg_check_modules(LIBEDATASERVER REQUIRED libedataserver-1.2>=${eds_minimum_version})
  120 
  121 pkg_check_modules(EVOLUTION_SHELL REQUIRED evolution-shell-3.0>=${evo_minimum_version})
  122 pkg_check_modules(EVOLUTION_MAIL REQUIRED evolution-mail-3.0>=${evo_minimum_version})
  123 
  124 pkg_check_modules(GNOME_PLATFORM REQUIRED
  125 	glib-2.0>=${glib_minimum_version}
  126 	gtk+-3.0>=${gdk_minimum_version}
  127 )
  128 
  129 pkg_check_modules(LIBMAPI REQUIRED libmapi>=${libmapi_minimum_version})
  130 
  131 set(CMAKE_REQUIRED_DEFINITIONS ${LIBMAPI_CFLAGS_OTHER})
  132 set(CMAKE_REQUIRED_INCLUDES ${LIBMAPI_INCLUDE_DIRS})
  133 set(CMAKE_REQUIRED_LIBRARIES ${LIBMAPI_LDFLAGS})
  134 
  135 # ******************************
  136 # struct mapi_SNotRestriction availability
  137 # see http://tracker.openchange.org/issues/377
  138 # ******************************
  139 
  140 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
  141 			int main(void) { struct mapi_SNotRestriction snot; snot.res->rt = RES_NOT; return 0; }" HAVE_RES_NOT_SUPPORTED)
  142 
  143 # ******************************
  144 # OpenChange 2.1 fast-transfer tags availability
  145 # ******************************
  146 
  147 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
  148 			int main(void) { uint32_t tag;
  149 				tag = StartMessage;
  150 				tag = EndMessage;
  151 				tag = StartRecip;
  152 				tag = EndToRecip;
  153 				tag = NewAttach;
  154 				tag = EndAttach;
  155 				tag = StartEmbed;
  156 				tag = EndEmbed; return 0; }" HAVE_FAST_TRANSFER_TAGS_2_1)
  157 
  158 # ******************************
  159 # OpenChange 2.3 QueryRows
  160 # ******************************
  161 
  162 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
  163 			int main(void) { QueryRows(NULL, 1, TBL_ADVANCE, TBL_FORWARD_READ, NULL); return 0; }" HAVE_QUERYROWS_FORWARDREAD)
  164 
  165 unset(CMAKE_REQUIRED_DEFINITIONS)
  166 unset(CMAKE_REQUIRED_INCLUDES)
  167 unset(CMAKE_REQUIRED_LIBRARIES)
  168 
  169 # ******************************
  170 # Special directories
  171 # ******************************
  172 
  173 set(privlibdir "${LIB_INSTALL_DIR}/${PROJECT_NAME}")
  174 
  175 pkg_check_variable(camel_providerdir camel-1.2 camel_providerdir)
  176 pkg_check_variable(ebook_backenddir libedata-book-1.2 backenddir)
  177 pkg_check_variable(ecal_backenddir libedata-cal-2.0 backenddir)
  178 pkg_check_variable(eds_moduledir libebackend-1.2 moduledir)
  179 pkg_check_variable(evo_privlibdir evolution-shell-3.0 privlibdir)
  180 pkg_check_variable(errordir evolution-shell-3.0 errordir)
  181 pkg_check_variable(evo_moduledir evolution-shell-3.0 moduledir)
  182 pkg_check_variable(mapidatadir evolution-data-server-1.2 privdatadir)
  183 pkg_check_variable(libmapi_ldif_dir libmapi datadir)
  184 
  185 add_printable_variable(FORCE_INSTALL_PREFIX "Whether to force install evolution-data-server and evolution files into the install prefix" OFF)
  186 if(FORCE_INSTALL_PREFIX)
  187 	pkg_check_variable(eds_prefix evolution-data-server-1.2 prefix)
  188 	string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" camel_providerdir "${camel_providerdir}")
  189 	string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" ebook_backenddir "${ebook_backenddir}")
  190 	string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" ecal_backenddir "${ecal_backenddir}")
  191 	string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" eds_moduledir "${eds_moduledir}")
  192 	string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" mapidatadir "${mapidatadir}")
  193 
  194 	pkg_check_variable(evo_prefix evolution-shell-3.0 prefix)
  195 	string(REGEX REPLACE "^${evo_prefix}" "${CMAKE_INSTALL_PREFIX}" errordir "${errordir}")
  196 	string(REGEX REPLACE "^${evo_prefix}" "${CMAKE_INSTALL_PREFIX}" evo_moduledir "${evo_moduledir}")
  197 endif(FORCE_INSTALL_PREFIX)
  198 
  199 set(mapidatadir "${mapidatadir}/mapi")
  200 set(libmapi_ldif_dir "${libmapi_ldif_dir}/setup")
  201 
  202 SET(CMAKE_INSTALL_RPATH "${privlibdir}:${evo_privlibdir}")
  203 
  204 if(WIN32)
  205 	# On Win32 there is no "rpath" mechanism. We install the private
  206 	# shared libraries in $libdir, meaning the DLLs will actually be in
  207 	# $bindir. This means just having $bindir in PATH will be enough.
  208 	set(privsolibdir "${LIB_INSTALL_DIR}")
  209 else(WIN32)
  210 	set(privsolibdir "${privlibdir}")
  211 endif(WIN32)
  212 
  213 # Generate the ${PROJECT_NAME}-config.h file
  214 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-config.h)
  215 
  216 print_build_options()
  217 
  218 add_appdata_file(org.gnome.Evolution-mapi.metainfo.xml.in org.gnome.Evolution-mapi.metainfo.xml)
  219 
  220 add_subdirectory(po)
  221 add_subdirectory(src)