~ubuntu-branches/ubuntu/wily/clamav/wily-proposed

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/cmake/config-ix.cmake

  • Committer: Package Import Robot
  • Author(s): Scott Kitterman, Sebastian Andrzej Siewior, Andreas Cadhalpun, Scott Kitterman, Javier Fernández-Sanguino
  • Date: 2015-01-28 00:25:13 UTC
  • mfrom: (0.48.14 sid)
  • Revision ID: package-import@ubuntu.com-20150128002513-lil2oi74cooy4lzr
Tags: 0.98.6+dfsg-1
[ Sebastian Andrzej Siewior ]
* update "fix-ssize_t-size_t-off_t-printf-modifier", include of misc.h was
  missing but was pulled in via the systemd patch.
* Don't leak return codes from libmspack to clamav API. (Closes: #774686).

[ Andreas Cadhalpun ]
* Add patch to avoid emitting incremental progress messages when not
  outputting to a terminal. (Closes: #767350)
* Update lintian-overrides for unused-file-paragraph-in-dep5-copyright.
* clamav-base.postinst: always chown /var/log/clamav and /var/lib/clamav
  to clamav:clamav, not only on fresh installations. (Closes: #775400)
* Adapt the clamav-daemon and clamav-freshclam logrotate scripts,
  so that they correctly work under systemd.
* Move the PidFile variable from the clamd/freshclam configuration files
  to the init scripts. This makes the init scripts more robust against
  misconfiguration and avoids error messages with systemd. (Closes: #767353)
* debian/copyright: drop files from Files-Excluded only present in github
  tarballs
* Drop Workaround-a-bug-in-libc-on-Hurd.patch, because hurd got fixed.
  (see #752237)
* debian/rules: Remove useless --with-system-tommath --without-included-ltdl
  configure options.

[ Scott Kitterman ]
* Stop stripping llvm when repacking the tarball as the system llvm on some
  releases is too old to use
* New upstream bugfix release
  - Library shared object revisions.
  - Includes a patch from Sebastian Andrzej Siewior making ClamAV pid files
    compatible with systemd.
  - Fix a heap out of bounds condition with crafted Yoda's crypter files.
    This issue was discovered by Felix Groebert of the Google Security Team.
  - Fix a heap out of bounds condition with crafted mew packer files. This
    issue was discovered by Felix Groebert of the Google Security Team.
  - Fix a heap out of bounds condition with crafted upx packer files. This
    issue was discovered by Kevin Szkudlapski of Quarkslab.
  - Fix a heap out of bounds condition with crafted upack packer files. This
    issue was discovered by Sebastian Andrzej Siewior. CVE-2014-9328.
  - Compensate a crash due to incorrect compiler optimization when handling
    crafted petite packer files. This issue was discovered by Sebastian
    Andrzej Siewior.
* Update lintian override for embedded zlib to match new so version

[ Javier Fernández-Sanguino ]
* Updated Spanish Debconf template translation (Closes: #773563)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
include(CheckIncludeFile)
 
2
include(CheckLibraryExists)
 
3
include(CheckSymbolExists)
 
4
include(CheckFunctionExists)
 
5
include(CheckCXXSourceCompiles)
 
6
 
 
7
if( UNIX AND NOT BEOS )
 
8
  # Used by check_symbol_exists:
 
9
  set(CMAKE_REQUIRED_LIBRARIES m)
 
10
endif()
 
11
 
 
12
# Helper macros and functions
 
13
macro(add_cxx_include result files)
 
14
  set(${result} "")
 
15
  foreach (file_name ${files})
 
16
     set(${result} "${${result}}#include<${file_name}>\n")
 
17
  endforeach()
 
18
endmacro(add_cxx_include files result)
 
19
 
 
20
function(check_type_exists type files variable)
 
21
  add_cxx_include(includes "${files}")
 
22
  CHECK_CXX_SOURCE_COMPILES("
 
23
    ${includes} ${type} typeVar;
 
24
    int main() {
 
25
        return 0;
 
26
    }
 
27
    " ${variable})
 
28
endfunction()
 
29
 
 
30
# include checks
 
31
check_include_file(argz.h HAVE_ARGZ_H)
 
32
check_include_file(assert.h HAVE_ASSERT_H)
 
33
check_include_file(dirent.h HAVE_DIRENT_H)
 
34
check_include_file(dl.h HAVE_DL_H)
 
35
check_include_file(dld.h HAVE_DLD_H)
 
36
check_include_file(dlfcn.h HAVE_DLFCN_H)
 
37
check_include_file(errno.h HAVE_ERRNO_H)
 
38
check_include_file(execinfo.h HAVE_EXECINFO_H)
 
39
check_include_file(fcntl.h HAVE_FCNTL_H)
 
40
check_include_file(inttypes.h HAVE_INTTYPES_H)
 
41
check_include_file(limits.h HAVE_LIMITS_H)
 
42
check_include_file(link.h HAVE_LINK_H)
 
43
check_include_file(malloc.h HAVE_MALLOC_H)
 
44
check_include_file(malloc/malloc.h HAVE_MALLOC_MALLOC_H)
 
45
check_include_file(memory.h HAVE_MEMORY_H)
 
46
check_include_file(ndir.h HAVE_NDIR_H)
 
47
if( NOT LLVM_ON_WIN32 )
 
48
  check_include_file(pthread.h HAVE_PTHREAD_H)
 
49
endif()
 
50
check_include_file(setjmp.h HAVE_SETJMP_H)
 
51
check_include_file(signal.h HAVE_SIGNAL_H)
 
52
check_include_file(stdint.h HAVE_STDINT_H)
 
53
check_include_file(stdio.h HAVE_STDIO_H)
 
54
check_include_file(stdlib.h HAVE_STDLIB_H)
 
55
check_include_file(string.h HAVE_STRING_H)
 
56
check_include_file(sys/dir.h HAVE_SYS_DIR_H)
 
57
check_include_file(sys/dl.h HAVE_SYS_DL_H)
 
58
check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
 
59
check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
 
60
check_include_file(sys/ndir.h HAVE_SYS_NDIR_H)
 
61
check_include_file(sys/param.h HAVE_SYS_PARAM_H)
 
62
check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
 
63
check_include_file(sys/stat.h HAVE_SYS_STAT_H)
 
64
check_include_file(sys/time.h HAVE_SYS_TIME_H)
 
65
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
 
66
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)
 
67
check_include_file(termios.h HAVE_TERMIOS_H)
 
68
check_include_file(unistd.h HAVE_UNISTD_H)
 
69
check_include_file(utime.h HAVE_UTIME_H)
 
70
check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
 
71
check_include_file(windows.h HAVE_WINDOWS_H)
 
72
 
 
73
# library checks
 
74
if( NOT LLVM_ON_WIN32 )
 
75
  check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD)
 
76
  check_library_exists(pthread pthread_getspecific "" HAVE_PTHREAD_GETSPECIFIC)
 
77
  check_library_exists(pthread pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
 
78
  check_library_exists(dl dlopen "" HAVE_LIBDL)
 
79
endif()
 
80
 
 
81
# function checks
 
82
check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
 
83
check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE)
 
84
check_symbol_exists(setrlimit sys/resource.h HAVE_SETRLIMIT)
 
85
check_function_exists(isatty HAVE_ISATTY)
 
86
check_symbol_exists(isinf cmath HAVE_ISINF_IN_CMATH)
 
87
check_symbol_exists(isinf math.h HAVE_ISINF_IN_MATH_H)
 
88
check_symbol_exists(finite ieeefp.h HAVE_FINITE_IN_IEEEFP_H)
 
89
check_symbol_exists(isnan cmath HAVE_ISNAN_IN_CMATH)
 
90
check_symbol_exists(isnan math.h HAVE_ISNAN_IN_MATH_H)
 
91
check_symbol_exists(ceilf math.h HAVE_CEILF)
 
92
check_symbol_exists(floorf math.h HAVE_FLOORF)
 
93
check_symbol_exists(nearbyintf math.h HAVE_NEARBYINTF)
 
94
check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO)
 
95
check_symbol_exists(malloc_zone_statistics malloc/malloc.h
 
96
                    HAVE_MALLOC_ZONE_STATISTICS)
 
97
check_symbol_exists(mkdtemp "stdlib.h;unistd.h" HAVE_MKDTEMP)
 
98
check_symbol_exists(mkstemp "stdlib.h;unistd.h" HAVE_MKSTEMP)
 
99
check_symbol_exists(mktemp "stdlib.h;unistd.h" HAVE_MKTEMP)
 
100
if( NOT LLVM_ON_WIN32 )
 
101
  check_symbol_exists(pthread_mutex_lock pthread.h HAVE_PTHREAD_MUTEX_LOCK)
 
102
endif()
 
103
check_symbol_exists(sbrk unistd.h HAVE_SBRK)
 
104
check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL)
 
105
check_symbol_exists(strerror string.h HAVE_STRERROR)
 
106
check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
 
107
check_symbol_exists(strerror_s string.h HAVE_STRERROR_S)
 
108
check_symbol_exists(setenv stdlib.h HAVE_SETENV)
 
109
 
 
110
check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
 
111
if( LLVM_USING_GLIBC )
 
112
  add_llvm_definitions( -D_GNU_SOURCE )
 
113
endif()
 
114
 
 
115
# Type checks
 
116
check_type_exists(std::bidirectional_iterator<int,int> "iterator;iostream" HAVE_BI_ITERATOR)
 
117
check_type_exists(std::iterator<int,int,int> iterator HAVE_STD_ITERATOR)
 
118
check_type_exists(std::forward_iterator<int,int> iterator HAVE_FWD_ITERATOR)
 
119
 
 
120
set(headers "")
 
121
if (HAVE_SYS_TYPES_H)
 
122
  set(headers ${headers} "sys/types.h")
 
123
endif()
 
124
 
 
125
if (HAVE_INTTYPES_H)
 
126
  set(headers ${headers} "inttypes.h")
 
127
endif()
 
128
 
 
129
if (HAVE_STDINT_H)
 
130
  set(headers ${headers} "stdint.h")
 
131
endif()
 
132
 
 
133
check_type_exists(uint64_t "${headers}" HAVE_UINT64_T)
 
134
check_type_exists(u_int64_t "${headers}" HAVE_U_INT64_T)
 
135
 
 
136
# available programs checks
 
137
function(llvm_find_program name)
 
138
  string(TOUPPER ${name} NAME)
 
139
  find_program(LLVM_PATH_${NAME} ${name})
 
140
  mark_as_advanced(LLVM_PATH_${NAME})
 
141
  if(LLVM_PATH_${NAME})
 
142
    set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?")
 
143
    mark_as_advanced(HAVE_${NAME})
 
144
  else(LLVM_PATH_${NAME})
 
145
    set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?")
 
146
  endif(LLVM_PATH_${NAME})
 
147
endfunction()
 
148
 
 
149
llvm_find_program(gv)
 
150
llvm_find_program(circo)
 
151
llvm_find_program(twopi)
 
152
llvm_find_program(neato)
 
153
llvm_find_program(fdp)
 
154
llvm_find_program(dot)
 
155
llvm_find_program(dotty)
 
156
 
 
157
# Define LLVM_MULTITHREADED if gcc atomic builtins exists.
 
158
include(CheckAtomic)
 
159
 
 
160
include(CheckCXXCompilerFlag)
 
161
# On windows all code is position-independent and mingw warns if -fPIC
 
162
# is in the command-line.
 
163
if( NOT WIN32 )
 
164
  check_cxx_compiler_flag("-fPIC" SUPPORTS_FPIC_FLAG)
 
165
endif()
 
166
 
 
167
include(GetTargetTriple)
 
168
get_target_triple(LLVM_HOSTTRIPLE)
 
169
 
 
170
# FIXME: We don't distinguish the target and the host. :(
 
171
set(TARGET_TRIPLE "${LLVM_HOSTTRIPLE}")
 
172
 
 
173
# Determine the native architecture.
 
174
string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
 
175
if( LLVM_NATIVE_ARCH STREQUAL "host" )
 
176
  string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_HOSTTRIPLE})
 
