meta/checksymbols.pl (23 lines of code) (raw):
#!/usr/bin/perl
#
# Copyright (c) 2014 Microsoft Open Technologies, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
# LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS
# FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT.
#
# See the Apache Version 2.0 License for specific language governing
# permissions and limitations under the License.
#
# Microsoft would like to thank the following companies for their review and
# assistance with these files: Intel Corporation, Mellanox Technologies Ltd,
# Dell Products, L.P., Facebook, Inc., Marvell International Ltd.
#
# @file checksymbols.pl
#
# @brief This module defines SAI Check Symbols Parser
#
use strict;
use warnings;
use diagnostics;
my $exitcode = 0;
push @ARGV,"-" if not scalar @ARGV;
for my $file (@ARGV)
{
print "checking symbols for $file\n";
open(H, $file) or die("Could not open $file $! file.");
for my $line (<H>)
{
chomp $line;
next if not $line =~ /\w+ (\w+) (\w+)/;
my $type = $1;
my $name = $2;
next if $name =~ /^(sai_(metadata|(de)?serialize)_\w+|__func__)/ and $type =~ /[rRBTtD]/;
# metadata log level is exception since it can be changed
next if $1 eq "sai_metadata_log_level";
print STDERR "ERROR: symbol '$line' is not prefixed 'sai_metadata_' or not in read-only section\n";
$exitcode = 1;
}
close H;
}
exit $exitcode;