Files
ragflow/internal/cpp/CMakeLists.txt
Jin Hai 70e9743ef1 RAGFlow go API server (#13240)
# RAGFlow Go Implementation Plan 🚀

This repository tracks the progress of porting RAGFlow to Go. We'll
implement core features and provide performance comparisons between
Python and Go versions.

## Implementation Checklist

- [x] User Management APIs
- [x] Dataset Management Operations
- [x] Retrieval Test
- [x] Chat Management Operations
- [x] Infinity Go SDK

---------

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
Co-authored-by: Yingfeng Zhang <yingfeng.zhang@gmail.com>
2026-03-04 19:17:16 +08:00

139 lines
3.2 KiB
CMake

cmake_minimum_required(VERSION 4.0)
project(rag_tokenizer)
set(CMAKE_CXX_STANDARD 23)
# Option to enable AddressSanitizer
option(ENABLE_ASAN "Enable AddressSanitizer" OFF)
if(ENABLE_ASAN)
message(STATUS "AddressSanitizer enabled")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -g")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -g")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
endif()
file(GLOB_RECURSE
stemmer_src
CONFIGURE_DEPENDS
stemmer/*.cpp
stemmer/*.cc
stemmer/*.c
stemmer/*.h
)
file(GLOB_RECURSE
opencc_src
CONFIGURE_DEPENDS
opencc/*.cpp
opencc/*.cc
opencc/*.c
opencc/*.h
)
file(GLOB_RECURSE
util_src
CONFIGURE_DEPENDS
util/*.cpp
util/*.cc
util/*.c
util/*.h
)
file(GLOB_RECURSE
re2_src
CONFIGURE_DEPENDS
re2/*.cpp
re2/*.cc
re2/*.c
re2/*.h
)
file(GLOB_RECURSE
darts_src
CONFIGURE_DEPENDS
darts/*.h
)
file(GLOB
main_src
CONFIGURE_DEPENDS
*.cpp
*.cc
*.c
*.h
)
# Filter out C API files from main_src
list(FILTER main_src EXCLUDE REGEX "rag_analyzer_c_api")
add_executable(rag_tokenizer
main.cpp
rag_analyzer.cpp
rag_analyzer.h
dart_trie.h
darts_trie.cpp
wordnet_lemmatizer.cpp
wordnet_lemmatizer.h
string_utils.h
term.h
term.cpp
tokenizer.cpp
tokenizer.h
analyzer.h
${stemmer_src}
${opencc_src}
${util_src}
${darts_src}
${re2_src})
target_link_libraries(rag_tokenizer stdc++ m libpcre2-8.a)
target_include_directories(rag_tokenizer PUBLIC "${CMAKE_SOURCE_DIR}")
set_target_properties(rag_tokenizer PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
)
# Build C API static library for CGO
add_library(rag_tokenizer_c_api STATIC
rag_analyzer_c_api.cpp
rag_analyzer_c_api.h
rag_analyzer.cpp
rag_analyzer.h
dart_trie.h
darts_trie.cpp
wordnet_lemmatizer.cpp
wordnet_lemmatizer.h
string_utils.h
term.h
term.cpp
tokenizer.cpp
tokenizer.h
analyzer.h
${stemmer_src}
${opencc_src}
${util_src}
${darts_src}
${re2_src}
)
target_link_libraries(rag_tokenizer_c_api stdc++ libm.a libpcre2-8.a)
target_include_directories(rag_tokenizer_c_api PUBLIC "${CMAKE_SOURCE_DIR}")
set_target_properties(rag_tokenizer_c_api PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
)
# Test executable for C API
add_executable(rag_analyzer_c_test
rag_analyzer_c_test.cpp
)
target_link_libraries(rag_analyzer_c_test rag_tokenizer_c_api stdc++ libm.a libpcre2-8.a)
target_include_directories(rag_analyzer_c_test PUBLIC "${CMAKE_SOURCE_DIR}")
set_target_properties(rag_analyzer_c_test PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
)