[Bf-committers] [Proposal] CMake patch for VC2012 build
Jürgen Herrmann
shadowrom at me.com
Tue May 14 10:59:26 CEST 2013
Hi there,
brecht asked me to post the patch for CMake VS2012 here before committing:
And here it is ;)
Any comments or suggetions?
---- SNIP ----
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt (revision 56785)
+++ CMakeLists.txt (working copy)
@@ -157,7 +157,12 @@
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))
set(PLATFORM_DEFAULT ON)
@@ -948,12 +953,25 @@
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
endif()
else()
+ #default dir, just in case ;)
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
-
# Setup 64bit and 64bit windows systems
if(CMAKE_CL_64)
message("64 bit compiler detected.")
- set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
+ if(MSVC11)
+ message("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("Visual C++ 2012 detected.")
+ set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
+ else()
+ set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
+ endif()
endif()
endif()
@@ -968,7 +986,12 @@
if(WITH_OPENAL)
set(OPENAL ${LIBDIR}/openal)
set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
- set(OPENAL_LIBRARY wrap_oal)
+ # MSVC 11 libs ware with OpenAL-Soft and don't bring wrap_oal.lib
+ if(MSVC11)
+ set(OPENAL_LIBRARY openal32)
+ else()
+ set(OPENAL_LIBRARY wrap_oal)
+ endif()
set(OPENAL_LIBPATH ${OPENAL}/lib)
endif()
@@ -1017,8 +1040,23 @@
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)
+ 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)
+ message("compiling with /arch:AVX")
+ 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,13 +1162,24 @@
${LIBDIR}/ffmpeg/include
${LIBDIR}/ffmpeg/include/msvc
)
- set(FFMPEG_LIBRARIES
- ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
- ${LIBDIR}/ffmpeg/lib/avformat-53.lib
- ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
- ${LIBDIR}/ffmpeg/lib/avutil-51.lib
- ${LIBDIR}/ffmpeg/lib/swscale-2.lib
- )
+ #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
+ ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
+ ${LIBDIR}/ffmpeg/lib/avutil-51.lib
+ ${LIBDIR}/ffmpeg/lib/swscale-2.lib
+ )
+ endif()
endif()
if(WITH_IMAGE_OPENEXR)
@@ -1186,8 +1235,12 @@
if(WITH_BOOST)
set(BOOST ${LIBDIR}/boost)
set(BOOST_INCLUDE_DIR ${BOOST}/include)
- if(MSVC10)
- set(BOOST_LIBPATH ${BOOST}/vc2010/lib)
+ 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}/vc2012/lib)
set(BOOST_POSTFIX "vc100-mt-s-1_49.lib")
set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_49.lib")
else()
@@ -1236,7 +1289,6 @@
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
@@ -2043,7 +2095,7 @@
endif()
-# MSVC2010 fails to links C++ libs right
+ #MSVC2010 fails to links C++ libs right
if(MSVC10)
if(WITH_OPENCOLLADA)
message(WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008")
Index: source/creator/CMakeLists.txt
===================================================================
--- source/creator/CMakeLists.txt (revision 56785)
+++ source/creator/CMakeLists.txt (working copy)
@@ -587,15 +587,29 @@
endif()
if(WITH_CODEC_FFMPEG)
- install(
- FILES
- ${LIBDIR}/ffmpeg/lib/avcodec-53.dll
- ${LIBDIR}/ffmpeg/lib/avformat-53.dll
- ${LIBDIR}/ffmpeg/lib/avdevice-53.dll
- ${LIBDIR}/ffmpeg/lib/avutil-51.dll
- ${LIBDIR}/ffmpeg/lib/swscale-2.dll
- DESTINATION ${TARGETDIR}
- )
+ 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
+ ${LIBDIR}/ffmpeg/lib/avformat-53.dll
+ ${LIBDIR}/ffmpeg/lib/avdevice-53.dll
+ ${LIBDIR}/ffmpeg/lib/avutil-51.dll
+ ${LIBDIR}/ffmpeg/lib/swscale-2.dll
+ DESTINATION ${TARGETDIR}
+ )
+ endif()
if(WITH_MINGW64)
install(
FILES
@@ -614,12 +628,20 @@
endif()
if(WITH_OPENAL)
- install(
- FILES
- ${LIBDIR}/openal/lib/OpenAL32.dll
- ${LIBDIR}/openal/lib/wrap_oal.dll
- DESTINATION ${TARGETDIR}
- )
+ if(MSVC11)
+ install(
+ FILES
+ ${LIBDIR}/openal/lib/OpenAL32.dll
+ DESTINATION ${TARGETDIR}
+ )
+ else()
+ install(
+ FILES
+ ${LIBDIR}/openal/lib/OpenAL32.dll
+ ${LIBDIR}/openal/lib/wrap_oal.dll
+ DESTINATION ${TARGETDIR}
+ )
+ endif()
endif()
if(WITH_SDL)
------ SNIP ------
More information about the Bf-committers
mailing list