summaryrefslogtreecommitdiffhomepage
path: root/cmake/msvc.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/msvc.cmake')
-rw-r--r--cmake/msvc.cmake224
1 files changed, 163 insertions, 61 deletions
diff --git a/cmake/msvc.cmake b/cmake/msvc.cmake
index d168bad4..b390c120 100644
--- a/cmake/msvc.cmake
+++ b/cmake/msvc.cmake
@@ -3,7 +3,24 @@
# mkdir build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/msvc.cmake build/
SET(CMAKE_SYSTEM_NAME Windows)
-SET(CMAKE_SYSTEM_VERSION 6.0)
+SET(CMAKE_SYSTEM_VERSION 5.01)
+if(opentrack-64bit)
+ set(CMAKE_SYSTEM_PROCESSOR AMD64)
+else()
+ set(CMAKE_SYSTEM_PROCESSOR x86)
+endif()
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR CMAKE_INSTALL_PREFIX STREQUAL "")
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
+endif()
+
+if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
+endif()
+
+#set(CMAKE_GENERATOR Ninja)
+#set(CMAKE_MAKE_PROGRAM ninja.exe)
+set(CMAKE_ASM_NASM_COMPILER nasm.exe)
# search for programs in the host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@@ -11,93 +28,178 @@ SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(cc "")
-# oldest CPU supported here is Northwood-based Pentium 4. -sh 20150811
-set(cc "${cc} -O2 -O2it -Oy- -Ob2 -fp:fast -GS- -GF -GL -Gw -Gy -Gm")
-set(cc "${cc} -Zo -FS -arch:SSE2 -D_HAS_EXCEPTIONS=0")
-set(cc "${cc} -bigobj -cgthreads1")
-set(cc "${cc} -Zc:inline -Zc:rvalueCast")
-#set(cc "${cc} -Qvec-report:1")
-set(warns_ "")
+#add_definitions(-D_ITERATOR_DEBUG_LEVEL=0)
+#add_compile_options(-Qvec-report:2)
+#add_compile_options(-d2cgsummary)
+add_definitions(-D_HAS_EXCEPTIONS=0)
+
+if(DEFINED CMAKE_TOOLCHAIN_FILE)
+ # ignore cmake warning: Manually-specified variable not used by the project
+ set(CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}")
+endif()
-set(warns-disable 4530 4577 4789 4244 4702 4530 4244 4127 4458 4456 4251 4100)
+include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
+set(CMAKE_POLICY_DEFAULT_CMP0069 NEW CACHE INTERNAL "" FORCE)
+#set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
-foreach(i ${warns-disable})
- set(warns_ "${warns_} -wd${i}")
-endforeach()
+set(CMAKE_C_EXTENSIONS FALSE)
+set(CMAKE_CXX_EXTENSIONS FALSE)
-foreach(k CMP0020 CMP0022 CMP0058 CMP0028 CMP0042 CMP0063 CMP0053 CMP0011 CMP0054 CMP0012)
- if(POLICY ${k})
- cmake_policy(SET ${k} NEW)
+set(CMAKE_CROSSCOMPILING 0)
+
+function(sets type)
+ set(i 0)
+ list(LENGTH ARGN max)
+ math(EXPR foo "${max} % 2")
+ if(NOT foo EQUAL 0)
+ message(FATAL_ERROR "argument count not even")
endif()
-endforeach()
+ while(i LESS max)
+ list(GET ARGN "${i}" name)
+ math(EXPR i "${i} + 1")
+ list(GET ARGN "${i}" value)
+ math(EXPR i "${i} + 1")
+ set(${name} "${value}" CACHE "${type}" "" FORCE)
+ endwhile()
+endfunction()
if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
- #C4263 - member function does not override any base class virtual member function
- #C4264 - no override available for virtual member function from base class, function is hidden
- #C4265 - class has virtual functions, but destructor is not virtual
- #C4266 - no override available for virtual member function from base type, function is hidden
- #C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied
+ #include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
- set(warns 4263 4264 4266 4928)
- set(warns-noerr 4265)
+ add_compile_options("-W4")
- foreach(i ${warns})
- set(warns_ "${warns_} -w1${i} -we${i}")
- endforeach()
+ # C4265: class has virtual functions, but destructor is not virtual
+ # C4005: macro redefinition
+ set(warns-error 4265 4005)
- foreach(i ${warns-noerr})
- set(warns_ "${warns_} -w1${i}")
+ foreach(i ${warns-error})
+ add_compile_options(-w1${i} -we${i})
endforeach()
- set(cc "${cc} -GR-")
endif()
-set(base-cflags "${warns_} -MT -Zi -W4")
-#set(base-cflags "${base-cflags} -d2cgsummary")
+if(CMAKE_PROJECT_NAME STREQUAL "QtBase")
+ set(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING TRUE CACHE BOOL "" FORCE)
+ set(QT_DEBUG_OPTIMIZATION_FLAGS TRUE CACHE BOOL "" FORCE)
+ set(QT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS TRUE CACHE BOOL "" FORCE)
-set(_CFLAGS "${base-cflags}")
-set(_CXXFLAGS "${base-cflags}")
-set(_CFLAGS_RELEASE "${cc}")
-set(_CFLAGS_DEBUG "-GS -sdl -Gs -guard:cf")
-set(_CXXFLAGS_RELEASE "${cc}")
-set(_CXXFLAGS_DEBUG "${_CFLAGS_DEBUG}")
+ set(FEATURE_debug OFF)
+ set(FEATURE_debug_and_release OFF)
+ set(FEATURE_force_debug_info ON)
+ set(FEATURE_ltcg ON)
+ set(FEATURE_shared ON)
+endif()
-set(_LDFLAGS "-machine:X86 -DEBUG")
+if(CMAKE_PROJECT_NAME STREQUAL "OpenCV")
+ set(PARALLEL_ENABLE_PLUGINS FALSE)
+ set(HIGHGUI_ENABLE_PLUGINS FALSE)
+ set(VIDEOIO_ENABLE_PLUGINS FALSE)
-#set(_ltcg "-LTCG")
-set(_ltcg "-LTCG:INCREMENTAL")
+ set(OPENCV_SKIP_MSVC_EXCEPTIONS_FLAG TRUE)
+ set(OPENCV_DISABLE_THREAD_SUPPORT TRUE)
-set(_LDFLAGS_RELEASE "-OPT:REF,ICF -cgthreads:1 ${_ltcg}")
-set(_LDFLAGS_DEBUG "")
+ set(ENABLE_FAST_MATH ON)
+ set(BUILD_TESTS OFF)
+ set(BUILD_PERF_TESTS OFF)
+ set(BUILD_opencv_apps OFF)
+ set(BUILD_opencv_gapi OFF)
+endif()
-set(_LDFLAGS_STATIC "-machine:X86 -WX")
-set(_LDFLAGS_STATIC_RELEASE "${_ltcg}")
-set(_LDFLAGS_STATIC_DEBUG "")
+if(CMAKE_PROJECT_NAME STREQUAL "TestOscpack")
+ add_compile_definitions(OSC_HOST_LITTLE_ENDIAN)
+endif()
-# debugging build times
-#set(_CXXFLAGS "${_CXXFLAGS} -Bt+")
-set(_LDFLAGS "${_LDFLAGS} -time")
+set(opentrack-simd "SSE2")
+
+if(CMAKE_PROJECT_NAME STREQUAL "onnxruntime")
+ sets(BOOL
+ ONNX_USE_MSVC_STATIC_RUNTIME OFF
+ protobuf_MSVC_STATIC_RUNTIME OFF
+ onnxruntime_USE_AVX OFF
+ onnxruntime_USE_AVX2 OFF
+ onnxruntime_USE_AVX512 OFF
+ onnxruntime_BUILD_BENCHMARKS OFF
+ onnxruntime_BUILD_FOR_NATIVE_MACHINE OFF
+ onnxruntime_BUILD_SHARED_LIB ON
+ onnxruntime_BUILD_UNIT_TESTS OFF
+ protobuf_BUILD_EXAMPLES OFF
+ protobuf_BUILD_SHARED_LIBS OFF
+ ONNX_BUILD_BENCHMARKS OFF
+ ONNX_BUILD_TESTS OFF
+ ONNX_DISABLE_EXCEPTIONS OFF # important!
+ ONNX_GEN_PB_TYPE_STUBS OFF
+ onnxruntime_DISABLE_CONTRIB_OPS ON
+ BUILD_TESTING OFF
+ )
+ if(opentrack-64bit)
+ sets(BOOL
+ onnxruntime_USE_AVX ON
+ )
+ endif()
+endif()
-set(CMAKE_RC_FLAGS "/nologo -DWIN32")
+if(opentrack-64bit)
+ set(opentrack-simd "AVX")
+endif()
-set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
-set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
+set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+add_compile_options(-MD)
+
+add_link_options(-cgthreads:1)
+
+set(_CFLAGS "-diagnostics:caret -Zc:inline -Zc:preprocessor -wd4117 -Zi -Zf -Zo -bigobj -cgthreads1 -vd0 -permissive-")
+#if(NOT opentrack-no-static-crt)
+# set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded" CACHE INTERNAL "" FORCE)
+#else()
+# set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE INTERNAL "" FORCE)
+#endif()
+set(_CXXFLAGS "${_CFLAGS} -Zc:throwingNew -Zc:lambda")
+set(_CFLAGS_RELEASE "-O2 -Oit -Oy- -Ob3 -fp:fast -GS- -GF -GL -Gw -Gy")
+if(NOT opentrack-simd STREQUAL "")
+ set(_CFLAGS_RELEASE "${_CFLAGS_RELEASE} -arch:${opentrack-simd}")
+endif()
+set(_CFLAGS_DEBUG "-guard:cf -MTd -Gs0 -RTCs")
+set(_CXXFLAGS_RELEASE "${_CFLAGS_RELEASE}")
+set(_CXXFLAGS_DEBUG "${_CFLAGS_DEBUG}")
-set(CMAKE_STATIC_LINKER_FLAGS "${_LDFLAGS_STATIC}" CACHE STRING "" FORCE)
-set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${_LDFLAGS_STATIC_RELEASE}" CACHE STRING "" FORCE)
-set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "${_LDFLAGS_STATIC_DEBUG}" CACHE STRING "" FORCE)
+set(_LDFLAGS "-WX")
+set(_LDFLAGS_RELEASE "-OPT:REF,ICF=10 -LTCG -DEBUG:FULL")
+set(_LDFLAGS_DEBUG "-DEBUG:FULL")
-foreach(j C CXX)
- foreach(i "" _DEBUG _RELEASE)
- set(CMAKE_${j}_FLAGS${i} "${_${j}FLAGS${i}}" CACHE STRING "" FORCE)
- endforeach()
+set(_LDFLAGS_STATIC "-WX")
+set(_LDFLAGS_STATIC_RELEASE "-LTCG")
+set(_LDFLAGS_STATIC_DEBUG "")
+
+set(CMAKE_BUILD_TYPE_INIT "RELEASE" CACHE INTERNAL "")
+
+string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE)
+set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "" FORCE)
+if (NOT CMAKE_BUILD_TYPE STREQUAL "RELEASE" AND NOT CMAKE_BUILD_TYPE STREQUAL "DEBUG")
+ set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
+endif()
+set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS RELEASE DEBUG)
+
+foreach(k "" "_${CMAKE_BUILD_TYPE}")
+ set("FLAGS_CXX${k}" "" CACHE STRING "More CMAKE_CXX_FLAGS${k}")
+ #set("FLAGS_C${k}" "" CACHE STRING "More CMAKE_C_FLAGS${k} (almost never used)")
+ set("FLAGS_LD${k}" "" CACHE STRING "More CMAKE_(SHARED|EXE|MODULE)_LINKER_FLAGS${k}")
+ set("FLAGS_ARCHIVE${k}" "" CACHE STRING "More CMAKE_STATIC_LINKER_FLAGS${k}")
endforeach()
+foreach(k "" _DEBUG _RELEASE)
+ #set(CMAKE_STATIC_LINKER_FLAGS${k} "${CMAKE_STATIC_LINKER_FLAGS${k}} ${_LDFLAGS_STATIC${k}}")
+ set(CMAKE_STATIC_LINKER_FLAGS${k} "${_LDFLAGS_STATIC${k}} ${FLAGS_ARCHIVE${k}}" CACHE STRING "" FORCE)
+endforeach()
foreach(j "" _DEBUG _RELEASE)
foreach(i MODULE EXE SHARED)
- set(CMAKE_${i}_LINKER_FLAGS${j} "${_LDFLAGS${j}}" CACHE STRING "" FORCE)
+ #set(CMAKE_${i}_LINKER_FLAGS${j} "${CMAKE_${i}_LINKER_FLAGS${j}} ${_LDFLAGS${j}}")
+ set(CMAKE_${i}_LINKER_FLAGS${j} "${_LDFLAGS${j}} ${FLAGS_LD${j}}" CACHE STRING "" FORCE)
endforeach()
endforeach()
-include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake")
+foreach(j C CXX)
+ foreach(i "" _DEBUG _RELEASE)
+ #set(CMAKE_${j}_FLAGS${i} "${CMAKE_${j}_FLAGS${i}} ${_${j}FLAGS${i}}")
+ set(CMAKE_${j}_FLAGS${i} "${_${j}FLAGS${i}} ${FLAGS_${j}${i}}" CACHE STRING "" FORCE)
+ endforeach()
+endforeach()