Skip to content

Commit 4adf572

Browse files
committed
Small fixes for compilation workflow
1 parent ba2ae97 commit 4adf572

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888

8989
- name: Install dependencies
9090
run: |
91-
vcpkg install cairo libjpeg-turbo zstd --triplet x64-windows
91+
vcpkg install cairo libjpeg-turbo zstd zlib --triplet x64-windows
9292
9393
- name: Configure CMake
9494
run: |

CMakeLists.txt

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,37 @@ message(STATUS "Native arch optimization: ${ENABLE_NATIVE_ARCH}")
190190
# Find required libraries
191191
find_package(Threads REQUIRED)
192192
find_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
197226
include(FetchContent)
@@ -215,7 +244,9 @@ message(STATUS "carquet available for Parquet support")
215244
# Include directories
216245
include_directories(${CMAKE_SOURCE_DIR}/include)
217246
include_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()
219250
include_directories(${carquet_SOURCE_DIR}/include)
220251

221252
# Library sources
@@ -294,8 +325,13 @@ set(CCHEM_SOURCES
294325

295326
# Create static library
296327
add_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()
299335
if(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()
314353
if(HAVE_CARQUET)
315354
target_compile_definitions(cchem PRIVATE HAVE_PARQUET=1)
316355
target_link_libraries(cchem PRIVATE carquet)

0 commit comments

Comments
 (0)