File: CMakeLists.txt

package info (click to toggle)
x265 4.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,452 kB
  • sloc: asm: 187,063; cpp: 118,996; ansic: 741; makefile: 146; sh: 91; python: 11
file content (153 lines) | stat: -rw-r--r-- 6,095 bytes parent folder | download | duplicates (5)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# vim: syntax=cmake
if(ENABLE_HDR10_PLUS)

add_library(dynamicHDR10 OBJECT 
    BasicStructures.h
    json11/json11.cpp json11/json11.h
    JsonHelper.cpp JsonHelper.h
    metadataFromJson.cpp metadataFromJson.h
    SeiMetadataDictionary.cpp SeiMetadataDictionary.h
    hdr10plus.h
    api.cpp )

cmake_minimum_required (VERSION 2.8.11)
project(dynamicHDR10)
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckSymbolExists)
include(CheckCXXCompilerFlag)

SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")

if(GCC)
    add_definitions(-Wall -Wextra -Wshadow)
    add_definitions(-D__STDC_LIMIT_MACROS=1)
    add_definitions(-std=c++11)
    if(ENABLE_PIC)
         add_definitions(-fPIC)
    endif(ENABLE_PIC)
    if(NATIVE_BUILD)
        if(INTEL_CXX)
            add_definitions(-xhost)
        else()
            add_definitions(-march=native)
        endif()
    elseif(X86 AND NOT X64)
        string(FIND "${CMAKE_CXX_FLAGS}" "-march" marchPos)
        if(marchPos LESS "0")
            add_definitions(-march=i686)
            if(WIN32 AND NOT INTEL_CXX AND NOT CLANG AND
               CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
                add_definitions(-mpreferred-stack-boundary=2)
            endif()
        endif()
    endif()
    if(ARM AND CROSS_COMPILE_ARM)
        set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC)
    elseif(ARM)
        find_package(Neon)
        if(CPU_HAS_NEON)
            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)
            add_definitions(-DHAVE_NEON)
        else()
            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
        endif()
    endif()
    add_definitions(${ARM_ARGS})
    if(FPROFILE_GENERATE)
        if(INTEL_CXX)
            add_definitions(-prof-gen -prof-dir="${CMAKE_CURRENT_BINARY_DIR}")
            list(APPEND LINKER_OPTIONS "-prof-gen")
        else()
            check_cxx_compiler_flag(-fprofile-generate CC_HAS_PROFILE_GENERATE)
            if(CC_HAS_PROFILE_GENERATE)
                add_definitions(-fprofile-generate)
                list(APPEND LINKER_OPTIONS "-fprofile-generate")
            endif(CC_HAS_PROFILE_GENERATE)
        endif(INTEL_CXX)
    endif(FPROFILE_GENERATE)
    if(FPROFILE_USE)
        if(INTEL_CXX)
            add_definitions(-prof-use -prof-dir="${CMAKE_CURRENT_BINARY_DIR}")
            list(APPEND LINKER_OPTIONS "-prof-use")
        else()
            check_cxx_compiler_flag(-fprofile-use CC_HAS_PROFILE_USE)
            check_cxx_compiler_flag(-fprofile-correction CC_HAS_PROFILE_CORRECTION)
            check_cxx_compiler_flag(-Wno-error=coverage-mismatch CC_HAS_COVMISMATCH)
            if(CC_HAS_PROFILE_USE)
                add_definitions(-fprofile-use)
                list(APPEND LINKER_OPTIONS "-fprofile-use")
            endif(CC_HAS_PROFILE_USE)
            if(CC_HAS_PROFILE_CORRECTION)
                # auto-correct corrupted counters (happens a lot with x265)
                add_definitions(-fprofile-correction)
            endif(CC_HAS_PROFILE_CORRECTION)
            if(CC_HAS_COVMISMATCH)
                # ignore coverage mismatches (also happens a lot)
                add_definitions(-Wno-error=coverage-mismatch)
            endif(CC_HAS_COVMISMATCH)
        endif(INTEL_CXX)
    endif(FPROFILE_USE)
    if(STATIC_LINK_CRT)
        add_definitions(-static)
        list(APPEND LINKER_OPTIONS "-static")
    endif(STATIC_LINK_CRT)
    check_cxx_compiler_flag(-Wno-strict-overflow CC_HAS_NO_STRICT_OVERFLOW)
    check_cxx_compiler_flag(-Wno-narrowing CC_HAS_NO_NARROWING) 
    check_cxx_compiler_flag(-Wno-array-bounds CC_HAS_NO_ARRAY_BOUNDS) 
    if (CC_HAS_NO_ARRAY_BOUNDS)
        add_definitions(-Wno-array-bounds) # these are unhelpful
    endif()
    check_cxx_compiler_flag(-ffast-math CC_HAS_FAST_MATH) 
    if (CC_HAS_FAST_MATH)
        add_definitions(-ffast-math)
    endif()
    check_cxx_compiler_flag(-mstackrealign CC_HAS_STACK_REALIGN) 
    if (CC_HAS_STACK_REALIGN)
        add_definitions(-mstackrealign)
    endif()
    # Disable exceptions. Reduce executable size, increase compability.
    check_cxx_compiler_flag(-fno-exceptions CC_HAS_FNO_EXCEPTIONS_FLAG)
    if(CC_HAS_FNO_EXCEPTIONS_FLAG)
        add_definitions(-fno-exceptions)
    endif()
    set(FSANITIZE "" CACHE STRING "-fsanitize options for GCC/clang")
    if(FSANITIZE)
        add_definitions(-fsanitize=${FSANITIZE})
        # clang and gcc need the sanitize options to be passed at link
        # time so the appropriate ASAN/TSAN runtime libraries can be
        # linked.
        list(APPEND LINKER_OPTIONS "-fsanitize=${FSANITIZE}")
    endif()
    option(ENABLE_AGGRESSIVE_CHECKS "Enable stack protection and -ftrapv" OFF)
    if(ENABLE_AGGRESSIVE_CHECKS)
        # use with care, -ftrapv can cause testbench SIGILL exceptions
        # since it is testing corner cases of signed integer math
        add_definitions(-DUSING_FTRAPV=1)
        check_cxx_compiler_flag(-fsanitize=undefined-trap CC_HAS_CATCH_UNDEFINED) # clang
        check_cxx_compiler_flag(-ftrapv CC_HAS_FTRAPV)                            # gcc
        check_cxx_compiler_flag(-fstack-protector-all CC_HAS_STACK_PROTECT)       # gcc
        if(CC_HAS_FTRAPV)
            add_definitions(-ftrapv)
        endif()
        if(CC_HAS_CATCH_UNDEFINED)
            add_definitions(-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error)
        endif()
        if(CC_HAS_STACK_PROTECT)
            add_definitions(-fstack-protector-all)
            if(MINGW)
                list(APPEND PLATFORM_LIBS ssp)
            endif()
        endif()
    endif(ENABLE_AGGRESSIVE_CHECKS)
    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CC_VERSION)
endif(GCC)

# Build options
set(LIB_INSTALL_DIR lib CACHE STRING "Install location of libraries")
set(BIN_INSTALL_DIR bin CACHE STRING "Install location of executables")
    
option(ENABLE_SHARED "Build shared library" OFF)

install(FILES hdr10plus.h DESTINATION include)
endif()