CMake build system update

- Extending CMakeLists.txt to support builds with VC2012.
- Fix some typo in CMakeLists.txt
- Introduces experimental WITH_AVX_CPU to build with /arch:AVX (VC11 only)
This commit is contained in:
Jürgen Herrmann
2013-05-14 16:16:25 +00:00
parent 761850f377
commit 44dfc76154
2 changed files with 88 additions and 30 deletions

View File

@@ -157,6 +157,11 @@ mark_as_advanced(WITH_AUDASPACE)
option(WITH_BOOL_COMPAT "Continue defining \"TRUE\" and \"FALSE\" until these can be replaced with \"true\" and \"false\" from stdbool.h" ON)
mark_as_advanced(WITH_BOOL_COMPAT)
if(MSVC11)
option(WITH_AVX_CPU "Warning: experimental build for newer CPUs with AVX extensions. Doesn't work on older CPUs!" OFF)
mark_as_advanced(WITH_AVX_CPU)
endif()
# (unix defaults to OpenMP On)
if((UNIX AND NOT APPLE) OR (MINGW))
@@ -944,17 +949,28 @@ elseif(WIN32)
WITH_MINGW64)
if(WITH_MINGW64)
message("Compiling for 64 bit with MinGW-w64.")
message(STATUS "Compiling for 64 bit with MinGW-w64.")
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
endif()
else()
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
# Setup 64bit and 64bit windows systems
if(CMAKE_CL_64)
message("64 bit compiler detected.")
message(STATUS "64 bit compiler detected.")
if(MSVC11)
message(STATUS "Visual C++ 2012 detected.")
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
else()
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
endif()
else()
# Setup 32bit windows systems
if(MSVC11)
message(STATUS "Visual C++ 2012 detected.")
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
else()
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
endif()
endif()
endif()
add_definitions(-DWIN32)
@@ -1017,8 +1033,22 @@ elseif(WIN32)
if(MSVC)
set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
# MSVC11 SDL is not hard linked to dxguid.lib
if(MSVC11 AND WITH_SDL)
set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
endif()
add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
# MSVC11 needs _ALLOW_KEYWORD_MACROS to build
if(MSVC11)
add_definitions(/D_ALLOW_KEYWORD_MACROS)
# Experimental feature compile with /arch:AVX MSVC11 ONLY
if(WITH_AVX_CPU)
add_definitions(/arch:AVX)
endif()
endif()
set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
@@ -1124,6 +1154,16 @@ elseif(WIN32)
${LIBDIR}/ffmpeg/include
${LIBDIR}/ffmpeg/include/msvc
)
# MSVC11 FFMPEG libs are newer
if(MSVC11)
set(FFMPEG_LIBRARIES
${LIBDIR}/ffmpeg/lib/avcodec-54.lib
${LIBDIR}/ffmpeg/lib/avformat-54.lib
${LIBDIR}/ffmpeg/lib/avdevice-54.lib
${LIBDIR}/ffmpeg/lib/avutil-52.lib
${LIBDIR}/ffmpeg/lib/swscale-2.lib
)
else()
set(FFMPEG_LIBRARIES
${LIBDIR}/ffmpeg/lib/avcodec-53.lib
${LIBDIR}/ffmpeg/lib/avformat-53.lib
@@ -1132,6 +1172,7 @@ elseif(WIN32)
${LIBDIR}/ffmpeg/lib/swscale-2.lib
)
endif()
endif()
if(WITH_IMAGE_OPENEXR)
set_lib_path(OPENEXR "openexr")
@@ -1186,7 +1227,11 @@ elseif(WIN32)
if(WITH_BOOST)
set(BOOST ${LIBDIR}/boost)
set(BOOST_INCLUDE_DIR ${BOOST}/include)
if(MSVC10)
if(MSVC11)
set(BOOST_LIBPATH ${BOOST}/lib)
set(BOOST_POSTFIX "vc110-mt-s-1_53.lib")
set(BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib")
elseif(MSVC10)
set(BOOST_LIBPATH ${BOOST}/vc2010/lib)
set(BOOST_POSTFIX "vc100-mt-s-1_49.lib")
set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_49.lib")
@@ -1236,7 +1281,6 @@ elseif(WIN32)
set(OPENCOLORIO_DEFINITIONS)
endif()
set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
# MSVC only, Mingw doesnt need

View File

@@ -587,6 +587,19 @@ elseif(WIN32)
endif()
if(WITH_CODEC_FFMPEG)
if(MSVC11)
install(
FILES
${LIBDIR}/ffmpeg/lib/avcodec-54.dll
${LIBDIR}/ffmpeg/lib/avformat-54.dll
${LIBDIR}/ffmpeg/lib/avdevice-54.dll
${LIBDIR}/ffmpeg/lib/avutil-52.dll
${LIBDIR}/ffmpeg/lib/avfilter-3.dll
${LIBDIR}/ffmpeg/lib/swresample-0.dll
${LIBDIR}/ffmpeg/lib/swscale-2.dll
DESTINATION ${TARGETDIR}
)
else()
install(
FILES
${LIBDIR}/ffmpeg/lib/avcodec-53.dll
@@ -596,6 +609,7 @@ elseif(WIN32)
${LIBDIR}/ffmpeg/lib/swscale-2.dll
DESTINATION ${TARGETDIR}
)
endif()
if(WITH_MINGW64)
install(
FILES