cmake_minimum_required(VERSION 3.19) project(AzurEngine VERSION 0.1) #--- # Configuration # # -DCMAKE_BUILD_TYPE # Debug Debug build with -O0 -g # Release Release build with -Os [default] # # -DAZUR_PLATFORM # gint Build for gint for fx-CG # linux Build for Linux with SDL and OpenGL 3.3 # emscripten Build for Emscripten with SDL and OpenGL ES 2.0 # # -DCMAKE_INSTALL_PREFIX #--- if("${CMAKE_BUILD_TYPE}" STREQUAL "") set("${CMAKE_BUILD_TYPE}" Release) endif() # Debug build if("${CMAKE_BUILD_TYPE}" STREQUAL Debug) set(AZUR_DEBUG TRUE) else() set(AZUR_DEBUG FALSE) endif() # When using [fxsdk build-cg], assume gint if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) set(AZUR_PLATFORM gint) endif() # Default install paths set(LIBDIR "lib") set(INCDIR "include") # Target configuration: gint if("${AZUR_PLATFORM}" STREQUAL "gint") set(AZUR_PLATFORM_GENERIC TRUE) set(AZUR_TOOLKIT_GINT TRUE) set(AZUR_GRAPHICS_GINT_CG TRUE) set(AZUR_TERMINAL_NONE TRUE) find_package(Gint 2.4 REQUIRED) find_package(LibProf 2.4 REQUIRED) link_libraries(LibProf::LibProf Gint::Gint) # Default to the fxSDK install path if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${FXSDK_COMPILER_INSTALL}" CACHE PATH "..." FORCE) endif() # The fxSDK install path has a slightly different structure if(CMAKE_INSTALL_PREFIX STREQUAL "${FXSDK_COMPILER_INSTALL}") set(LIBDIR ".") set(INCDIR "include") endif() endif() # Target configuration: linux if(AZUR_PLATFORM STREQUAL linux) set(AZUR_PLATFORM_GENERIC TRUE) set(AZUR_TOOLKIT_SDL TRUE) set(AZUR_GRAPHICS_OPENGL_3_3 TRUE) set(AZUR_TERMINAL_ANSI TRUE) find_package(PkgConfig REQUIRED) pkg_check_modules(sdl2 REQUIRED sdl2 IMPORTED_TARGET) pkg_check_modules(sdl2_image REQUIRED SDL2_image IMPORTED_TARGET) pkg_check_modules(opengl REQUIRED opengl IMPORTED_TARGET) pkg_check_modules(glx REQUIRED glx IMPORTED_TARGET) link_libraries(PkgConfig::sdl2_image PkgConfig::sdl2 PkgConfig::opengl -lm) endif() # Platform configuration: emscripten if(AZUR_PLATFORM STREQUAL emscripten) set(AZUR_PLATFORM_EMSCRIPTEN TRUE) set(AZUR_TOOLKIT_SDL TRUE) set(AZUR_GRAPHICS_OPENGL_ES_2_0 TRUE) set(AZUR_TERMINAL_PLAIN TRUE) set(PORTS -sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL2_IMAGE_FORMATS=["png"]) add_compile_options(${PORTS}) add_link_options(${PORTS} -O3) endif() if(AZUR_GRAPHICS_OPENGL_3_3 OR AZUR_GRAPHICS_OPENGL_ES_2_0) set(AZUR_GRAPHICS_OPENGL TRUE) endif() #--- # Compile options #--- add_compile_options( -Wall -Wextra $,-O0,-Os> $<$:-g> -fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}/=) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED TRUE) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) #--- # Subdirectory selection #--- # Exclud third-party software from the build on gint; it wouldn't work if(NOT AZUR_PLATFORM STREQUAL gint) add_subdirectory(3rdparty) endif() add_subdirectory(libnum) add_subdirectory(azur)