blob: f386ac5396fc01e6bab3cd6052c9f44c17cea08c [file] [log] [blame]
Alec Thileniusf79f52b2017-12-22 12:10:17 -07001project('mosys', 'c')
2
3# Include common. This is passed to all subdir build files as well
4include_common = include_directories(['include'])
5
6# Config data used for creating a config header and including it
7conf_data = configuration_data()
8
Jason D. Clintona7fd67d2018-04-17 13:34:08 -06009use_cros_config = get_option('use_cros_config') == true
Alec Thileniusf79f52b2017-12-22 12:10:17 -070010if use_cros_config
11 conf_data.set('CONFIG_CROS_CONFIG', 1)
12endif
13
14# Setting on a per-arch basis
15arch = get_option('arch')
16if arch == 'x86' or arch == 'x86_64' or arch == 'amd64'
Alec Thileniusf79f52b2017-12-22 12:10:17 -070017 conf_data.set('CONFIG_PLATFORM_ARCH_X86', 1)
Paul Kocialkowski8cc37a32018-06-02 22:18:00 +020018elif arch == 'arm' or arch == 'arm64'
Alec Thileniusf79f52b2017-12-22 12:10:17 -070019 conf_data.set('CONFIG_PLATFORM_ARCH_ARMEL', 1)
Alec Thileniusf79f52b2017-12-22 12:10:17 -070020endif
21
Jack Rosenthal8180e5f2020-04-30 10:50:42 -060022platform_intf = get_option('platform_intf')
23if platform_intf != ''
24 conf_data.set_quoted('CONFIG_SINGLE_PLATFORM', platform_intf)
25endif
26
Alec Thileniusf79f52b2017-12-22 12:10:17 -070027# Create the config header file and include it by default while compiling
28configure_file(
29 output : 'config.h',
30 configuration : conf_data,
31)
32add_global_arguments('-include', 'config.h', language: 'c')
Jason D. Clintona7fd67d2018-04-17 13:34:08 -060033add_global_arguments('-std=gnu99', language : 'c')
Alec Thileniusf79f52b2017-12-22 12:10:17 -070034
Brian Norrise11e08f2018-04-30 10:46:48 -070035cc = meson.get_compiler('c')
Jason D. Clinton4f88fa32018-08-29 15:34:26 -060036add_global_arguments('-Wall', language : 'c')
Brian Norris402d8322018-04-30 14:22:51 -070037add_global_arguments('-Werror', language : 'c')
Jason D. Clinton4f88fa32018-08-29 15:34:26 -060038add_global_arguments('-Wstrict-prototypes', language : 'c')
39add_global_arguments('-Wundef', language : 'c')
Brian Norrise11e08f2018-04-30 10:46:48 -070040
Alec Thileniusf79f52b2017-12-22 12:10:17 -070041# External libs used by Mosys
42fmap_dep = dependency('fmap')
Jack Rosenthalbca93e32020-05-13 10:21:06 -060043minijail_dep = declare_dependency(link_args: '-lminijail')
Alec Thileniusf79f52b2017-12-22 12:10:17 -070044uuid_dep = dependency('uuid')
45
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060046libmosys_src = files()
Andrew Lamb9cccc892019-02-13 14:53:44 -070047unittest_src = files()
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060048
Alec Thileniusf79f52b2017-12-22 12:10:17 -070049# Subdirs with source to link against
50subdir('core')
51subdir('drivers')
52subdir('intf')
53subdir('lib')
54subdir('platform')
55
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060056deps = [
57 fmap_dep,
Jack Rosenthalbca93e32020-05-13 10:21:06 -060058 minijail_dep,
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060059 uuid_dep,
60]
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060061
62# Cros config is a special snowflake.
63if use_cros_config
64 libmosys_src += mosys_lib_cros_config_src
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060065endif
66
Alec Thileniusf79f52b2017-12-22 12:10:17 -070067# Lib momsys shared library target
68libmosys = static_library(
69 'mosys',
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060070 libmosys_src,
71 dependencies: deps,
Alec Thileniusf79f52b2017-12-22 12:10:17 -070072 include_directories: include_common,
Jason D. Clinton3a2b39c2018-04-16 11:42:49 -060073 pic: true,
Alec Thileniusf79f52b2017-12-22 12:10:17 -070074)
Andrew Lamb9cccc892019-02-13 14:53:44 -070075
Jack Rosenthalbca93e32020-05-13 10:21:06 -060076subdir('mains')
77
Andrew Lamb9cccc892019-02-13 14:53:44 -070078# Tests need the libmosys library, so they must be configured at the end.
Manoj Guptaace739d2019-08-13 18:21:57 -070079subdir('unittests')