git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / build / meson / meson.build
1 # #############################################################################
2 # Copyright (c) 2018-present     Dima Krasner <dima@dimakrasner.com>
3 #                                lzutao <taolzu(at)gmail.com>
4 # All rights reserved.
5 #
6 # This source code is licensed under both the BSD-style license (found in the
7 # LICENSE file in the root directory of this source tree) and the GPLv2 (found
8 # in the COPYING file in the root directory of this source tree).
9 # #############################################################################
10
11 project('zstd',
12   ['c', 'cpp'],
13   license: ['BSD', 'GPLv2'],
14   default_options : [
15     # There shouldn't be any need to force a C standard convention for zstd
16     # but in case one would want that anyway, this can be done here.
17     # 'c_std=gnu99',
18     # c++11 standard is useful for pzstd
19     'cpp_std=c++11',
20     'buildtype=release',
21     'warning_level=3',
22     # -Wdocumentation does not actually pass, nor do the test binaries,
23     # so this isn't safe
24     #'werror=true'
25   ],
26   version: run_command(
27     find_program('GetZstdLibraryVersion.py'), '../../lib/zstd.h',
28     check: true).stdout().strip(),
29   meson_version: '>=0.50.0')
30
31 cc = meson.get_compiler('c')
32 cxx = meson.get_compiler('cpp')
33 pkgconfig = import('pkgconfig')
34 windows_mod = import('windows')
35
36 host_machine_os = host_machine.system()
37 os_windows = 'windows'
38 os_linux = 'linux'
39 os_darwin = 'darwin'
40 os_freebsd = 'freebsd'
41 os_sun = 'sunos'
42
43 cc_id = cc.get_id()
44 compiler_gcc = 'gcc'
45 compiler_clang = 'clang'
46 compiler_msvc = 'msvc'
47
48 zstd_version = meson.project_version()
49
50 zstd_libversion = zstd_version
51
52 # =============================================================================
53 # Installation directories
54 # =============================================================================
55
56 zstd_prefix = get_option('prefix')
57 zstd_bindir = get_option('bindir')
58 zstd_datadir = get_option('datadir')
59 zstd_mandir = get_option('mandir')
60 zstd_docdir = join_paths(zstd_datadir, 'doc', meson.project_name())
61
62 # =============================================================================
63 # Project options
64 # =============================================================================
65
66 # Built-in options
67 use_debug = get_option('debug')
68 buildtype = get_option('buildtype')
69 default_library_type = get_option('default_library')
70
71 # Custom options
72 debug_level = get_option('debug_level')
73 legacy_level = get_option('legacy_level')
74 use_backtrace = get_option('backtrace')
75 use_static_runtime = get_option('static_runtime')
76
77 bin_programs = get_option('bin_programs')
78 bin_contrib = get_option('bin_contrib')
79 bin_tests = get_option('bin_tests')
80
81 feature_multi_thread = get_option('multi_thread')
82 feature_zlib = get_option('zlib')
83 feature_lzma = get_option('lzma')
84 feature_lz4 = get_option('lz4')
85
86 # =============================================================================
87 # Dependencies
88 # =============================================================================
89
90 libm_dep = cc.find_library('m', required: false)
91 thread_dep = dependency('threads', required: feature_multi_thread)
92 use_multi_thread = thread_dep.found()
93 # Arguments in dependency should be equivalent to those passed to pkg-config
94 zlib_dep = dependency('zlib', required: feature_zlib)
95 use_zlib = zlib_dep.found()
96 lzma_dep = dependency('liblzma', required: feature_lzma)
97 use_lzma = lzma_dep.found()
98 lz4_dep = dependency('liblz4', required: feature_lz4)
99 use_lz4 = lz4_dep.found()
100
101 # =============================================================================
102 # Compiler flags
103 # =============================================================================
104
105 add_project_arguments('-DXXH_NAMESPACE=ZSTD_', language: ['c'])
106
107 pzstd_warning_flags = []
108 if [compiler_gcc, compiler_clang].contains(cc_id)
109   common_warning_flags = [ '-Wundef', '-Wshadow', '-Wcast-align', '-Wcast-qual' ]
110   pzstd_warning_flags = ['-Wno-shadow', '-Wno-deprecated-declarations']
111   if cc_id == compiler_clang
112     common_warning_flags += ['-Wconversion', '-Wno-sign-conversion', '-Wdocumentation']
113   endif
114   cc_compile_flags = cc.get_supported_arguments(common_warning_flags + ['-Wstrict-prototypes'])
115   cxx_compile_flags = cxx.get_supported_arguments(common_warning_flags)
116   add_project_arguments(cc_compile_flags, language : 'c')
117   add_project_arguments(cxx_compile_flags, language : 'cpp')
118 elif cc_id == compiler_msvc
119   msvc_compile_flags = [ '/D_UNICODE', '/DUNICODE' ]
120   if use_multi_thread
121     msvc_compile_flags += '/MP'
122   endif
123   if use_static_runtime
124     msvc_compile_flags += '/MT'
125   endif
126   add_project_arguments(msvc_compile_flags, language: ['c', 'cpp'])
127 endif
128
129 # =============================================================================
130 # Subdirs
131 # =============================================================================
132
133 subdir('lib')
134
135 if bin_programs or bin_tests
136   subdir('programs')
137 endif
138
139 if bin_tests
140   subdir('tests')
141 endif
142
143 if bin_contrib
144   subdir('contrib')
145 endif