It seems the conversion from old python-based configure to cmake has some rough edges. Here're a few fixes to avoid downstream growing suboptimal versions. Except merge conflicts they can be applied or discarded independently.
Accompanying build logs (rebased against 0.3.0): i386, gcc 4.2.1+ - http://sprunge.us/QPPT i386, clang 3.4.1 - http://sprunge.us/eOCd armv6, clang 3.7.0 - http://sprunge.us/PBXc -- Not a pull request because sourceforge is hostile towards tor signup.
From 566c3fc76ed40306ac80322be003826486e4c17b Mon Sep 17 00:00:00 2001 From: Matthieu Volat <[email protected]> Date: Sun, 21 Dec 2014 20:19:00 +0000 Subject: [1/4] Also search GLib library in non-default location to fix /usr/bin/ld: cannot find -lglib-2.0 --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 21f082b..e6de751 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,7 @@ ELSE() ENDIF() INCLUDE_DIRECTORIES(SYSTEM ${GLIB2_INCLUDE_DIRS}) +LINK_DIRECTORIES(${GLIB2_LIBRARY_DIRS}) IF(BUILD_STATIC)
From 4e084051fbceb3740bf9c801a7e25a492d1f4ac6 Mon Sep 17 00:00:00 2001 From: Jan Beich <[email protected]> Date: Sat, 28 Nov 2015 12:18:49 +0000 Subject: [2/4] Clang supports -mfoo like GCC which fixes In file included from libs/lensfun/mod-coord-sse.cpp:16: /usr/bin/../lib/clang/3.7.0/include/xmmintrin.h:28:2: error: "SSE instruction set not enabled" --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e6de751..926816d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,13 +62,13 @@ ENDIF() IF(BUILD_FOR_SSE) SET(VECTORIZATION_SSE 1) - IF(CMAKE_COMPILER_IS_GNUCXX) + IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse") ENDIF() ENDIF() IF(BUILD_FOR_SSE2) SET(VECTORIZATION_SSE2 1) - IF(CMAKE_COMPILER_IS_GNUCXX) + IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2") ENDIF() ENDIF()
From 380482d41fc1e90ab08f63222128464516e043d3 Mon Sep 17 00:00:00 2001 From: Jan Beich <[email protected]> Date: Sat, 28 Nov 2015 10:26:18 +0000 Subject: [3/4] Limit -mfoo to intrinsics consumers Runtime detection is useless if everything is built with -mfoo. For one, pre-SSE2 i386 may crash with "Illegal instruction". --- CMakeLists.txt | 4 ++-- libs/lensfun/CMakeLists.txt | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 926816d..1988711 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,13 +63,13 @@ ENDIF() IF(BUILD_FOR_SSE) SET(VECTORIZATION_SSE 1) IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse") + SET(VECTORIZATION_SSE_FLAGS "-msse") ENDIF() ENDIF() IF(BUILD_FOR_SSE2) SET(VECTORIZATION_SSE2 1) IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2") + SET(VECTORIZATION_SSE2_FLAGS "-msse2") ENDIF() ENDIF() diff --git a/libs/lensfun/CMakeLists.txt b/libs/lensfun/CMakeLists.txt index 6beadec..b0ca638 100644 --- a/libs/lensfun/CMakeLists.txt +++ b/libs/lensfun/CMakeLists.txt @@ -9,6 +9,11 @@ IF(WIN32) LIST(APPEND LENSFUN_SRC windows/auxfun.cpp) ENDIF() +SET_SOURCE_FILES_PROPERTIES(mod-color-sse.cpp mod-coord-sse.cpp + PROPERTIES COMPILE_FLAGS "${VECTORIZATION_SSE_FLAGS}") +SET_SOURCE_FILES_PROPERTIES(mod-color-sse2.cpp + PROPERTIES COMPILE_FLAGS "${VECTORIZATION_SSE2_FLAGS}") + IF(BUILD_STATIC) ADD_LIBRARY(lensfun STATIC ${LENSFUN_SRC}) ELSE()
From e6412e0a1bd6f4a3ef4809af7e40965265a2959d Mon Sep 17 00:00:00 2001 From: Jan Beich <[email protected]> Date: Sat, 28 Nov 2015 12:06:31 +0000 Subject: [4/4] Limit SSE/SSE2 optimizations to x86 by default For one, aarch64 build fails with g++: error: unrecognized command line option '-msse' clang++: warning: argument unused during compilation: '-msse' In file included from libs/lensfun/mod-coord-sse.cpp:16: /usr/bin/../lib/clang/3.7.0/include/xmmintrin.h:28:2: error: "SSE instruction set not enabled" --- CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1988711..b85656c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,12 +31,18 @@ IF(NOT HAVE_REGEX_H) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libs/regex) ENDIF() +IF(CMAKE_SYSTEM_PROCESSOR MATCHES "[XxIi][0-9]?86|[Aa][Mm][Dd]64") + SET(X86_ON ON) +else() + SET(X86_ON OFF) +ENDIF() + # options controlling the build process OPTION(BUILD_STATIC "Build static library" OFF) OPTION(BUILD_TESTS "Build test suite" OFF) OPTION(BUILD_LENSTOOL "Build the lenstool (requires libpng)" OFF) -OPTION(BUILD_FOR_SSE "Build with support for SSE" ON) -OPTION(BUILD_FOR_SSE2 "Build with support for SSE2" ON) +OPTION(BUILD_FOR_SSE "Build with support for SSE" ${X86_ON}) +OPTION(BUILD_FOR_SSE2 "Build with support for SSE2" ${X86_ON}) OPTION(BUILD_DOC "Build documentation with doxygen" OFF) OPTION(INSTALL_HELPER_SCRIPTS "Install various helper scripts" ON)
signature.asc
Description: PGP signature
------------------------------------------------------------------------------
_______________________________________________ Lensfun-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/lensfun-users
