indigo-node
Version:
Indigo nodejs bindings
207 lines (191 loc) • 10.4 kB
Plain Text
cmake_minimum_required(VERSION 2.8)
project(Cairo C)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/../../common/cmake/)
if (USE_SYSTEM_CAIRO)
find_package(CAIRO)
if (NOT CAIRO_FOUND)
MESSAGE(FATAL_ERROR "Cannot find system Cairo library")
endif()
endif()
find_package(PIXMAN)
if (NOT CAIRO_FOUND)
message(STATUS "Using local Cairo library")
set(Cairo_headers_dir ${CMAKE_CURRENT_SOURCE_DIR}/src/)
include_directories(${Cairo_headers_dir} ${Pixman_headers_dir})
set(CAIRO_HAS_QUARTZ_FONT 0)
set(CAIRO_HAS_QUARTZ_SURFACE 0)
set(CAIRO_HAS_QUARTZ_IMAGE_SURFACE 0)
set(CAIRO_HAS_WIN32_FONT 0)
set(CAIRO_HAS_WIN32_SURFACE 0)
set(CAIRO_HAS_FC_FONT 0)
set(CAIRO_HAS_FT_FONT 0)
set(CAIRO_HAS_GL_SURFACE 0)
set(CAIRO_HAS_VG_SURFACE 0)
set(CAIRO_HAS_GLX_FUNCTIONS 0)
set(CAIRO_HAS_EGL_FUNCTIONS 0)
set(CAIRO_HAS_GLESV2_SURFACE 0)
set(CAIRO_WIN32_STATIC_BUILD 0)
if(UNIX OR APPLE OR MINGW)
add_definitions(-DHAVE_STDINT_H -DCAIRO_HAS_PTHREAD -D_GNU_SOURCE -DHAVE_UINT64_T)
endif()
if (UNIX AND NOT APPLE)
set(CAIRO_HAS_FC_FONT 1)
set(CAIRO_HAS_FT_FONT 1)
if(NOT DEFINED $ENV{VERBOSE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-attributes")
endif()
endif()
if (APPLE)
set(CAIRO_HAS_QUARTZ_FONT 1)
set(CAIRO_HAS_QUARTZ_SURFACE 1)
set(CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1)
if(NOT DEFINED $ENV{VERBOSE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-enum-conversion -Wno-tautological-constant-out-of-range-compare -Wno-deprecated-declarations -Wno-return-type -Wno-parentheses-equality")
endif()
endif()
if(MSVC)
add_definitions(-DDISABLE_SOME_FLOATING_POINT) # Fix lround missing problem
endif()
if (MSVC OR MINGW)
set(CAIRO_HAS_WIN32_FONT 1)
set(CAIRO_HAS_WIN32_SURFACE 1)
set(CAIRO_WIN32_STATIC_BUILD 1)
file (GLOB CAIRO_WIN32_SOURCES src/win32/*.c)
endif()
if(WITH_CAIRO_VG)
set(CAIRO_HAS_VG_SURFACE 1)
endif()
if(WITH_CAIRO_GL)
set(CAIRO_HAS_GL_SURFACE 1)
endif()
if(WITH_CAIRO_EGL)
set(CAIRO_HAS_EGL_FUNCTIONS 1)
endif()
if(WITH_CAIRO_GLESV2)
set(CAIRO_HAS_GLESV2_SURFACE 1)
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-features.h.in ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-features.h)
file (GLOB CAIRO_SOURCES src/*.c)
file (GLOB CAIRO_HEADERS src/*.h)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-screen.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-visual.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-display.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-os2-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/check-has-hidden-symbols.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-glitz-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-directfb-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/check-link.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/test-fallback-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/test-meta-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_FCURRENT_SOURCE_DIR}/src/test-paginated-surface.c)
if (NOT WITH_CAIRO_EGL)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-egl-context.c)
endif()
if (NOT WITH_CAIRO_GL AND NOT WITH_CAIRO_GLESV2)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-composite.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-device.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-dispatch.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-glyphs.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-gradient.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-info.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-msaa-compositor.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-operand.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-shaders.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-source.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-spans-compositor.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-gl-traps-compositor.c)
endif()
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-glx-context.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-script-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-tee-surface.c)
if (NOT WITH_CAIRO_VG)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-vg-surface.c)
endif()
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-wgl-context.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-connection-core.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-connection-render.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-connection-shm.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-connection.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-screen.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-shm.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-surface-cairo.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-surface-core.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xcb-surface-render.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-xcb-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-render-compositor.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-source.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-core-compositor.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-fallback-compositor.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xlib-surface-shm.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-cogl-gradient.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-cogl-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-cogl-utils.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-cogl-context.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-xml-surface.c)
if((NOT MSVC) AND (NOT MINGW))
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-win32-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-win32-printing-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-win32-font-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-win32-font.c)
endif()
if (NOT APPLE)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-quartz-image-surface.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-quartz-font.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-quartz-surface.c)
endif(NOT APPLE)
if (APPLE)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-fixed.c)
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-freed-pool.c)
endif()
if((UNIX) AND (NOT APPLE))
find_package(Freetype REQUIRED)
if(NOT FREETYPE_FOUND)
message(FATAL_ERROR "No Freetype found")
endif()
add_definitions(-DCAIRO_HAS_FT_FONT)
add_definitions(-DCAIRO_HAS_FC_FONT)
include_directories(${FREETYPE_INCLUDE_DIRS})
else()
list(REMOVE_ITEM CAIRO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cairo-ft-font.c)
endif()
include_directories(${PNG_INCLUDE_DIR})
include_directories(${ZLib_HEADERS_DIR})
if(MSVC AND NOT DEFINED $ENV{VERBOSE})
add_definitions(/wd4244 /wd4146 /wd4267)
endif()
# To remove GLIBC_2.11 dependency
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0")
if (MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4244 /wd4146 /wd4334 /wd4267 /wd4101")
endif()
add_library(cairo STATIC ${CAIRO_SOURCES} ${CAIRO_WIN32_SOURCES})
set_target_properties(cairo PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
if(UNIX AND NOT APPLE)
target_link_libraries(cairo freetype fontconfig)
endif()
if(MSVC OR MINGW)
target_link_libraries(cairo msimg32)
endif()
if (WITH_CAIRO_GL)
target_link_libraries(cairo GL)
endif()
if (WITH_CAIRO_VG)
target_link_libraries(cairo OpenVG)
endif()
if (WITH_CAIRO_EGL)
target_link_libraries(cairo egl)
endif()
if (WITH_CAIRO_GLESV2)
target_link_libraries(cairo glesv2)
endif()
set_property(TARGET cairo PROPERTY FOLDER "third_party")
if (NOT NO_STATIC)
pack_static(cairo)
endif()
else()
set(Cairo_headers_dir ${CAIRO_INCLUDE_DIRS})
endif()