Add export-dev for exporting all libraries (see #230)
[helenos.git] / meson.build
blob58409ea9683022ce08de5e9395c0decb8d7d10f8
2 # Copyright (c) 2019 Jiří Zárevúcky
3 # All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
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.
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.
29 # TODO: Use vcs_tag() to generate version string
30 # TODO: jobfile
31 # TODO: lto in uspace
32 # TODO: fix clang build
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',
41 debug_options = false
42 debug_shell_scripts = false
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)
50 ## The at-sign
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.
58 if not is_variable('atsign')
59         atsign = '@'
60 endif
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
67 # The following variables are filled in by code in the kernel and uspace subdirs.
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 = []
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' ]
82 # Install script for headers.
83 # TODO: Make a list of directories and turn into script later.
84 uspace_lib_install_script_text = []
86 subdir('kernel')
87 subdir('uspace')
89 subdir('meson/part/exports')
90 subdir('meson/part/initrd')
92 subdir('boot')
94 # Copy the final image to the build root,
95 # and write its name to a text file `image_path`.
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         )
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
118 subdir('meson/part/extra_targets')