As discussed with karlp on irc the devices.data file should not contain gcc specific command line options. For that reason the command line options for gcc are now generated from the variables CPU and FPU by the rules in the mk directory. This breaks the genlink tests. genlink: simplified devices.data devices.data already had the information about the family name. By using the first field (by the pattern used to match it) as family name information that data doesn't have to be provided explicitly. The same data is used to generate the CPPFLAGS, such as -DSTM32F1 The architectures block of the devices.data file was redundant. genlink-config.mk uses family and subfamily to figure out which libopencm3 variant actually exists.
79 lines
1.9 KiB
Awk
79 lines
1.9 KiB
Awk
# 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 ~ /^CPU=/) {
|
|
if ("CPU" ~ MODE){
|
|
sub(/[^=]*=/,"",$i);
|
|
printf "%s",$i;
|
|
exit;
|
|
}
|
|
}
|
|
else if ($i ~ /^FPU=/) {
|
|
if ("FPU" ~ MODE){
|
|
sub(/[^=]*=/,"",$i);
|
|
printf "%s",$i;
|
|
exit;
|
|
}
|
|
}
|
|
else if ($i ~ /[[:upper:]]*=/) {
|
|
if ("DEFS" ~ MODE)
|
|
printf "-D_%s ",$i;
|
|
}
|
|
}
|
|
if (PAT=="END"){
|
|
if ("FAMILY" ~ MODE)
|
|
printf "%s",family;
|
|
else if ("SUBFAMILY" ~ MODE)
|
|
printf "%s",subfamily;
|
|
exit;
|
|
}
|
|
else{
|
|
subfamily = family;
|
|
family = PAT;
|
|
if ("CPPFLAGS" ~ MODE)
|
|
printf "-D%s ",toupper(PAT);
|
|
else if("DEFS" ~ MODE)
|
|
printf "-D%s ",toupper(PAT);
|
|
}
|
|
}
|
|
}
|