@@ -5,90 +5,180 @@ set(CMAKE_CXX_STANDARD 20)
55set (CMAKE_CXX_STANDARD_REQUIRED ON )
66set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
77
8- # Find OpenFOAM libraries (installed in /opt/openfoam12)
9- find_library (OPENFOAM_LIB OpenFOAM PATHS /opt/openfoam12/platforms/linux64GccDPInt32Opt/lib )
10- find_library (FINITE_VOLUME_LIB finiteVolume PATHS /opt/openfoam12/platforms/linux64GccDPInt32Opt/lib )
11- find_library (MESH_TOOLS_LIB meshTools PATHS /opt/openfoam12/platforms/linux64GccDPInt32Opt/lib )
8+ # Full OpenFOAM integration with proper Pstream library
9+ message (STATUS "🔧 Building full OpenFOAM MCP server with dummy Pstream" )
1210
13- if ( NOT OPENFOAM_LIB)
14- message ( FATAL_ERROR "OpenFOAM library not found. Please install openfoam12 package. " )
15- endif ( )
11+ # OpenFOAM Configuration
12+ set (OPENFOAM_DIR "/opt/openfoam12" CACHE PATH "OpenFOAM installation directory " )
13+ set (OPENFOAM_ARCH "linux64GccDPInt32Opt" CACHE STRING "OpenFOAM architecture" )
1614
17- # Include OpenFOAM headers
18- include_directories (/opt/openfoam12/src )
19- include_directories (/opt/openfoam12/src/OpenFOAM/lnInclude )
20- include_directories (/opt/openfoam12/src/OSspecific/POSIX/lnInclude )
21- include_directories (/opt/openfoam12/src/finiteVolume/lnInclude )
22- include_directories (/opt/openfoam12/src/meshTools/lnInclude )
23- include_directories (${CMAKE_CURRENT_SOURCE_DIR} /src )
15+ # OpenFOAM Library Detection
16+ set (OPENFOAM_LIB_DIR "${OPENFOAM_DIR} /platforms/${OPENFOAM_ARCH} /lib" )
17+ set (OPENFOAM_SRC_DIR "${OPENFOAM_DIR} /src" )
18+
19+ # Core OpenFOAM Libraries
20+ find_library (OPENFOAM_LIB OpenFOAM PATHS ${OPENFOAM_LIB_DIR} NO_DEFAULT_PATH )
21+ find_library (FINITE_VOLUME_LIB finiteVolume PATHS ${OPENFOAM_LIB_DIR} NO_DEFAULT_PATH )
22+ find_library (MESH_TOOLS_LIB meshTools PATHS ${OPENFOAM_LIB_DIR} NO_DEFAULT_PATH )
23+
24+ # Use dummy Pstream for single-processor mode (avoids MPI dependencies)
25+ find_library (PSTREAM_DUMMY_LIB Pstream PATHS ${OPENFOAM_LIB_DIR} /dummy NO_DEFAULT_PATH )
2426
2527# Find dependencies
2628find_package (PkgConfig REQUIRED )
2729find_package (nlohmann_json QUIET )
2830find_package (SQLite3 QUIET )
2931find_package (Boost COMPONENTS system thread QUIET )
3032
31- # Compiler flags for OpenFOAM compatibility
32- add_compile_definitions (WM_DP WM_LABEL_SIZE=32 NoRepository )
33- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O2" )
34-
35- # Source files
36- file (GLOB_RECURSE SOURCES
37- "src/mcp/*.cpp"
38- "src/openfoam/*.cpp"
39- "src/tools/*.cpp"
40- "src/utils/*.cpp"
33+ # Status reporting
34+ if (OPENFOAM_LIB)
35+ message (STATUS "✅ Found OpenFOAM: ${OPENFOAM_LIB} " )
36+ else ()
37+ message (FATAL_ERROR "❌ OpenFOAM library not found at ${OPENFOAM_LIB_DIR} " )
38+ endif ()
39+
40+ if (PSTREAM_DUMMY_LIB)
41+ message (STATUS "✅ Found Pstream (dummy): ${PSTREAM_DUMMY_LIB} " )
42+ else ()
43+ message (WARNING "⚠️ Dummy Pstream library not found" )
44+ endif ()
45+
46+ # OpenFOAM Include Directories
47+ if (EXISTS "${OPENFOAM_SRC_DIR} " )
48+ include_directories (${OPENFOAM_SRC_DIR} )
49+ include_directories (${OPENFOAM_SRC_DIR} /OpenFOAM/lnInclude )
50+ include_directories (${OPENFOAM_SRC_DIR} /OSspecific/POSIX/lnInclude )
51+ include_directories (${OPENFOAM_SRC_DIR} /finiteVolume/lnInclude )
52+ include_directories (${OPENFOAM_SRC_DIR} /meshTools/lnInclude )
53+ message (STATUS "✅ OpenFOAM headers: ${OPENFOAM_SRC_DIR} " )
54+ else ()
55+ message (FATAL_ERROR "❌ OpenFOAM source directory not found: ${OPENFOAM_SRC_DIR} " )
56+ endif ()
57+
58+ # OpenFOAM Compiler Configuration
59+ add_compile_definitions (
60+ WM_DP # Double precision
61+ WM_LABEL_SIZE=32 # 32-bit labels
62+ NoRepository # Disable template repository
63+ linux64
64+ WM_ARCH_OPTION=64
65+ )
66+
67+ # Core Source Files (full OpenFOAM integration)
68+ set (CORE_SOURCES
69+ "src/mcp/json_rpc.cpp"
70+ "src/mcp/server.cpp"
71+ "src/openfoam/case_manager.cpp"
72+ "src/openfoam/external_flow.cpp"
73+ "src/openfoam/heat_transfer.cpp"
74+ "src/openfoam/multiphase_flow.cpp"
75+ "src/openfoam/pipe_flow.cpp"
76+ "src/openfoam/mesh_quality.cpp"
77+ "src/openfoam/stl_analyzer.cpp"
78+ "src/tools/external_flow_tool.cpp"
79+ "src/tools/heat_transfer_tool.cpp"
80+ "src/tools/multiphase_flow_tool.cpp"
81+ "src/tools/pipe_flow_tool.cpp"
82+ "src/tools/cfd_assistant_tool.cpp"
83+ "src/tools/cfd_assistant_registration.cpp"
84+ "src/tools/context_engine.cpp"
85+ "src/utils/logging.cpp"
86+ "src/utils/terminal_manager.cpp"
4187)
4288
89+ # Main source file
90+ set (MAIN_SOURCE "src/main.cpp" )
91+
92+ # Combine all sources
93+ set (ALL_SOURCES ${CORE_SOURCES} )
94+
95+ list (LENGTH ALL_SOURCES SOURCE_COUNT)
96+ message (STATUS "📦 Total source files: ${SOURCE_COUNT} " )
97+
98+ # Project headers
99+ include_directories (${CMAKE_CURRENT_SOURCE_DIR} /src )
100+
101+ # Compiler flags for OpenFOAM compatibility
102+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -O2 -fPIC" )
103+
43104# Main executable
44105add_executable (openfoam-mcp-server
45- src/main.cpp
46- ${SOURCES}
106+ ${MAIN_SOURCE}
107+ ${ALL_SOURCES}
108+ )
109+
110+ # Test executable with minimal dependencies
111+ add_executable (openfoam-mcp-server-test
112+ "src/main_test.cpp"
113+ "src/mcp/json_rpc.cpp"
114+ "src/mcp/server.cpp"
115+ "src/tools/cfd_assistant_tool.cpp"
116+ "src/tools/cfd_assistant_registration.cpp"
117+ "src/tools/context_engine.cpp"
118+ "src/utils/logging.cpp"
119+ "src/utils/terminal_manager.cpp"
47120)
48121
122+ # Core libraries (required)
123+ set (REQUIRED_LIBS)
124+ if (OPENFOAM_LIB)
125+ list (APPEND REQUIRED_LIBS ${OPENFOAM_LIB} )
126+ endif ()
127+ if (FINITE_VOLUME_LIB)
128+ list (APPEND REQUIRED_LIBS ${FINITE_VOLUME_LIB} )
129+ endif ()
130+ if (MESH_TOOLS_LIB)
131+ list (APPEND REQUIRED_LIBS ${MESH_TOOLS_LIB} )
132+ endif ()
133+ if (PSTREAM_DUMMY_LIB)
134+ list (APPEND REQUIRED_LIBS ${PSTREAM_DUMMY_LIB} )
135+ endif ()
136+
137+ # System libraries
138+ set (SYSTEM_LIBS pthread dl m stdc++)
139+
140+ # Set runtime library paths for OpenFOAM libraries
141+ set_target_properties (openfoam-mcp-server PROPERTIES
142+ INSTALL_RPATH "${OPENFOAM_LIB_DIR} ;${OPENFOAM_LIB_DIR} /dummy"
143+ BUILD_WITH_INSTALL_RPATH TRUE
144+ INSTALL_RPATH_USE_LINK_PATH TRUE
145+ )
146+
147+ # Link all libraries
49148target_link_libraries (openfoam-mcp-server
50- ${OPENFOAM_LIB}
51- ${FINITE_VOLUME_LIB}
52- ${MESH_TOOLS_LIB}
53- pthread
54- dl
149+ ${REQUIRED_LIBS}
150+ ${SYSTEM_LIBS}
55151)
56152
153+ # Link test executable with system libraries only
154+ target_link_libraries (openfoam-mcp-server-test
155+ ${SYSTEM_LIBS}
156+ )
157+
158+ # Report linking status
159+ message (STATUS "🔗 Linking libraries:" )
160+ message (STATUS " Required: ${REQUIRED_LIBS} " )
161+ message (STATUS " System: ${SYSTEM_LIBS} " )
162+
57163# Add nlohmann_json if found
58164if (nlohmann_json_FOUND)
59165 target_link_libraries (openfoam-mcp-server nlohmann_json::nlohmann_json )
166+ message (STATUS "✅ Using system nlohmann_json" )
60167endif ()
61168
62169# Add SQLite3 if found
63170if (SQLite3_FOUND)
64171 target_link_libraries (openfoam-mcp-server SQLite::SQLite3 )
172+ message (STATUS "✅ Using SQLite3" )
65173endif ()
66174
67175# Add Boost if found
68176if (Boost_FOUND)
69177 target_link_libraries (openfoam-mcp-server Boost::system Boost::thread )
178+ message (STATUS "✅ Using Boost" )
70179endif ()
71180
72- # Tests (optional)
73- option (BUILD_TESTS "Build test suite" OFF )
74- if (BUILD_TESTS)
75- enable_testing ()
76- find_package (Catch2 3 QUIET )
77- if (Catch2_FOUND)
78- file (GLOB_RECURSE TEST_SOURCES "tests/*.cpp" )
79- add_executable (openfoam-mcp-tests ${TEST_SOURCES} ${SOURCES} )
80- target_link_libraries (openfoam-mcp-tests
81- ${OPENFOAM_LIB}
82- ${FINITE_VOLUME_LIB}
83- ${MESH_TOOLS_LIB}
84- Catch2::Catch2WithMain
85- )
86-
87- include (CTest )
88- include (Catch )
89- catch_discover_tests (openfoam-mcp-tests )
90- endif ()
91- endif ()
181+ message (STATUS "🎯 Full OpenFOAM build configured successfully" )
92182
93183# Installation
94184install (TARGETS openfoam-mcp-server
0 commit comments