🎨 fix: cmakelists formatting

This commit is contained in:
Helloyunho 2025-07-02 21:43:06 +09:00
parent 4a1a3eef52
commit 467ff1cf20

View File

@ -2,11 +2,11 @@ cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR)
project(isle LANGUAGES CXX C VERSION 0.1) project(isle LANGUAGES CXX C VERSION 0.1)
if(WINDOWS_STORE) if (WINDOWS_STORE)
add_compile_definitions(WINDOWS_STORE) add_compile_definitions(WINDOWS_STORE)
endif() endif()
if(EMSCRIPTEN) if (EMSCRIPTEN)
add_compile_options(-pthread) add_compile_options(-pthread)
add_link_options(-sALLOW_MEMORY_GROWTH=1 -sMAXIMUM_MEMORY=2gb -sUSE_PTHREADS=1 -sPROXY_TO_PTHREAD=1 -sOFFSCREENCANVAS_SUPPORT=1 -sPTHREAD_POOL_SIZE_STRICT=0 -sFORCE_FILESYSTEM=1 -sWASMFS=1 -sEXIT_RUNTIME=1) add_link_options(-sALLOW_MEMORY_GROWTH=1 -sMAXIMUM_MEMORY=2gb -sUSE_PTHREADS=1 -sPROXY_TO_PTHREAD=1 -sOFFSCREENCANVAS_SUPPORT=1 -sPTHREAD_POOL_SIZE_STRICT=0 -sFORCE_FILESYSTEM=1 -sWASMFS=1 -sEXIT_RUNTIME=1)
set(SDL_PTHREADS ON CACHE BOOL "Enable SDL pthreads" FORCE) set(SDL_PTHREADS ON CACHE BOOL "Enable SDL pthreads" FORCE)
@ -25,7 +25,7 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
if(NOT MINGW) if (NOT MINGW)
set(NOT_MINGW ON) set(NOT_MINGW ON)
else() else()
set(NOT_MINGW OFF) set(NOT_MINGW OFF)
@ -51,32 +51,33 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" CACHE PATH "Directory w
set(ISLE_EMSCRIPTEN_HOST "" CACHE STRING "Host URL for Emscripten streaming (e.g., https://test.com)") set(ISLE_EMSCRIPTEN_HOST "" CACHE STRING "Host URL for Emscripten streaming (e.g., https://test.com)")
cmake_dependent_option(BUILD_SHARED_LIBS "Build lego1 as a shared library" ON "NOT EMSCRIPTEN" OFF) cmake_dependent_option(BUILD_SHARED_LIBS "Build lego1 as a shared library" ON "NOT EMSCRIPTEN" OFF)
message(STATUS "Isle app: ${ISLE_BUILD_APP}") message(STATUS "Isle app: ${ISLE_BUILD_APP}")
message(STATUS "Internal DirectX5 SDK: ${ISLE_USE_DX5}") message(STATUS "Config app: ${ISLE_BUILD_CONFIG}")
message(STATUS "Internal miniwin: ${ISLE_MINIWIN}") message(STATUS "Internal DirectX5 SDK: ${ISLE_USE_DX5}")
message(STATUS "Isle debugging: ${ISLE_DEBUG}") message(STATUS "Internal miniwin: ${ISLE_MINIWIN}")
message(STATUS "Compile shaders: ${ISLE_COMPILE_SHADERS}") message(STATUS "Isle debugging: ${ISLE_DEBUG}")
message(STATUS "Compile shaders: ${ISLE_COMPILE_SHADERS}")
add_library(Isle::iniparser INTERFACE IMPORTED) add_library(Isle::iniparser INTERFACE IMPORTED)
if(DOWNLOAD_DEPENDENCIES) if (DOWNLOAD_DEPENDENCIES)
# FetchContent downloads and configures dependencies # FetchContent downloads and configures dependencies
message(STATUS "Fetching SDL3 and iniparser. This might take a while...") message(STATUS "Fetching SDL3 and iniparser. This might take a while...")
include(FetchContent) include(FetchContent)
if(WINDOWS_STORE) if (WINDOWS_STORE)
FetchContent_Declare( FetchContent_Declare(
SDL3
GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git"
GIT_TAG "main"
EXCLUDE_FROM_ALL
)
else()
FetchContent_Declare(
SDL3 SDL3
GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git"
GIT_TAG "main" GIT_TAG "main"
EXCLUDE_FROM_ALL EXCLUDE_FROM_ALL
) )
else()
FetchContent_Declare(
SDL3
GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git"
GIT_TAG "main"
EXCLUDE_FROM_ALL
)
endif() endif()
FetchContent_MakeAvailable(SDL3) FetchContent_MakeAvailable(SDL3)
@ -103,19 +104,18 @@ else()
endif() endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (ENABLE_CLANG_TIDY)
if(ENABLE_CLANG_TIDY)
find_program(CLANG_TIDY_BIN NAMES "clang-tidy" ENV "LLVM_ROOT" REQUIRED) find_program(CLANG_TIDY_BIN NAMES "clang-tidy" ENV "LLVM_ROOT" REQUIRED)
set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}") set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}")
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}") set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}")
endif() endif()
if(ISLE_ASAN) if (ISLE_ASAN)
add_compile_options(-fsanitize=address -fno-omit-frame-pointer) add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
add_link_options(-fsanitize=address) add_link_options(-fsanitize=address)
endif() endif()
if(ISLE_UBSAN) if (ISLE_UBSAN)
add_compile_options(-fsanitize=undefined -fno-sanitize-recover=undefined) add_compile_options(-fsanitize=undefined -fno-sanitize-recover=undefined)
add_link_options(-fsanitize=undefined) add_link_options(-fsanitize=undefined)
endif() endif()
@ -125,27 +125,24 @@ add_subdirectory(miniwin EXCLUDE_FROM_ALL)
set(isle_targets) set(isle_targets)
function(add_cxx_warning WARNING) function(add_cxx_warning WARNING)
if(ISLE_WERROR) if (ISLE_WERROR)
set(compiler_option "-Werror=${WARNING}") set(compiler_option "-Werror=${WARNING}")
else() else()
set(compiler_option "-W${WARNING}") set(compiler_option "-W${WARNING}")
endif() endif()
string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname) string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname)
cmake_push_check_state(RESET) cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_FLAGS "${compiler_option} ") set(CMAKE_REQUIRED_FLAGS "${compiler_option} ")
if (MSVC)
if(MSVC)
string(APPEND CMAKE_REQUIRED_FLAGS "/WX") string(APPEND CMAKE_REQUIRED_FLAGS "/WX")
else() else()
string(APPEND CMAKE_REQUIRED_FLAGS "-Werror") string(APPEND CMAKE_REQUIRED_FLAGS "-Werror")
endif() endif()
check_cxx_source_compiles("int main() { return 0; }" ${varname}) check_cxx_source_compiles("int main() { return 0; }" ${varname})
cmake_pop_check_state() cmake_pop_check_state()
if(${varname}) if (${varname})
add_compile_options(${compiler_option}) add_compile_options(${compiler_option})
endif() endif()
endfunction() endfunction()
@ -175,7 +172,6 @@ target_include_directories(lego1 PUBLIC "$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/L
target_link_libraries(lego1 PRIVATE SDL3::SDL3) target_link_libraries(lego1 PRIVATE SDL3::SDL3)
target_link_libraries(lego1 PUBLIC SDL3::Headers) target_link_libraries(lego1 PUBLIC SDL3::Headers)
target_link_libraries(lego1 PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>) target_link_libraries(lego1 PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
if(WIN32) if(WIN32)
set_property(TARGET lego1 PROPERTY PREFIX "") set_property(TARGET lego1 PROPERTY PREFIX "")
endif() endif()
@ -224,8 +220,7 @@ target_sources(lego1 PRIVATE
LEGO1/mxdirectx/legodxinfo.cpp LEGO1/mxdirectx/legodxinfo.cpp
) )
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1") target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
if (WIN32)
if(WIN32)
target_link_libraries(lego1 PRIVATE ddraw) target_link_libraries(lego1 PRIVATE ddraw)
endif() endif()
@ -362,11 +357,9 @@ target_sources(lego1 PRIVATE
LEGO1/omni/src/video/mxvideopresenter.cpp LEGO1/omni/src/video/mxvideopresenter.cpp
) )
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1") target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1")
if (WIN32)
if(WIN32)
target_link_libraries(lego1 INTERFACE winmm) target_link_libraries(lego1 INTERFACE winmm)
endif() endif()
target_link_libraries(lego1 PRIVATE libsmacker miniaudio) target_link_libraries(lego1 PRIVATE libsmacker miniaudio)
target_include_directories(lego1 PUBLIC $<BUILD_INTERFACE:$<TARGET_PROPERTY:miniaudio,INTERFACE_INCLUDE_DIRECTORIES>>) target_include_directories(lego1 PUBLIC $<BUILD_INTERFACE:$<TARGET_PROPERTY:miniaudio,INTERFACE_INCLUDE_DIRECTORIES>>)
@ -483,21 +476,19 @@ target_sources(lego1 PRIVATE
LEGO1/modeldb/modeldb.cpp LEGO1/modeldb/modeldb.cpp
) )
target_link_libraries(lego1 PRIVATE Vec::Vec) target_link_libraries(lego1 PRIVATE Vec::Vec)
if (NOT ISLE_MINIWIN)
if(NOT ISLE_MINIWIN)
target_link_libraries(lego1 PRIVATE d3drm dxguid) target_link_libraries(lego1 PRIVATE d3drm dxguid)
target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500) target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500)
endif() endif()
if(ISLE_BUILD_APP) if (ISLE_BUILD_APP)
add_executable(isle WIN32 add_executable(isle WIN32
ISLE/res/isle.rc ISLE/res/isle.rc
ISLE/isleapp.cpp ISLE/isleapp.cpp
ISLE/islefiles.cpp ISLE/islefiles.cpp
) )
list(APPEND isle_targets isle) list(APPEND isle_targets isle)
if (WIN32)
if(WIN32)
add_custom_command(TARGET isle POST_BUILD add_custom_command(TARGET isle POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_RUNTIME_DLLS:isle> "$<TARGET_FILE_DIR:isle>" COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_RUNTIME_DLLS:isle> "$<TARGET_FILE_DIR:isle>"
COMMAND_EXPAND_LISTS COMMAND_EXPAND_LISTS
@ -516,13 +507,11 @@ if(ISLE_BUILD_APP)
target_link_libraries(isle PRIVATE miniwin-headers) target_link_libraries(isle PRIVATE miniwin-headers)
# Link DSOUND and WINMM # Link DSOUND and WINMM
if(WIN32) if (WIN32)
target_link_libraries(isle PRIVATE winmm) target_link_libraries(isle PRIVATE winmm)
endif() endif()
# Link LEGO1 # Link LEGO1
target_link_libraries(isle PRIVATE lego1) target_link_libraries(isle PRIVATE lego1)
if(ISLE_DEBUG) if(ISLE_DEBUG)
target_sources(isle PRIVATE target_sources(isle PRIVATE
ISLE/isledebug.cpp ISLE/isledebug.cpp
@ -530,7 +519,6 @@ if(ISLE_BUILD_APP)
target_compile_definitions(isle PRIVATE ISLE_DEBUG) target_compile_definitions(isle PRIVATE ISLE_DEBUG)
target_link_libraries(isle PRIVATE imgui) target_link_libraries(isle PRIVATE imgui)
find_path(valgrind_INCLUDE_PATH NAMES valgrind/callgrind.h) find_path(valgrind_INCLUDE_PATH NAMES valgrind/callgrind.h)
if(valgrind_INCLUDE_PATH) if(valgrind_INCLUDE_PATH)
# Run isle under valgrind to create a profile. Use e.g. kcachegrind to view the profile. # Run isle under valgrind to create a profile. Use e.g. kcachegrind to view the profile.
# > valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes \ # > valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes \
@ -539,7 +527,6 @@ if(ISLE_BUILD_APP)
target_include_directories(isle PRIVATE ${valgrind_INCLUDE_PATH}) target_include_directories(isle PRIVATE ${valgrind_INCLUDE_PATH})
endif() endif()
endif() endif()
if(EMSCRIPTEN) if(EMSCRIPTEN)
target_sources(isle PRIVATE target_sources(isle PRIVATE
ISLE/emscripten/events.cpp ISLE/emscripten/events.cpp
@ -555,7 +542,7 @@ if(ISLE_BUILD_APP)
ISLE/3ds/config.cpp ISLE/3ds/config.cpp
) )
endif() endif()
if(WINDOWS_STORE) if (WINDOWS_STORE)
set(ISLE_CURSORS set(ISLE_CURSORS
ISLE/res/arrow.bmp ISLE/res/arrow.bmp
ISLE/res/busy.bmp ISLE/res/busy.bmp
@ -564,7 +551,6 @@ if(ISLE_BUILD_APP)
set_source_files_properties(${ISLE_CURSORS} PROPERTIES set_source_files_properties(${ISLE_CURSORS} PROPERTIES
VS_DEPLOYMENT_CONTENT 1 VS_DEPLOYMENT_CONTENT 1
) )
target_sources(isle PRIVATE ${ISLE_CURSORS}) target_sources(isle PRIVATE ${ISLE_CURSORS})
endif() endif()
endif() endif()
@ -601,64 +587,54 @@ if (ISLE_BUILD_CONFIG)
endif() endif()
endif() endif()
if(ISLE_MINIWIN) if (ISLE_MINIWIN)
set_property(TARGET ${isle_targets} APPEND PROPERTY LINK_LIBRARIES "miniwin") set_property(TARGET ${isle_targets} APPEND PROPERTY LINK_LIBRARIES "miniwin")
endif() endif()
if(MSVC) if (MSVC)
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
set_property(TARGET ${isle_targets} APPEND PROPERTY COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS") set_property(TARGET ${isle_targets} APPEND PROPERTY COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS")
if (TARGET isle)
if(TARGET isle)
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()
if (TARGET isle-config)
if(TARGET isle-config)
target_compile_definitions(isle-config PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(isle-config PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()
if (TARGET iniparser-static)
if(TARGET iniparser-static)
target_compile_definitions(iniparser-static PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(iniparser-static PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()
if (TARGET libsmacker)
if(TARGET libsmacker)
target_compile_definitions(libsmacker PRIVATE "_CRT_SECURE_NO_WARNINGS") target_compile_definitions(libsmacker PRIVATE "_CRT_SECURE_NO_WARNINGS")
endif() endif()
endif() endif()
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus # Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
set_property(TARGET ${isle_targets} APPEND PROPERTY COMPILE_OPTIONS "-Zc:__cplusplus") set_property(TARGET ${isle_targets} APPEND PROPERTY COMPILE_OPTIONS "-Zc:__cplusplus")
if (TARGET isle)
if(TARGET isle)
target_compile_options(isle PRIVATE "-Zc:__cplusplus") target_compile_options(isle PRIVATE "-Zc:__cplusplus")
endif() endif()
if (TARGET isle-config)
if(TARGET isle-config)
target_compile_options(isle-config PRIVATE "-Zc:__cplusplus") target_compile_options(isle-config PRIVATE "-Zc:__cplusplus")
endif() endif()
endif() endif()
endif() endif()
if(MSVC) if (MSVC)
target_link_options(isle PRIVATE "/SAFESEH:NO") target_link_options(isle PRIVATE "/SAFESEH:NO")
target_link_options(lego1 PRIVATE "/SAFESEH:NO") target_link_options(lego1 PRIVATE "/SAFESEH:NO")
endif() endif()
find_program(CLANGFORMAT_BIN NAMES clang-format) find_program(CLANGFORMAT_BIN NAMES clang-format)
if (EXISTS "${CLANGFORMAT_BIN}")
if(EXISTS "${CLANGFORMAT_BIN}")
execute_process(COMMAND "${CLANGFORMAT_BIN}" --version execute_process(COMMAND "${CLANGFORMAT_BIN}" --version
OUTPUT_VARIABLE "CLANGFORMAT_VERSION_OUTPUT" OUTPUT_VARIABLE "CLANGFORMAT_VERSION_OUTPUT"
RESULT_VARIABLE "CLANGFORMAT_RESULT" RESULT_VARIABLE "CLANGFORMAT_RESULT"
) )
if (CLANGFORMAT_RESULT EQUAL 0 AND CLANGFORMAT_VERSION_OUTPUT MATCHES "version ([0-9\\.]+)")
if(CLANGFORMAT_RESULT EQUAL 0 AND CLANGFORMAT_VERSION_OUTPUT MATCHES "version ([0-9\\.]+)")
set(CLANGFORMAT_VERSION "${CMAKE_MATCH_1}") set(CLANGFORMAT_VERSION "${CMAKE_MATCH_1}")
set(CLANGFORMAT_VERSION_REQUIRED "17.0") set(CLANGFORMAT_VERSION_REQUIRED "17.0")
message(DEBUG "Found clang-format version ${CLANGFORMAT_VERSION} (needs ${CLANGFORMAT_VERSION_REQUIRED}") message(DEBUG "Found clang-format version ${CLANGFORMAT_VERSION} (needs ${CLANGFORMAT_VERSION_REQUIRED}")
if (CLANGFORMAT_VERSION VERSION_GREATER_EQUAL "${CLANGFORMAT_VERSION_REQUIRED}")
if(CLANGFORMAT_VERSION VERSION_GREATER_EQUAL "${CLANGFORMAT_VERSION_REQUIRED}")
file(GLOB_RECURSE isle_sources file(GLOB_RECURSE isle_sources
"${PROJECT_SOURCE_DIR}/ISLE/*.cpp" "${PROJECT_SOURCE_DIR}/ISLE/*.cpp"
"${PROJECT_SOURCE_DIR}/ISLE/*.h" "${PROJECT_SOURCE_DIR}/ISLE/*.h"
@ -673,10 +649,8 @@ if(EXISTS "${CLANGFORMAT_BIN}")
endif() endif()
set(install_extra_targets) set(install_extra_targets)
if(DOWNLOAD_DEPENDENCIES) if(DOWNLOAD_DEPENDENCIES)
get_property(sdl3_type TARGET SDL3::SDL3 PROPERTY TYPE) get_property(sdl3_type TARGET SDL3::SDL3 PROPERTY TYPE)
if(sdl3_type STREQUAL "SHARED_LIBRARY") if(sdl3_type STREQUAL "SHARED_LIBRARY")
list(APPEND install_extra_targets "SDL3-shared") list(APPEND install_extra_targets "SDL3-shared")
endif() endif()
@ -695,12 +669,15 @@ set(ISLE_PACKAGE_NAME "${CMAKE_SYSTEM_NAME}-${ISLE_CPUS_STRING}" CACHE STRING "P
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
list(APPEND install_extra_targets lego1) list(APPEND install_extra_targets lego1)
endif() endif()
install(TARGETS isle ${install_extra_targets} install(TARGETS isle ${install_extra_targets}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) )
if (ISLE_BUILD_CONFIG)
install(TARGETS isle-config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
endif()
if(EMSCRIPTEN) if(EMSCRIPTEN)
install(FILES "$<TARGET_FILE_DIR:isle>/isle.js" "$<TARGET_FILE_DIR:isle>/isle.wasm" install(FILES "$<TARGET_FILE_DIR:isle>/isle.js" "$<TARGET_FILE_DIR:isle>/isle.wasm"
DESTINATION "${CMAKE_INSTALL_BINDIR}" DESTINATION "${CMAKE_INSTALL_BINDIR}"