source: mainline/tools/xcw/bin/helenos-cc

Last change on this file was 1b9a853, checked in by Jiri Svoboda <jiri@…>, 6 years ago

Fix XCW both manual case and when ran by HSCT

  • Property mode set to 100755
File size: 2.8 KB
Line 
1#!/bin/bash
2#
3# Copyright (c) 2018 Jiri Svoboda
4# All rights reserved.
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# - Redistributions of source code must retain the above copyright
11# notice, this list of conditions and the following disclaimer.
12# - Redistributions in binary form must reproduce the above copyright
13# notice, this list of conditions and the following disclaimer in the
14# documentation and/or other materials provided with the distribution.
15# - The name of the author may not be used to endorse or promote products
16# derived from this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29# C Compiler (cc) wrapper
30# HelenOS Cross Compiler Wrapper (XCW)
31# Facilitate cross-compiling external software to HelenOS
32#
33
34
35
36XCW="$(dirname "$0")"
37BUILD_ROOT="$(dirname "$(dirname "$(dirname "$XCW")")")"
38if [ -z "$EXPORT_DIR" ]; then
39 EXPORT_DIR="$BUILD_ROOT/export"
40fi
41
42HELENOS_EXPORT_ROOT="$EXPORT_DIR"
43
44source "${EXPORT_DIR}/config.sh"
45
46# CC is a compilation driver, so we should check which stage of compilation
47# is actually running and select which flags to provide. This makes no
48# difference for GCC, but e.g. clang warns when a flag is provided that is
49# unused
50
51needs_cflags=true
52needs_ldflags=true
53
54for flag in "$@"; do
55 case "$flag" in
56 -E)
57 needs_cflags=false
58 needs_ldflags=false
59 break
60 ;;
61 -c|-S)
62 needs_ldflags=false
63 break
64 ;;
65 esac
66done
67
68flags="-fwide-exec-charset=UTF-32LE -finput-charset=UTF-8 -fexec-charset=UTF-8"
69flags="$flags -isystem ${HELENOS_EXPORT_ROOT}/include/libc -idirafter ${HELENOS_EXPORT_ROOT}/include"
70
71if $needs_cflags; then
72 flags="$flags -O3 \
73 -Wall -Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes \
74 -std=gnu99 -Werror-implicit-function-declaration -Wwrite-strings -ggdb"
75
76 flags="$flags $HELENOS_CFLAGS"
77fi
78
79if $needs_ldflags; then
80 flags="$flags $HELENOS_LDFLAGS"
81fi
82
83flags="$flags $@"
84
85if $needs_ldflags; then
86 flags="$flags $HELENOS_LDLIBS"
87fi
88
89echo "helenos-cc" "$@"
90PATH="$HELENOS_CROSS_PATH:$PATH" "${HELENOS_TARGET}-gcc" $flags
Note: See TracBrowser for help on using the repository browser.