/
dgrigorev
/
gw-basic-cpp
Обзор
Документация
Войти
/
dgrigorev
/
gw-basic-cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
CMakeLists.txt
57 строк
3 KB
Дмитрий Григорьев
Building fixes
16 май 2026, 20:19
16 май 2026, 20:19
2e8d077
Код
Авторство
О чём код?
cmake_minimum_required(VERSION 3.21) project(gwbasic_modern VERSION 0.1.0 LANGUAGES CXX) include(cmake/StaticAnalysis.cmake) include(cmake/Doxygen.cmake) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(GWBASIC_BUILD_TESTS "Build tests" ON) option(GWBASIC_BUILD_FUZZERS "Build libFuzzer targets" OFF) option(GWBASIC_BUILD_NATIVE_GRAPHICS "Build native graphics presenter backend" ON) add_library(gwbasic_core src/token.cpp src/lexer.cpp src/ast.cpp src/parser.cpp src/value.cpp src/runtime.cpp src/interpreter.cpp src/graphics_presenter.cpp) target_include_directories(gwbasic_core PUBLIC include) if(WIN32 AND GWBASIC_BUILD_NATIVE_GRAPHICS) target_compile_definitions(gwbasic_core PRIVATE GWBASIC_NATIVE_GRAPHICS=1) target_link_libraries(gwbasic_core PRIVATE d3d11 dxgi dxguid d3dcompiler) elseif(UNIX AND NOT APPLE AND GWBASIC_BUILD_NATIVE_GRAPHICS) find_package(X11 REQUIRED) target_compile_definitions(gwbasic_core PRIVATE GWBASIC_NATIVE_GRAPHICS=1) target_link_libraries(gwbasic_core PRIVATE X11::X11 dl) endif() if(MSVC) target_compile_options(gwbasic_core PRIVATE /W4 /permissive-) else() target_compile_options(gwbasic_core PRIVATE -Wall -Wextra -Wpedantic) endif() add_executable(gwbasic src/main.cpp) target_link_libraries(gwbasic PRIVATE gwbasic_core) if(GWBASIC_BUILD_TESTS) enable_testing() add_executable(gwbasic_smoke tests/smoke.cpp) target_link_libraries(gwbasic_smoke PRIVATE gwbasic_core) add_test(NAME smoke COMMAND gwbasic_smoke) add_executable(gwbasic_lexer_tests tests/lexer_tests.cpp) target_link_libraries(gwbasic_lexer_tests PRIVATE gwbasic_core) add_test(NAME lexer COMMAND gwbasic_lexer_tests) add_executable(gwbasic_parser_tests tests/parser_tests.cpp) target_link_libraries(gwbasic_parser_tests PRIVATE gwbasic_core) add_test(NAME parser COMMAND gwbasic_parser_tests) add_executable(gwbasic_compatibility_tests tests/compatibility_tests.cpp) target_link_libraries(gwbasic_compatibility_tests PRIVATE gwbasic_core) add_test(NAME compatibility COMMAND gwbasic_compatibility_tests) endif() if(GWBASIC_BUILD_FUZZERS) if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") message(FATAL_ERROR "GWBASIC_BUILD_FUZZERS requires Clang with libFuzzer support") endif() target_compile_options(gwbasic_core PRIVATE -fsanitize=fuzzer-no-link,address,undefined) target_link_options(gwbasic_core PRIVATE -fsanitize=address,undefined) add_executable(gwbasic_lexer_parser_fuzzer tests/fuzz_lexer_parser.cpp) target_link_libraries(gwbasic_lexer_parser_fuzzer PRIVATE gwbasic_core) target_compile_options(gwbasic_lexer_parser_fuzzer PRIVATE -fsanitize=fuzzer,address,undefined) target_link_options(gwbasic_lexer_parser_fuzzer PRIVATE -fsanitize=fuzzer,address,undefined) endif()