blob: 2bc4977a5f00c6fdc3f6ace36890654a7b53fbed (
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
|
Add configuration option to enable SSE2.
Add -ffloat-store flag on x86 without SSE2.
Gentoo bug: https://bugs.gentoo.org/631852
Gentoo bug: https://bugs.gentoo.org/641716
Upstream bug: https://bugs.freedesktop.org/show_bug.cgi?id=101033
This patch is an aggregation of the following upstream commits:
5996bbd995aed5045cc22e4d1fab08c989377983
77bf71ea365a19ac55c59cf10399b566a02d82c1
939482ab2b5a6585bdd2e5251f3f2f113d64686f
cd617d181de03a7a13c2020e6c73cd14585e24b6
f136d434f0809e064ac195b5bc4e0b50484a474c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e9a699e..d140a24 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,6 @@
######## Project settings
cmake_minimum_required(VERSION 2.8.5)
+include(CheckCCompilerFlag)
set (PACKAGE_NAME uchardet)
project (${PACKAGE_NAME} CXX C)
enable_testing()
@@ -33,13 +34,31 @@ include(GNUInstallDirs)
######## Configuration
-option(BUILD_BINARY "Build executable" ON)
-option(BUILD_SHARED_LIBS "Build shared library and link executable to it" ON)
+option(BUILD_BINARY "Build the CLI tool." ON)
+option(BUILD_SHARED_LIBS "Build shared library and link executable to it." ON)
+option(CHECK_SSE2 "Check and enable SSE2 extensions if supported. Disabling SSE on platforms which support it may decrease performances." ON)
+set(TARGET_ARCHITECTURE "" CACHE STRING "Target CPU architecture. It is autodetected if not specified.")
if (BUILD_SHARED_LIBS)
option(BUILD_STATIC "Build static library" ON)
endif (BUILD_SHARED_LIBS)
+if (TARGET_ARCHITECTURE STREQUAL "")
+ string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} TARGET_ARCHITECTURE)
+endif (TARGET_ARCHITECTURE STREQUAL "")
+
+if (TARGET_ARCHITECTURE MATCHES ".*(x86)|(amd).*")
+ CHECK_C_COMPILER_FLAG(-msse2 SUPPORTS_CFLAG_SSE2)
+ CHECK_C_COMPILER_FLAG(-mfpmath=sse SUPPORTS_CFLAG_SSE_MATH)
+ if (CHECK_SSE2 AND SUPPORTS_CFLAG_SSE2 AND SUPPORTS_CFLAG_SSE_MATH)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mfpmath=sse")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mfpmath=sse")
+ else (CHECK_SSE2 AND SUPPORTS_CFLAG_SSE2 AND SUPPORTS_CFLAG_SSE_MATH)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffloat-store")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffloat-store")
+ endif (CHECK_SSE2 AND SUPPORTS_CFLAG_SSE2 AND SUPPORTS_CFLAG_SSE_MATH)
+endif (TARGET_ARCHITECTURE MATCHES ".*(x86)|(amd).*")
+
configure_file(
uchardet.pc.in
uchardet.pc
|