GetVCPKG.cmake 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. if (_GET_VCPKG_INCLUDED)
  2. return()
  3. endif()
  4. set ( _GET_VCPKG_INCLUDED YES )
  5. cmake_minimum_required ( VERSION 3.17 FATAL_ERROR )
  6. if (NOT DEFINED ENV{VCPKG_ROOT})
  7. message ( STATUS "VCPKG_ROOT is not defined, bail" )
  8. return ()
  9. endif ()
  10. find_program ( VCPKG vcpkg HINTS $ENV{VCPKG_ROOT} )
  11. if (NOT VCPKG)
  12. message ( STATUS "vcpkg is not found, bail" )
  13. return ()
  14. endif ()
  15. # set path despite the fact if we have vcpkg or not (we may have ready prepared data from previous run)
  16. set ( _VCARCH "arm64" )
  17. string ( TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" _PROC )
  18. if (_PROC STREQUAL x86_64 OR _PROC STREQUAL amd64 OR _PROC STREQUAL x64)
  19. set ( _VCARCH "x64" )
  20. endif ()
  21. set ( _TARGET "linux" )
  22. if (${CMAKE_SYSTEM_NAME} STREQUAL windows)
  23. set ( _TARGET "windows" )
  24. elseif (${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
  25. set ( _TARGET "osx" )
  26. elseif (${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
  27. set ( _TARGET "freebsd" )
  28. endif ()
  29. set ( _VCACHE "$ENV{VCPKG_ROOT}/installed/${_VCARCH}-${_TARGET}" )
  30. prepend_prefix ( ${_VCACHE} )
  31. unset ( vcpkg_params )
  32. if (CMAKE_CROSSCOMPILING)
  33. set ( vcpkg_params "--triplet=${_VCARCH}-${_TARGET}" )
  34. set ( ENV{VCPKG_OVERLAY_TRIPLETS} "${MANTICORE_SOURCE_DIR}/dist/build_dockers/cross/triplets" )
  35. endif()
  36. set ( ENV{MANTICORE_SOURCE_DIR} "${MANTICORE_SOURCE_DIR}" )
  37. set ( ENV{VCPKG_DEFAULT_BINARY_CACHE} "${CACHEB}/vcpkg" )
  38. if (NOT EXISTS ENV{VCPKG_DEFAULT_BINARY_CACHE})
  39. file ( MAKE_DIRECTORY "$ENV{VCPKG_DEFAULT_BINARY_CACHE}" )
  40. endif ()
  41. include ( printers )
  42. diags ( "Found vcpkg: ${VCPKG}" )
  43. diags ( "VCPKG_DEFAULT_BINARY_CACHE is $ENV{VCPKG_DEFAULT_BINARY_CACHE}" )
  44. diags ( "VCPKG_OVERLAY_TRIPLETS is $ENV{VCPKG_OVERLAY_TRIPLETS}" )
  45. diags ( "Found VCACHE: ${_VCACHE}" )
  46. diags ( "Found vcpkg_params: ${vcpkg_params}" )
  47. # oneliner to achieve same in bash (from the root of the sources):
  48. # export MANTICORE_SOURCE_DIR=$(pwd); export VCPKG_DEFAULT_BINARY_CACHE=$MANTICORE_SOURCE_DIR/cache/vcpkg; export VCPKG_OVERLAY_TRIPLETS=$MANTICORE_SOURCE_DIR/dist/build_dockers/cross/triplets