blob: d9b7be1bc2ae9acf05b1a230e553e3c022fac415 (
plain)
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
|
cmake_minimum_required(VERSION 3.16)
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
find_package(Boost REQUIRED COMPONENTS thread)
find_package(ZLIB REQUIRED)
find_package(mo2-dds-header CONFIG REQUIRED)
# lz4: try CONFIG first, fall back to pkg-config
find_package(lz4 CONFIG QUIET)
if (NOT lz4_FOUND)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LZ4 REQUIRED IMPORTED_TARGET liblz4)
endif()
# lz4 1.10+ exports LZ4::lz4, older versions export lz4::lz4
if(TARGET LZ4::lz4 AND NOT TARGET lz4::lz4)
add_library(lz4::lz4 ALIAS LZ4::lz4)
endif()
add_library(bsatk STATIC)
target_link_libraries(bsatk
PUBLIC mo2::dds-header
PRIVATE ZLIB::ZLIB Boost::thread
)
# Link lz4 based on how it was found
if (lz4_FOUND)
target_link_libraries(bsatk PRIVATE lz4::lz4)
else()
target_link_libraries(bsatk PRIVATE PkgConfig::LZ4)
endif()
target_sources(bsatk
PRIVATE
bsaarchive.cpp
bsaexception.cpp
bsafile.cpp
bsafolder.cpp
bsatypes.cpp
filehash.cpp
PUBLIC
FILE_SET HEADERS
BASE_DIRS ${CMAKE_CURRENT_LIST_DIR}/../include
FILES
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsaarchive.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsaexception.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsafile.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsafolder.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsatk.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/bsatypes.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/errorcodes.h
${CMAKE_CURRENT_LIST_DIR}/../include/bsatk/filehash.h
)
set_target_properties(bsatk PROPERTIES CXX_STANDARD 20)
# for building
target_include_directories(bsatk PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../include/bsatk)
if (MSVC)
target_compile_options(bsatk
PRIVATE
"/MP"
"/W4"
"/external:anglebrackets"
"/external:W0"
)
target_link_options(bsatk
PRIVATE
$<$<CONFIG:RelWithDebInfo>:/LTCG /INCREMENTAL:NO /OPT:REF /OPT:ICF>
)
set_target_properties(bsatk PROPERTIES VS_STARTUP_PROJECT bsatk)
endif()
add_library(mo2::bsatk ALIAS bsatk)
# install
install(TARGETS bsatk EXPORT bsatkTargets FILE_SET HEADERS)
install(EXPORT bsatkTargets
FILE mo2-bsatk-targets.cmake
NAMESPACE mo2::
DESTINATION lib/cmake/mo2-bsatk
)
|