# 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()