73 lines
3.2 KiB
Text
73 lines
3.2 KiB
Text
|
|
# Don't add dlib if it's already been added to the cmake project
|
|
if (NOT TARGET dlib)
|
|
|
|
# Determine the path to dlib.
|
|
string(REGEX REPLACE "cmake$" "" dlib_path ${CMAKE_CURRENT_LIST_FILE})
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCXX)
|
|
# By default, g++ won't warn or error if you forget to return a value in a
|
|
# function which requires you to do so. This option makes it give a warning
|
|
# for doing this.
|
|
add_definitions("-Wreturn-type")
|
|
endif()
|
|
|
|
# Setup some options to allow a user to enable SSE and AVX instruction use.
|
|
if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"
|
|
OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"
|
|
OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
|
option(USE_SSE2_INSTRUCTIONS "Compile your program with SSE2 instructions" OFF)
|
|
option(USE_SSE4_INSTRUCTIONS "Compile your program with SSE4 instructions" OFF)
|
|
option(USE_AVX_INSTRUCTIONS "Compile your program with AVX instructions" OFF)
|
|
if(USE_AVX_INSTRUCTIONS)
|
|
add_definitions(-mavx)
|
|
elseif (USE_SSE4_INSTRUCTIONS)
|
|
add_definitions(-msse4)
|
|
elseif(USE_SSE2_INSTRUCTIONS)
|
|
add_definitions(-msse2)
|
|
endif()
|
|
elseif (MSVC OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # else if using Visual Studio
|
|
# Use SSE2 by default when using Visual Studio.
|
|
option(USE_SSE2_INSTRUCTIONS "Compile your program with SSE2 instructions" ON)
|
|
# Visual Studio 2005 didn't support SSE4
|
|
if (NOT MSVC80)
|
|
option(USE_SSE4_INSTRUCTIONS "Compile your program with SSE4 instructions" OFF)
|
|
endif()
|
|
# Visual Studio 2005 and 2008 didn't support AVX
|
|
if (NOT MSVC80 AND NOT MSVC90)
|
|
option(USE_AVX_INSTRUCTIONS "Compile your program with AVX instructions" OFF)
|
|
endif()
|
|
include(CheckTypeSize)
|
|
check_type_size( "void*" SIZE_OF_VOID_PTR)
|
|
if(USE_AVX_INSTRUCTIONS)
|
|
add_definitions(/arch:AVX)
|
|
elseif (USE_SSE4_INSTRUCTIONS)
|
|
# Visual studio doesn't have an /arch:SSE2 flag when building in 64 bit modes.
|
|
# So only give it when we are doing a 32 bit build.
|
|
if (SIZE_OF_VOID_PTR EQUAL 4)
|
|
add_definitions(/arch:SSE2)
|
|
endif()
|
|
add_definitions(-DDLIB_HAVE_SSE2)
|
|
add_definitions(-DDLIB_HAVE_SSE3)
|
|
add_definitions(-DDLIB_HAVE_SSE41)
|
|
elseif(USE_SSE2_INSTRUCTIONS)
|
|
# Visual studio doesn't have an /arch:SSE2 flag when building in 64 bit modes.
|
|
# So only give it when we are doing a 32 bit build.
|
|
if (SIZE_OF_VOID_PTR EQUAL 4)
|
|
add_definitions(/arch:SSE2)
|
|
endif()
|
|
add_definitions(-DDLIB_HAVE_SSE2)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Add folder containing dlib to the include search path.
|
|
INCLUDE_DIRECTORIES(${dlib_path}/..)
|
|
|
|
# This is really optional, but nice. It will make sure the build mode
|
|
# created by cmake is always release by default.
|
|
include(${dlib_path}/release_build_by_default)
|
|
|
|
add_subdirectory(${dlib_path} dlib_build)
|
|
endif()
|
|
|