-
Notifications
You must be signed in to change notification settings - Fork 1
/
CMakeLists.txt
100 lines (79 loc) · 2.78 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.16)
project(libbutteraugli LANGUAGES CXX)
set(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/Butteraugli.cpp)
if (WIN32)
set(sources ${sources} ${CMAKE_CURRENT_SOURCE_DIR}/src/Butteraugli.rc)
endif ()
add_library(butteraugli SHARED ${sources})
if (UNIX)
target_include_directories(butteraugli PRIVATE /usr/local/include/avisynth)
else ()
target_include_directories(butteraugli PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../AviSynthPlus/avs_core/include")
endif ()
target_include_directories(butteraugli PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/libjxl
${CMAKE_CURRENT_SOURCE_DIR}/libjxl/jxl_install/include
)
if (NOT CMAKE_GENERATOR MATCHES "Visual Studio")
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
endif()
string(TOLOWER ${CMAKE_BUILD_TYPE} build_type)
if (build_type STREQUAL debug)
target_compile_definitions(butteraugli PRIVATE DEBUG_BUILD)
else (build_type STREQUAL release)
target_compile_definitions(butteraugli PRIVATE RELEASE_BUILD)
endif()
message(STATUS "Build type - ${CMAKE_BUILD_TYPE}")
endif()
target_compile_features(butteraugli PRIVATE cxx_std_17)
find_library(libjxl
NAMES jxl jxl-static
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/libjxl/jxl_install/lib
)
find_library(libhwy NAMES hwy PATHS ${CMAKE_CURRENT_SOURCE_DIR}/libjxl/jxl_install/lib NO_DEFAULT_PATH)
message(STATUS "Butteraugli: find_library returned ${libjxl}")
message(STATUS "Butteraugli: find_library returned ${libhwy}")
target_link_libraries(butteraugli PRIVATE
${libjxl}
${libhwy}
)
if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
target_link_libraries(butteraugli PRIVATE
libmmds
svml_disp
)
endif ()
if (MINGW)
target_link_libraries(butteraugli PRIVATE -static-libstdc++ -static-libgcc -s)
endif()
if (WIN32)
set_target_properties(butteraugli PROPERTIES
PREFIX ""
OUTPUT_NAME "Butteraugli"
)
else ()
find_package (Git)
if (GIT_FOUND)
execute_process (COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
OUTPUT_VARIABLE ver
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else ()
message (STATUS "GIT not found")
endif ()
set_target_properties(butteraugli PROPERTIES OUTPUT_NAME "butteraugli.${ver}")
endif ()
if (UNIX)
include(GNUInstallDirs)
INSTALL(TARGETS butteraugli LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/avisynth")
# uninstall target
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif ()
endif ()