diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/meson.build b/meson.build deleted file mode 100644 index bc72ff3..0000000 --- a/meson.build +++ /dev/null @@ -1,147 +0,0 @@ -project('smolbote', ['cpp'], - version: '0.1.0', - default_options: ['cpp_std=c++2a', 'warning_level=3'], - license: 'GPL3', - meson_version: '>=0.52.0' -) - -kconfig = import('unstable-kconfig') -kconf = kconfig.load(host_machine.system() + '/.config') - -cdata = configuration_data(kconf) - -version_h = vcs_tag( - command: [find_program('git').path(), 'describe', '--long', '--abbrev=40'], - #fallback: defaults to meson.project_version(), - input: 'include/version.h.in', - output: 'version.h' -) - -# add -DQT_NO_DEBUG to non-debug builds -if not get_option('debug') - add_project_arguments('-DQT_NO_DEBUG', language: 'cpp') -endif - -sourceset = import('sourceset') - -cxx = meson.get_compiler('cpp') - -# add some specific flags -add_project_arguments(cxx.get_supported_arguments([ - '-ffunction-sections', # Place each function into its own section, better ASLR but larger executables - '-fstack-protector-all', # Emit code to check for buffer overflows on all functions - '-fstack-clash-protection', # Emit code to check for stack clash attacks - - # gcc specific - '-fconcepts', # gcc9 c++20 compat - - # clang specific - '-mspeculative-load-hardening', # Spectre v1 mitigation - '-Xclang -plugin-arg-clazy -Xclang level0,level1', # clazy default warning level - - ## warnings - # variables - '-Wunused', # warn on anything being unused - '-Wshadow', # if variable declaration shadows one from a parent context - # functions - '-Wnon-virtual-dtor', # if class with virtual functions has non-virtual dtor - '-Werror=missing-declarations', # missing function declarations in header files - '-Werror=redundant-decls', - '-Woverloaded-virtual', # warn if you overload (not override) a virtual function - '-Werror=return-type', - # style - '-Wformat=2', # security issues around printf - '-Wdate-time', # __TIME__ and __DATE__ macros - '-Werror=missing-field-initializers', - # objects - '-Wnull-dereference', - '-Wconsumed', # use-after-move warnings - '-Wlifetime', # object lifetime issues - # logic - '-Wlogical-op', # logical operations being used where bitwise were probably wanted - '-Wimplicit-fallthrough', - '-Wduplicated-cond', # if/else chain has duplicated conditions - '-Wduplicated-brances', # if/else branches have duplicated code - # casts - '-Wold-style-cast', - '-Wcast-align', # potential performance problem casts - '-Wuseless-cast', # cast to same type - '-Wconversion', # type conversions that may lose data - '-Wsign-conversion', # sign conversions - '-Wdouble-promotion', # float is promoted to double - # others - '-Werror=pedantic', # if non-standard c++ is used - #'-Weffc++', -]), language: 'cpp') - -if get_option('buildtype') == 'release' - add_project_arguments(cxx.get_supported_arguments([ - '-flto=4', - ]), language: 'cpp') -endif - -mod_qt5 = import('qt5') -dep_qt5 = dependency('qt5', - modules: [ 'Core', 'Network', 'Widgets', 'Svg', 'WebEngine', 'WebEngineWidgets', 'Concurrent' ], - include_type: 'system' -) - -dep_spdlog = dependency('spdlog', fallback: ['spdlog', 'spdlog_dep'], version: '>=1.3.1') - -optional_deps = [] -poi_cpp_args = [] - -dep_breakpad = dependency('breakpad-client', include_type: 'system', required: get_option('crashhandler')) -dep_threads = dependency('threads', include_type: 'system', required: get_option('crashhandler')) -if dep_breakpad.found() - poi_cpp_args += '-DHAVE_BREAKPAD' -endif - -dep_gtest = dependency('gtest', required: false, disabler: true) -dep_catch = dependency('catch2', required: true, fallback: ['catch2', 'catch2_dep'] ) -dep_SingleApplication = dependency('singleapplication', fallback: [ 'singleapplication', 'SingleApplication_dep' ]) -dep_args = dependency('args.hxx', fallback: [ 'args', 'args_dep' ]) - -# Generate config header - -poi_sourceset = sourceset.source_set() - -subdir('include') # plugin interaces - -subdir('lib/bookmarks') -subdir('lib/configuration') -subdir('lib/downloads') -subdir('lib/pluginloader') -subdir('lib/urlfilter') -subdir('lib/session_formats') - -subdir('src') -subdir('lang') -subdir('doc') -subdir('tools') - -subdir('plugins/ProfileEditor') - -subdir('test/firefox-bookmarks-json-parser') - -ssconfig = poi_sourceset.apply(cdata) - -poi_exe = executable(get_option('poi'), - cpp_args: ['-DQAPPLICATION_CLASS=QApplication', poi_cpp_args], - sources: [ssconfig.sources()], - include_directories: [ plugininterfaces_include, include_directories('src') ], - dependencies: [ dep_qt5, dep_spdlog, dep_SingleApplication, dep_args, optional_deps, dep_bookmarks, dep_configuration, dep_downloads, dep_pluginloader, dep_urlfilter, ssconfig.dependencies(), lib_session_formats ], - install: true, -) - -test('poi-bookmarks: xbel', poi_exe, args: [ 'bookmarks', '-x', files('test/bookmarks.xbel'), '--export=stdout' ]) - -subdir(host_machine.system()) - -# cppcheck target -cppcheck = find_program('cppcheck', required: false) -if cppcheck.found() -run_target('cppcheck', - command: [cppcheck, '--enable=all', '--project=' + meson.build_root() / 'compile_commands.json'] -) -endif |