srs/trunk/3rdparty/st-srs/cmake/CMakeLists.txt
Winlin 024342910d
OpenClaw: add and refine ST knowledge-base and learning/review skills (#4643)
- Add a comprehensive ST knowledge base document:
- openclaw/memory/srs-coroutines.md
- Add ST-focused developer skill:
- openclaw/skills/st-develop/SKILL.md
- openclaw/skills/st-develop/scripts/verify.sh
- Add KB workflow skills that support ST documentation quality and
learning:
- openclaw/skills/kb-review/SKILL.md
- openclaw/skills/srs-learn/SKILL.md
- Update openclaw/skills/srs-support/SKILL.md to use dynamic SRS_ROOT
path resolution, improving portability for KB/source
 loading.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-03-05 09:57:08 -05:00

136 lines
4.7 KiB
CMake

# CMake minimum version should be called first
cmake_minimum_required(VERSION 3.10)
# Name of the project.
# Language "C" is required for find_package(Threads).
if (CMAKE_VERSION VERSION_LESS 3.0)
project(st CXX C ASM)
else()
cmake_policy(SET CMP0048 NEW)
project(st VERSION 4.0.0 LANGUAGES CXX C ASM)
endif()
# For utest required C++11.
set (CMAKE_CXX_STANDARD 11)
###########################################################
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}/../ && pwd"
OUTPUT_VARIABLE ST_DIR
)
string(STRIP ${ST_DIR} ST_DIR)
message("ST home is ${ST_DIR}")
###########################################################
# Start to configure ST with jobs of number of CPUs.
include(ProcessorCount)
ProcessorCount(JOBS)
# We should always configure ST for switching between branches.
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ADD_DEFINITIONS("-DDARWIN -DMD_HAVE_KQUEUE -DMD_HAVE_SELECT -DDEBUG")
ELSE ()
ADD_DEFINITIONS("-DLINUX -DMD_HAVE_EPOLL -DMD_HAVE_SELECT -DDEBUG")
ENDIF ()
execute_process(COMMAND bash -c "cd ${ST_DIR} && mkdir -p obj && cp public.h obj/st.h")
###########################################################
# For whole project.
INCLUDE_DIRECTORIES(${ST_DIR}/obj ${ST_DIR}/utest ${ST_DIR}/utest/gtest/include)
# Common used sources for SRS and utest.
list(APPEND SOURCE_FILES ${ST_DIR}/event.c)
list(APPEND SOURCE_FILES ${ST_DIR}/io.c)
list(APPEND SOURCE_FILES ${ST_DIR}/key.c)
list(APPEND SOURCE_FILES ${ST_DIR}/sched.c)
list(APPEND SOURCE_FILES ${ST_DIR}/stk.c)
list(APPEND SOURCE_FILES ${ST_DIR}/sync.c)
IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND SOURCE_FILES ${ST_DIR}/md_darwin.S)
ELSE ()
list(APPEND SOURCE_FILES ${ST_DIR}/md_linux.S)
list(APPEND SOURCE_FILES ${ST_DIR}/md_linux2.S)
ENDIF ()
ADD_DEFINITIONS("-g -O0 -fsanitize=address -fno-omit-frame-pointer")
###########################################################
# Setup ST utest project
if(NOT TARGET gtest)
ADD_SUBDIRECTORY(${ST_DIR}/utest/gtest-fit gtest-fit)
endif()
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
set(ST_UTEST_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/utest ST_UTEST_SOURCE_FILES)
ADD_EXECUTABLE(st_utest ${ST_UTEST_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_utest gtest gtest_main)
TARGET_LINK_LIBRARIES(st_utest dl)
TARGET_LINK_LIBRARIES(st_utest ${DEPS_LIBS})
TARGET_LINK_LIBRARIES(st_utest -ldl -pthread)
TARGET_LINK_LIBRARIES(st_utest -fsanitize=address -fno-omit-frame-pointer)
###########################################################
# Setup tools/backtrace project
set(ST_BACKTRACE_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/backtrace ST_BACKTRACE_SOURCE_FILES)
ADD_EXECUTABLE(st_backtrace ${ST_BACKTRACE_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_backtrace ${DEPS_LIBS})
TARGET_LINK_LIBRARIES(st_backtrace -ldl)
###########################################################
# Setup tools/helloworld project
set(ST_HELLOWORLD_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/helloworld ST_HELLOWORLD_SOURCE_FILES)
ADD_EXECUTABLE(st_helloworld ${ST_HELLOWORLD_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_helloworld ${DEPS_LIBS})
###########################################################
# Setup tools/jmpbuf project
set(ST_JMPBUF_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/jmpbuf ST_JMPBUF_SOURCE_FILES)
ADD_EXECUTABLE(st_jmpbuf ${ST_JMPBUF_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_jmpbuf ${DEPS_LIBS})
###########################################################
# Setup tools/pcs project
set(ST_PCS_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/pcs ST_PCS_SOURCE_FILES)
ADD_EXECUTABLE(st_pcs ${ST_PCS_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_pcs ${DEPS_LIBS})
###########################################################
# Setup tools/porting project
set(ST_PORTING_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/porting ST_PORTING_SOURCE_FILES)
ADD_EXECUTABLE(st_porting ${ST_PORTING_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_porting ${DEPS_LIBS})
###########################################################
# Setup tools/stack project
set(ST_STACK_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/stack ST_STACK_SOURCE_FILES)
ADD_EXECUTABLE(st_stack ${ST_STACK_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_stack ${DEPS_LIBS})
###########################################################
# Setup tools/verify project
set(ST_VERIFY_SOURCE_FILES ${SOURCE_FILES})
AUX_SOURCE_DIRECTORY(${ST_DIR}/tools/verify ST_VERIFY_SOURCE_FILES)
ADD_EXECUTABLE(st_verify ${ST_VERIFY_SOURCE_FILES})
TARGET_LINK_LIBRARIES(st_verify ${DEPS_LIBS})
###########################################################
# Done
MESSAGE(STATUS "@see https://github.com/ossrs/state-threads#usage")