cmake_minimum_required(VERSION 3.13) cmake_policy(VERSION 3.13) if (POLICY CMP0076) cmake_policy(SET CMP0076 NEW) endif() set(CMAKE_CXX_STANDARD 11) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) project(melonDS) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() if (CMAKE_BUILD_TYPE STREQUAL Release) option(ENABLE_LTO "Enable link-time optimization" ON) else() option(ENABLE_LTO "Enable link-time optimization" OFF) endif() if(ENABLE_LTO) add_compile_options(-O3 -flto) add_link_options(-flto) if (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang) find_program(LLD ld.lld) if (LLD) add_link_options(-fuse-ld=lld) else() add_link_options(-fuse-linker-plugin) endif() set(CMAKE_AR "llvm-ar") else() set(CMAKE_AR "gcc-ar") endif() set(CMAKE_C_ARCHIVE_CREATE " qcs ") set(CMAKE_C_ARCHIVE_FINISH true) set(CMAKE_CXX_ARCHIVE_CREATE " qcs ") set(CMAKE_CXX_ARCHIVE_FINISH true) endif() add_compile_options(-fno-pic) add_link_options(-no-pie) option(BUILD_LIBUI "Build libui frontend" ON) add_subdirectory(src) if (BUILD_LIBUI) add_subdirectory(src/libui_sdl) endif() configure_file( ${CMAKE_SOURCE_DIR}/romlist.bin ${CMAKE_BINARY_DIR}/romlist.bin COPYONLY)