diff options
author | root <root@lab2.panaceas.james.local> | 2014-11-02 10:14:39 +0000 |
---|---|---|
committer | root <root@lab2.panaceas.james.local> | 2014-11-02 10:14:39 +0000 |
commit | 1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0 (patch) | |
tree | 1a70fddfcc79c54c863912a3b8b8cecc594f21ae /libopencm3/scripts/genlink.awk | |
download | stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.tar.gz stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.tar.bz2 stm32_usb_kvm-1dc7d758f96dd2b9bd7b03f01ca032d68b696cf0.zip |
fish
Diffstat (limited to 'libopencm3/scripts/genlink.awk')
-rw-r--r-- | libopencm3/scripts/genlink.awk | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libopencm3/scripts/genlink.awk b/libopencm3/scripts/genlink.awk new file mode 100644 index 0000000..c5d32d4 --- /dev/null +++ b/libopencm3/scripts/genlink.awk @@ -0,0 +1,65 @@ +# This awk program generates parameters for the linker script generator feature. +# +# See ld/README file for more info. +# + +# This file is part of the libopencm3 project. +# +# Copyright (C) 2013 Frantisek Burian <Bufran@seznam.cz> +# Copyright (C) 2013 Werner Almesberger <wpwrak> +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see <http://www.gnu.org/licenses/>. + +BEGIN { + PAT = tolower(PAT); + if (length(MODE) == 0) + MODE = ".*"; +} +!/^#/{ + #remove cr on windows + gsub(/\r$/,""); + + tmp = "^"$1"$"; + gsub(/?/, ".", tmp); + gsub(/*/, ".*", tmp); + gsub(/+/, ".+", tmp); + tolower(tmp); + + if (PAT ~ tmp) { + if ($2 != "+") + PAT=$2; + + for (i = 3; i <= NF; i = i + 1) { + if ($i ~ /^-l/) { + if ("LIB" ~ MODE) + printf "%s ",$i; + } + else if ($i ~ /^-m/) { + if ("ARCH" ~ MODE) + printf "%s ",$i; + } + else if ($i ~ /^-D/) { + if ("DEFS" ~ MODE) + printf "%s ",$i; + } + else { + if ("DEFS" ~ MODE) + printf "-D_%s ",$i; + } + } + + if (PAT=="END") + exit; + } +} |