microsoft/onnxruntime-extensions
Publicmirrored fromhttps://github.com/microsoft/onnxruntime-extensionsAvailable
cmake/ext_imgcodecs.cmake
166lines · modecode
| 1 | # Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | # Licensed under the MIT License. |
| 3 | |
| 4 | set(_IMGCODEC_ROOT_DIR ${dlib_SOURCE_DIR}/dlib/external) |
| 5 | |
| 6 | # ---------------------------------------------------------------------------- |
| 7 | # project libpng |
| 8 | # |
| 9 | # ---------------------------------------------------------------------------- |
| 10 | # Default PNG target |
| 11 | set (PNG_LIBRARY "libpng_static_c") |
| 12 | |
| 13 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64|ppc64le|powerpc") |
| 14 | message(STATUS "Using upstream libpng for PowerPC") |
| 15 | |
| 16 | include(FetchContent) |
| 17 | |
| 18 | FetchContent_Declare( |
| 19 | libpng_external |
| 20 | GIT_REPOSITORY https://github.com/pnggroup/libpng.git |
| 21 | GIT_TAG v1.6.58 # pinned release tag |
| 22 | ) |
| 23 | |
| 24 | FetchContent_MakeAvailable(libpng_external) |
| 25 | # Use libpng's CMake target |
| 26 | set (PNG_LIBRARY "png_static") |
| 27 | |
| 28 | else() |
| 29 | # default (dlib bundled) |
| 30 | set(libPNG_SOURCE_DIR ${_IMGCODEC_ROOT_DIR}/libpng) |
| 31 | |
| 32 | set (zlib_SOURCE_DIR ${_IMGCODEC_ROOT_DIR}/zlib) |
| 33 | |
| 34 | if(NOT WIN32) |
| 35 | find_library(M_LIBRARY |
| 36 | NAMES m |
| 37 | PATHS /usr/lib /usr/local/lib |
| 38 | ) |
| 39 | if(NOT M_LIBRARY) |
| 40 | message(STATUS "math lib 'libm' not found; floating point support disabled") |
| 41 | endif() |
| 42 | else() |
| 43 | # not needed on windows |
| 44 | set(M_LIBRARY "") |
| 45 | endif() |
| 46 | |
| 47 | # Add architecture-specific PNG optimizations |
| 48 | set(lib_srcs) |
| 49 | list(APPEND lib_srcs |
| 50 | ${libPNG_SOURCE_DIR}/arm/arm_init.c |
| 51 | ${libPNG_SOURCE_DIR}/arm/filter_neon_intrinsics.c |
| 52 | ${libPNG_SOURCE_DIR}/arm/palette_neon_intrinsics.c |
| 53 | ) |
| 54 | |
| 55 | # Common PNG sources |
| 56 | list(APPEND lib_srcs |
| 57 | ${libPNG_SOURCE_DIR}//png.c |
| 58 | ${libPNG_SOURCE_DIR}//pngerror.c |
| 59 | ${libPNG_SOURCE_DIR}//pngget.c |
| 60 | ${libPNG_SOURCE_DIR}//pngmem.c |
| 61 | ${libPNG_SOURCE_DIR}//pngpread.c |
| 62 | ${libPNG_SOURCE_DIR}//pngread.c |
| 63 | ${libPNG_SOURCE_DIR}//pngrio.c |
| 64 | ${libPNG_SOURCE_DIR}//pngrtran.c |
| 65 | ${libPNG_SOURCE_DIR}//pngrutil.c |
| 66 | ${libPNG_SOURCE_DIR}//pngset.c |
| 67 | ${libPNG_SOURCE_DIR}//pngtrans.c |
| 68 | ${libPNG_SOURCE_DIR}//pngwio.c |
| 69 | ${libPNG_SOURCE_DIR}//pngwrite.c |
| 70 | ${libPNG_SOURCE_DIR}//pngwtran.c |
| 71 | ${libPNG_SOURCE_DIR}//pngwutil.c |
| 72 | ${zlib_SOURCE_DIR}/adler32.c |
| 73 | ${zlib_SOURCE_DIR}/compress.c |
| 74 | ${zlib_SOURCE_DIR}/crc32.c |
| 75 | ${zlib_SOURCE_DIR}/deflate.c |
| 76 | ${zlib_SOURCE_DIR}/gzclose.c |
| 77 | ${zlib_SOURCE_DIR}/gzlib.c |
| 78 | ${zlib_SOURCE_DIR}/gzread.c |
| 79 | ${zlib_SOURCE_DIR}/gzwrite.c |
| 80 | ${zlib_SOURCE_DIR}/infback.c |
| 81 | ${zlib_SOURCE_DIR}/inffast.c |
| 82 | ${zlib_SOURCE_DIR}/inflate.c |
| 83 | ${zlib_SOURCE_DIR}/inftrees.c |
| 84 | ${zlib_SOURCE_DIR}/trees.c |
| 85 | ${zlib_SOURCE_DIR}/uncompr.c |
| 86 | ${zlib_SOURCE_DIR}/zutil.c |
| 87 | ) |
| 88 | add_library(${PNG_LIBRARY} STATIC EXCLUDE_FROM_ALL ${lib_srcs}) |
| 89 | target_include_directories(${PNG_LIBRARY} BEFORE PUBLIC ${zlib_SOURCE_DIR}) |
| 90 | |
| 91 | if(MSVC) |
| 92 | target_compile_definitions(${PNG_LIBRARY} PRIVATE -D_CRT_SECURE_NO_DEPRECATE) |
| 93 | else() |
| 94 | target_compile_options(${PNG_LIBRARY} PRIVATE -Wno-deprecated-non-prototype) |
| 95 | endif() |
| 96 | |
| 97 | set_target_properties(${PNG_LIBRARY} |
| 98 | PROPERTIES |
| 99 | POSITION_INDEPENDENT_CODE ON |
| 100 | FOLDER externals) |
| 101 | |
| 102 | endif() |
| 103 | # ---------------------------------------------------------------------------- |
| 104 | # project libjpeg |
| 105 | # |
| 106 | # ---------------------------------------------------------------------------- |
| 107 | set(JPEG_LIBRARY "libjpeg_static_c") |
| 108 | set(libJPEG_SOURCE_DIR ${_IMGCODEC_ROOT_DIR}/libjpeg) |
| 109 | |
| 110 | set(lib_srcs |
| 111 | ${libJPEG_SOURCE_DIR}/jaricom.c |
| 112 | ${libJPEG_SOURCE_DIR}/jcapimin.c |
| 113 | ${libJPEG_SOURCE_DIR}/jcapistd.c |
| 114 | ${libJPEG_SOURCE_DIR}/jcarith.c |
| 115 | ${libJPEG_SOURCE_DIR}/jccoefct.c |
| 116 | ${libJPEG_SOURCE_DIR}/jccolor.c |
| 117 | ${libJPEG_SOURCE_DIR}/jcdctmgr.c |
| 118 | ${libJPEG_SOURCE_DIR}/jchuff.c |
| 119 | ${libJPEG_SOURCE_DIR}/jcinit.c |
| 120 | ${libJPEG_SOURCE_DIR}/jcmainct.c |
| 121 | ${libJPEG_SOURCE_DIR}/jcmarker.c |
| 122 | ${libJPEG_SOURCE_DIR}/jcmaster.c |
| 123 | ${libJPEG_SOURCE_DIR}/jcomapi.c |
| 124 | ${libJPEG_SOURCE_DIR}/jcparam.c |
| 125 | ${libJPEG_SOURCE_DIR}/jcprepct.c |
| 126 | ${libJPEG_SOURCE_DIR}/jcsample.c |
| 127 | ${libJPEG_SOURCE_DIR}/jdapimin.c |
| 128 | ${libJPEG_SOURCE_DIR}/jdapistd.c |
| 129 | ${libJPEG_SOURCE_DIR}/jdarith.c |
| 130 | ${libJPEG_SOURCE_DIR}/jdatadst.c |
| 131 | ${libJPEG_SOURCE_DIR}/jdatasrc.c |
| 132 | ${libJPEG_SOURCE_DIR}/jdcoefct.c |
| 133 | ${libJPEG_SOURCE_DIR}/jdcolor.c |
| 134 | ${libJPEG_SOURCE_DIR}/jddctmgr.c |
| 135 | ${libJPEG_SOURCE_DIR}/jdhuff.c |
| 136 | ${libJPEG_SOURCE_DIR}/jdinput.c |
| 137 | ${libJPEG_SOURCE_DIR}/jdmainct.c |
| 138 | ${libJPEG_SOURCE_DIR}/jdmarker.c |
| 139 | ${libJPEG_SOURCE_DIR}/jdmaster.c |
| 140 | ${libJPEG_SOURCE_DIR}/jdmerge.c |
| 141 | ${libJPEG_SOURCE_DIR}/jdpostct.c |
| 142 | ${libJPEG_SOURCE_DIR}/jdsample.c |
| 143 | ${libJPEG_SOURCE_DIR}/jerror.c |
| 144 | ${libJPEG_SOURCE_DIR}/jfdctflt.c |
| 145 | ${libJPEG_SOURCE_DIR}/jfdctfst.c |
| 146 | ${libJPEG_SOURCE_DIR}/jfdctint.c |
| 147 | ${libJPEG_SOURCE_DIR}/jidctflt.c |
| 148 | ${libJPEG_SOURCE_DIR}/jidctfst.c |
| 149 | ${libJPEG_SOURCE_DIR}/jidctint.c |
| 150 | ${libJPEG_SOURCE_DIR}/jmemmgr.c |
| 151 | ${libJPEG_SOURCE_DIR}/jmemnobs.c |
| 152 | ${libJPEG_SOURCE_DIR}/jquant1.c |
| 153 | ${libJPEG_SOURCE_DIR}/jquant2.c |
| 154 | ${libJPEG_SOURCE_DIR}/jutils.c |
| 155 | ) |
| 156 | file(GLOB lib_hdrs ${libJPEG_SOURCE_DIR}/*.h) |
| 157 | add_library(${JPEG_LIBRARY} STATIC EXCLUDE_FROM_ALL ${lib_srcs} ${lib_hdrs}) |
| 158 | |
| 159 | if(NOT MSVC) |
| 160 | set_source_files_properties(jcdctmgr.c PROPERTIES COMPILE_FLAGS "-O1") |
| 161 | endif() |
| 162 | target_compile_definitions(${JPEG_LIBRARY} PRIVATE -DNO_MKTEMP) |
| 163 | set_target_properties(${JPEG_LIBRARY} |
| 164 | PROPERTIES |
| 165 | POSITION_INDEPENDENT_CODE ON |
| 166 | FOLDER externals) |
| 167 | |