177
endif ()
 
178
 
 
179
if (LLVM_NATIVE_ARCH MATCHES "i[2-6]86")
 
180
  set(LLVM_NATIVE_ARCH X86)
 
181
elseif (LLVM_NATIVE_ARCH STREQUAL "x86")
 
182
  set(LLVM_NATIVE_ARCH X86)
 
183
elseif (LLVM_NATIVE_ARCH STREQUAL "amd64")
 
184
  set(LLVM_NATIVE_ARCH X86)
 
185
elseif (LLVM_NATIVE_ARCH STREQUAL "x86_64")
 
186
  set(LLVM_NATIVE_ARCH X86)
 
187
elseif (LLVM_NATIVE_ARCH MATCHES "sparc")
 
188
  set(LLVM_NATIVE_ARCH Sparc)
 
189
elseif (LLVM_NATIVE_ARCH MATCHES "powerpc")
 
190
  set(LLVM_NATIVE_ARCH PowerPC)
 
191
elseif (LLVM_NATIVE_ARCH MATCHES "alpha")
 
192
  set(LLVM_NATIVE_ARCH Alpha)
 
193
elseif (LLVM_NATIVE_ARCH MATCHES "arm")
 
194
  set(LLVM_NATIVE_ARCH ARM)
 
195
elseif (LLVM_NATIVE_ARCH MATCHES "mips")
 
