Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,68 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

function(configure_msvc_system_includes)
if(NOT MSVC)
return()
endif()

get_filename_component(_msvc_bin_dir "${CMAKE_CXX_COMPILER}" DIRECTORY)
get_filename_component(_msvc_root "${_msvc_bin_dir}/../../.." ABSOLUTE)
set(_msvc_include_dir "${_msvc_root}/include")

set(_sdk_root "C:/Program Files (x86)/Windows Kits/10/Include")
set(_sdk_lib_root "C:/Program Files (x86)/Windows Kits/10/Lib")
set(_sdk_include_dirs)
set(_sdk_lib_dirs)
if(EXISTS "${_sdk_root}")
file(GLOB _sdk_versions LIST_DIRECTORIES true "${_sdk_root}/*")
if(_sdk_versions)
list(SORT _sdk_versions COMPARE NATURAL ORDER DESCENDING)
list(GET _sdk_versions 0 _sdk_version_dir)
foreach(_sdk_subdir ucrt shared um winrt cppwinrt)
if(EXISTS "${_sdk_version_dir}/${_sdk_subdir}")
list(APPEND _sdk_include_dirs "${_sdk_version_dir}/${_sdk_subdir}")
endif()
endforeach()
endif()
endif()

if(EXISTS "${_sdk_lib_root}")
file(GLOB _sdk_lib_versions LIST_DIRECTORIES true "${_sdk_lib_root}/*")
if(_sdk_lib_versions)
list(SORT _sdk_lib_versions COMPARE NATURAL ORDER DESCENDING)
list(GET _sdk_lib_versions 0 _sdk_lib_version_dir)
foreach(_sdk_lib_subdir ucrt um)
if(EXISTS "${_sdk_lib_version_dir}/${_sdk_lib_subdir}/x64")
list(APPEND _sdk_lib_dirs "${_sdk_lib_version_dir}/${_sdk_lib_subdir}/x64")
endif()
endforeach()
endif()
endif()

set(_system_include_dirs)
if(EXISTS "${_msvc_include_dir}")
list(APPEND _system_include_dirs "${_msvc_include_dir}")
endif()
list(APPEND _system_include_dirs ${_sdk_include_dirs})

set(_system_lib_dirs)
if(EXISTS "${_msvc_root}/lib/x64")
list(APPEND _system_lib_dirs "${_msvc_root}/lib/x64")
endif()
list(APPEND _system_lib_dirs ${_sdk_lib_dirs})

if(_system_include_dirs)
list(REMOVE_DUPLICATES _system_include_dirs)
include_directories(${_system_include_dirs})
endif()

if(_system_lib_dirs)
list(REMOVE_DUPLICATES _system_lib_dirs)
link_directories(${_system_lib_dirs})
endif()
endfunction()

if(NOT WIN32)
message(FATAL_ERROR "This CMake build currently supports Windows only.")
endif()
Expand All @@ -13,6 +75,8 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(FATAL_ERROR "Use a 64-bit generator/toolchain (x64).")
endif()

configure_msvc_system_includes()

set(CMAKE_CONFIGURATION_TYPES
"Debug"
"Release"
Expand Down Expand Up @@ -77,6 +141,7 @@ list(APPEND MINECRAFT_SHARED_DEFINES ${PLATFORM_DEFINES})
# Sources
# ---
add_subdirectory(Minecraft.World)
add_subdirectory(newauth)
add_subdirectory(Minecraft.Client)
if(PLATFORM_NAME STREQUAL "Windows64") # Server is only supported on Windows for now
add_subdirectory(Minecraft.Server)
Expand Down
1 change: 1 addition & 0 deletions Minecraft.Client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ set_target_properties(Minecraft.Client PROPERTIES

target_link_libraries(Minecraft.Client PRIVATE
Minecraft.World
newauth
d3d11
d3dcompiler
XInput9_1_0
Expand Down
Loading
Loading