OpenSTA/etc/SwigCleanup.tcl

80 lines
2.6 KiB
Tcl
Executable File

#! /bin/sh
# The next line is executed by /bin/sh, but not Tcl \
exec tclsh $0 ${1+"$@"}
# OpenSTA, Static Timing Analyzer
# Copyright (c) 2020, Parallax Software, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Suppress compiler warnings in bletcherous swig generated code.
set swig_file [lindex $argv 0]
set backup_file "$swig_file.backup"
# Copy to the side before munging.
file rename -force $swig_file $backup_file
set in_stream [open $backup_file r]
set out_stream [open $swig_file w]
# include "Machine.hh" happens too late to define this gcc pragma.
puts $out_stream "#ifndef __GNUC__
#define __attribute__(x)
#endif"
# pragmas to suppress warnings
puts $out_stream "#define DIAG_STR(s) #s
#define DIAG_JOINSTR(x,y) DIAG_STR(x ## y)
#ifdef _MSC_VER
#define DIAG_DO_PRAGMA(x) __pragma (#x)
#define DIAG_PRAGMA(compiler,x) DIAG_DO_PRAGMA(warning(x))
#else
#define DIAG_DO_PRAGMA(x) _Pragma (#x)
#define DIAG_PRAGMA(compiler,x) DIAG_DO_PRAGMA(compiler diagnostic x)
#endif
#if defined(__clang__)
# define DISABLE_WARNING(gcc_unused,clang_option,msvc_unused) DIAG_PRAGMA(clang,push) DIAG_PRAGMA(clang,ignored DIAG_JOINSTR(-W,clang_option))
#elif defined(_MSC_VER)
# define DISABLE_WARNING(gcc_unused,clang_unused,msvc_errorcode) DIAG_PRAGMA(msvc,push) DIAG_DO_PRAGMA(warning(disable:##msvc_errorcode))
#elif defined(__GNUC__)
#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
# define DISABLE_WARNING(gcc_option,clang_unused,msvc_unused) DIAG_PRAGMA(GCC,push) DIAG_PRAGMA(GCC,ignored DIAG_JOINSTR(-W,gcc_option))
#else
# define DISABLE_WARNING(gcc_option,clang_unused,msvc_unused) DIAG_PRAGMA(GCC,ignored DIAG_JOINSTR(-W,gcc_option))
#endif
#endif
DISABLE_WARNING(cast-qual,cast-qual,00)
DISABLE_WARNING(missing-braces,missing-braces,00)
DISABLE_WARNING(pedantic,pedantic,00)
DISABLE_WARNING(missing-field-initializers,missing-field-initializers,00)
"
while { ! [eof $in_stream] } {
gets $in_stream line
puts $out_stream $line
}
close $in_stream
# Disable emacs syntax highlighting.
puts $out_stream "// Local Variables:
// mode:c++
// End:"
close $out_stream
file delete $backup_file