2 set(SSE3 vec/dct-sse3.cpp)
3 set(SSSE3 vec/dct-ssse3.cpp)
4 set(SSE41 vec/dct-sse41.cpp)
7 set(PRIMITIVES ${SSE3} ${SSSE3} ${SSE41})
8 set(WARNDISABLE "/wd4100") # unreferenced formal parameter
10 add_definitions(/Qwd111) # statement is unreachable
11 add_definitions(/Qwd128) # loop is unreachable
12 add_definitions(/Qwd177) # declared function is unused
13 add_definitions(/Qwd185) # dynamic initialization in unreachable code
14 add_definitions(/Qwd280) # conditional expression is constant
17 set_source_files_properties(${SSE3} ${SSSE3} ${SSE41} PROPERTIES COMPILE_FLAGS "${WARNDISABLE}")
19 # x64 implies SSE4, so only add /arch:SSE2 if building for Win32
20 set_source_files_properties(${SSE3} ${SSSE3} ${SSE41} PROPERTIES COMPILE_FLAGS "${WARNDISABLE} /arch:SSE2")
25 # llvm intrinsic headers cause shadow warnings
26 set(WARNDISABLE "-Wno-shadow -Wno-unused-parameter")
28 set(WARNDISABLE "-Wno-unused-parameter")
30 if(INTEL_CXX OR CLANG OR (NOT CC_VERSION VERSION_LESS 4.3))
31 set(PRIMITIVES ${SSE3} ${SSSE3} ${SSE41})
32 set_source_files_properties(${SSE3} PROPERTIES COMPILE_FLAGS "${WARNDISABLE} -msse3")
33 set_source_files_properties(${SSSE3} PROPERTIES COMPILE_FLAGS "${WARNDISABLE} -mssse3")
34 set_source_files_properties(${SSE41} PROPERTIES COMPILE_FLAGS "${WARNDISABLE} -msse4.1")
37 set(VEC_PRIMITIVES vec/vec-primitives.cpp ${PRIMITIVES})
38 source_group(Intrinsics FILES ${VEC_PRIMITIVES})
41 set_source_files_properties(primitives.cpp PROPERTIES COMPILE_FLAGS -DENABLE_ASSEMBLY=1)
42 set(C_SRCS asm-primitives.cpp pixel.h mc.h ipfilter8.h blockcopy8.h dct8.h loopfilter.h)
43 set(A_SRCS pixel-a.asm const-a.asm cpu-a.asm ssd-a.asm mc-a.asm
44 mc-a2.asm pixel-util8.asm blockcopy8.asm
45 pixeladd8.asm dct8.asm)
47 set(A_SRCS ${A_SRCS} sad16-a.asm intrapred16.asm ipfilter16.asm)
49 set(A_SRCS ${A_SRCS} sad-a.asm intrapred8.asm ipfilter8.asm loopfilter.asm)
53 set(A_SRCS ${A_SRCS} pixel-32.asm)
57 # MSVC requires custom build rules in the main cmake script for yasm
58 set(MSVC_ASMS "${A_SRCS}" CACHE INTERNAL "yasm sources")
62 enable_language(ASM_YASM)
64 foreach(SRC ${A_SRCS} ${C_SRCS})
65 set(ASM_PRIMITIVES ${ASM_PRIMITIVES} x86/${SRC})
67 source_group(Assembly FILES ${ASM_PRIMITIVES})
68 endif(ENABLE_ASSEMBLY)
70 check_symbol_exists(strtok_r "string.h" HAVE_STRTOK_R)
72 set_source_files_properties(param.cpp PROPERTIES COMPILE_FLAGS -DHAVE_STRTOK_R=1)
75 if(GCC AND CC_HAS_NO_NARROWING)
76 set_source_files_properties(cpu.cpp PROPERTIES COMPILE_FLAGS -Wno-narrowing)
79 set(WINXP winxp.h winxp.cpp)
82 set_source_files_properties(version.cpp PROPERTIES COMPILE_FLAGS -DX265_VERSION=${X265_VERSION})
84 add_library(common OBJECT
85 ${ASM_PRIMITIVES} ${VEC_PRIMITIVES}
86 ${LIBCOMMON_SRC} ${LIBCOMMON_HDR} ${WINXP}
87 primitives.cpp primitives.h
88 pixel.cpp dct.cpp ipfilter.cpp intrapred.cpp loopfilter.cpp
89 constants.cpp constants.h
90 cpu.cpp cpu.h version.cpp
91 threading.cpp threading.h
92 threadpool.cpp threadpool.h
93 wavefront.h wavefront.cpp
95 bitstream.h bitstream.cpp
97 shortyuv.cpp shortyuv.h
102 framedata.cpp framedata.h
105 lowres.cpp lowres.h mv.h
106 piclist.cpp piclist.h
107 predict.cpp predict.h
108 scalinglist.cpp scalinglist.h
109 quant.cpp quant.h contexts.h
110 deblock.cpp deblock.h)