FUNCTION(CompilerDumpVersion _OUTPUT_VERSION) EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION ) STRING(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1\\2" COMPILER_VERSION ${COMPILER_VERSION}) SET(${_OUTPUT_VERSION} ${COMPILER_VERSION}) ENDFUNCTION() FUNCTION(GetCompiler _ret) SET(COMPILER_SUFFIX "UNKNOWN") IF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" OR CMAKE_CXX_COMPILER MATCHES "icl" OR CMAKE_CXX_COMPILER MATCHES "icpc") IF(WIN32) SET (COMPILER_SUFFIX "iw") ELSE() SET (COMPILER_SUFFIX "il") ENDIF() ELSEIF (GHSMULTI) SET(COMPILER_SUFFIX "ghs") ELSEIF (MSVC_VERSION GREATER_EQUAL 1920) SET(COMPILER_SUFFIX "vc142") ELSEIF (MSVC_VERSION GREATER_EQUAL 1910) SET(COMPILER_SUFFIX "vc141") ELSEIF (MSVC14) SET(COMPILER_SUFFIX "vc140") ELSEIF (MSVC12) SET(COMPILER_SUFFIX "vc120") ELSEIF (MSVC11) SET(COMPILER_SUFFIX "vc110") ELSEIF (MSVC10) SET(COMPILER_SUFFIX "vc100") ELSEIF (MSVC90) SET(COMPILER_SUFFIX "vc90") ELSEIF (MSVC80) SET(COMPILER_SUFFIX "vc80") ELSEIF (MSVC71) SET(COMPILER_SUFFIX "vc71") ELSEIF (MSVC70) # Good luck! SET(COMPILER_SUFFIX "vc7") # yes, this is correct ELSEIF (MSVC60) # Good luck! SET(COMPILER_SUFFIX "vc6") # yes, this is correct ELSEIF (BORLAND) SET(COMPILER_SUFFIX "bcb") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") SET(COMPILER_SUFFIX "sw") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "XL") SET(COMPILER_SUFFIX "xlc") ELSEIF (MINGW) CompilerDumpVersion(_COMPILER_VERSION) SET(COMPILER_SUFFIX "mgw${_COMPILER_VERSION}") ELSEIF (UNIX) IF (CMAKE_COMPILER_IS_GNUCXX) CompilerDumpVersion(_COMPILER_VERSION) IF(APPLE) # on Mac OS X/Darwin is "xgcc". SET(COMPILER_SUFFIX "xgcc${_COMPILER_VERSION}") ELSE() SET(COMPILER_SUFFIX "gcc${_COMPILER_VERSION}") ENDIF() ENDIF() ELSEIF (XBOXONE_MSVC_VERSION EQUAL 140) SET(COMPILER_SUFFIX "vc140") ELSEIF (XBOXONE_MSVC_VERSION EQUAL 141) SET(COMPILER_SUFFIX "vc141") ELSEIF (XBOXSERIESX_MSVC_VERSION EQUAL 141) SET(COMPILER_SUFFIX "vc141") ELSE() # add clang! SET(COMPILER_SUFFIX "") ENDIF() SET(${_ret} ${COMPILER_SUFFIX} PARENT_SCOPE) ENDFUNCTION() FUNCTION(GetStaticCRTString _ret) IF(NOT TARGET_BUILD_PLATFORM STREQUAL "windows") return() ENDIF() IF (NV_USE_STATIC_WINCRT) SET(CRT_STRING "mt") ELSE() SET(CRT_STRING "md") ENDIF() SET(${_ret} ${CRT_STRING} PARENT_SCOPE) ENDFUNCTION() FUNCTION (GetPlatformBinName PLATFORM_BIN_NAME LIBPATH_SUFFIX) SET(RETVAL "UNKNOWN") GetCompiler(COMPILER) IF(TARGET_BUILD_PLATFORM STREQUAL "windows") GetStaticCRTString(CRT_STRING) SET(RETVAL "win.x86_${LIBPATH_SUFFIX}.${COMPILER}.${CRT_STRING}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "uwp") SET(RETVAL "uwp.${PX_OUTPUT_ARCH}_${LIBPATH_SUFFIX}.${COMPILER}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "mac") SET(RETVAL "mac.x86_${LIBPATH_SUFFIX}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "ios") SET(RETVAL "ios.arm_${LIBPATH_SUFFIX}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "ps4") SET(RETVAL "ps4") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "xboxone") SET(RETVAL "xboxone.${COMPILER}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "xboxseriesx") SET(RETVAL "xboxseriesx.${COMPILER}") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "switch") IF (${CMAKE_GENERATOR_PLATFORM} STREQUAL "NX32") SET(RETVAL "switch32") ELSEIF (${CMAKE_GENERATOR_PLATFORM} STREQUAL "NX64") SET(RETVAL "switch64") ENDIF() ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "android") SET(RETVAL "android.${ANDROID_ABI}.fp-soft") ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "linux") IF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") SET(RETVAL "linux.clang") ELSEIF(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") SET(RETVAL "linux.aarch64") ENDIF() ENDIF() SET(${PLATFORM_BIN_NAME} ${RETVAL} PARENT_SCOPE) ENDFUNCTION()