Initial commit
This commit is contained in:
104
TBE/MinGW/bin/a2dll
Normal file
104
TBE/MinGW/bin/a2dll
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is a2dll 1.0
|
||||
# (c)1999-2000 Paul Sokolovsky
|
||||
# a2dll is distrubuted under GNU General Public License, see http://www.gnu.org
|
||||
|
||||
|
||||
usage() {
|
||||
echo 'a2dll 1.0: convert static library into win32 dll'
|
||||
echo ' by <Paul.Sokolovsky@technologist.com>'
|
||||
echo 'Usage: a2dll <staticlib> [-o <dllname>] [linker commands:-L,-l,-s] [--relink]'
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
cmdline=$@
|
||||
|
||||
while test $# -ge 1
|
||||
do
|
||||
case "$1" in
|
||||
-\? | -h* | --h*) usage;;
|
||||
-o ) out="$2"; shift; shift;;
|
||||
--relink) relink=1; shift;;
|
||||
-* ) libs="$libs $1"; shift;;
|
||||
*) in=$1; shift;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$in" = "" ]
|
||||
then
|
||||
usage
|
||||
fi
|
||||
|
||||
base=`basename $in .a`
|
||||
|
||||
if [ "$out" = "" ]
|
||||
then
|
||||
out=`awk -v n=$base 'BEGIN {print substr(n,4); exit;}'`.dll
|
||||
fi
|
||||
|
||||
if [ "$relink" != "1" ]
|
||||
then
|
||||
rm -f .dll/*
|
||||
/usr/bin/mkdir -p .dll
|
||||
cd .dll
|
||||
ar x ../$in
|
||||
else
|
||||
cd .dll
|
||||
fi
|
||||
|
||||
echo Creating shared library \'$out\'
|
||||
|
||||
dllwrap --export-all -o ../$out `ls` $libs >../ld.err 2>&1
|
||||
|
||||
cd ..
|
||||
if [ `wc ld.err|awk ' {print $1}' ` -gt 2 ]
|
||||
then
|
||||
echo Linking error, consult file \'ld.err\', correct errors, and run
|
||||
echo \'$0 $cmdline --relink\'
|
||||
exit 1
|
||||
else
|
||||
# cleanup
|
||||
|
||||
rm -f ld.err
|
||||
rm -f .dll/*
|
||||
/usr/bin/rmdir .dll
|
||||
|
||||
# create .def
|
||||
# we use pexports on dll instead of dlltool on objects for this,
|
||||
# because it's:
|
||||
# 1. faster
|
||||
# 2. I just saw that dlltool lies about assembly-sourced files, it
|
||||
# lists their symbols as data
|
||||
|
||||
pexports $out >$base.def
|
||||
|
||||
# create import library
|
||||
|
||||
mv $in $in.static
|
||||
dlltool --dllname $out --def $base.def --output-lib $in
|
||||
|
||||
# finally, we check whether dll exports data symbols
|
||||
# if yes, we suggest user on steps to perform
|
||||
|
||||
pexports $out | awk '/DATA/ { print $1}' >$out.data
|
||||
if test -s $out.data
|
||||
then
|
||||
echo
|
||||
echo Shared library exports data symbols, they are listed \
|
||||
in \'$out.data\'. For using them in client application, you should mark \
|
||||
them as __declspec\(dllimport\) in library headers. You can quickly \
|
||||
find places where these data symbols declared by issuing
|
||||
echo
|
||||
echo " grep -f $out.data *.h"
|
||||
echo
|
||||
echo in library header directory. Also note that this step is optional, you can postpone \
|
||||
it until you\'ll get during linking unresolved symbol _imp__\<something\>, where \
|
||||
\<something\> is one of the symbols listed in $out.data. Read documentation \
|
||||
\(static2dll_howto.txt\) for more information.
|
||||
else
|
||||
rm $out.data
|
||||
fi
|
||||
rm $base.def
|
||||
fi
|
||||
BIN
TBE/MinGW/bin/addr2line.exe
Normal file
BIN
TBE/MinGW/bin/addr2line.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/ar.exe
Normal file
BIN
TBE/MinGW/bin/ar.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/as.exe
Normal file
BIN
TBE/MinGW/bin/as.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/c++.exe
Normal file
BIN
TBE/MinGW/bin/c++.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/c++filt.exe
Normal file
BIN
TBE/MinGW/bin/c++filt.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/cpp.exe
Normal file
BIN
TBE/MinGW/bin/cpp.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/dlltool.exe
Normal file
BIN
TBE/MinGW/bin/dlltool.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/dllwrap.exe
Normal file
BIN
TBE/MinGW/bin/dllwrap.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/dos2unix.exe
Normal file
BIN
TBE/MinGW/bin/dos2unix.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/drmingw.exe
Normal file
BIN
TBE/MinGW/bin/drmingw.exe
Normal file
Binary file not shown.
976
TBE/MinGW/bin/dsw2mak
Normal file
976
TBE/MinGW/bin/dsw2mak
Normal file
@@ -0,0 +1,976 @@
|
||||
#!gawk -f
|
||||
# dsw2mak.awk
|
||||
#
|
||||
# An Awk script that generates a unix Makefile from a
|
||||
# Microsoft Developer Studio workspace file.
|
||||
#
|
||||
# Copyright (C) 2001 Jos<6F> Fonseca
|
||||
#
|
||||
# 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 2
|
||||
# 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, http://www.gnu.org/copyleft/gpl.html
|
||||
# for more details.
|
||||
#
|
||||
# Jos<6F> Fonseca <j_r_fonseca@yahoo.co.uk>
|
||||
#
|
||||
# Features:
|
||||
# - generation of GUI applications (including resource files),
|
||||
# DLLs, console applications and static libraries
|
||||
# - translations of the most common compiler and linker options
|
||||
# - conversion of workspace files (.dsw) and all associated
|
||||
# projects files (.dsp) generating all necessary Makefiles
|
||||
# - handling of nested !IF, !ELSEIF and !ENDIF maintaining the
|
||||
# same build configurations as the original project
|
||||
# - automatic generation of the dependencies
|
||||
#
|
||||
# Example:
|
||||
# gawk -f dsw2mak.awk MyApp.dsw
|
||||
#
|
||||
# Notes:
|
||||
# - Make sure that both this script and the input files are in
|
||||
# a line ending convention that gawk version in your system
|
||||
# can handle.
|
||||
# - If an option is not handled by this script don't edit all
|
||||
# generate Makefiles by hand. Add support for the option in
|
||||
# this script and submit your additions to the author.
|
||||
#
|
||||
# Changelog (incomplete):
|
||||
# 2001-02-18: Jos<6F> Fonseca
|
||||
# Improved linker libraries and options handling.
|
||||
# Debug output.
|
||||
# Better handling of custom builds
|
||||
#
|
||||
# 2001-02-15: Jos<6F> Fonseca
|
||||
# Improved C compiler options handling.
|
||||
# More verbose warning output.
|
||||
#
|
||||
# 2001-02-14: Jos<6F> Fonseca
|
||||
# Added comments to the source code.
|
||||
#
|
||||
|
||||
|
||||
# check and remove unnecessary quotes from a string
|
||||
function fixquotes(str) {
|
||||
if(str ~ /^"[^[:blank:]]+"$/) {
|
||||
sub(/^"/, "", str);
|
||||
sub(/"$/, "", str);
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
# fixes a path string
|
||||
function fixpath(path) {
|
||||
# remove leading and trainling whitespaces
|
||||
sub(/^[[:blank:]]+/, "", path);
|
||||
sub(/[[:blank:]]+$/, "", path);
|
||||
|
||||
# check and remove unnecessary quotes
|
||||
path = fixquotes(path)
|
||||
|
||||
# change the forward slashes to backslashes
|
||||
gsub(/\\/, "/", path)
|
||||
|
||||
# remove reduntant ./ directories
|
||||
gsub(/^(\.\/)+/, "", path)
|
||||
gsub(/^\/(\.\/)+/, "", path)
|
||||
|
||||
return path
|
||||
}
|
||||
|
||||
# get the base directory from a path
|
||||
function basedir(path) {
|
||||
# remove leading and trainling whitespaces
|
||||
sub(/^[[:blank:]]+/, "", path);
|
||||
sub(/[[:blank:]]+$/, "", path);
|
||||
|
||||
# remove the quotes
|
||||
if(path ~ /^".+"$/) {
|
||||
sub(/^"/, "", path);
|
||||
sub(/"$/, "", path);
|
||||
}
|
||||
|
||||
# remove the leading path
|
||||
sub(/(^|[\/\\:])[^\/\\:]*$/, "", path)
|
||||
|
||||
# add quotes if needed
|
||||
if(path ~ /[[:blank:]]/)
|
||||
path = "\"" path "\""
|
||||
|
||||
return path
|
||||
}
|
||||
|
||||
# get the filename from a path
|
||||
function basefile(path) {
|
||||
# remove leading and trainling whitespaces
|
||||
sub(/^[[:blank:]]+/, "", path);
|
||||
sub(/[[:blank:]]+$/, "", path);
|
||||
|
||||
# remove the quotes
|
||||
if(path ~ /^".+"$/) {
|
||||
sub(/^"/, "", path);
|
||||
sub(/"$/, "", path);
|
||||
}
|
||||
|
||||
# remove the trailing path
|
||||
sub(/^.*[\/\\:]/, "", path)
|
||||
|
||||
# add quotes if needed
|
||||
if(path ~ /[[:blank:]]/)
|
||||
path = "\"" path "\""
|
||||
|
||||
return path
|
||||
}
|
||||
|
||||
# skip lines until matching a given regular expression
|
||||
# NOTE: not used but it could be eventually handy
|
||||
function skip(regexp, infile, ret) {
|
||||
while((ret = getline < infile) == 1 && $0 !~ regexp) {}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
# parses a project file (.dsp) specified by 'infile' and generates a makefile to 'outfile'
|
||||
function parse_dsp(infile, outfile, i) {
|
||||
print infile
|
||||
|
||||
# this specifies verbose debug output
|
||||
debug = 0
|
||||
|
||||
# this specifies a prefix to the binutils and gcc binaries
|
||||
#prefix = "mingw32-"
|
||||
prefix = ""
|
||||
|
||||
# this specifies the name of the 'rm -f' or equivalent command
|
||||
rm = "rm -f"
|
||||
|
||||
# check for a bad file
|
||||
if((getline < infile) == -1) {
|
||||
print infile ": " ERRNO
|
||||
return
|
||||
}
|
||||
|
||||
# Strip DOS line-endings
|
||||
gsub(/\r$/, "")
|
||||
|
||||
# count the number of lines
|
||||
inline = 1
|
||||
|
||||
# print the Makefile header
|
||||
print "# Makefile - " basefile(infile) > outfile
|
||||
print "" > outfile
|
||||
|
||||
# this specifies the default name for the dependencies file
|
||||
dependencies = ".dependencies"
|
||||
|
||||
# attemp to get the project name
|
||||
if(/^# Microsoft Developer Studio Project File/) {
|
||||
name = gensub(/^# Microsoft Developer Studio Project File - Name="(.*)".*$/, "\\1", "1")
|
||||
dependencies = name ".dep"
|
||||
}
|
||||
|
||||
# main loop
|
||||
while((getline < infile) == 1) {
|
||||
# Strip DOS line-endings
|
||||
gsub(/\r$/, "")
|
||||
|
||||
# increment the number of lines
|
||||
inline = inline + 1
|
||||
|
||||
# catch the target type definition
|
||||
if(/^# TARGTYPE/) {
|
||||
if (/[[:space:]]0x0101$/) {
|
||||
# Win32 (x86) Application
|
||||
exeflag = 1
|
||||
dllflag = 0
|
||||
libflag = 0
|
||||
}
|
||||
if (/[[:space:]]0x0102$/) {
|
||||
# Win32 (x86) Dynamic-Link Library
|
||||
exeflag = 0
|
||||
dllflag = 1
|
||||
libflag = 0
|
||||
}
|
||||
if (/[[:space:]]0x0103$/) {
|
||||
# Win32 (x86) Console Application
|
||||
exeflag = 1
|
||||
dllflag = 0
|
||||
libflag = 0
|
||||
}
|
||||
if (/[[:space:]]0x0104$/) {
|
||||
# Win32 (x86) Static Library
|
||||
exeflag = 0
|
||||
dllflag = 0
|
||||
libflag = 1
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the default configuration definition
|
||||
if(/^CFG=/) {
|
||||
print "ifndef CFG" > outfile
|
||||
print > outfile
|
||||
print "endif" > outfile
|
||||
}
|
||||
|
||||
# deal with the preprocessor commands
|
||||
if(/^!/) {
|
||||
# as GNU make doesn't have the '!ELSEIF' equivalent we have to use nested 'if ... else .. endif' to obtain the same effect
|
||||
# a stack is used to keep track of the current nested level
|
||||
|
||||
if(/^!IF/) {
|
||||
$0 = gensub(/^!IF[[:space:]]+(.+)[[:space:]]*==[[:space:]]*(.+)$/, "ifeq \\1 \\2", "1")
|
||||
$0 = gensub(/^!IF[[:space:]]+(.+)[[:space:]]*!=[[:space:]]*(.+)$/, "ifneq \\1 \\2", "1")
|
||||
print > outfile
|
||||
stacktop += 1
|
||||
stack[stacktop] = 1
|
||||
continue
|
||||
}
|
||||
if(/^!ELSE$/) {
|
||||
print "else"
|
||||
}
|
||||
if(/^!ELSEIF/) {
|
||||
$0 = gensub(/^!ELSEIF[[:space:]]+(.+)[[:space:]]*==[[:space:]]*(.+)$/, "else\nifeq \\1 \\2", "1")
|
||||
$0 = gensub(/^!ELSEIF[[:space:]]+(.+)[[:space:]]*!=[[:space:]]*(.+)$/, "else\nifneq \\1 \\2", "1")
|
||||
print > outfile
|
||||
stack[stacktop] += 1
|
||||
continue
|
||||
}
|
||||
if(/^!ENDIF[[:space:]]*$/) {
|
||||
for (i = 0; i < stack[stacktop]; i++)
|
||||
print "endif" > outfile
|
||||
stacktop -= 1
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
# catch the C++ compiler definition
|
||||
if(/^CPP=/) {
|
||||
print "CC=" prefix "gcc" > outfile
|
||||
print "CFLAGS=" > outfile
|
||||
print "CXX=" prefix "g++" > outfile
|
||||
print "CXXFLAGS=$(CFLAGS)" > outfile
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the C++ compiler flags
|
||||
if(/^# ADD CPP /) {
|
||||
if (debug)
|
||||
print infile ":" inline ": " $0
|
||||
|
||||
# extract the flags from the line
|
||||
cflags = $0
|
||||
sub(/^# ADD CPP /, "", cflags)
|
||||
|
||||
split(" " cflags, options, /[[:space:]]+\//)
|
||||
|
||||
cflags = ""
|
||||
for(i in options) {
|
||||
option = options[i]
|
||||
|
||||
# translate the options
|
||||
# some of the translations effectively remove the option (and its arguments) since there is no translation equivalent
|
||||
|
||||
if (option == "") {
|
||||
} else if(option ~ /^nologo$/) {
|
||||
# Suppress Startup Banner and Information Messages
|
||||
option = ""
|
||||
} else if (option ~ /^W0$/) {
|
||||
# Turns off all warning messages
|
||||
option = "-w"
|
||||
} else if (option ~ /^W[123]$/) {
|
||||
# Warning Level
|
||||
option = "-W"
|
||||
} else if (option ~ /^W4$/) {
|
||||
# Warning Level
|
||||
option = "-Wall"
|
||||
} else if (option ~ /^WX$/) {
|
||||
# Warnings As Errors
|
||||
option = "-Werror"
|
||||
} else if (option ~ /^Gm$/) {
|
||||
# Enable Minimal Rebuild
|
||||
option = ""
|
||||
} else if (option ~ /^GX$/) {
|
||||
# Enable Exception Handling
|
||||
option = "-fexceptions"
|
||||
} else if (option ~ /^Z[d7iI]$/) {
|
||||
# Debug Info
|
||||
option = "-g"
|
||||
} else if (option ~ /^Od$/) {
|
||||
# Disable Optimizations
|
||||
option = "-O0"
|
||||
} else if (option ~ /^O1$/) {
|
||||
# Minimize Size
|
||||
option = "-Os"
|
||||
} else if (option ~ /^O2$/) {
|
||||
# Maximize Speed
|
||||
option = "-O2"
|
||||
} else if (option ~ /^Ob0$/) {
|
||||
# Disables inline Expansion
|
||||
option = "-fno-inline"
|
||||
} else if (option ~ /^Ob1$/) {
|
||||
# In-line Function Expansion
|
||||
option = ""
|
||||
} else if (option ~ /^Ob2$/) {
|
||||
# auto In-line Function Expansion
|
||||
option = "-finline-functions"
|
||||
} else if (option ~ /^Oy$/) {
|
||||
# Frame-Pointer Omission
|
||||
option = "-fomit-frame-pointer"
|
||||
} else if (option ~ /^GZ$/) {
|
||||
# Catch Release-Build Errors in Debug Build
|
||||
option = ""
|
||||
} else if (option ~ /^M[DLT]d?$/) {
|
||||
# Use Multithreaded Run-Time Library
|
||||
option = ""
|
||||
} else if (option ~ /^D/) {
|
||||
# Preprocessor Definitions
|
||||
gsub(/^D[[:space:]]*/, "", option)
|
||||
option = "-D" fixquotes(option)
|
||||
} else if (option ~ /^I/) {
|
||||
# Additional Include Directories
|
||||
gsub(/^I[[:space:]]*/, "", option)
|
||||
option = "-I" fixpath(option)
|
||||
} else if (option ~ /^U/) {
|
||||
# Undefines a previously defined symbol
|
||||
gsub(/^U[[:space:]]*/, "", option)
|
||||
option = "-U" fixquotes(option)
|
||||
} else if (option ~ /^Fp/) {
|
||||
# Name .PCH File
|
||||
option = ""
|
||||
} else if (option ~ /^F[Rr]/) {
|
||||
# Create .SBR File
|
||||
option = ""
|
||||
} else if (option ~ /^YX$/) {
|
||||
# Automatic Use of Precompiled Headers
|
||||
option = ""
|
||||
} else if (option ~ /^FD$/) {
|
||||
# Generate File Dependencies
|
||||
option = ""
|
||||
} else if (option ~ /^c$/) {
|
||||
# Compile Without Linking
|
||||
# this option is always present and is already specified in the suffix rules
|
||||
option = ""
|
||||
} else if (option ~ /^GB$/) {
|
||||
# Blend Optimization
|
||||
option = "-mcpu=pentiumpro -D_M_IX86=500"
|
||||
} else if (option ~ /^G6$/) {
|
||||
# Pentium Pro Optimization
|
||||
option = "-march=pentiumpro -D_M_IX86=600"
|
||||
} else if (option ~ /^G5$/) {
|
||||
# Pentium Optimization
|
||||
option = "-mcpu=pentium -D_M_IX86=500"
|
||||
} else if (option ~ /^G3$/) {
|
||||
# 80386 Optimization
|
||||
option = "-mcpu=i386 -D_M_IX86=300"
|
||||
} else if (option ~ /^G4$/) {
|
||||
# 80486 Optimization
|
||||
option = "-mcpu=i486 -D_M_IX86=400"
|
||||
} else if (option ~ /^Yc/) {
|
||||
# Create Precompiled Header
|
||||
option = ""
|
||||
} else if (option ~ /^Yu/) {
|
||||
# Use Precompiled Header
|
||||
option = ""
|
||||
} else if (option ~ /^Za$/) {
|
||||
# Disable Language Extensions
|
||||
option = "-ansi"
|
||||
} else if (option ~ /^Ze$/) {
|
||||
# Enable Microsoft Extensions
|
||||
print infile ":" inline ": /" option ": Enable Microsoft Extensions option ignored" > "/dev/stderr"
|
||||
option = ""
|
||||
} else if (option ~ /^Zm[[:digit:]]+$/) {
|
||||
# Specify Memory Allocation Limit
|
||||
option = ""
|
||||
} else if (option ~ /^Zp1$/) {
|
||||
# Packs structures on 1-byte boundaries
|
||||
option = "-fpack-struct"
|
||||
} else if (option ~ /^Zp(2|4|8|16)?$/) {
|
||||
# Struct Member Alignment
|
||||
option = ""
|
||||
print infile ":" inline ": /" option ": Struct Member Alignment option ignored" > "/dev/stderr"
|
||||
} else {
|
||||
print infile ":" inline ": /" option ": C compiler option not implemented" > "/dev/stderr"
|
||||
option = ""
|
||||
}
|
||||
|
||||
if (option != "") {
|
||||
if(cflags == "")
|
||||
cflags = option
|
||||
else
|
||||
cflags = cflags " " option
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# change the slashes
|
||||
gsub(/\\/, "/", cflags)
|
||||
|
||||
print "CFLAGS+=" cflags > outfile
|
||||
|
||||
if (debug)
|
||||
print outfile ": " "CFLAGS+=" cflags
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the linker definition
|
||||
if(/^LINK32=/) {
|
||||
if (exeflag)
|
||||
print "LD=$(CXX) $(CXXFLAGS)" > outfile
|
||||
if (dllflag)
|
||||
print "LD=" prefix "dllwrap" > outfile
|
||||
|
||||
print "LDFLAGS=" > outfile
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the linker flags
|
||||
if(/^# ADD LINK32 /) {
|
||||
if (debug)
|
||||
print infile ":" inline ": " $0
|
||||
|
||||
# extract the flags from the line
|
||||
ldflags = $0
|
||||
sub(/^# ADD LINK32 /, "", ldflags)
|
||||
|
||||
split(ldflags, options, /[[:space:]]+\//)
|
||||
|
||||
# attempts to get the used libraries to a seperate variable
|
||||
libs = options[1]
|
||||
libs = gensub(/([[:alnum:]/\\_-]+)\.lib/, "-l\\1", "g", libs)
|
||||
delete options[1]
|
||||
|
||||
ldflags = ""
|
||||
for(i in options) {
|
||||
option = options[i]
|
||||
|
||||
# translate the options
|
||||
# some of the translations effectively remove the option (and its arguments) since there is no translation equivalent
|
||||
if (option == "") {
|
||||
} else if (option ~ /^base:/) {
|
||||
# Base Address
|
||||
gsub(/^base:/, "--image-base ", option)
|
||||
} else if (option ~ /^debug$/) {
|
||||
# Generate Debug Info
|
||||
option = ""
|
||||
} else if (option ~ /^dll$/) {
|
||||
# Build a DLL
|
||||
dllflag = 1
|
||||
|
||||
# remove this option since the DLL output option is handled by the suffix rules
|
||||
option = ""
|
||||
} else if (option ~ /^incremental:[[:alpha:]]+$/) {
|
||||
# Link Incrmentally
|
||||
option = ""
|
||||
} else if (option ~ /^implib:/) {
|
||||
# Name import library
|
||||
gsub(/^implib:/, "", option)
|
||||
option = "--implib " fixpath(gensub(/([[:alnum:]_-]+)\.lib/, "lib\\1.a", "g", option))
|
||||
} else if (option ~ /^libpath:/) {
|
||||
# Additional Libpath
|
||||
gsub(/^libpath:/, "", option)
|
||||
option = "-L" fixpath(option)
|
||||
} else if (option ~ /^machine:[[:alnum:]]+$/) {
|
||||
# Specify Target Platform
|
||||
option = ""
|
||||
} else if (option ~ /^map/) {
|
||||
# Generate Mapfile
|
||||
if (option ~ /^map:/)
|
||||
gsub(/^map:/, "-Map ", option)
|
||||
else
|
||||
option = "-Map " name ".map"
|
||||
} else if(option ~ /^nologo$/) {
|
||||
# Suppress Startup Banner and Information Messages
|
||||
option = ""
|
||||
} else if (option ~ /^out:/) {
|
||||
# Output File Name
|
||||
target = fixpath(gensub(/out:("[^"]+"|[^[:space:]]+).*$/, "\\1", "1", option))
|
||||
|
||||
print "TARGET=" target > outfile
|
||||
|
||||
# remove this option since the output option is handled by the suffix rules
|
||||
option = ""
|
||||
} else if (option ~ /^pdbtype:/) {
|
||||
# Program Database Storage
|
||||
option = ""
|
||||
} else if (option ~ /^subsystem:/) {
|
||||
# Specify Subsystem
|
||||
gsub(/^subsystem:/, "-Wl,--subsystem,", option)
|
||||
} else if (option ~ /^version:[[:digit:].]+$/) {
|
||||
# Version Information
|
||||
option = ""
|
||||
} else {
|
||||
print infile ":" inline ": /" option ": linker option not implemented" > "/dev/stderr"
|
||||
option = ""
|
||||
}
|
||||
|
||||
if (option != "") {
|
||||
if(ldflags == "")
|
||||
ldflags = option
|
||||
else
|
||||
ldflags = ldflags " " option
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# attempt to get the name of the target from the '/out:' option
|
||||
if (ldflags ~ /\/out:/) { # Output File Name
|
||||
}
|
||||
|
||||
# change the slashes
|
||||
gsub(/\\/, "/", ldflags)
|
||||
|
||||
print "LDFLAGS+=" ldflags > outfile
|
||||
print "LIBS+=" libs > outfile
|
||||
|
||||
if (debug) {
|
||||
print outfile ": " "LDFLAGS+=" ldflags
|
||||
print outfile ": " "LIBS+=" libs
|
||||
}
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the library archiver definition
|
||||
if(/^LIB32=/) {
|
||||
libflag = 1
|
||||
|
||||
print "AR=" prefix "ar" > outfile
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the library archiver flags
|
||||
if(/^# ADD LIB32 /) {
|
||||
# extract the flags from the line
|
||||
arflags = $0
|
||||
sub(/^# ADD LIB32 /, "", arflags)
|
||||
|
||||
# translate the options
|
||||
gsub(/\/nologo[[:space:]]*/, "", arflags) # Suppress Startup Banner and Information Messages
|
||||
gsub(/\/machine:[[:alnum:]]+[[:space:]]*/, "", arflags) # Specify Target Platform
|
||||
|
||||
# attempt to get the name of the target from the '/out:' option
|
||||
if (arflags ~ /\/out:/) {
|
||||
target = fixpath(gensub(/^.*\/out:(".*"|[^[:space:]]+).*$/, "\\1", "1", arflags))
|
||||
target = basedir(target) "/lib" basefile(gensub(/(\.[^.]*)?$/, ".a", 1, target))
|
||||
|
||||
print "TARGET=" target > outfile
|
||||
|
||||
# remove this option since the output option is handled differentely
|
||||
sub(/\/out:(".*"|[^[:space:]]+)/, "", arflags)
|
||||
}
|
||||
|
||||
# change the slashes
|
||||
gsub(/\\/, "/", arflags)
|
||||
|
||||
print "ARFLAGS=rus" > outfile
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch the resource compiler definition
|
||||
if(/^RSC=/) {
|
||||
print "RC=" prefix "windres -O COFF" > outfile
|
||||
continue
|
||||
}
|
||||
|
||||
# handle the begin of the target definition
|
||||
if(/^# Begin Target$/) {
|
||||
print "" > outfile
|
||||
|
||||
# print the default target name definition
|
||||
print "ifndef TARGET" > outfile
|
||||
if(exeflag)
|
||||
print "TARGET=" name ".exe" > outfile
|
||||
if(dllflag)
|
||||
print "TARGET=" name ".dll" > outfile
|
||||
if(libflag)
|
||||
print "TARGET=lib" name ".a" > outfile
|
||||
print "endif" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# print the default target and the suffix rules
|
||||
print ".PHONY: all" > outfile
|
||||
print "all: $(TARGET)" > outfile
|
||||
print "" > outfile
|
||||
print "%.o: %.c" > outfile
|
||||
print "\t$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
|
||||
print "" > outfile
|
||||
print "%.o: %.cc" > outfile
|
||||
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
|
||||
print "" > outfile
|
||||
print "%.o: %.cpp" > outfile
|
||||
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
|
||||
print "" > outfile
|
||||
print "%.o: %.cxx" > outfile
|
||||
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
|
||||
print "" > outfile
|
||||
print "%.res: %.rc" > outfile
|
||||
print "\t$(RC) $(CPPFLAGS) -o $@ -i $<" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# initialize some bookeeping variables
|
||||
ngroups = 0 # number of groups in the target
|
||||
nsources = 0 # number of isolated sources in the target
|
||||
groupflag = 0 # state variable that indicates if we are inside or outside of a group definition
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# handle the end of a target definition
|
||||
if(/^# End Target$/) {
|
||||
# print the sources files definition that includes...
|
||||
printf "SRCS=" > outfile
|
||||
|
||||
# ... the sources groups variables...
|
||||
for (i = 0; i < ngroups; i++)
|
||||
printf "$(%s) ", groups[i] > outfile
|
||||
|
||||
# ... and isolated sources not included in any group
|
||||
if (nsources) {
|
||||
print " \\" > outfile
|
||||
for (i = 0; i < nsources - 1; i++)
|
||||
print "\t" sources[i] " \\" > outfile
|
||||
print "\t" sources[i] > outfile
|
||||
}
|
||||
else
|
||||
print "" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# define the objects automatically from the sources in the Makefile
|
||||
print "OBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(SRCS)))))))" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# print the target rule, according with the type of target
|
||||
print "$(TARGET): $(OBJS)" > outfile
|
||||
if (exeflag)
|
||||
print "\t$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)" > outfile
|
||||
if (dllflag)
|
||||
print "\t$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)" > outfile
|
||||
if (libflag)
|
||||
print "\t$(AR) $(ARFLAGS) $@ $(OBJS)" > outfile
|
||||
print "" > outfile
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# gather groups of source files to put them in diferent variables in the Makefile
|
||||
if(/^# Begin Group/) {
|
||||
# get the group name
|
||||
groupname = gensub(/^# Begin Group "(.*)"$/, "\\1", "1")
|
||||
|
||||
# take the variable name as the upper case of the group name and changing the spaces to underscores
|
||||
groupvarname = toupper(groupname)
|
||||
gsub(/[[:space:]]/, "_", groupvarname)
|
||||
|
||||
# add this information to the groups array
|
||||
groups[ngroups] = groupvarname
|
||||
ngroups += 1
|
||||
|
||||
# initialize some bookeeping variables
|
||||
ngsources = 0 # number of sources in this group
|
||||
|
||||
# signal that we are inside a group
|
||||
groupflag = 1
|
||||
|
||||
continue
|
||||
}
|
||||
if(/^# End Group$/) {
|
||||
# print the group source variable definition
|
||||
printf "%s=", groupvarname > outfile
|
||||
if (ngsources) {
|
||||
for (i = 0; i < ngsources; i++)
|
||||
printf " \\\n\t%s", gsources[i] > outfile
|
||||
}
|
||||
print "" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# signal that we are outside a group
|
||||
groupflag = 0
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
if (/^SOURCE=/) {
|
||||
# get the source file name
|
||||
source = fixpath(gensub(/^SOURCE=(.*)$/, "\\1", "1"))
|
||||
|
||||
# add to the group sources or isolated sources according we are in a group or not
|
||||
if (groupflag)
|
||||
{
|
||||
gsources[ngsources] = source
|
||||
ngsources += 1
|
||||
}
|
||||
else
|
||||
{
|
||||
sources[nsources] = source
|
||||
nsources += 1
|
||||
}
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# attempts to handle custom builds definition
|
||||
if(/^# Begin Custom Build/) {
|
||||
print infile ":" inline ": " source ": Custom Build" > "/dev/stderr"
|
||||
|
||||
# signal we are inside a custom build definition
|
||||
customflag = 1
|
||||
ncustomvars = 0
|
||||
|
||||
continue
|
||||
}
|
||||
if(/^# End Custom Build/) {
|
||||
# signal we are leaving a custom build definition
|
||||
customflag = 0
|
||||
|
||||
continue
|
||||
}
|
||||
if(customflag) {
|
||||
if (debug)
|
||||
print infile ": " $0
|
||||
|
||||
# MSDS handles customs builds defining a series of variables for the user convenience
|
||||
# handle their definition ...
|
||||
if($0 ~ /^IntDir=/) {
|
||||
gsub(/^IntDir=/, "", $0)
|
||||
Intdir = fixpath($0)
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^IntPath=/) {
|
||||
gsub(/^IntPath=/, "", $0)
|
||||
IntPath = fixpath($0)
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^OutDir=/) {
|
||||
gsub(/^OutDir=/, "", $0)
|
||||
OutDir_ = fixpath($0)
|
||||
OutDir = "."
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^InputDir=/) {
|
||||
gsub(/^InputDir=/, "", $0)
|
||||
InputDir = fixpath($0)
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^InputName=/) {
|
||||
gsub(/^InputName=/, "", $0)
|
||||
InputName = fixquotes($0)
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^InputPath=/) {
|
||||
gsub(/^InputPath=/, "", $0)
|
||||
InputPath = fixpath($0)
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^TargetDir=/) {
|
||||
gsub(/^TargetDir=/, "", $0)
|
||||
TargetDir_ = fixpath($0)
|
||||
TargetDir = "."
|
||||
continue
|
||||
}
|
||||
if($0 ~ /^TargetPath=/) {
|
||||
gsub(/^TargetPath=/, "", $0)
|
||||
gsub(TargetDir_, ".", $0)
|
||||
TargetPath = fixpath($0)
|
||||
continue
|
||||
}
|
||||
|
||||
# ... and substitute them in the rules
|
||||
gsub(/\$\(IntDir\)/, IntDir)
|
||||
gsub(/\$\(IntPath\)/, IntPath)
|
||||
gsub(/\$\(OutDir\)/, OutDir)
|
||||
gsub(/\$\(InputDir\)/, InputDir)
|
||||
gsub(/\$\(InputName\)/, InputName)
|
||||
gsub(/\$\(InputPath\)/, InputPath)
|
||||
gsub(/\$\(TargetDir\)/, TargetDir)
|
||||
gsub(/\$\(TargetPath\)/, TargetPath)
|
||||
|
||||
gsub(/\$\(SOURCE\)/, source)
|
||||
gsub(/"\$\(INTDIR\)"[[:space:]]*/, "")
|
||||
gsub(/"\$\(OUTDIR\)"[[:space:]]*/, "")
|
||||
|
||||
# do a serie of generic actions to convert the rule
|
||||
gsub(/^ /, "\t")
|
||||
gsub(/\\/, "/")
|
||||
gsub(/\/$/, "\\")
|
||||
gsub(/\.obj/, ".o")
|
||||
|
||||
print > outfile
|
||||
|
||||
if (debug)
|
||||
print outfile ": " $0
|
||||
}
|
||||
}
|
||||
|
||||
# print the 'clean' target rule
|
||||
print ".PHONY: clean" > outfile
|
||||
print "clean:" > outfile
|
||||
print "\t-" rm " $(OBJS) $(TARGET) " dependencies > outfile
|
||||
print "" > outfile
|
||||
|
||||
# print the 'depends' target rule for automatic dependencies generation
|
||||
print ".PHONY: depends" > outfile
|
||||
print "depends:" > outfile
|
||||
print "\t-$(CXX) $(CXXFLAGS) $(CPPFLAGS) -MM $(filter %.c %.cc %.cpp %.cxx,$(SRCS)) > " dependencies> outfile
|
||||
print "" > outfile
|
||||
print "-include " dependencies > outfile
|
||||
print "" > outfile
|
||||
|
||||
# close the files
|
||||
close(outfile)
|
||||
close(infile)
|
||||
}
|
||||
|
||||
# parses a workpace file (.dsw) specified by 'infile' and generates a makefile to 'outfile'
|
||||
function parse_dsw(infile, outfile, i)
|
||||
{
|
||||
print infile
|
||||
|
||||
# print the Makefile header
|
||||
print "# Makefile - " basefile(infile) > outfile
|
||||
print "" > outfile
|
||||
|
||||
# initialize the number of projects counter
|
||||
nprojects = 0
|
||||
|
||||
# main loop
|
||||
while((getline < infile) == 1) {
|
||||
# catch a project definition
|
||||
if(/^Project:/) {
|
||||
# increment the project counter
|
||||
project = nprojects
|
||||
nprojects++
|
||||
|
||||
# extract the project name and filename
|
||||
project_name[project] = fixpath(gensub(/^Project:[[:blank:]]+(.*)=(.*)[[:blank:]]+-[[:blank:]]+.*$/, "\\1", 1))
|
||||
project_file[project] = fixpath(gensub(/^Project:[[:blank:]]+(.*)=(.*)[[:blank:]]+-[[:blank:]]+.*$/, "\\2", 1))
|
||||
|
||||
# check for a .dsp file extension
|
||||
if(project_file[project] ~ /\.[Dd][Ss][Pp]$/) {
|
||||
# create the output filename by renaming the file extension from .dsp to .mak
|
||||
project_makefile[project] = project_file[project]
|
||||
sub(/(\.[^.]*)?$/, ".mak", project_makefile[project])
|
||||
}
|
||||
else
|
||||
project_makefile[project] = ""
|
||||
|
||||
# initialize the project dependencies
|
||||
project_dependencies[project] = ""
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch a project dependency marker
|
||||
if(project && /^{{{$/) {
|
||||
# read dependencies until the end marker
|
||||
while((getline < infile) == 1 && !/^}}}$/)
|
||||
if(/^[[:blank:]]*Project_Dep_Name[[:blank:]]+/)
|
||||
project_dependencies[project] = project_dependencies[project] " " fixpath(gensub(/^[[:blank:]]*Project_Dep_Name[[:blank:]]+(.*)$/, "\\1", 1))
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
# catch other (perhaps important) section definitions and produce a warning
|
||||
if(/^[[:alpha:]]+:/)
|
||||
{
|
||||
project = 0
|
||||
print infile ": " gensub(/^([[:alpha:]]+):/, "\\1", 1) ": unknown section" > "/dev/stderr"
|
||||
}
|
||||
}
|
||||
|
||||
# print the default target rule
|
||||
print ".PHONY: all" > outfile
|
||||
printf "all:" > outfile
|
||||
for(i = 0; i < nprojects; i++)
|
||||
printf " \\\n\t%s", project_name[i] > outfile
|
||||
print "" > outfile
|
||||
print "" > outfile
|
||||
|
||||
# print the rules for each project target
|
||||
for(i = 0; i < nprojects; i++) {
|
||||
print ".PHONY: " project_name[i] > outfile
|
||||
print project_name[i] ":" project_dependencies[i] > outfile
|
||||
if(project_makefile[i] != "") {
|
||||
if(basedir(project_makefile[i]) == "")
|
||||
print "\t$(MAKE) -f " project_makefile[i] > outfile
|
||||
else
|
||||
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) > outfile
|
||||
}
|
||||
print "" > outfile
|
||||
}
|
||||
|
||||
# print the 'clean' target rule
|
||||
print ".PHONY: clean" > outfile
|
||||
print "clean:" > outfile
|
||||
for(i = 0; i < nprojects; i++)
|
||||
if(project_makefile[i] != "") {
|
||||
if(basedir(project_makefile[i]) == "")
|
||||
print "\t$(MAKE) -f " project_makefile[i] " clean" > outfile
|
||||
else
|
||||
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) " clean" > outfile
|
||||
}
|
||||
print "" > outfile
|
||||
|
||||
# print the 'depends' target rule for automatic dependencies generation
|
||||
print ".PHONY: depends" > outfile
|
||||
print "depends:" > outfile
|
||||
for(i = 0; i < nprojects; i++)
|
||||
if(project_makefile[i] != "") {
|
||||
if(basedir(project_makefile[i]) == "")
|
||||
print "\t$(MAKE) -f " project_makefile[i] " depends" > outfile
|
||||
else
|
||||
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) " depends" > outfile
|
||||
}
|
||||
print "" > outfile
|
||||
|
||||
close(outfile)
|
||||
close(infile)
|
||||
|
||||
# parse every project file
|
||||
for(i = 0; i < nprojects; i++)
|
||||
if(project_makefile[i] != "") {
|
||||
if(basedir(infile) == "")
|
||||
parse_dsp(project_file[i], project_makefile[i])
|
||||
else
|
||||
parse_dsp(basedir(infile) "\\" project_file[i], basedir(infile) "\\" project_makefile[i])
|
||||
}
|
||||
}
|
||||
|
||||
# main program
|
||||
BEGIN {
|
||||
print "dsw2mak.awk Generates a Makefile from a .DSW/.DSP file Jose Fonseca"
|
||||
print ""
|
||||
|
||||
# for each argument ...
|
||||
for (i = 1; i < ARGC; i++) {
|
||||
infile = ARGV[i]
|
||||
|
||||
# determine whether is a workspace or a project file and parse it
|
||||
if(infile ~ /\.[Dd][Ss][Ww]$/) {
|
||||
# create the output filename by renaming the filename to Makefile
|
||||
outfile = infile
|
||||
sub(/[^\/\\:]+$/, "Makefile", outfile)
|
||||
|
||||
parse_dsw(infile, outfile)
|
||||
} else if(infile ~ /\.[Dd][Ss][Pp]$/) {
|
||||
# create the output filename by renaming the file extension from .dsp to .mak
|
||||
outfile = infile
|
||||
sub(/(\.[^.]*)?$/, ".mak", outfile)
|
||||
|
||||
parse_dsp(infile, outfile)
|
||||
} else {
|
||||
print infile ": unknown file format" > "/dev/stderr"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
TBE/MinGW/bin/exchndl.dll
Normal file
BIN
TBE/MinGW/bin/exchndl.dll
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/g++.exe
Normal file
BIN
TBE/MinGW/bin/g++.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/g77.exe
Normal file
BIN
TBE/MinGW/bin/g77.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/gcc.exe
Normal file
BIN
TBE/MinGW/bin/gcc.exe
Normal file
Binary file not shown.
551
TBE/MinGW/bin/gccbug
Normal file
551
TBE/MinGW/bin/gccbug
Normal file
@@ -0,0 +1,551 @@
|
||||
#!/bin/sh
|
||||
# Submit a problem report to a GNATS site.
|
||||
# Copyright (C) 1993, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a
|
||||
# version written by Heinz G. Seidl (hgs@cygnus.com).
|
||||
#
|
||||
# This file is part of GNU GNATS.
|
||||
#
|
||||
# GNU GNATS 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 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU GNATS 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 GNU GNATS; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# The version of this send-pr.
|
||||
VERSION=3.113
|
||||
|
||||
# The submitter-id for your site.
|
||||
SUBMITTER=net
|
||||
|
||||
# The default mail address for PR submissions.
|
||||
GNATS_ADDR=gcc-gnats@gcc.gnu.org
|
||||
|
||||
# The default release for this host.
|
||||
DEFAULT_RELEASE="3.2.3 (mingw special 20030425-1)"
|
||||
|
||||
# The default organization.
|
||||
DEFAULT_ORGANIZATION=
|
||||
|
||||
# What mailer to use. This must come after the config file, since it is
|
||||
# host-dependent.
|
||||
# Copied from cvsbug
|
||||
if [ -f /usr/sbin/sendmail ]; then
|
||||
MAIL_AGENT="/usr/sbin/sendmail -oi -t"
|
||||
else
|
||||
MAIL_AGENT="/usr/lib/sendmail -oi -t"
|
||||
fi
|
||||
MAILER=`echo $MAIL_AGENT | sed -e 's, .*,,'`
|
||||
if [ ! -f "$MAILER" ] ; then
|
||||
echo "$COMMAND: Cannot file mail program \"$MAILER\"."
|
||||
echo "$COMMAND: Please fix the MAIL_AGENT entry in the $COMMAND file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# How to read the passwd database.
|
||||
PASSWD="cat /etc/passwd"
|
||||
|
||||
ECHON=bsd
|
||||
|
||||
if [ $ECHON = bsd ] ; then
|
||||
ECHON1="echo -n"
|
||||
ECHON2=
|
||||
elif [ $ECHON = sysv ] ; then
|
||||
ECHON1=echo
|
||||
ECHON2='\c'
|
||||
else
|
||||
ECHON1=echo
|
||||
ECHON2=
|
||||
fi
|
||||
|
||||
#
|
||||
|
||||
if [ -z "$TMPDIR" ]; then
|
||||
TMPDIR=/tmp
|
||||
else
|
||||
if [ "`echo $TMPDIR | grep '/$'`" != "" ]; then
|
||||
TMPDIR="`echo $TMPDIR | sed -e 's,/$,,'`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ yes = yes ]; then
|
||||
TEMP0=`mktemp $TMPDIR/poXXXXXX` || exit 1
|
||||
TEMP=`mktemp $TMPDIR/pXXXXXX` || exit 1
|
||||
BAD=`mktemp $TMPDIR/pbadXXXXXX` || exit 1
|
||||
REF=`mktemp $TMPDIR/pfXXXXXX` || exit 1
|
||||
REMOVE_TEMP="rm -f $TEMP0 $TEMP $BAD $REF"
|
||||
else
|
||||
TEMPD=$TMPDIR/pd$$
|
||||
TEMP0=$TEMPD/po$$
|
||||
TEMP=$TEMPD/p$$
|
||||
BAD=$TEMPD/pbad$$
|
||||
REF=$TEMPD/pf$$
|
||||
mkdir $TEMPD || exit 1
|
||||
REMOVE_TEMP="rm -rf $TEMPD"
|
||||
fi
|
||||
|
||||
# find a user name
|
||||
if [ "$LOGNAME" = "" ]; then
|
||||
if [ "$USER" != "" ]; then
|
||||
LOGNAME="$USER"
|
||||
else
|
||||
LOGNAME="UNKNOWN"
|
||||
fi
|
||||
fi
|
||||
|
||||
FROM="$LOGNAME"
|
||||
REPLY_TO="${REPLY_TO:-${REPLYTO:-$LOGNAME}}"
|
||||
|
||||
# Find out the name of the originator of this PR.
|
||||
if [ -n "$NAME" ]; then
|
||||
ORIGINATOR="$NAME"
|
||||
elif [ -f $HOME/.fullname ]; then
|
||||
ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
|
||||
else
|
||||
# Must use temp file due to incompatibilities in quoting behavior
|
||||
# and to protect shell metacharacters in the expansion of $LOGNAME
|
||||
$PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP0
|
||||
ORIGINATOR="`cat $TEMP0`"
|
||||
rm -f $TEMP0
|
||||
fi
|
||||
|
||||
if [ -n "$ORGANIZATION" ]; then
|
||||
if [ -f "$ORGANIZATION" ]; then
|
||||
ORGANIZATION="`cat $ORGANIZATION`"
|
||||
fi
|
||||
else
|
||||
if [ -n "$DEFAULT_ORGANIZATION" ]; then
|
||||
ORGANIZATION="$DEFAULT_ORGANIZATION"
|
||||
elif [ -f $HOME/.organization ]; then
|
||||
ORGANIZATION="`cat $HOME/.organization`"
|
||||
fi
|
||||
fi
|
||||
|
||||
# If they don't have a preferred editor set, then use
|
||||
if [ -z "$VISUAL" ]; then
|
||||
if [ -z "$EDITOR" ]; then
|
||||
EDIT=vi
|
||||
else
|
||||
EDIT="$EDITOR"
|
||||
fi
|
||||
else
|
||||
EDIT="$VISUAL"
|
||||
fi
|
||||
|
||||
# Find out some information.
|
||||
SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
|
||||
( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
|
||||
ARCH=`[ -f /bin/arch ] && /bin/arch`
|
||||
MACHINE=`[ -f /bin/machine ] && /bin/machine`
|
||||
|
||||
COMMAND=`echo $0 | sed -e 's,.*/,,'`
|
||||
USAGE="Usage: $COMMAND [-PVL] [-t address] [-f filename] [-s severity]
|
||||
[-c address] [--request-id] [--version]"
|
||||
REMOVE=
|
||||
BATCH=
|
||||
CC=
|
||||
SEVERITY_C=
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-r) ;; # Ignore for backward compat.
|
||||
-t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
|
||||
shift ; GNATS_ADDR="$1"
|
||||
EXPLICIT_GNATS_ADDR=true
|
||||
;;
|
||||
-f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
|
||||
shift ; IN_FILE="$1"
|
||||
if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then
|
||||
echo "$COMMAND: cannot read $IN_FILE"
|
||||
$REMOVE_TEMP
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
-b | --batch) BATCH=true ;;
|
||||
-c | --cc) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
|
||||
shift ; CC="$1"
|
||||
;;
|
||||
-s | --severity) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
|
||||
shift ; SEVERITY_C="$1"
|
||||
;;
|
||||
-p | -P | --print) PRINT=true ;;
|
||||
-L | --list) FORMAT=norm ;;
|
||||
-l | -CL | --lisp) FORMAT=lisp ;;
|
||||
--request-id) REQUEST_ID=true ;;
|
||||
-h | --help) echo "$USAGE"; $REMOVE_TEMP; exit 0 ;;
|
||||
-V | --version) cat <<EOF
|
||||
gccbug (GCC) $DEFAULT_RELEASE
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
EOF
|
||||
$REMOVE_TEMP; exit 0 ;;
|
||||
-*) echo "$USAGE" ; $REMOVE_TEMP; exit 1 ;;
|
||||
*) echo "$USAGE" ; $REMOVE_TEMP; exit 1
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# spam does not need to be listed here
|
||||
CATEGORIES="ada bootstrap c++ c debug fortran java libf2c libgcj libobjc libstdc++ middle-end objc optimization other preprocessor target web"
|
||||
|
||||
case "$FORMAT" in
|
||||
lisp) echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {printf "( "} {printf "(\"%s\") ",$0} END {printf ")\n"}'
|
||||
$REMOVE_TEMP
|
||||
exit 0
|
||||
;;
|
||||
norm) l=`echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
|
||||
END {print max + 1;}'`
|
||||
c=`expr 70 / $l`
|
||||
if [ $c -eq 0 ]; then c=1; fi
|
||||
echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {print "Known categories:"; i = 0 }
|
||||
{ printf ("%-'$l'.'$l's", $0); if ((++i % '$c') == 0) { print "" } }
|
||||
END { print ""; }'
|
||||
$REMOVE_TEMP
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
ORIGINATOR_C='<name of the PR author (one line)>'
|
||||
ORGANIZATION_C='<organization of PR author (multiple lines)>'
|
||||
SYNOPSIS_C='<synopsis of the problem (one line)>'
|
||||
if [ -z "$SEVERITY_C" ]; then
|
||||
SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
|
||||
fi
|
||||
PRIORITY_C='<[ low | medium ] (one line)>'
|
||||
CATEGORY_C='<choose from the top of this file (one line)>'
|
||||
RELEASE_C='<release number or tag (one line)>'
|
||||
ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
|
||||
DESCRIPTION_C='<precise description of the problem (multiple lines)>'
|
||||
HOW_TO_REPEAT_C='<When reporting a compiler error, preprocessor output must be included>'
|
||||
FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
|
||||
|
||||
# Catch some signals. ($xs kludge needed by Sun /bin/sh)
|
||||
xs=0
|
||||
trap '$REMOVE_TEMP; exit $xs' 0
|
||||
trap 'echo "$COMMAND: Aborting ..."; $REMOVE_TEMP; xs=1; exit' 1 3 13 15
|
||||
|
||||
# If they told us to use a specific file, then do so.
|
||||
if [ -n "$IN_FILE" ]; then
|
||||
if [ "$IN_FILE" = "-" ]; then
|
||||
# The PR is coming from the standard input.
|
||||
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
|
||||
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" > $TEMP
|
||||
else
|
||||
cat > $TEMP
|
||||
fi
|
||||
else
|
||||
# Use the file they named.
|
||||
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
|
||||
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" $IN_FILE > $TEMP
|
||||
else
|
||||
cat $IN_FILE > $TEMP
|
||||
fi
|
||||
fi
|
||||
else
|
||||
|
||||
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
|
||||
# If their PR_FORM points to a bogus entry, then bail.
|
||||
if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then
|
||||
echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM"
|
||||
sleep 1
|
||||
PRINT_INTERN=bad_prform
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
|
||||
cp $PR_FORM $TEMP ||
|
||||
( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit )
|
||||
else
|
||||
for file in $TEMP $REF ; do
|
||||
cat > $file << '__EOF__'
|
||||
SEND-PR: -*- send-pr -*-
|
||||
SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
|
||||
SEND-PR: will all comments (text enclosed in `<' and `>').
|
||||
SEND-PR:
|
||||
SEND-PR: Please consult the GCC manual if you are not sure how to
|
||||
SEND-PR: fill out a problem report.
|
||||
SEND-PR: Note that the Synopsis field is mandatory. The Subject (for
|
||||
SEND-PR: the mail) will be made the same as Synopsis unless explicitly
|
||||
SEND-PR: changed.
|
||||
SEND-PR:
|
||||
SEND-PR: Choose from the following categories:
|
||||
SEND-PR:
|
||||
__EOF__
|
||||
|
||||
# Format the categories so they fit onto lines.
|
||||
l=`echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
|
||||
END {print max + 1;}'`
|
||||
c=`expr 61 / $l`
|
||||
if [ $c -eq 0 ]; then c=1; fi
|
||||
echo "$CATEGORIES" | \
|
||||
awk 'BEGIN {printf "SEND-PR: "; i = 0 }
|
||||
{ printf ("%-'$l'.'$l's", $0);
|
||||
if ((++i % '$c') == 0) { printf "\nSEND-PR: " } }
|
||||
END { printf "\nSEND-PR:\n"; }' >> $file
|
||||
|
||||
cat >> $file << __EOF__
|
||||
To: $GNATS_ADDR
|
||||
Subject:
|
||||
From: $FROM
|
||||
Reply-To: $REPLYTO
|
||||
Cc: $CC
|
||||
X-send-pr-version: $VERSION
|
||||
X-GNATS-Notify:
|
||||
|
||||
|
||||
>Submitter-Id: $SUBMITTER
|
||||
>Originator: $ORIGINATOR
|
||||
>Organization: ${ORGANIZATION-$ORGANIZATION_C}
|
||||
>Confidential: no
|
||||
SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public.
|
||||
>Synopsis: $SYNOPSIS_C
|
||||
>Severity: $SEVERITY_C
|
||||
SEND-PR: critical GCC is completely not operational; no work-around known.
|
||||
SEND-PR: serious GCC is not working properly; a work-around is possible.
|
||||
SEND-PR: non-critical Report indicates minor problem.
|
||||
>Priority: $PRIORITY_C
|
||||
SEND-PR: medium The problem should be solved in the next release.
|
||||
SEND-PR: low The problem should be solve in a future release.
|
||||
>Category: $CATEGORY_C
|
||||
>Class: <[ doc-bug | accepts-illegal | rejects-legal | wrong-code | ice-on-legal-code| ice-on-illegal-code | pessimizes-code | sw-bug | change-request | support ] (one line)>
|
||||
SEND-PR: doc-bug The documentation is incorrect.
|
||||
SEND-PR: accepts-illegal GCC fails to reject erroneous code.
|
||||
SEND-PR: rejects-legal GCC gives an error message for correct code.
|
||||
SEND-PR: wrong-code The machine code generated by gcc is incorrect.
|
||||
SEND-PR: ice-on-legal-code GCC gives an Internal Compiler Error (ICE)
|
||||
SEND-PR: for correct code
|
||||
SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error
|
||||
SEND-PR: pessimizes-code GCC misses an important optimization opportunity
|
||||
SEND-PR: sw-bug Software bug of some other class than above
|
||||
SEND-PR: change-request A feature in GCC is missing.
|
||||
SEND-PR: support I need help with gcc.
|
||||
>Release: ${DEFAULT_RELEASE-$RELEASE_C}
|
||||
>Environment:
|
||||
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
|
||||
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
|
||||
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
|
||||
$ENVIRONMENT_C
|
||||
host: i386-pc-mingw32
|
||||
build: i386-pc-mingw32
|
||||
target: i386-pc-mingw32
|
||||
configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c++,f77,objc --disable-win32-registry --disable-shared --enable-sjlj-exceptions
|
||||
>Description:
|
||||
$DESCRIPTION_C
|
||||
>How-To-Repeat:
|
||||
$HOW_TO_REPEAT_C
|
||||
>Fix:
|
||||
$FIX_C
|
||||
__EOF__
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then
|
||||
cat $TEMP
|
||||
xs=0; exit
|
||||
fi
|
||||
|
||||
chmod u+w $TEMP
|
||||
if [ -z "$REQUEST_ID" ]; then
|
||||
eval $EDIT $TEMP
|
||||
else
|
||||
ed -s $TEMP << '__EOF__'
|
||||
/^Subject/s/^Subject:.*/Subject: request for a customer id/
|
||||
/^>Category/s/^>Category:.*/>Category: send-pr/
|
||||
w
|
||||
q
|
||||
__EOF__
|
||||
fi
|
||||
|
||||
if cmp -s $REF $TEMP ; then
|
||||
echo "$COMMAND: problem report not filled out, therefore not sent"
|
||||
xs=1; exit
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Check the enumeration fields
|
||||
|
||||
# This is a "sed-subroutine" with one keyword parameter
|
||||
# (with workaround for Sun sed bug)
|
||||
#
|
||||
SED_CMD='
|
||||
/$PATTERN/{
|
||||
s|||
|
||||
s|<.*>||
|
||||
s|^[ ]*||
|
||||
s|[ ]*$||
|
||||
p
|
||||
q
|
||||
}'
|
||||
|
||||
|
||||
while [ -z "$REQUEST_ID" ]; do
|
||||
CNT=0
|
||||
|
||||
# 1) Confidential
|
||||
#
|
||||
PATTERN=">Confidential:"
|
||||
CONFIDENTIAL=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$CONFIDENTIAL" in
|
||||
no) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;;
|
||||
esac
|
||||
#
|
||||
# 2) Severity
|
||||
#
|
||||
PATTERN=">Severity:"
|
||||
SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$SEVERITY" in
|
||||
""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
|
||||
esac
|
||||
#
|
||||
# 3) Priority
|
||||
#
|
||||
PATTERN=">Priority:"
|
||||
PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$PRIORITY" in
|
||||
""|low|medium) CNT=`expr $CNT + 1` ;;
|
||||
high) echo "$COMMAND: \`Priority: high' is reserved for GCC maintainers." ;;
|
||||
*) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
|
||||
esac
|
||||
#
|
||||
# 4) Category
|
||||
#
|
||||
PATTERN=">Category:"
|
||||
CATEGORY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
FOUND=
|
||||
for C in $CATEGORIES
|
||||
do
|
||||
if [ "$C" = "$CATEGORY" ]; then FOUND=true ; break ; fi
|
||||
done
|
||||
if [ -n "$FOUND" ]; then
|
||||
CNT=`expr $CNT + 1`
|
||||
else
|
||||
if [ -z "$CATEGORY" ]; then
|
||||
echo "$COMMAND: you must include a Category: field in your report."
|
||||
else
|
||||
echo "$COMMAND: \`$CATEGORY' is not a known category."
|
||||
fi
|
||||
fi
|
||||
#
|
||||
# 5) Class
|
||||
#
|
||||
PATTERN=">Class:"
|
||||
CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||||
case "$CLASS" in
|
||||
""|doc-bug|accepts-illegal|rejects-legal|wrong-code|ice-on-legal-code|ice-on-illegal-code|pessimizes-code|sw-bug|change-request|support) CNT=`expr $CNT + 1` ;;
|
||||
*) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
|
||||
esac
|
||||
#
|
||||
# 6) Check that synopsis is not empty
|
||||
#
|
||||
if grep "^>Synopsis:[ ]*${SYNOPSIS_C}\$" $TEMP > /dev/null
|
||||
then
|
||||
echo "$COMMAND: Synopsis must not be empty."
|
||||
else
|
||||
CNT=`expr $CNT + 1`
|
||||
fi
|
||||
|
||||
[ $CNT -lt 6 -a -z "$BATCH" ] &&
|
||||
echo "Errors were found with the problem report."
|
||||
|
||||
while true; do
|
||||
if [ -z "$BATCH" ]; then
|
||||
$ECHON1 "a)bort, e)dit or s)end? $ECHON2"
|
||||
read input
|
||||
else
|
||||
if [ $CNT -eq 6 ]; then
|
||||
input=s
|
||||
else
|
||||
input=a
|
||||
fi
|
||||
fi
|
||||
case "$input" in
|
||||
a*)
|
||||
if [ -z "$BATCH" ]; then
|
||||
echo "$COMMAND: the problem report remains in $BAD and is not sent."
|
||||
REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF"
|
||||
mv $TEMP $BAD
|
||||
else
|
||||
echo "$COMMAND: the problem report is not sent."
|
||||
fi
|
||||
xs=1; exit
|
||||
;;
|
||||
e*)
|
||||
eval $EDIT $TEMP
|
||||
continue 2
|
||||
;;
|
||||
s*)
|
||||
break 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
#
|
||||
# Make sure the mail has got a Subject. If not, use the same as
|
||||
# in Synopsis.
|
||||
#
|
||||
|
||||
if grep '^Subject:[ ]*$' $TEMP > /dev/null
|
||||
then
|
||||
SYNOPSIS=`grep '^>Synopsis:' $TEMP | sed -e 's/^>Synopsis:[ ]*//'`
|
||||
ed -s $TEMP << __EOF__
|
||||
/^Subject:/s/:.*\$/: $SYNOPSIS/
|
||||
w
|
||||
q
|
||||
__EOF__
|
||||
fi
|
||||
|
||||
#
|
||||
# Remove comments and send the problem report
|
||||
# (we have to use patterns, where the comment contains regex chars)
|
||||
#
|
||||
# /^>Originator:/s;$ORIGINATOR;;
|
||||
sed -e "
|
||||
/^SEND-PR:/d
|
||||
/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
|
||||
/^>Confidential:/s;<.*>;;
|
||||
/^>Synopsis:/s;$SYNOPSIS_C;;
|
||||
/^>Severity:/s;<.*>;;
|
||||
/^>Priority:/s;<.*>;;
|
||||
/^>Category:/s;$CATEGORY_C;;
|
||||
/^>Class:/s;<.*>;;
|
||||
/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
|
||||
/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
|
||||
/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
|
||||
/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
|
||||
/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
|
||||
" $TEMP > $REF
|
||||
|
||||
if $MAIL_AGENT < $REF; then
|
||||
echo "$COMMAND: problem report sent"
|
||||
xs=0; exit
|
||||
else
|
||||
echo "$COMMAND: mysterious mail failure."
|
||||
if [ -z "$BATCH" ]; then
|
||||
echo "$COMMAND: the problem report remains in $BAD and is not sent."
|
||||
REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF"
|
||||
mv $REF $BAD
|
||||
else
|
||||
echo "$COMMAND: the problem report is not sent."
|
||||
fi
|
||||
xs=1; exit
|
||||
fi
|
||||
BIN
TBE/MinGW/bin/gcov.exe
Normal file
BIN
TBE/MinGW/bin/gcov.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/gdb.exe
Normal file
BIN
TBE/MinGW/bin/gdb.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/gprof.exe
Normal file
BIN
TBE/MinGW/bin/gprof.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/ld.exe
Normal file
BIN
TBE/MinGW/bin/ld.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/mingw32-c++.exe
Normal file
BIN
TBE/MinGW/bin/mingw32-c++.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/mingw32-g++.exe
Normal file
BIN
TBE/MinGW/bin/mingw32-g++.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/mingw32-gcc.exe
Normal file
BIN
TBE/MinGW/bin/mingw32-gcc.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/mingw32-make.exe
Normal file
BIN
TBE/MinGW/bin/mingw32-make.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/mingwm10.dll
Normal file
BIN
TBE/MinGW/bin/mingwm10.dll
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/nm.exe
Normal file
BIN
TBE/MinGW/bin/nm.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/objcopy.exe
Normal file
BIN
TBE/MinGW/bin/objcopy.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/objdump.exe
Normal file
BIN
TBE/MinGW/bin/objdump.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/pexports.exe
Normal file
BIN
TBE/MinGW/bin/pexports.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/protoize.exe
Normal file
BIN
TBE/MinGW/bin/protoize.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/ranlib.exe
Normal file
BIN
TBE/MinGW/bin/ranlib.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/readelf.exe
Normal file
BIN
TBE/MinGW/bin/readelf.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/redir.exe
Normal file
BIN
TBE/MinGW/bin/redir.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/reimp.exe
Normal file
BIN
TBE/MinGW/bin/reimp.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/res2coff.exe
Normal file
BIN
TBE/MinGW/bin/res2coff.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/size.exe
Normal file
BIN
TBE/MinGW/bin/size.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/strings.exe
Normal file
BIN
TBE/MinGW/bin/strings.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/strip.exe
Normal file
BIN
TBE/MinGW/bin/strip.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/unix2dos.exe
Normal file
BIN
TBE/MinGW/bin/unix2dos.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/unprotoize.exe
Normal file
BIN
TBE/MinGW/bin/unprotoize.exe
Normal file
Binary file not shown.
BIN
TBE/MinGW/bin/windres.exe
Normal file
BIN
TBE/MinGW/bin/windres.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user