diff options
Diffstat (limited to 'cmake/msvc.cmake')
-rw-r--r-- | cmake/msvc.cmake | 224 |
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() |