@@ -190,8 +190,37 @@ message(STATUS "Native arch optimization: ${ENABLE_NATIVE_ARCH}")
190190# Find required libraries
191191find_package (Threads REQUIRED)
192192find_package (JPEG REQUIRED)
193- find_package (PkgConfig REQUIRED)
194- pkg_check_modules(CAIRO REQUIRED cairo)
193+
194+ # Find Cairo - use different methods per platform
195+ option (WITH_CAIRO "Build with Cairo support for 2D rendering" ON )
196+ if (WITH_CAIRO)
197+ if (WIN32 )
198+ # On Windows with vcpkg, use find_package directly
199+ find_package (unofficial-cairo CONFIG)
200+ if (unofficial-cairo_FOUND)
201+ set (CAIRO_FOUND TRUE )
202+ set (CAIRO_LIBRARIES unofficial::cairo::cairo)
203+ set (CAIRO_INCLUDE_DIRS "" ) # vcpkg handles this via target
204+ else ()
205+ # Fallback: try cairo directly
206+ find_package (Cairo CONFIG)
207+ if (Cairo_FOUND)
208+ set (CAIRO_FOUND TRUE )
209+ set (CAIRO_LIBRARIES Cairo::Cairo)
210+ set (CAIRO_INCLUDE_DIRS "" )
211+ endif ()
212+ endif ()
213+ else ()
214+ # On Unix, use pkg-config
215+ find_package (PkgConfig REQUIRED)
216+ pkg_check_modules(CAIRO REQUIRED cairo)
217+ endif ()
218+
219+ if (NOT CAIRO_FOUND)
220+ message (WARNING "Cairo not found - 2D rendering will be disabled" )
221+ set (WITH_CAIRO OFF )
222+ endif ()
223+ endif ()
195224
196225# Fetch and build carquet library for Parquet support
197226include (FetchContent)
@@ -215,7 +244,9 @@ message(STATUS "carquet available for Parquet support")
215244# Include directories
216245include_directories (${CMAKE_SOURCE_DIR} /include )
217246include_directories (${JPEG_INCLUDE_DIR} )
218- include_directories (${CAIRO_INCLUDE_DIRS} )
247+ if (WITH_CAIRO AND CAIRO_INCLUDE_DIRS)
248+ include_directories (${CAIRO_INCLUDE_DIRS} )
249+ endif ()
219250include_directories (${carquet_SOURCE_DIR} /include )
220251
221252# Library sources
@@ -294,8 +325,13 @@ set(CCHEM_SOURCES
294325
295326# Create static library
296327add_library (cchem_lib STATIC ${CCHEM_SOURCES} )
297- target_link_libraries (cchem_lib PRIVATE Threads::Threads m ${JPEG_LIBRARIES} ${CAIRO_LIBRARIES} )
298- target_link_directories (cchem_lib PRIVATE ${CAIRO_LIBRARY_DIRS} )
328+ target_link_libraries (cchem_lib PRIVATE Threads::Threads ${JPEG_LIBRARIES} ${CAIRO_LIBRARIES} )
329+ if (NOT WIN32 )
330+ target_link_libraries (cchem_lib PRIVATE m)
331+ endif ()
332+ if (CAIRO_LIBRARY_DIRS)
333+ target_link_directories (cchem_lib PRIVATE ${CAIRO_LIBRARY_DIRS} )
334+ endif ()
299335if (HAVE_CARQUET)
300336 target_link_libraries (cchem_lib PRIVATE carquet)
301337 target_compile_definitions (cchem_lib PRIVATE HAVE_PARQUET=1)
@@ -310,7 +346,10 @@ add_executable(cchem
310346 src/commands/cmd_depict.c
311347 src/commands/cmd_split.c
312348)
313- target_link_libraries (cchem PRIVATE cchem_lib Threads::Threads m ${JPEG_LIBRARIES} ${CAIRO_LIBRARIES} )
349+ target_link_libraries (cchem PRIVATE cchem_lib Threads::Threads ${JPEG_LIBRARIES} ${CAIRO_LIBRARIES} )
350+ if (NOT WIN32 )
351+ target_link_libraries (cchem PRIVATE m)
352+ endif ()
314353if (HAVE_CARQUET)
315354 target_compile_definitions (cchem PRIVATE HAVE_PARQUET=1)
316355 target_link_libraries (cchem PRIVATE carquet)
0 commit comments