1#
2# SPDX-License-Identifier: BSD-3-Clause
3#
4# Copyright © 2019 Keith Packard
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9#
10# 1. Redistributions of source code must retain the above copyright
11#    notice, this list of conditions and the following disclaimer.
12#
13# 2. Redistributions in binary form must reproduce the above
14#    copyright notice, this list of conditions and the following
15#    disclaimer in the documentation and/or other materials provided
16#    with the distribution.
17#
18# 3. Neither the name of the copyright holder nor the names of its
19#    contributors may be used to endorse or promote products derived
20#    from this software without specific prior written permission.
21#
22# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
33# OF THE POSSIBILITY OF SUCH DAMAGE.
34#
35
36tests = [ 'iconvnm' ]
37
38tests_ccs = ['iconvjp', 'iconvru']
39
40# Add CCS tests if the data are internal or we're not using semihosting
41# or we're using arm semihosting
42
43if not newlib_iconv_external_ccs or has_arm_semihost or not has_semihost
44  tests += tests_ccs
45endif
46
47iconv_test_c_args = ['-DTEST_NLSPATH="' + newlib_iconv_ccs_dir + '"']
48
49foreach target : targets
50  value = get_variable('target_' + target)
51
52  _libs = [get_variable('lib_c' + target)]
53  if is_variable('lib_semihost' + target)
54    _libs += [get_variable('lib_semihost' + target)]
55  endif
56
57  if is_variable('crt0_semihost' + target)
58    _objs = [get_variable('crt0_semihost'+ target)]
59  elif is_variable('crt0_hosted' + target)
60    _objs = [get_variable('crt0_hosted'+ target)]
61  else
62    _objs = []
63  endif
64
65  _c_args = value[1] + get_variable('test_c_args_' + target, test_c_args)
66  _link_args = value[1] + get_variable('test_link_args_' + target, test_link_args)
67  _link_depends = get_variable('test_link_depends_' + target, test_link_depends)
68
69  _c_args += ['-D_XOPEN_SOURCE=700', '-D_GNU_SOURCE'] + iconv_test_c_args
70
71  foreach test : tests
72    if target == ''
73      test_name = test
74    else
75      test_name = test + '_' + target
76    endif
77
78    src = test + '.c'
79
80    test(test_name,
81	 executable(test_name, src,
82		    c_args: _c_args,
83		    link_args: _link_args,
84		    objects: _objs,
85		    link_with: _libs,
86		    link_depends: _link_depends,
87		    include_directories: test_inc),
88	 depends: [bios_bin],
89	 env: test_env)
90  endforeach
91endforeach
92