1 | #
|
---|
2 | # Copyright (c) 2019 Jiří Zárevúcky
|
---|
3 | # All rights reserved.
|
---|
4 | #
|
---|
5 | # Redistribution and use in source and binary forms, with or without
|
---|
6 | # modification, are permitted provided that the following conditions
|
---|
7 | # are met:
|
---|
8 | #
|
---|
9 | # - Redistributions of source code must retain the above copyright
|
---|
10 | # notice, this list of conditions and the following disclaimer.
|
---|
11 | # - Redistributions in binary form must reproduce the above copyright
|
---|
12 | # notice, this list of conditions and the following disclaimer in the
|
---|
13 | # documentation and/or other materials provided with the distribution.
|
---|
14 | # - The name of the author may not be used to endorse or promote products
|
---|
15 | # derived from this software without specific prior written permission.
|
---|
16 | #
|
---|
17 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
---|
18 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
---|
19 | # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
---|
20 | # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
---|
21 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
---|
22 | # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
---|
23 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
---|
24 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
---|
25 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
---|
26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
---|
27 | #
|
---|
28 |
|
---|
29 | # TODO: Use vcs_tag() to generate version string
|
---|
30 | # TODO: jobfile
|
---|
31 | # TODO: lto in uspace
|
---|
32 | # TODO: fix clang build
|
---|
33 |
|
---|
34 | project(
|
---|
35 | 'HelenOS',
|
---|
36 | [ 'c', 'cpp' ],
|
---|
37 | default_options : ['buildtype=plain', 'c_std=gnu11', 'cpp_std=c++17', 'warning_level=2', 'werror=false', 'b_staticpic=false', 'prefix=/' ],
|
---|
38 | meson_version: '>=0.55.0',
|
---|
39 | )
|
---|
40 |
|
---|
41 | debug_options = false
|
---|
42 | debug_shell_scripts = false
|
---|
43 |
|
---|
44 | subdir('meson/part/tools')
|
---|
45 | subdir('meson/part/read_config')
|
---|
46 | subdir('meson/part/compiler_args')
|
---|
47 | subdir('meson/part/initrd_manifest')
|
---|
48 | subdir('meson' / 'arch' / UARCH)
|
---|
49 |
|
---|
50 | ## The at-sign
|
---|
51 | #
|
---|
52 | # The `atsign` variable holds the ASCII character representing the at-sign
|
---|
53 | # ('@') used in various $(AS) constructs (e.g. @progbits). On architectures that
|
---|
54 | # don't use '@' for starting a comment, `atsign` is merely '@'. However, on
|
---|
55 | # those that do use it for starting a comment (e.g. arm32), `atsign` must be
|
---|
56 | # defined as the percentile-sign ('%') in the architecture-dependent files.
|
---|
57 | #
|
---|
58 | if not is_variable('atsign')
|
---|
59 | atsign = '@'
|
---|
60 | endif
|
---|
61 |
|
---|
62 | ## Some architectures need a particular string at the beginning of assembly files.
|
---|
63 | if not is_variable('uspace_as_prolog')
|
---|
64 | uspace_as_prolog = ''
|
---|
65 | endif
|
---|
66 |
|
---|
67 | # The following variables are filled in by code in the kernel and uspace subdirs.
|
---|
68 |
|
---|
69 | # References to the actual binary artefacts that will be part of initrd image.
|
---|
70 | rd_init_binaries = []
|
---|
71 | # Installed files.
|
---|
72 | install_files = []
|
---|
73 | install_deps = []
|
---|
74 |
|
---|
75 | # Exported libraries and include files
|
---|
76 | # Format: [ type, source_file, destination ]
|
---|
77 | # See meson/part/exports/copy-export.sh for supported file types.
|
---|
78 | exported_devel_files = [
|
---|
79 | [ 'includenamedsymlink', 'libc', 'common' ]
|
---|
80 | ]
|
---|
81 |
|
---|
82 | # Install script for headers.
|
---|
83 | # TODO: Make a list of directories and turn into script later.
|
---|
84 | uspace_lib_install_script_text = []
|
---|
85 |
|
---|
86 | subdir('kernel')
|
---|
87 | subdir('uspace')
|
---|
88 |
|
---|
89 | subdir('meson/part/exports')
|
---|
90 | subdir('meson/part/initrd')
|
---|
91 |
|
---|
92 | subdir('boot')
|
---|
93 |
|
---|
94 | # Copy the final image to the build root,
|
---|
95 | # and write its name to a text file `image_path`.
|
---|
96 |
|
---|
97 | if is_variable('POST_INPUT')
|
---|
98 | image = custom_target(POST_OUTPUT,
|
---|
99 | output: POST_OUTPUT,
|
---|
100 | input: POST_INPUT,
|
---|
101 | command: [ cp, '@INPUT@', '@OUTPUT@' ],
|
---|
102 | )
|
---|
103 |
|
---|
104 | custom_target('image_path',
|
---|
105 | output: 'image_path',
|
---|
106 | input: image,
|
---|
107 | command: [ 'echo', '@INPUT@' ],
|
---|
108 | capture: true,
|
---|
109 | )
|
---|
110 | else
|
---|
111 | custom_target('image_path',
|
---|
112 | output: 'image_path',
|
---|
113 | command: [ 'echo' ],
|
---|
114 | capture: true,
|
---|
115 | )
|
---|
116 | endif
|
---|
117 |
|
---|
118 | subdir('meson/part/extra_targets')
|
---|