Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Add CMake option for Cortex code quality assurance #2085

Merged
merged 2 commits into from
Mar 10, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 29 additions & 6 deletions engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,29 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(OPENSSL_USE_STATIC_LIBS TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Add CORTEX_CQA option
# Enabling this option will currently break the build.
# Only for debugging
option(CORTEX_CQA "Enable Cortex Code Quality Assurance(DO NOT TURN THIS ON unless you know what you are doing)" OFF)

if(CORTEX_CQA)
message(STATUS "CORTEX_CQA is ON: Enabling debug symbols, ASan, All Warnings, and treating Warnings as Errors")

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
add_compile_options(-fsanitize=address -Wall -Wextra -Wpedantic -Werror -g)
add_link_options(-fsanitize=address)
elseif(MSVC)
# TODO: Sang, test on Windows and setup MSVC accordingly
add_compile_options(/INFERASAN /Wall /WX /Zi)
add_link_options(/DEBUG)
message(WARNING "Address Sanitizer might require additional setup on MSVC. Please refer to MSVC documentation for ASan.")
else()
message(WARNING "Address Sanitizer and warning flags are not automatically configured for this compiler. Please configure them manually if supported.")
endif()
else()
message(STATUS "CORTEX_CQA is OFF.")
endif()

if(MSVC)
add_compile_options(
$<$<CONFIG:>:/MT> #---------|
Expand Down Expand Up @@ -56,7 +79,7 @@ endif()
if(NOT DEFINED CORTEX_CPP_VERSION)
set(CORTEX_CPP_VERSION "default_version")
endif()

add_compile_definitions(CORTEX_VARIANT="${CORTEX_VARIANT}")
add_compile_definitions(CORTEX_CPP_VERSION="${CORTEX_CPP_VERSION}")
add_compile_definitions(CORTEX_CONFIG_FILE_PATH="${CORTEX_CONFIG_FILE_PATH}")
Expand Down Expand Up @@ -101,24 +124,24 @@ set(CHUNK_INDEX 0)

while(${OFFSET} LESS ${CONTENT_LENGTH})
math(EXPR REMAINING "${CONTENT_LENGTH} - ${OFFSET}")

if(${REMAINING} LESS ${CHUNK_SIZE})
string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${REMAINING} CHUNK_CONTENT)
math(EXPR OFFSET "${OFFSET} + ${REMAINING}")
else()
string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${CHUNK_SIZE} CHUNK_CONTENT)
math(EXPR OFFSET "${OFFSET} + ${CHUNK_SIZE}")
endif()

# Escape special characters
string(REPLACE "\\" "\\\\" CHUNK_CONTENT "${CHUNK_CONTENT}")
string(REPLACE "\"" "\\\"" CHUNK_CONTENT "${CHUNK_CONTENT}")
string(REPLACE "\n" "\\n" CHUNK_CONTENT "${CHUNK_CONTENT}")

file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
" inline std::string const json_part_${CHUNK_INDEX} = \"${CHUNK_CONTENT}\";\n"
)

math(EXPR CHUNK_INDEX "${CHUNK_INDEX} + 1")
endwhile()

Expand Down Expand Up @@ -192,7 +215,7 @@ aux_source_directory(database DB_SRC)
aux_source_directory(extensions EX_SRC)
aux_source_directory(migrations MIGR_SRC)
aux_source_directory(utils UTILS_SRC)

target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )

target_sources(${TARGET_NAME} PRIVATE ${UTILS_SRC} ${CONFIG_SRC} ${CTL_SRC} ${COMMON_SRC} ${SERVICES_SRC} ${DB_SRC} ${EX_SRC} ${MIGR_SRC} ${REPO_SRC})
Expand Down
Loading