123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- # #############################################################################
- # Copyright (c) 2018-present Dima Krasner <[email protected]>
- # lzutao <taolzu(at)gmail.com>
- # All rights reserved.
- #
- # This source code is licensed under both the BSD-style license (found in the
- # LICENSE file in the root directory of this source tree) and the GPLv2 (found
- # in the COPYING file in the root directory of this source tree).
- # #############################################################################
- project('zstd',
- ['c', 'cpp'],
- license: ['BSD', 'GPLv2'],
- default_options : [
- 'c_std=gnu99',
- 'cpp_std=c++11',
- 'buildtype=release',
- 'warning_level=3',
- # -Wdocumentation does not actually pass, nor do the test binaries,
- # so this isn't safe
- #'werror=true'
- ],
- version: 'DUMMY',
- meson_version: '>=0.48.0')
- cc = meson.get_compiler('c')
- cxx = meson.get_compiler('cpp')
- pkgconfig = import('pkgconfig')
- windows_mod = import('windows')
- host_machine_os = host_machine.system()
- os_windows = 'windows'
- os_linux = 'linux'
- os_darwin = 'darwin'
- os_freebsd = 'freebsd'
- os_sun = 'sunos'
- cc_id = cc.get_id()
- compiler_gcc = 'gcc'
- compiler_clang = 'clang'
- compiler_msvc = 'msvc'
- zstd_version = meson.project_version()
- zstd_h_file = join_paths(meson.current_source_dir(), '../../lib/zstd.h')
- GetZstdLibraryVersion_py = find_program('GetZstdLibraryVersion.py', native : true)
- r = run_command(GetZstdLibraryVersion_py, zstd_h_file)
- if r.returncode() == 0
- zstd_version = r.stdout().strip()
- message('Project version is now: @0@'.format(zstd_version))
- else
- error('Cannot find project version in @0@'.format(zstd_h_file))
- endif
- zstd_libversion = zstd_version
- # =============================================================================
- # Installation directories
- # =============================================================================
- zstd_prefix = get_option('prefix')
- zstd_bindir = get_option('bindir')
- zstd_datadir = get_option('datadir')
- zstd_mandir = get_option('mandir')
- zstd_docdir = join_paths(zstd_datadir, 'doc', meson.project_name())
- # =============================================================================
- # Project options
- # =============================================================================
- # Built-in options
- use_debug = get_option('debug')
- buildtype = get_option('buildtype')
- default_library_type = get_option('default_library')
- # Custom options
- debug_level = get_option('debug_level')
- legacy_level = get_option('legacy_level')
- use_backtrace = get_option('backtrace')
- use_static_runtime = get_option('static_runtime')
- bin_programs = get_option('bin_programs')
- bin_contrib = get_option('bin_contrib')
- bin_tests = get_option('bin_tests')
- feature_multi_thread = get_option('multi_thread')
- feature_zlib = get_option('zlib')
- feature_lzma = get_option('lzma')
- feature_lz4 = get_option('lz4')
- # =============================================================================
- # Dependencies
- # =============================================================================
- libm_dep = cc.find_library('m', required: bin_tests)
- thread_dep = dependency('threads', required: feature_multi_thread)
- use_multi_thread = thread_dep.found()
- # Arguments in dependency should be equivalent to those passed to pkg-config
- zlib_dep = dependency('zlib', required: feature_zlib)
- use_zlib = zlib_dep.found()
- lzma_dep = dependency('liblzma', required: feature_lzma)
- use_lzma = lzma_dep.found()
- lz4_dep = dependency('liblz4', required: feature_lz4)
- use_lz4 = lz4_dep.found()
- # =============================================================================
- # Compiler flags
- # =============================================================================
- add_project_arguments('-DXXH_NAMESPACE=ZSTD_', language: ['c'])
- if [compiler_gcc, compiler_clang].contains(cc_id)
- common_warning_flags = [ '-Wundef', '-Wshadow', '-Wcast-align', '-Wcast-qual' ]
- if cc_id == compiler_clang
- common_warning_flags += ['-Wconversion', '-Wno-sign-conversion', '-Wdocumentation']
- endif
- cc_compile_flags = cc.get_supported_arguments(common_warning_flags + ['-Wstrict-prototypes'])
- cxx_compile_flags = cxx.get_supported_arguments(common_warning_flags)
- add_project_arguments(cc_compile_flags, language : 'c')
- add_project_arguments(cxx_compile_flags, language : 'cpp')
- elif cc_id == compiler_msvc
- msvc_compile_flags = [ '/D_UNICODE', '/DUNICODE' ]
- if use_multi_thread
- msvc_compile_flags += '/MP'
- endif
- if use_static_runtime
- msvc_compile_flags += '/MT'
- endif
- add_project_arguments(msvc_compile_flags, language: ['c', 'cpp'])
- endif
- # =============================================================================
- # Subdirs
- # =============================================================================
- subdir('lib')
- if bin_programs
- subdir('programs')
- endif
- if bin_tests
- subdir('tests')
- endif
- if bin_contrib
- subdir('contrib')
- endif
|