Rex Dieter 9280c9a
From bba9aa37c899999fca01101a8ed271a3aa9d82b7 Mon Sep 17 00:00:00 2001
Rex Dieter 9280c9a
From: Sebastian Kraft <mail@sebastiankraft.net>
Rex Dieter 9280c9a
Date: Sat, 16 Jan 2016 15:42:57 +0100
Rex Dieter df8deef
Subject: [PATCH 060/113] Various CMake patches from the mailing list
Rex Dieter 9280c9a
Rex Dieter 9280c9a
- Add GLIB2 libray path to link directories
Rex Dieter 9280c9a
- Enable -msseX compiler switch for Clang
Rex Dieter 9280c9a
- Set -mseeX switch only for files with SSE code
Rex Dieter 9280c9a
- Do not enable SSE optimizations on non-x86 hardware by default
Rex Dieter 9280c9a
---
Rex Dieter 9280c9a
 CMakeLists.txt              | 19 +++++++++++++------
Rex Dieter 9280c9a
 libs/lensfun/CMakeLists.txt |  5 +++++
Rex Dieter 9280c9a
 2 files changed, 18 insertions(+), 6 deletions(-)
Rex Dieter 9280c9a
Rex Dieter 9280c9a
diff --git a/CMakeLists.txt b/CMakeLists.txt
Rex Dieter 9280c9a
index 21f082b..b85656c 100644
Rex Dieter 9280c9a
--- a/CMakeLists.txt
Rex Dieter 9280c9a
+++ b/CMakeLists.txt
Rex Dieter 9280c9a
@@ -31,12 +31,18 @@ IF(NOT HAVE_REGEX_H)
Rex Dieter 9280c9a
   INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libs/regex)
Rex Dieter 9280c9a
 ENDIF()
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
+IF(CMAKE_SYSTEM_PROCESSOR MATCHES "[XxIi][0-9]?86|[Aa][Mm][Dd]64")
Rex Dieter 9280c9a
+  SET(X86_ON ON)
Rex Dieter 9280c9a
+else()
Rex Dieter 9280c9a
+  SET(X86_ON OFF)
Rex Dieter 9280c9a
+ENDIF()
Rex Dieter 9280c9a
+
Rex Dieter 9280c9a
 # options controlling the build process
Rex Dieter 9280c9a
 OPTION(BUILD_STATIC "Build static library" OFF)
Rex Dieter 9280c9a
 OPTION(BUILD_TESTS "Build test suite" OFF)
Rex Dieter 9280c9a
 OPTION(BUILD_LENSTOOL "Build the lenstool (requires libpng)" OFF)
Rex Dieter 9280c9a
-OPTION(BUILD_FOR_SSE "Build with support for SSE" ON)
Rex Dieter 9280c9a
-OPTION(BUILD_FOR_SSE2 "Build with support for SSE2" ON)
Rex Dieter 9280c9a
+OPTION(BUILD_FOR_SSE "Build with support for SSE" ${X86_ON})
Rex Dieter 9280c9a
+OPTION(BUILD_FOR_SSE2 "Build with support for SSE2" ${X86_ON})
Rex Dieter 9280c9a
 OPTION(BUILD_DOC "Build documentation with doxygen" OFF)
Rex Dieter 9280c9a
 OPTION(INSTALL_HELPER_SCRIPTS "Install various helper scripts" ON)
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
@@ -62,14 +68,14 @@ ENDIF()
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
 IF(BUILD_FOR_SSE)
Rex Dieter 9280c9a
   SET(VECTORIZATION_SSE 1)
Rex Dieter 9280c9a
-  IF(CMAKE_COMPILER_IS_GNUCXX)
Rex Dieter 9280c9a
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
Rex Dieter 9280c9a
+  IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
Rex Dieter 9280c9a
+    SET(VECTORIZATION_SSE_FLAGS "-msse")
Rex Dieter 9280c9a
   ENDIF()
Rex Dieter 9280c9a
 ENDIF()
Rex Dieter 9280c9a
 IF(BUILD_FOR_SSE2)
Rex Dieter 9280c9a
   SET(VECTORIZATION_SSE2 1)
Rex Dieter 9280c9a
-  IF(CMAKE_COMPILER_IS_GNUCXX)
Rex Dieter 9280c9a
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
Rex Dieter 9280c9a
+  IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
Rex Dieter 9280c9a
+    SET(VECTORIZATION_SSE2_FLAGS "-msse2")
Rex Dieter 9280c9a
   ENDIF()
Rex Dieter 9280c9a
 ENDIF()
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
@@ -97,6 +103,7 @@ ELSE()
Rex Dieter 9280c9a
 ENDIF()
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
 INCLUDE_DIRECTORIES(SYSTEM ${GLIB2_INCLUDE_DIRS})
Rex Dieter 9280c9a
+LINK_DIRECTORIES(${GLIB2_LIBRARY_DIRS})
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
 IF(BUILD_STATIC)
Rex Dieter 9280c9a
diff --git a/libs/lensfun/CMakeLists.txt b/libs/lensfun/CMakeLists.txt
Rex Dieter 9280c9a
index 6beadec..b0ca638 100644
Rex Dieter 9280c9a
--- a/libs/lensfun/CMakeLists.txt
Rex Dieter 9280c9a
+++ b/libs/lensfun/CMakeLists.txt
Rex Dieter 9280c9a
@@ -9,6 +9,11 @@ IF(WIN32)
Rex Dieter 9280c9a
   LIST(APPEND LENSFUN_SRC windows/auxfun.cpp)
Rex Dieter 9280c9a
 ENDIF()
Rex Dieter 9280c9a
 
Rex Dieter 9280c9a
+SET_SOURCE_FILES_PROPERTIES(mod-color-sse.cpp mod-coord-sse.cpp
Rex Dieter 9280c9a
+  PROPERTIES COMPILE_FLAGS "${VECTORIZATION_SSE_FLAGS}")
Rex Dieter 9280c9a
+SET_SOURCE_FILES_PROPERTIES(mod-color-sse2.cpp
Rex Dieter 9280c9a
+  PROPERTIES COMPILE_FLAGS "${VECTORIZATION_SSE2_FLAGS}")
Rex Dieter 9280c9a
+
Rex Dieter 9280c9a
 IF(BUILD_STATIC)
Rex Dieter 9280c9a
   ADD_LIBRARY(lensfun STATIC ${LENSFUN_SRC})
Rex Dieter 9280c9a
 ELSE()
Rex Dieter 9280c9a
-- 
Rex Dieter 9280c9a
2.7.4
Rex Dieter 9280c9a