d551d5dc41
Add lcms2, libdisplay-info, libepoxy, and libxcvt recipes required by the KWin/Mesa display stack.
92 lines
3.4 KiB
CMake
92 lines
3.4 KiB
CMake
include(GNUInstallDirs)
|
|
|
|
function(_lcms2_add_plugin lib_name)
|
|
set(options)
|
|
set(oneValueArgs)
|
|
set(multiValueArgs SOURCES INCLUDE_DIRS)
|
|
cmake_parse_arguments(PLUG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if(LCMS2_BUILD_SHARED)
|
|
add_library(${lib_name} SHARED ${PLUG_SOURCES})
|
|
else()
|
|
add_library(${lib_name} STATIC ${PLUG_SOURCES})
|
|
endif()
|
|
|
|
target_include_directories(${lib_name}
|
|
PRIVATE
|
|
"${PROJECT_SOURCE_DIR}/include"
|
|
${PLUG_INCLUDE_DIRS}
|
|
)
|
|
|
|
if(DEFINED LCMS2_LIBRARY_TARGET)
|
|
target_link_libraries(${lib_name} PRIVATE "${LCMS2_LIBRARY_TARGET}")
|
|
endif()
|
|
|
|
if(WIN32)
|
|
# Ensure plugin entrypoints using CMSEXPORT are exported from the DLL.
|
|
target_compile_definitions(${lib_name} PRIVATE CMS_DLL_BUILD)
|
|
endif()
|
|
|
|
set_target_properties(${lib_name} PROPERTIES
|
|
VERSION "${PROJECT_VERSION}.0"
|
|
SOVERSION "2"
|
|
)
|
|
|
|
set(_lcms2_plugin_targets "${LCMS2_PLUGIN_TARGETS}")
|
|
list(APPEND _lcms2_plugin_targets "${lib_name}")
|
|
set(LCMS2_PLUGIN_TARGETS "${_lcms2_plugin_targets}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(lcms2_add_plugins)
|
|
include(CMakeParseArguments)
|
|
|
|
# Populated by _lcms2_add_plugin() via PARENT_SCOPE into this function scope.
|
|
set(LCMS2_PLUGIN_TARGETS "")
|
|
|
|
if(LCMS2_WITH_FASTFLOAT)
|
|
_lcms2_add_plugin(lcms2_fast_float
|
|
SOURCES
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_8_curves.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_8_matsh_sse.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_8_matsh.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_8_tethra.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_16_tethra.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_15bits.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_15mats.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_cmyk.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_curves.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_matsh.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_separate.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_sup.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_tethra.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_lab.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/fast_float_internal.h"
|
|
INCLUDE_DIRS
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/include"
|
|
"${PROJECT_SOURCE_DIR}/plugins/fast_float/src/../include"
|
|
)
|
|
if(LCMS2_DEFINE_CMS_DONT_USE_SSE2)
|
|
target_compile_definitions(lcms2_fast_float PRIVATE CMS_DONT_USE_SSE2=1)
|
|
endif()
|
|
endif()
|
|
|
|
if(LCMS2_WITH_THREADED_PLUGIN)
|
|
_lcms2_add_plugin(lcms2_threaded
|
|
SOURCES
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/threaded_split.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/threaded_core.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/threaded_main.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/threaded_scheduler.c"
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/threaded_internal.h"
|
|
INCLUDE_DIRS
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/include"
|
|
"${PROJECT_SOURCE_DIR}/plugins/threaded/src/../include"
|
|
)
|
|
endif()
|
|
|
|
# Propagate plugin target list to the root scope so packaging (install + pc) can see it.
|
|
set(LCMS2_PLUGIN_TARGETS "${LCMS2_PLUGIN_TARGETS}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
|