remove old files
This commit is contained in:
223
externals/mbedtls/tests/scripts/check-files.py
vendored
223
externals/mbedtls/tests/scripts/check-files.py
vendored
@@ -1,223 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
This file is part of Mbed TLS (https://tls.mbed.org)
|
||||
|
||||
Copyright (c) 2018, Arm Limited, All Rights Reserved
|
||||
|
||||
Purpose
|
||||
|
||||
This script checks the current state of the source code for minor issues,
|
||||
including incorrect file permissions, presence of tabs, non-Unix line endings,
|
||||
trailing whitespace, presence of UTF-8 BOM, and TODO comments.
|
||||
Note: requires python 3, must be run from Mbed TLS root.
|
||||
"""
|
||||
|
||||
import os
|
||||
import argparse
|
||||
import logging
|
||||
import codecs
|
||||
import sys
|
||||
|
||||
|
||||
class IssueTracker(object):
|
||||
"""Base class for issue tracking. Issues should inherit from this and
|
||||
overwrite either issue_with_line if they check the file line by line, or
|
||||
overwrite check_file_for_issue if they check the file as a whole."""
|
||||
|
||||
def __init__(self):
|
||||
self.heading = ""
|
||||
self.files_exemptions = []
|
||||
self.files_with_issues = {}
|
||||
|
||||
def should_check_file(self, filepath):
|
||||
for files_exemption in self.files_exemptions:
|
||||
if filepath.endswith(files_exemption):
|
||||
return False
|
||||
return True
|
||||
|
||||
def issue_with_line(self, line):
|
||||
raise NotImplementedError
|
||||
|
||||
def check_file_for_issue(self, filepath):
|
||||
with open(filepath, "rb") as f:
|
||||
for i, line in enumerate(iter(f.readline, b"")):
|
||||
self.check_file_line(filepath, line, i + 1)
|
||||
|
||||
def check_file_line(self, filepath, line, line_number):
|
||||
if self.issue_with_line(line):
|
||||
if filepath not in self.files_with_issues.keys():
|
||||
self.files_with_issues[filepath] = []
|
||||
self.files_with_issues[filepath].append(line_number)
|
||||
|
||||
def output_file_issues(self, logger):
|
||||
if self.files_with_issues.values():
|
||||
logger.info(self.heading)
|
||||
for filename, lines in sorted(self.files_with_issues.items()):
|
||||
if lines:
|
||||
logger.info("{}: {}".format(
|
||||
filename, ", ".join(str(x) for x in lines)
|
||||
))
|
||||
else:
|
||||
logger.info(filename)
|
||||
logger.info("")
|
||||
|
||||
|
||||
class PermissionIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "Incorrect permissions:"
|
||||
|
||||
def check_file_for_issue(self, filepath):
|
||||
if not (os.access(filepath, os.X_OK) ==
|
||||
filepath.endswith((".sh", ".pl", ".py"))):
|
||||
self.files_with_issues[filepath] = None
|
||||
|
||||
|
||||
class EndOfFileNewlineIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "Missing newline at end of file:"
|
||||
|
||||
def check_file_for_issue(self, filepath):
|
||||
with open(filepath, "rb") as f:
|
||||
if not f.read().endswith(b"\n"):
|
||||
self.files_with_issues[filepath] = None
|
||||
|
||||
|
||||
class Utf8BomIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "UTF-8 BOM present:"
|
||||
|
||||
def check_file_for_issue(self, filepath):
|
||||
with open(filepath, "rb") as f:
|
||||
if f.read().startswith(codecs.BOM_UTF8):
|
||||
self.files_with_issues[filepath] = None
|
||||
|
||||
|
||||
class LineEndingIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "Non Unix line endings:"
|
||||
|
||||
def issue_with_line(self, line):
|
||||
return b"\r" in line
|
||||
|
||||
|
||||
class TrailingWhitespaceIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "Trailing whitespace:"
|
||||
self.files_exemptions = [".md"]
|
||||
|
||||
def issue_with_line(self, line):
|
||||
return line.rstrip(b"\r\n") != line.rstrip()
|
||||
|
||||
|
||||
class TabIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "Tabs present:"
|
||||
self.files_exemptions = [
|
||||
"Makefile", "generate_visualc_files.pl"
|
||||
]
|
||||
|
||||
def issue_with_line(self, line):
|
||||
return b"\t" in line
|
||||
|
||||
|
||||
class TodoIssueTracker(IssueTracker):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.heading = "TODO present:"
|
||||
self.files_exemptions = [
|
||||
__file__, "benchmark.c", "pull_request_template.md"
|
||||
]
|
||||
|
||||
def issue_with_line(self, line):
|
||||
return b"todo" in line.lower()
|
||||
|
||||
|
||||
class IntegrityChecker(object):
|
||||
|
||||
def __init__(self, log_file):
|
||||
self.check_repo_path()
|
||||
self.logger = None
|
||||
self.setup_logger(log_file)
|
||||
self.files_to_check = (
|
||||
".c", ".h", ".sh", ".pl", ".py", ".md", ".function", ".data",
|
||||
"Makefile", "CMakeLists.txt", "ChangeLog"
|
||||
)
|
||||
self.issues_to_check = [
|
||||
PermissionIssueTracker(),
|
||||
EndOfFileNewlineIssueTracker(),
|
||||
Utf8BomIssueTracker(),
|
||||
LineEndingIssueTracker(),
|
||||
TrailingWhitespaceIssueTracker(),
|
||||
TabIssueTracker(),
|
||||
TodoIssueTracker(),
|
||||
]
|
||||
|
||||
def check_repo_path(self):
|
||||
if not all(os.path.isdir(d) for d in ["include", "library", "tests"]):
|
||||
raise Exception("Must be run from Mbed TLS root")
|
||||
|
||||
def setup_logger(self, log_file, level=logging.INFO):
|
||||
self.logger = logging.getLogger()
|
||||
self.logger.setLevel(level)
|
||||
if log_file:
|
||||
handler = logging.FileHandler(log_file)
|
||||
self.logger.addHandler(handler)
|
||||
else:
|
||||
console = logging.StreamHandler()
|
||||
self.logger.addHandler(console)
|
||||
|
||||
def check_files(self):
|
||||
for root, dirs, files in sorted(os.walk(".")):
|
||||
for filename in sorted(files):
|
||||
filepath = os.path.join(root, filename)
|
||||
if (os.path.join("yotta", "module") in filepath or
|
||||
not filepath.endswith(self.files_to_check)):
|
||||
continue
|
||||
for issue_to_check in self.issues_to_check:
|
||||
if issue_to_check.should_check_file(filepath):
|
||||
issue_to_check.check_file_for_issue(filepath)
|
||||
|
||||
def output_issues(self):
|
||||
integrity_return_code = 0
|
||||
for issue_to_check in self.issues_to_check:
|
||||
if issue_to_check.files_with_issues:
|
||||
integrity_return_code = 1
|
||||
issue_to_check.output_file_issues(self.logger)
|
||||
return integrity_return_code
|
||||
|
||||
|
||||
def run_main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description=(
|
||||
"This script checks the current state of the source code for "
|
||||
"minor issues, including incorrect file permissions, "
|
||||
"presence of tabs, non-Unix line endings, trailing whitespace, "
|
||||
"presence of UTF-8 BOM, and TODO comments. "
|
||||
"Note: requires python 3, must be run from Mbed TLS root."
|
||||
)
|
||||
)
|
||||
parser.add_argument(
|
||||
"-l", "--log_file", type=str, help="path to optional output log",
|
||||
)
|
||||
check_args = parser.parse_args()
|
||||
integrity_check = IntegrityChecker(check_args.log_file)
|
||||
integrity_check.check_files()
|
||||
return_code = integrity_check.output_issues()
|
||||
sys.exit(return_code)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_main()
|
411
externals/mbedtls/tests/scripts/generate_code.pl
vendored
411
externals/mbedtls/tests/scripts/generate_code.pl
vendored
@@ -1,411 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# generate_code.pl
|
||||
#
|
||||
# This file is part of mbed TLS (https://tls.mbed.org)
|
||||
#
|
||||
# Copyright (c) 2009-2016, ARM Limited, All Rights Reserved
|
||||
#
|
||||
# Purpose
|
||||
#
|
||||
# Generates the test suite code given inputs of the test suite directory that
|
||||
# contain the test suites, and the test suite file names for the test code and
|
||||
# test data.
|
||||
#
|
||||
# Usage: generate_code.pl <suite dir> <code file> <data file> [main code file]
|
||||
#
|
||||
# Structure of files
|
||||
#
|
||||
# - main code file - 'main_test.function'
|
||||
# Template file that contains the main() function for the test suite,
|
||||
# test dispatch code as well as support functions. It contains the
|
||||
# following symbols which are substituted by this script during
|
||||
# processing:
|
||||
# TESTCASE_FILENAME
|
||||
# TESTCODE_FILENAME
|
||||
# SUITE_PRE_DEP
|
||||
# MAPPING_CODE
|
||||
# FUNCTION CODE
|
||||
# SUITE_POST_DEP
|
||||
# DEP_CHECK_CODE
|
||||
# DISPATCH_FUNCTION
|
||||
# !LINE_NO!
|
||||
#
|
||||
# - common helper code file - 'helpers.function'
|
||||
# Common helper functions
|
||||
#
|
||||
# - test suite code file - file name in the form 'test_suite_xxx.function'
|
||||
# Code file that contains the actual test cases. The file contains a
|
||||
# series of code sequences delimited by the following:
|
||||
# BEGIN_HEADER / END_HEADER - list of headers files
|
||||
# BEGIN_SUITE_HELPERS / END_SUITE_HELPERS - helper functions common to
|
||||
# the test suite
|
||||
# BEGIN_CASE / END_CASE - the test cases in the test suite. Each test
|
||||
# case contains at least one function that is used to create the
|
||||
# dispatch code.
|
||||
#
|
||||
# - test data file - file name in the form 'test_suite_xxxx.data'
|
||||
# The test case parameters to to be used in execution of the test. The
|
||||
# file name is used to replace the symbol 'TESTCASE_FILENAME' in the main
|
||||
# code file above.
|
||||
#
|
||||
# A test data file consists of a sequence of paragraphs separated by
|
||||
# a single empty line. Line breaks may be in Unix (LF) or Windows (CRLF)
|
||||
# format. Lines starting with the character '#' are ignored
|
||||
# (the parser behaves as if they were not present).
|
||||
#
|
||||
# Each paragraph describes one test case and must consist of: (1) one
|
||||
# line which is the test case name; (2) an optional line starting with
|
||||
# the 11-character prefix "depends_on:"; (3) a line containing the test
|
||||
# function to execute and its parameters.
|
||||
#
|
||||
# A depends_on: line consists of a list of compile-time options
|
||||
# separated by the character ':', with no whitespace. The test case
|
||||
# is executed only if this compilation option is enabled in config.h.
|
||||
#
|
||||
# The last line of each paragraph contains a test function name and
|
||||
# a list of parameters separated by the character ':'. Running the
|
||||
# test case calls this function with the specified parameters. Each
|
||||
# parameter may either be an integer written in decimal or hexadecimal,
|
||||
# or a string surrounded by double quotes which may not contain the
|
||||
# ':' character.
|
||||
#
|
||||
|
||||
use strict;
|
||||
|
||||
my $suite_dir = shift or die "Missing suite directory";
|
||||
my $suite_name = shift or die "Missing suite name";
|
||||
my $data_name = shift or die "Missing data name";
|
||||
my $test_main_file = do { my $arg = shift; defined($arg) ? $arg : $suite_dir."/main_test.function" };
|
||||
my $test_file = $data_name.".c";
|
||||
my $test_common_helper_file = $suite_dir."/helpers.function";
|
||||
my $test_case_file = $suite_dir."/".$suite_name.".function";
|
||||
my $test_case_data = $suite_dir."/".$data_name.".data";
|
||||
|
||||
my $line_separator = $/;
|
||||
undef $/;
|
||||
|
||||
|
||||
#
|
||||
# Open and read in the input files
|
||||
#
|
||||
|
||||
open(TEST_HELPERS, "$test_common_helper_file") or die "Opening test helpers
|
||||
'$test_common_helper_file': $!";
|
||||
my $test_common_helpers = <TEST_HELPERS>;
|
||||
close(TEST_HELPERS);
|
||||
|
||||
open(TEST_MAIN, "$test_main_file") or die "Opening test main '$test_main_file': $!";
|
||||
my @test_main_lines = split/^/, <TEST_MAIN>;
|
||||
my $test_main;
|
||||
my $index = 2;
|
||||
for my $line (@test_main_lines) {
|
||||
$line =~ s/!LINE_NO!/$index/;
|
||||
$test_main = $test_main.$line;
|
||||
$index++;
|
||||
}
|
||||
close(TEST_MAIN);
|
||||
|
||||
open(TEST_CASES, "$test_case_file") or die "Opening test cases '$test_case_file': $!";
|
||||
my @test_cases_lines = split/^/, <TEST_CASES>;
|
||||
my $test_cases;
|
||||
my $index = 2;
|
||||
for my $line (@test_cases_lines) {
|
||||
if ($line =~ /^\/\* BEGIN_SUITE_HELPERS .*\*\//)
|
||||
{
|
||||
$line = $line."#line $index \"$test_case_file\"\n";
|
||||
}
|
||||
|
||||
if ($line =~ /^\/\* BEGIN_CASE .*\*\//)
|
||||
{
|
||||
$line = $line."#line $index \"$test_case_file\"\n";
|
||||
}
|
||||
|
||||
$line =~ s/!LINE_NO!/$index/;
|
||||
|
||||
$test_cases = $test_cases.$line;
|
||||
$index++;
|
||||
}
|
||||
|
||||
close(TEST_CASES);
|
||||
|
||||
open(TEST_DATA, "$test_case_data") or die "Opening test data '$test_case_data': $!";
|
||||
my $test_data = <TEST_DATA>;
|
||||
close(TEST_DATA);
|
||||
|
||||
|
||||
#
|
||||
# Find the headers, dependencies, and suites in the test cases file
|
||||
#
|
||||
|
||||
my ( $suite_header ) = $test_cases =~ /\/\* BEGIN_HEADER \*\/\n(.*?)\n\/\* END_HEADER \*\//s;
|
||||
my ( $suite_defines ) = $test_cases =~ /\/\* BEGIN_DEPENDENCIES\n \* (.*?)\n \* END_DEPENDENCIES/s;
|
||||
my ( $suite_helpers ) = $test_cases =~ /\/\* BEGIN_SUITE_HELPERS \*\/\n(.*?)\n\/\* END_SUITE_HELPERS \*\//s;
|
||||
|
||||
my $requirements;
|
||||
if ($suite_defines =~ /^depends_on:/)
|
||||
{
|
||||
( $requirements ) = $suite_defines =~ /^depends_on:(.*)$/;
|
||||
}
|
||||
|
||||
my @var_req_arr = split(/:/, $requirements);
|
||||
my $suite_pre_code;
|
||||
my $suite_post_code;
|
||||
my $dispatch_code;
|
||||
my $mapping_code;
|
||||
my %mapping_values;
|
||||
|
||||
while (@var_req_arr)
|
||||
{
|
||||
my $req = shift @var_req_arr;
|
||||
$req =~ s/(!?)(.*)/$1defined($2)/;
|
||||
|
||||
$suite_pre_code .= "#if $req\n";
|
||||
$suite_post_code .= "#endif /* $req */\n";
|
||||
}
|
||||
|
||||
$/ = $line_separator;
|
||||
|
||||
open(TEST_FILE, ">$test_file") or die "Opening destination file '$test_file': $!";
|
||||
print TEST_FILE << "END";
|
||||
/*
|
||||
* *** THIS FILE HAS BEEN MACHINE GENERATED ***
|
||||
*
|
||||
* This file has been machine generated using the script: $0
|
||||
*
|
||||
* Test file : $test_file
|
||||
*
|
||||
* The following files were used to create this file.
|
||||
*
|
||||
* Main code file : $test_main_file
|
||||
* Helper file : $test_common_helper_file
|
||||
* Test suite file : $test_case_file
|
||||
* Test suite data : $test_case_data
|
||||
*
|
||||
*
|
||||
* This file is part of mbed TLS (https://tls.mbed.org)
|
||||
*/
|
||||
|
||||
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||
#include <mbedtls/config.h>
|
||||
#else
|
||||
#include MBEDTLS_CONFIG_FILE
|
||||
#endif
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Common helper code */
|
||||
|
||||
$test_common_helpers
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Test Suite Code */
|
||||
|
||||
$suite_pre_code
|
||||
$suite_header
|
||||
$suite_helpers
|
||||
$suite_post_code
|
||||
|
||||
END
|
||||
|
||||
$test_main =~ s/SUITE_PRE_DEP/$suite_pre_code/;
|
||||
$test_main =~ s/SUITE_POST_DEP/$suite_post_code/;
|
||||
|
||||
while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//msg)
|
||||
{
|
||||
my $function_deps = $1;
|
||||
my $function_decl = $2;
|
||||
|
||||
# Sanity checks of function
|
||||
if ($function_decl !~ /^#line\s*.*\nvoid /)
|
||||
{
|
||||
die "Test function does not have 'void' as return type.\n" .
|
||||
"Function declaration:\n" .
|
||||
$function_decl;
|
||||
}
|
||||
if ($function_decl !~ /^(#line\s*.*)\nvoid (\w+)\(\s*(.*?)\s*\)\s*{(.*)}/ms)
|
||||
{
|
||||
die "Function declaration not in expected format\n";
|
||||
}
|
||||
my $line_directive = $1;
|
||||
my $function_name = $2;
|
||||
my $function_params = $3;
|
||||
my $function_pre_code;
|
||||
my $function_post_code;
|
||||
my $param_defs;
|
||||
my $param_checks;
|
||||
my @dispatch_params;
|
||||
my @var_def_arr = split(/,\s*/, $function_params);
|
||||
my $i = 1;
|
||||
my $mapping_regex = "".$function_name;
|
||||
my $mapping_count = 0;
|
||||
|
||||
$function_decl =~ s/(^#line\s*.*)\nvoid /$1\nvoid test_suite_/;
|
||||
|
||||
# Add exit label if not present
|
||||
if ($function_decl !~ /^exit:$/m)
|
||||
{
|
||||
$function_decl =~ s/}\s*$/\nexit:\n return;\n}/;
|
||||
}
|
||||
|
||||
if ($function_deps =~ /^depends_on:/)
|
||||
{
|
||||
( $function_deps ) = $function_deps =~ /^depends_on:(.*)$/;
|
||||
}
|
||||
|
||||
foreach my $req (split(/:/, $function_deps))
|
||||
{
|
||||
$function_pre_code .= "#ifdef $req\n";
|
||||
$function_post_code .= "#endif /* $req */\n";
|
||||
}
|
||||
|
||||
foreach my $def (@var_def_arr)
|
||||
{
|
||||
# Handle the different parameter types
|
||||
if( substr($def, 0, 4) eq "int " )
|
||||
{
|
||||
$param_defs .= " int param$i;\n";
|
||||
$param_checks .= " if( verify_int( params[$i], ¶m$i ) != 0 ) return( DISPATCH_INVALID_TEST_DATA );\n";
|
||||
push @dispatch_params, "param$i";
|
||||
|
||||
$mapping_regex .= ":([\\d\\w |\\+\\-\\(\\)]+)";
|
||||
$mapping_count++;
|
||||
}
|
||||
elsif( substr($def, 0, 6) eq "char *" )
|
||||
{
|
||||
$param_defs .= " char *param$i = params[$i];\n";
|
||||
$param_checks .= " if( verify_string( ¶m$i ) != 0 ) return( DISPATCH_INVALID_TEST_DATA );\n";
|
||||
push @dispatch_params, "param$i";
|
||||
$mapping_regex .= ":(?:\\\\.|[^:\n])+";
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Parameter declaration not of supported type (int, char *)\n";
|
||||
}
|
||||
$i++;
|
||||
|
||||
}
|
||||
|
||||
# Find non-integer values we should map for this function
|
||||
if( $mapping_count)
|
||||
{
|
||||
my @res = $test_data =~ /^$mapping_regex/msg;
|
||||
foreach my $value (@res)
|
||||
{
|
||||
next unless ($value !~ /^\d+$/);
|
||||
if ( $mapping_values{$value} ) {
|
||||
${ $mapping_values{$value} }{$function_pre_code} = 1;
|
||||
} else {
|
||||
$mapping_values{$value} = { $function_pre_code => 1 };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $call_params = join ", ", @dispatch_params;
|
||||
my $param_count = @var_def_arr + 1;
|
||||
$dispatch_code .= << "END";
|
||||
if( strcmp( params[0], "$function_name" ) == 0 )
|
||||
{
|
||||
$function_pre_code
|
||||
$param_defs
|
||||
if( cnt != $param_count )
|
||||
{
|
||||
mbedtls_fprintf( stderr, "\\nIncorrect argument count (%d != %d)\\n", cnt, $param_count );
|
||||
return( DISPATCH_INVALID_TEST_DATA );
|
||||
}
|
||||
|
||||
$param_checks
|
||||
test_suite_$function_name( $call_params );
|
||||
return ( DISPATCH_TEST_SUCCESS );
|
||||
$function_post_code
|
||||
return ( DISPATCH_UNSUPPORTED_SUITE );
|
||||
}
|
||||
else
|
||||
END
|
||||
|
||||
my $function_code = $function_pre_code . $function_decl . "\n" .
|
||||
$function_post_code;
|
||||
$test_main =~ s/FUNCTION_CODE/$function_code\nFUNCTION_CODE/;
|
||||
}
|
||||
|
||||
# Find specific case dependencies that we should be able to check
|
||||
# and make check code
|
||||
my $dep_check_code;
|
||||
|
||||
my @res = $test_data =~ /^depends_on:([!:\w]+)/msg;
|
||||
my %case_deps;
|
||||
foreach my $deps (@res)
|
||||
{
|
||||
foreach my $dep (split(/:/, $deps))
|
||||
{
|
||||
$case_deps{$dep} = 1;
|
||||
}
|
||||
}
|
||||
while( my ($key, $value) = each(%case_deps) )
|
||||
{
|
||||
if( substr($key, 0, 1) eq "!" )
|
||||
{
|
||||
my $key = substr($key, 1);
|
||||
$dep_check_code .= << "END";
|
||||
if( strcmp( str, "!$key" ) == 0 )
|
||||
{
|
||||
#if !defined($key)
|
||||
return( DEPENDENCY_SUPPORTED );
|
||||
#else
|
||||
return( DEPENDENCY_NOT_SUPPORTED );
|
||||
#endif
|
||||
}
|
||||
END
|
||||
}
|
||||
else
|
||||
{
|
||||
$dep_check_code .= << "END";
|
||||
if( strcmp( str, "$key" ) == 0 )
|
||||
{
|
||||
#if defined($key)
|
||||
return( DEPENDENCY_SUPPORTED );
|
||||
#else
|
||||
return( DEPENDENCY_NOT_SUPPORTED );
|
||||
#endif
|
||||
}
|
||||
END
|
||||
}
|
||||
}
|
||||
|
||||
# Make mapping code
|
||||
while( my ($key, $value) = each(%mapping_values) )
|
||||
{
|
||||
my $key_mapping_code = << "END";
|
||||
if( strcmp( str, "$key" ) == 0 )
|
||||
{
|
||||
*value = ( $key );
|
||||
return( KEY_VALUE_MAPPING_FOUND );
|
||||
}
|
||||
END
|
||||
|
||||
# handle depenencies, unless used at least one without depends
|
||||
if ($value->{""}) {
|
||||
$mapping_code .= $key_mapping_code;
|
||||
next;
|
||||
}
|
||||
for my $ifdef ( keys %$value ) {
|
||||
(my $endif = $ifdef) =~ s!ifdef!endif //!g;
|
||||
$mapping_code .= $ifdef . $key_mapping_code . $endif;
|
||||
}
|
||||
}
|
||||
|
||||
$dispatch_code =~ s/^(.+)/ $1/mg;
|
||||
|
||||
$test_main =~ s/TESTCASE_FILENAME/$test_case_data/g;
|
||||
$test_main =~ s/TESTCODE_FILENAME/$test_case_file/g;
|
||||
$test_main =~ s/FUNCTION_CODE//;
|
||||
$test_main =~ s/DEP_CHECK_CODE/$dep_check_code/;
|
||||
$test_main =~ s/DISPATCH_FUNCTION/$dispatch_code/;
|
||||
$test_main =~ s/MAPPING_CODE/$mapping_code/;
|
||||
|
||||
print TEST_FILE << "END";
|
||||
$test_main
|
||||
END
|
||||
|
||||
close(TEST_FILE);
|
61
externals/mbedtls/tests/scripts/yotta-build.sh
vendored
61
externals/mbedtls/tests/scripts/yotta-build.sh
vendored
@@ -1,61 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# yotta-build.sh
|
||||
#
|
||||
# This file is part of mbed TLS (https://tls.mbed.org)
|
||||
#
|
||||
# Copyright (c) 2015-2016, ARM Limited, All Rights Reserved
|
||||
#
|
||||
# Purpose
|
||||
#
|
||||
# To run test builds of the yotta module for all supported targets.
|
||||
|
||||
set -eu
|
||||
|
||||
check_tools()
|
||||
{
|
||||
for TOOL in "$@"; do
|
||||
if ! `hash "$TOOL" >/dev/null 2>&1`; then
|
||||
echo "$TOOL not found!" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
yotta_build()
|
||||
{
|
||||
TARGET=$1
|
||||
|
||||
echo; echo "*** $TARGET (release) ***"
|
||||
yt -t $TARGET build
|
||||
|
||||
echo; echo "*** $TARGET (debug) ***"
|
||||
yt -t $TARGET build -d
|
||||
}
|
||||
|
||||
# Make sure the tools we need are available.
|
||||
check_tools "arm-none-eabi-gcc" "armcc" "yotta"
|
||||
|
||||
yotta/create-module.sh
|
||||
cd yotta/module
|
||||
yt update || true # needs network
|
||||
|
||||
if uname -a | grep 'Linux.*x86' >/dev/null; then
|
||||
yotta_build x86-linux-native
|
||||
fi
|
||||
if uname -a | grep 'Darwin.*x86' >/dev/null; then
|
||||
yotta_build x86-osx-native
|
||||
fi
|
||||
|
||||
# armcc build tests.
|
||||
yotta_build frdm-k64f-armcc
|
||||
#yotta_build nordic-nrf51822-16k-armcc
|
||||
|
||||
# arm-none-eabi-gcc build tests.
|
||||
yotta_build frdm-k64f-gcc
|
||||
#yotta_build st-nucleo-f401re-gcc # dirent
|
||||
#yotta_build stm32f429i-disco-gcc # fails in mbed-hal-st-stm32f4
|
||||
#yotta_build nordic-nrf51822-16k-gcc # fails in minar-platform
|
||||
#yotta_build bbc-microbit-classic-gcc # fails in minar-platform
|
||||
#yotta_build st-stm32f439zi-gcc # fails in mbed-hal-st-stm32f4
|
||||
#yotta_build st-stm32f429i-disco-gcc # fails in mbed-hal-st-stm32f4
|
Reference in New Issue
Block a user