File: LocalJpeg.cmake

package info (click to toggle)
libavif 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 20,956 kB
  • sloc: ansic: 29,303; cpp: 13,260; sh: 1,145; xml: 1,040; java: 307; makefile: 51
file content (81 lines) | stat: -rw-r--r-- 3,893 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
set(AVIF_JPEG_TAG "3.1.0")

add_library(JPEG::JPEG STATIC IMPORTED GLOBAL)

if(MSVC)
    set(JPEG_STATIC_SUFFIX "-static")
else()
    set(JPEG_STATIC_SUFFIX "")
endif()
set(LIB_BASENAME "${CMAKE_STATIC_LIBRARY_PREFIX}jpeg${JPEG_STATIC_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(LIB_DIR "${AVIF_SOURCE_DIR}/ext/libjpeg-turbo/build.libavif")
set(LIB_FILENAME "${LIB_DIR}/${LIB_BASENAME}")
if(EXISTS "${LIB_FILENAME}")
    message(STATUS "libavif(AVIF_JPEG=LOCAL): ${LIB_FILENAME} found, using for local JPEG")
    set_target_properties(JPEG::JPEG PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}")
    set(JPEG_INCLUDE_DIR "${AVIF_SOURCE_DIR}/ext/libjpeg-turbo/src")
else()
    message(STATUS "libavif(AVIF_JPEG=LOCAL): ${LIB_FILENAME} not found, fetching")
    set(LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/libjpeg/src/libjpeg-build")
    get_property(JPEG_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
    if(JPEG_IS_MULTI_CONFIG)
        set(LIB_FILENAME_DEBUG "${LIB_DIR}/Debug/${LIB_BASENAME}")
        set(LIB_FILENAME_RELEASE "${LIB_DIR}/Release/${LIB_BASENAME}")
        set(LIB_FILENAME_RELWITHDEBINFO "${LIB_DIR}/RelWithDebInfo/${LIB_BASENAME}")
        set(LIB_FILENAME_MINSIZEREL "${LIB_DIR}/MinSizeRel/${LIB_BASENAME}")
        set(BUILD_BYPRODUCTS "${LIB_FILENAME_DEBUG}" "${LIB_FILENAME_RELEASE}" "${LIB_FILENAME_RELWITHDEBINFO}"
                             "${LIB_FILENAME_MINSIZEREL}"
        )
        set_target_properties(
            JPEG::JPEG
            PROPERTIES IMPORTED_LOCATION_DEBUG "${LIB_FILENAME_DEBUG}"
                       IMPORTED_LOCATION_RELEASE "${LIB_FILENAME_RELEASE}"
                       IMPORTED_LOCATION_RELWITHDEBINFO "${LIB_FILENAME_RELWITHDEBINFO}"
                       IMPORTED_LOCATION_MINSIZEREL "${LIB_FILENAME_MINSIZEREL}"
        )
    else()
        set(LIB_FILENAME "${LIB_DIR}/${LIB_BASENAME}")
        set(BUILD_BYPRODUCTS "${LIB_FILENAME}")
        set_target_properties(JPEG::JPEG PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}")
    endif()

    set(JPEG_INSTALL_DIR "${prefix}/libjpeg-install")

    # Set WITH_CRT_DLL to ON to compile libjpeg-turbo with /MD (use the DLL
    # version of the run-time library) instead of /MT (use the static version
    # of the run-time library) on Windows. On non-Windows platform, this causes
    # a CMake warning, which is safe to ignore:
    #   Manually-specified variables were not used by the project:
    #
    #     WITH_CRT_DLL
    ExternalProject_Add(
        libjpeg
        PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libjpeg
        GIT_REPOSITORY "https://github.com/libjpeg-turbo/libjpeg-turbo.git"
        GIT_TAG "${AVIF_JPEG_TAG}"
        LIST_SEPARATOR |
        BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> --target jpeg-static
        CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
                   -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
                   -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
                   -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
                   -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
                   -DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
                   -DENABLE_SHARED=OFF
                   -DENABLE_STATIC=ON
                   -DCMAKE_BUILD_TYPE=Release
                   -DWITH_TURBOJPEG=OFF
                   -DWITH_CRT_DLL=ON
        BUILD_BYPRODUCTS ${BUILD_BYPRODUCTS}
        INSTALL_COMMAND ""
    )
    add_dependencies(JPEG::JPEG libjpeg)
    set(JPEG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/libjpeg/src/libjpeg/src)
endif()

set_target_properties(JPEG::JPEG PROPERTIES AVIF_LOCAL ON)
target_include_directories(JPEG::JPEG INTERFACE $<INSTALL_INTERFACE:"${JPEG_INCLUDE_DIR}">)

# Also add the build directory path because it contains jconfig.h,
# which is included by jpeglib.h.
target_include_directories(JPEG::JPEG INTERFACE "${LIB_DIR}")