graphics/colmap: always build SIMD support

This commit is contained in:
Jan Beich
2016-12-19 06:37:20 +00:00
parent b108ac1cd7
commit 53196f4c02
2 changed files with 87 additions and 15 deletions

View File

@@ -3,7 +3,7 @@
PORTNAME= colmap
DISTVERSION= 2.1-0 # synthetic tag
DISTVERSIONSUFFIX= -g55fbe10
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= graphics
MAINTAINER= jbeich@FreeBSD.org
@@ -40,18 +40,12 @@ CXXFLAGS+= -D_GLIBCXX_USE_C99 -D_GLIBCXX_USE_C99_MATH_TR1 \
LDFLAGS+= -Wl,--as-needed # gflags, glu, xi, xmu
TEST_TARGET= test ARGS="-V"
OPTIONS_DEFINE= DOCS OPENMP
OPTIONS_DEFAULT= OPENMP ${MACHINE_CPU:tu}
OPTIONS_DEFINE= DOCS OPENMP SIMD
OPTIONS_DEFAULT= OPENMP SIMD
# XXX ports/215138: exclude still broken
OPTIONS_EXCLUDE= ${OPTIONS_EXCLUDE_${OPSYS}_${OSREL}} # not OSREL:R
OPTIONS_EXCLUDE_FreeBSD_10.1= OPENMP
OPTIONS_GROUP= SIMD
OPTIONS_GROUP_SIMD= ${OPTIONS_GROUP_SIMD_${MACHINE_ARCH}}
# Keep in sync with src/ext/VLFeat/CMakeLists.txt
OPTIONS_GROUP_SIMD_amd64= ${OPTIONS_GROUP_SIMD_i386}
OPTIONS_GROUP_SIMD_i386= SSE2 AVX
DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
DOCS_USES= gmake
DOCS_PORTDOCS= *
@@ -61,15 +55,10 @@ OPENMP_CMAKE_BOOL= OPENMP_ENABLED
# XXX ports/199603 + ports/210337
OPENMP_VARS= OPENMP=gcc-
.for _simd in ${OPTIONS_GROUP_SIMD}
${_simd}_DESC= ${MMX_DESC:S/MMX/${_simd}/}
${_simd}_CMAKE_BOOL= HAS_${_simd}_EXTENSION
${_simd}_CFLAGS= -m${_simd:tl}
.endfor
SIMD_CMAKE_BOOL= SIMD_ENABLED
post-patch:
@${REINPLACE_CMD} -e 's/Qt5OpenGL/Qt5Widgets/' \
-e '/CheckSSEExtensions/d' \
${WRKSRC}/CMakeLists.txt
@${REINPLACE_CMD} -e '/install.*test/d' \
${WRKSRC}/cmake/CMakeHelper.cmake

View File

@@ -0,0 +1,83 @@
build: don't force SSE2/AVX, enable at runtime instead
--- CMakeLists.txt.orig 2016-12-07 13:47:54 UTC
+++ CMakeLists.txt
@@ -16,8 +16,6 @@ include(CheckCXXCompilerFlag)
# the CMake policies in this file
include(${CMAKE_SOURCE_DIR}/cmake/CMakeHelper.cmake NO_POLICY_SCOPE)
-include(${CMAKE_SOURCE_DIR}/cmake/CheckSSEExtensions.cmake)
-
if(EXISTS ${CMAKE_SOURCE_DIR}/LocalConfig.cmake)
include(${CMAKE_SOURCE_DIR}/LocalConfig.cmake)
endif()
@@ -29,6 +27,7 @@ endif()
enable_testing()
+option(SIMD_ENABLED "Wether to enable SIMD optimizations" ON)
option(OPENMP_ENABLED "Whether to enable OpenMP" ON)
option(LTO_ENABLED "Whether to enable link-time optimization" ON)
option(CUDA_ENABLED "Whether to enable CUDA, if available" ON)
--- src/ext/VLFeat/CMakeLists.txt.orig 2016-12-07 13:47:54 UTC
+++ src/ext/VLFeat/CMakeLists.txt
@@ -1,8 +1,27 @@
-if(IS_MSVC OR NOT HAS_AVX_EXTENSION)
- add_definitions(-DVL_DISABLE_AVX)
+set(VLFEAT_SOURCE_FILES)
+
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86|amd64|AMD64")
+ set(IS_X86 TRUE)
endif()
-if(IS_MSVC OR NOT HAS_SSE2_EXTENSION)
+if(SIMD_ENABLED AND IS_X86 AND NOT IS_MSVC)
+ set(SSE2_SOURCES
+ imopv_sse2.c
+ imopv_sse2.h
+ mathop_sse2.c
+ mathop_sse2.h)
+ set(AVX_SOURCES
+ mathop_avx.c
+ mathop_avx.h)
+
+ list(APPEND VLFEAT_SOURCE_FILES ${AVX_SOURCES} ${SSE2_SOURCES})
+
+ set_source_files_properties(${AVX_SOURCES}
+ PROPERTIES COMPILE_FLAGS "-mavx")
+ set_source_files_properties(${SSE2_SOURCES}
+ PROPERTIES COMPILE_FLAGS "-msse2")
+else()
+ add_definitions(-DVL_DISABLE_AVX)
add_definitions(-DVL_DISABLE_SSE2)
endif()
@@ -10,7 +29,7 @@ if(NOT OPENMP_ENABLED OR NOT OPENMP_FOUN
add_definitions(-DVL_DISABLE_OPENMP)
endif()
-set(VLFEAT_SOURCE_FILES
+list(APPEND VLFEAT_SOURCE_FILES
aib.c
aib.h
array.c
@@ -44,8 +63,6 @@ set(VLFEAT_SOURCE_FILES
ikmeans_lloyd.tc
imopv.c
imopv.h
- imopv_sse2.c
- imopv_sse2.h
kdtree.c
kdtree.h
kmeans.c
@@ -56,10 +73,6 @@ set(VLFEAT_SOURCE_FILES
liop.h
mathop.c
mathop.h
- mathop_avx.c
- mathop_avx.h
- mathop_sse2.c
- mathop_sse2.h
mser.c
mser.h
pgm.c