Initial empty repository
[platform/upstream/opencv.git] / libpng / CMakeLists.txt
1 # ----------------------------------------------------------------------------
2 #  CMake file for libpng. See root CMakeLists.txt
3 #
4 # ----------------------------------------------------------------------------
5
6 if(ENABLE_NEON)
7   project(${PNG_LIBRARY} C ASM)
8 else()
9   project(${PNG_LIBRARY} C)
10 endif()
11
12 if(NOT WIN32)
13   find_library(M_LIBRARY
14     NAMES m
15     PATHS /usr/lib /usr/local/lib
16   )
17   if(NOT M_LIBRARY)
18     message(STATUS "math lib 'libm' not found; floating point support disabled")
19   endif()
20 else()
21   # not needed on windows
22   set(M_LIBRARY "")
23 endif()
24
25 ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" ${ZLIB_INCLUDE_DIRS})
26
27 file(GLOB lib_srcs *.c)
28 file(GLOB lib_hdrs *.h)
29
30
31 if(ARM OR AARCH64)
32   if(ENABLE_NEON)
33     if(NOT AARCH64)
34       list(APPEND lib_srcs arm/filter_neon.S)
35     endif()
36     list(APPEND lib_srcs arm/arm_init.c arm/filter_neon_intrinsics.c arm/palette_neon_intrinsics.c)
37     add_definitions(-DPNG_ARM_NEON_OPT=2)
38   else()
39     add_definitions(-DPNG_ARM_NEON_OPT=0) # NEON assembler is not supported
40   endif()
41 endif()
42
43 if(";${CPU_BASELINE_FINAL};" MATCHES "SSE2"
44     AND (NOT MSVC OR (MSVC_VERSION GREATER 1799))) # MSVS2013+ (issue #7232)
45   list(APPEND lib_srcs intel/intel_init.c intel/filter_sse2_intrinsics.c)
46   add_definitions(-DPNG_INTEL_SSE)
47 endif()
48
49 # set definitions and sources for MIPS
50 if(";${CPU_BASELINE_FINAL};" MATCHES "MSA")
51     list(APPEND lib_srcs mips/mips_init.c mips/filter_msa_intrinsics.c)
52     add_definitions(-DPNG_MIPS_MSA_OPT=2)
53     ocv_warnings_disable(CMAKE_C_FLAGS -Wshadow)
54 else()
55     add_definitions(-DPNG_MIPS_MSA_OPT=0)
56 endif()
57
58 if(PPC64LE OR PPC64)
59   # VSX3 features are backwards compatible
60   if(";${CPU_BASELINE_FINAL};" MATCHES "VSX.*"
61       AND NOT PPC64)
62     list(APPEND lib_srcs powerpc/powerpc_init.c powerpc/filter_vsx_intrinsics.c)
63     add_definitions(-DPNG_POWERPC_VSX_OPT=2)
64   else()
65     add_definitions(-DPNG_POWERPC_VSX_OPT=0)
66   endif()
67 endif()
68
69 # ----------------------------------------------------------------------------------
70 #         Define the library target:
71 # ----------------------------------------------------------------------------------
72
73 if(MSVC)
74   add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
75 endif(MSVC)
76
77 add_library(${PNG_LIBRARY} STATIC ${OPENCV_3RDPARTY_EXCLUDE_FROM_ALL} ${lib_srcs} ${lib_hdrs})
78 target_link_libraries(${PNG_LIBRARY} ${ZLIB_LIBRARIES})
79
80 ocv_warnings_disable(CMAKE_C_FLAGS -Wundef -Wcast-align -Wimplicit-fallthrough -Wunused-parameter -Wsign-compare
81     -Wmaybe-uninitialized
82     -Wnull-pointer-subtraction                   # clang15
83     -Wunused-but-set-variable                    # clang15
84 )
85
86 set_target_properties(${PNG_LIBRARY}
87   PROPERTIES OUTPUT_NAME ${PNG_LIBRARY}
88   DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
89   COMPILE_PDB_NAME ${PNG_LIBRARY}
90   COMPILE_PDB_NAME_DEBUG "${PNG_LIBRARY}${OPENCV_DEBUG_POSTFIX}"
91   ARCHIVE_OUTPUT_DIRECTORY ${3P_LIBRARY_OUTPUT_PATH}
92   )
93
94 if(ENABLE_SOLUTION_FOLDERS)
95   set_target_properties(${PNG_LIBRARY} PROPERTIES FOLDER "3rdparty")
96 endif()
97
98 if(NOT BUILD_SHARED_LIBS)
99   ocv_install_target(${PNG_LIBRARY} EXPORT OpenCVModules ARCHIVE DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT dev OPTIONAL)
100 endif()
101
102 ocv_install_3rdparty_licenses(libpng LICENSE README)