|
| 1 | +cmake_minimum_required (VERSION 3.15) |
| 2 | +project (neo_vague_denoiser CXX) |
| 3 | +file(GLOB CODE "src/*.cpp") |
| 4 | +file(GLOB SSE_CODE_IMPL "src/*SSE.cpp") |
| 5 | +file(GLOB AVX_CODE_IMPL "src/*AVX.cpp") |
| 6 | +add_library(neo-vague-denoiser SHARED main.cpp src/version.rc ${CODE} ${CODE_IMPL}) |
| 7 | +set_property(TARGET neo-vague-denoiser PROPERTY CXX_STANDARD 17) |
| 8 | +add_compile_definitions(VS_TARGET_CPU_X86) |
| 9 | + |
| 10 | +find_package(Git REQUIRED) |
| 11 | +execute_process(COMMAND ${GIT_EXECUTABLE} describe --first-parent --tags --always OUTPUT_VARIABLE GIT_REPO_VERSION) |
| 12 | +string(REGEX REPLACE "(r[0-9]+).*" "\\1" VERSION ${GIT_REPO_VERSION}) |
| 13 | + |
| 14 | +configure_file ( |
| 15 | + "${PROJECT_SOURCE_DIR}/src/version.hpp.in" |
| 16 | + "${PROJECT_SOURCE_DIR}/src/version.hpp" |
| 17 | +) |
| 18 | +configure_file ( |
| 19 | + "${PROJECT_SOURCE_DIR}/src/version.rc.in" |
| 20 | + "${PROJECT_SOURCE_DIR}/src/version.rc" |
| 21 | +) |
| 22 | + |
| 23 | +find_package(PkgConfig REQUIRED) |
| 24 | + |
| 25 | +pkg_check_modules(AVISYNTH avisynth) |
| 26 | +if(AVISYNTH_FOUND) |
| 27 | + include_directories(${AVISYNTH_INCLUDE_DIRS}) |
| 28 | +else() |
| 29 | + include_directories(include/avisynth) |
| 30 | +endif() |
| 31 | + |
| 32 | +pkg_check_modules(VAPOURSYNTH vapoursynth) |
| 33 | +if(VAPOURSYNTH_FOUND) |
| 34 | + include_directories(${VAPOURSYNTH_INCLUDE_DIRS}) |
| 35 | +else() |
| 36 | + include_directories(include/vapoursynth) |
| 37 | +endif() |
| 38 | + |
| 39 | +include_directories(.) |
| 40 | +include_directories(include/dualsynth) |
| 41 | + |
| 42 | +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") |
| 43 | + set_source_files_properties(${SSE_CODE_IMPL} PROPERTIES COMPILE_FLAGS "/arch:SSE") |
| 44 | + set_source_files_properties(${AVX_CODE_IMPL} PROPERTIES COMPILE_FLAGS "/arch:AVX") |
| 45 | + |
| 46 | + if (CMAKE_GENERATOR_TOOLSET MATCHES "v[0-9]*_xp") |
| 47 | + target_compile_definitions(neo-vague-denoiser PRIVATE WINVER=0x502 _WIN32_WINNT=0x502) |
| 48 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:threadSafeInit-") |
| 49 | + endif() |
| 50 | + |
| 51 | +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") |
| 52 | + set_source_files_properties(${SSE_CODE_IMPL} PROPERTIES COMPILE_FLAGS "/arch:SSE") |
| 53 | + set_source_files_properties(${AVX_CODE_IMPL} PROPERTIES COMPILE_FLAGS "/arch:AVX") |
| 54 | + target_link_libraries(neo-vague-denoiser libmmds) |
| 55 | + |
| 56 | +else() |
| 57 | + set_source_files_properties(${SSE_CODE_IMPL} PROPERTIES COMPILE_FLAGS "-msse") |
| 58 | + set_source_files_properties(${AVX_CODE_IMPL} PROPERTIES COMPILE_FLAGS "-mfma -mavx") |
| 59 | + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 60 | + target_link_libraries(neo-vague-denoiser tbb) |
| 61 | + endif() |
| 62 | + |
| 63 | +endif() |
| 64 | + |
| 65 | +add_custom_command( |
| 66 | + TARGET neo-vague-denoiser POST_BUILD |
| 67 | + COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:neo-vague-denoiser> "../Release_${VERSION}/${_DIR}/$<TARGET_FILE_NAME:neo-vague-denoiser>" |
| 68 | +) |
0 commit comments