196
  set(LLVM_NATIVE_ARCH Mips)
 
197
elseif (LLVM_NATIVE_ARCH MATCHES "pic16")
 
198
  set(LLVM_NATIVE_ARCH "PIC16")
 
199
elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
 
200
  set(LLVM_NATIVE_ARCH XCore)
 
201
elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
 
202
  set(LLVM_NATIVE_ARCH MSP430)
 
203
else ()
 
204
  message(STATUS 
 
205
    "Unknown architecture ${LLVM_NATIVE_ARCH}; lli will not JIT code")
 
206
  set(LLVM_NATIVE_ARCH)
 
207
endif ()
 
208
  
 
209
if (LLVM_NATIVE_ARCH)
 
210
  list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
 
211
  if (NATIVE_ARCH_IDX EQUAL -1)
 
212
    message(STATUS 
 
213
      "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
 
214
    set(LLVM_NATIVE_ARCH)
 
215
  else ()
 
216
    message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
 
217
    set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
 
218
    set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
 
219
    set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
 
220
  endif ()
 
221
endif()
 
222
 
 
223
if( MINGW )
 
224
  set(HAVE_LIBIMAGEHLP 1)
 
225
  set(HAVE_LIBPSAPI 1)
 
226
  # TODO: Check existence of libraries.
 
227
  #   include(CheckLibraryExists)
 
228
  #   CHECK_LIBRARY_EXISTS(imagehlp ??? . HAVE_LIBIMAGEHLP)
 
229
endif( MINGW )
 
230
 
 
231
if( MSVC )
 
232
  set(error_t int)
 
233
  set(mode_t "unsigned short")
 
234
  set(LTDL_SHLIBPATH_VAR "PATH")
 
235
  set(LTDL_SYSSEARCHPATH "")
 
236
  set(LTDL_DLOPEN_DEPLIBS 1)
 
237
  set(SHLIBEXT ".lib")
 
238
  set(LTDL_OBJDIR "_libs")
 
239
  set(HAVE_STRTOLL 1)
 
240
  set(strtoll "_strtoi64")
 
241
  set(strtoull "_strtoui64")
 
242
  set(stricmp "_stricmp")
 
243
  set(strdup "_strdup")
 
244
else( MSVC )
 
245
  set(LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH")
 
246
  set(LTDL_SYSSEARCHPATH "") # TODO
 
247
  set(LTDL_DLOPEN_DEPLIBS 0)  # TODO
 
248
endif( MSVC )
 
249
 
 
250
# FIXME: Signal handler return type, currently hardcoded to 'void'
 
251
set(RETSIGTYPE void)
 
252
 
 
253
if( LLVM_ENABLE_THREADS )
 
254
  if( HAVE_PTHREAD_H OR WIN32 )
 
255
    set(ENABLE_THREADS 1)
 
256
  endif()
 
257
endif()
 
258
 
 
259
if( ENABLE_THREADS )
 
260
  message(STATUS "Threads enabled.")
 
261
else( ENABLE_THREADS )
 
262
  message(STATUS "Threads disabled.")
 
263
endif()
 
264
 
 
265
set(LLVM_PREFIX ${CMAKE_INSTALL_PREFIX})
 
266
 
 
267
configure_file(
 
268
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake
 
269
  ${LLVM_BINARY_DIR}/include/llvm/Config/config.h
 
270
  )
 
271
 
 
272
configure_file(
 
273
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake
 
274
  ${LLVM_BINARY_DIR}/include/llvm/Config/llvm-config.h
 
275
  )
 
276
 
 
277
configure_file(
 
278
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/System/DataTypes.h.cmake
 
279
  ${LLVM_BINARY_DIR}/include/llvm/System/DataTypes.h
 
280
  )
 
281