cmake_minimum_required(VERSION 3.18.4) project(Pong C CXX) if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") set(IS_OS_WINDOWS TRUE) set(USER_HOME_DIRECTORY $ENV{USERPROFILE}) message("Building for the Windows operating system.") elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") set(IS_OS_LINUX TRUE) set(USER_HOME_DIRECTORY $ENV{HOME}) add_compile_options(-Wno-stringop-overflow) message("Building for the Linux operating system.") elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") set(IS_OS_MAC TRUE) set(USER_HOME_DIRECTORY $ENV{HOME}) message("Building for the Mac operating system.") endif () if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") message("Building for AMD64 architecture.") set(IS_ARCH_AMD64 TRUE) elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64") message("Building for ARM64 architecture.") set(IS_ARCH_ARM64 TRUE) endif () set(CMAKE_CXX_STANDARD 20) add_executable(Pong Levels/Game.h Levels/Game.cpp Main.cpp ) find_package(ZLIB REQUIRED) if (ZLIB_FOUND) message(STATUS "ZLIB was found.") else () message(STATUS "ZLIB was not found.") endif () find_package(OpenSSL REQUIRED) if (OpenSSL_FOUND) message(STATUS "OpenSSL was found.") else () message(STATUS "OpenSSL was not found.") endif () if (IS_OS_WINDOWS) add_compile_definitions(VK_USE_PLATFORM_WIN32_KHR) target_include_directories(Pong PUBLIC ${USER_HOME_DIRECTORY}/EHS/include) target_include_directories(Pong PUBLIC ${USER_HOME_DIRECTORY}/EHE/include) target_include_directories(Pong PUBLIC ${USER_HOME_DIRECTORY}/EHC/include) target_include_directories(Pong PUBLIC ${USER_HOME_DIRECTORY}/LWE/include) target_include_directories(Pong PUBLIC $ENV{VULKAN_SDK}/include) message("VK Include Path: $ENV{VULKAN_SDK}/include") target_link_directories(Pong PUBLIC "${USER_HOME_DIRECTORY}/EHS/lib") target_link_directories(Pong PUBLIC "${USER_HOME_DIRECTORY}/EHE/lib") target_link_directories(Pong PUBLIC "${USER_HOME_DIRECTORY}/EHC/lib") target_link_directories(Pong PUBLIC "${USER_HOME_DIRECTORY}/LWE/lib") target_link_directories(Pong PUBLIC $ENV{VULKAN_SDK}/lib) target_link_libraries(Pong PUBLIC vulkan-1 ws2_32 avrt) set(CMAKE_INSTALL_PREFIX "${USER_HOME_DIRECTORY}/LWE") elseif (IS_OS_LINUX) add_compile_definitions(VK_USE_PLATFORM_XCB_KHR EHS_WS_XCB) find_package(Vulkan REQUIRED) if (Vulkan_FOUND) message(STATUS "Vulkan was found.") else () message(STATUS "Vulkan was not found.") endif () target_include_directories(Pong PUBLIC ${USER_HOME_DIRECTORY}/.local/include) target_link_directories(Pong PUBLIC "${USER_HOME_DIRECTORY}/.local/lib") target_link_libraries(Pong PUBLIC Vulkan::Headers) target_link_libraries(Pong xcb xcb-cursor xcb-xfixes xcb-xinput wayland-client z asound Vulkan::Headers Vulkan::Vulkan) endif() target_link_libraries(Pong PRIVATE LWE EHC EHE EHS OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB)