mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-04 12:45:45 +01:00
rollback to 3428, before the mysterious removal of libs/* at 3431/3432
git-svn-id: svn://localhost/ardour2/branches/3.0@3435 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
9c0d7d72d7
commit
449aab3c46
2869 changed files with 1026749 additions and 0 deletions
239
libs/glibmm2/tools/gmmproc.in
Normal file
239
libs/glibmm2/tools/gmmproc.in
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
#! @PERL_PATH@
|
||||
#
|
||||
# @configure_input@
|
||||
#
|
||||
######################################################################
|
||||
# gmmproc (version 4)
|
||||
######################################################################
|
||||
#
|
||||
# *** WARNING: Only modify gmmproc.in. gmmproc is built. ***
|
||||
#
|
||||
# Copyright 2001, Karl Einar Nelson, Murray Cumming
|
||||
#
|
||||
# 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 for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
#
|
||||
# 'classes':
|
||||
# WrapParser: steps through .hg and .ccg files, outputting appropriate m4 code with Outputter.
|
||||
# Outputter: Used by WrapParser to ouput wrapper code. Ouputs *.g1 temp file and uses m4 to generate *.g2 from it. Then outputs .h and .cc files.
|
||||
# Function: Contains information about C and C++ functions and signals.
|
||||
#
|
||||
######################################################################
|
||||
|
||||
########################## 'main()' ##################################
|
||||
|
||||
$main::procdir;
|
||||
$main::m4path;
|
||||
|
||||
BEGIN {
|
||||
# get prefix info from configure
|
||||
my $prefix = "@prefix@";
|
||||
my $exec_prefix = "@exec_prefix@";
|
||||
my $libdir = "@libdir@";
|
||||
|
||||
# This line must match the install directory in m4/Makefile.am
|
||||
$main::procdir = "$libdir/glibmm-2.4/proc";
|
||||
$main::m4path = "@M4@";
|
||||
|
||||
# This line must match install dir from pm/Makefile.am
|
||||
push @INC,"$main::procdir/pm";
|
||||
}
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Output;
|
||||
use WrapParser;
|
||||
|
||||
# initialize globals
|
||||
@main::macrodirs = ();
|
||||
$main::srcdir = ".";
|
||||
$main::defsdir = ".";
|
||||
$main::source = "";
|
||||
$main::debug = 0;
|
||||
$main::unwrapped = 1;
|
||||
|
||||
{ # checking the environment for a set variable can trigger a warning
|
||||
no warnings;
|
||||
$main::debug = 1 if ($ENV{'GMMPROC_DEBUG'} eq 1);
|
||||
}
|
||||
|
||||
# prototypes
|
||||
sub parse_command_line_args();
|
||||
|
||||
|
||||
#main()
|
||||
parse_command_line_args();
|
||||
|
||||
my $objOutputter = &Output::new($main::m4path, \@main::macrodirs);
|
||||
my $objWrapParser = &WrapParser::new($objOutputter);
|
||||
|
||||
$$objWrapParser{srcdir} = $main::srcdir;
|
||||
$$objWrapParser{defsdir} = $main::defsdir;
|
||||
$$objWrapParser{source} = $main::source;
|
||||
$$objOutputter{source} = $main::source;
|
||||
$$objOutputter{destdir} = $ARGV[1];
|
||||
|
||||
# Merge the C docs, e.g. gtk_docs.xml
|
||||
|
||||
# Suck the whole file into one big string, breaking it into tokens:
|
||||
$objWrapParser->read_file($main::srcdir, $main::source);
|
||||
|
||||
# Parse output
|
||||
$objWrapParser->parse_and_build_output();
|
||||
|
||||
# Write out *.g1 temporary file:
|
||||
$objOutputter->output_temp_g1($$objWrapParser{module}); # e.g. "gtk"
|
||||
|
||||
# Execute m4 to get *.g2 file:
|
||||
{
|
||||
my $exitcode = $objOutputter->make_g2_from_g1();
|
||||
if ($exitcode != 0)
|
||||
{
|
||||
if (!$main::debug)
|
||||
{
|
||||
$objOutputter->remove_temp_files();
|
||||
}
|
||||
print STDERR "m4 failed with exit code $exitcode. Aborting...\n";
|
||||
exit ($exitcode);
|
||||
}
|
||||
}
|
||||
|
||||
# Section out the resulting output
|
||||
$objOutputter->write_sections_to_files();
|
||||
|
||||
# Remove temp files.
|
||||
if (!$main::debug)
|
||||
{
|
||||
$objOutputter->remove_temp_files();
|
||||
}
|
||||
|
||||
#Warn about any unwrapped function/signals:
|
||||
if ($main::unwrapped)
|
||||
{
|
||||
my @unwrapped = GtkDefs::get_unwrapped();
|
||||
if (@unwrapped)
|
||||
{
|
||||
no warnings;
|
||||
|
||||
my @methods =
|
||||
grep {$$_{entity_type} eq "method" & $$_{c_name}!~/^_/ } @unwrapped;
|
||||
my @signals =
|
||||
grep {$$_{entity_type} eq "signal"} @unwrapped;
|
||||
my @properties =
|
||||
grep {$$_{entity_type} eq "property"} @unwrapped;
|
||||
|
||||
if (@methods)
|
||||
{
|
||||
print "Unwrapped functions:\n";
|
||||
map { print " $$_{c_name}\n"} @methods;
|
||||
}
|
||||
if (@properties)
|
||||
{
|
||||
print "Unwrapped properties:\n";
|
||||
map { print " $$_{class}::$$_{name}\n"} @properties;
|
||||
}
|
||||
if (@signals)
|
||||
{
|
||||
print "Unwrapped signals:\n";
|
||||
map { print " $$_{class}::$$_{name}\n"} @signals;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# end of program
|
||||
exit();
|
||||
|
||||
|
||||
####################################################################
|
||||
|
||||
|
||||
sub print_usage()
|
||||
{
|
||||
print
|
||||
'Usage: gmmproc [options] name srcdir destdir
|
||||
-h
|
||||
--help This usage message.
|
||||
|
||||
--doc Produces a header file for documentation. (FIXME)
|
||||
|
||||
--debug Leave intermediate output arround for analysis.
|
||||
Alternatively, set GMMPROC_DEBUG=1 in the environment.
|
||||
|
||||
--unwrapped Warn about possible unwrapped functions.
|
||||
|
||||
--defs dir Change the directory to seach for defs.
|
||||
|
||||
-I dir Specify the directory with m4 files.
|
||||
|
||||
|
||||
Note: This will read srcdir/name.{hg,ccg} file and generates destdir/name.cc
|
||||
';
|
||||
exit (1);
|
||||
}
|
||||
|
||||
# void parse_command_line_args()
|
||||
sub parse_command_line_args()
|
||||
{
|
||||
print_usage() if ($#ARGV == -1);
|
||||
|
||||
while ($#ARGV != -1)
|
||||
{
|
||||
$_ = shift @ARGV;
|
||||
|
||||
if (/^-/)
|
||||
{
|
||||
print_usage() if ( /^--help/);
|
||||
print_usage() if ( /^-h/);
|
||||
if (/^-I/)
|
||||
{
|
||||
push @main::macrodirs, shift @ARGV;
|
||||
}
|
||||
elsif (/^--unwrapped/)
|
||||
{
|
||||
$main::unwrapped = 1;
|
||||
}
|
||||
elsif (/^--defs/)
|
||||
{
|
||||
$main::defsdir = shift @ARGV;
|
||||
}
|
||||
elsif (/^--debug/)
|
||||
{
|
||||
$main::debug = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "unknown parameter $_\n";
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
last;
|
||||
}
|
||||
|
||||
# we already have one argument
|
||||
|
||||
if ($#ARGV != 1)
|
||||
{
|
||||
print STDERR "Invalid number of arguments (", $#ARGV+2, ")\n";
|
||||
print_usage();
|
||||
}
|
||||
|
||||
$main::srcdir = $ARGV[0];
|
||||
$main::source = $_;
|
||||
|
||||
push @main::macrodirs,"$main::procdir/m4";
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue