aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CMakeLists.txt
blob: d90246c547c47af07c7d4588c19f1c72dad91d04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
set(CMAKE_INCLUDE_CURRENT_DIR ON)
IF(APPLE)
  set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
ELSE()
  set(CMAKE_CXX_FLAGS "-std=gnu++0x")
ENDIF()

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(public-headers)
include(core)
include(async)
include(objc)
include(LibFindMacros)

IF(APPLE)
  set(additional_includes
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/ctemplate/include
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/icu4c/include
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/libetpan/include
  )
  
  set(additional_lib_searchpath
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/ctemplate/lib
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/icu4c/lib
    ${CMAKE_CURRENT_SOURCE_DIR}/../Externals/libetpan/lib
  )
  
  execute_process(COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/prepare.sh"
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../scripts")
ENDIF()

# detect ctemplate

find_path(CTEMPLATE_INCLUDE_DIR
  NAMES ctemplate/template.h
  PATHS ${additional_includes}
)
find_library(CTEMPLATE_LIBRARY
  NAMES ctemplate
  PATHS ${additional_lib_searchpath}
)

if(NOT CTEMPLATE_INCLUDE_DIR OR NOT CTEMPLATE_LIBRARY)
  message(FATAL_ERROR "ERROR: Could not find ctemplate")
else()
  message(STATUS "Found ctemplate")
endif()

# detect icu4c

find_path(ICU4C_INCLUDE_DIR
  NAMES unicode/utf8.h
  PATHS ${additional_includes}
)
find_library(ICU4C_LIBRARY
  NAMES icuuc
  PATHS ${additional_lib_searchpath}
)

if(NOT ICU4C_INCLUDE_DIR OR NOT ICU4C_LIBRARY)
  message(FATAL_ERROR "ERROR: Could not find icu4c")
else()
  message(STATUS "Found icu4c")
endif()

# detect libetpan

find_path(LIBETPAN_INCLUDE_DIR
  NAMES libetpan/libetpan.h
  PATHS ${additional_includes}
)
find_library(LIBETPAN_LIBRARY
  NAMES etpan
  PATHS ${additional_lib_searchpath}
)

if(NOT LIBETPAN_INCLUDE_DIR OR NOT LIBETPAN_LIBRARY)
  message(FATAL_ERROR "ERROR: Could not find libetpan")
else()
  message(STATUS "Found libetpan")
endif()


file(GLOB_RECURSE
  source_files
  *.h
  *.m
  *.c
)

SET_SOURCE_FILES_PROPERTIES(
  ${source_files}
  PROPERTIES LANGUAGE C
)

file(COPY
  ${public_headers}

  DESTINATION
  ${CMAKE_CURRENT_BINARY_DIR}/include/MailCore
)

include_directories(${CMAKE_CURRENT_BINARY_DIR}/include
  ${async_includes}
  ${core_includes}
  ${objc_includes}
  ${additional_includes}
  /usr/include/tidy
  /usr/include/libxml2
)

add_library(MailCore
  ${core_files}
  ${async_files}
  ${objc_files}
)