# Copyright (c) 2021 Dominic Msters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT #################################### CMAKE ##################################### cmake_minimum_required(VERSION 3.13) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) #Include include(FetchContent) ################################ Setting Defs ################################## set(SETTING_PLATFORM_GLFW 1) set(SETTING_PLATFORM_SDL 2) # Game Settings set(SETTING_GAME_POKER 1) set(SETTING_GAME_DAWN 2) set(SETTING_GAME_SANDBOX 3) set(SETTING_GAME SETTING_GAME_SANDBOX) set(SETTING_GAME_NAME "DawnGame") ################################## Targets ##################################### set(SETTING_TARGET_WIN32 1) set(SETTING_TARGET_RG351 2) set(SETTING_TARGET SETTING_TARGET_WIN32) # Win32 if(${SETTING_TARGET} EQUAL ${SETTING_TARGET_WIN32}) set(SETTING_PLATFORM SETTING_PLATFORM_GLFW) set(SETTING_PLATFORM_USE_GLAD 1) set(SETTING_ASSET_PREFIX "../assets/") endif() # RG351 if(${SETTING_TARGET} EQUAL ${SETTING_TARGET_RG351}) set(SETTING_PLATFORM SETTING_PLATFORM_SDL) set(SETTING_PLATFORM_USE_GLAD 1) set(SETTING_ASSET_PREFIX "assets/") endif() # Configuring configure_file(config.h.in config.h) set(DEPS_DIR "${PROJECT_BINARY_DIR}/_deps/${SETTING_TARGET}") #################################### PROJECT ################################### project(${SETTING_GAME_NAME} VERSION 1.0) ##################################### SRCS ##################################### file(GLOB_RECURSE SOURCE_FILES ${CMAKE_SOURCE_DIR}/src/*.c) file(GLOB_RECURSE HEADER_FILES ${CMAKE_SOURCE_DIR}/src/*.h) # GLFW Sources if(${SETTING_PLATFORM} EQUAL ${SETTING_PLATFORM_GLFW}) file(GLOB_RECURSE SRC ${CMAKE_SOURCE_DIR}/platform/glfw/*.c) file(GLOB_RECURSE HDRS ${CMAKE_SOURCE_DIR}/platform/glfw/*.h) list(APPEND SOURCE_FILES ${SRC}) list(APPEND HEADER_FILES ${HDRS}) endif() # SDL Sources if(${SETTING_PLATFORM} EQUAL ${SETTING_PLATFORM_SDL}) file(GLOB_RECURSE SRC ${CMAKE_SOURCE_DIR}/platform/sdl/*.c) file(GLOB_RECURSE HDRS ${CMAKE_SOURCE_DIR}/platform/sdl/*.h) list(APPEND SOURCE_FILES ${SRC}) list(APPEND HEADER_FILES ${HDRS}) endif() #################################### ASSETS #################################### set(SCRIPT_FILES scripts.js) add_custom_command( OUTPUT ${SCRIPT_FILES} COMMAND npm run build DEPENDS ${SOURCE_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) file(COPY ${CMAKE_CURRENT_LIST_DIR}/assets DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) ##################################### LIBS ##################################### include_directories(${CMAKE_SOURCE_DIR}/lib/stb) # RG351 if(${SETTING_TARGET} EQUAL ${SETTING_TARGET_RG351}) include_directories(${CMAKE_SOURCE_DIR}/include/rg351) include_directories(${CMAKE_SOURCE_DIR}/include/rg351/SDL2) endif() include_directories(${CMAKE_CURRENT_BINARY_DIR}) ################################## EXECUTABLE ################################## add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES} ${SCRIPT_FILES}) ################################# STATIC LIBS ################################## # Math if(NOT WIN32) target_link_libraries(${PROJECT_NAME} m) endif() # GLAD if(${SETTING_PLATFORM_USE_GLAD} EQUAL 1) add_subdirectory(${CMAKE_SOURCE_DIR}/lib/glad) target_link_libraries(${PROJECT_NAME} glad) endif() # GLFW if(${SETTING_PLATFORM} EQUAL ${SETTING_PLATFORM_GLFW}) if(NOT glfw3_FOUND) FetchContent_Declare( glfw GIT_REPOSITORY https://github.com/glfw/glfw GIT_TAG 3.3.4 ) FetchContent_MakeAvailable(glfw) endif() target_link_libraries(${PROJECT_NAME} glfw) endif() # SDL if(${SETTING_PLATFORM} EQUAL ${SETTING_PLATFORM_SDL}) find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES}) endif() # CGLM if(NOT cglm_FOUND) FetchContent_Declare( cglm GIT_REPOSITORY https://github.com/recp/cglm GIT_TAG v0.8.3 ) FetchContent_MakeAvailable(cglm) endif() target_link_libraries(${PROJECT_NAME} cglm) # Duktape add_subdirectory(${CMAKE_SOURCE_DIR}/lib/duktape) target_link_libraries(${PROJECT_NAME} duktape) # OpenGL find_package(OpenGL REQUIRED) if(${SETTING_TARGET} EQUAL ${SETTING_TARGET_RG351}) target_link_libraries(${PROJECT_NAME} OpenGL::OpenGL) else() target_link_libraries(${PROJECT_NAME} OpenGL::GL) endif() # CMake target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS})