no more submodule
This commit is contained in:
1
GtkSharp/Source/OldStuff/parser/.gitignore
vendored
Normal file
1
GtkSharp/Source/OldStuff/parser/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
gapi*-parser
|
||||
6
GtkSharp/Source/OldStuff/parser/gapi-3.0.pc.in
Normal file
6
GtkSharp/Source/OldStuff/parser/gapi-3.0.pc.in
Normal file
@@ -0,0 +1,6 @@
|
||||
prefix=${pcfiledir}/../..
|
||||
|
||||
|
||||
Name: GAPI
|
||||
Description: GObject .NET API Wrapping Tool
|
||||
Version: @VERSION@
|
||||
170
GtkSharp/Source/OldStuff/parser/gapi-parser.cs
Normal file
170
GtkSharp/Source/OldStuff/parser/gapi-parser.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
// gapi-parser.cs - parsing driver application.
|
||||
//
|
||||
// Author: Mike Kestner <mkestner@novell.com>
|
||||
//
|
||||
// Copyright (c) 2005 Novell, Inc.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of version 2 of the GNU General Public
|
||||
// License as published by the Free Software Foundation.
|
||||
//
|
||||
// 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.
|
||||
|
||||
namespace GtkSharp.Parsing {
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Xml;
|
||||
|
||||
public class Parser {
|
||||
|
||||
[DllImport ("libc")]
|
||||
static extern int system (string command);
|
||||
|
||||
public static int Main (string[] args)
|
||||
{
|
||||
if (args.Length != 1) {
|
||||
Console.WriteLine ("Usage: gapi2-parser <filename>");
|
||||
return 0;
|
||||
}
|
||||
|
||||
XmlDocument src_doc = new XmlDocument ();
|
||||
|
||||
try {
|
||||
using (Stream stream = File.OpenRead (args [0]))
|
||||
src_doc.Load (stream);
|
||||
} catch (XmlException e) {
|
||||
Console.WriteLine ("Couldn't open source file.");
|
||||
Console.WriteLine (e);
|
||||
return 1;
|
||||
}
|
||||
|
||||
XmlNode root = src_doc.DocumentElement;
|
||||
if (root.Name != "gapi-parser-input") {
|
||||
Console.WriteLine ("Improperly formatted input file: " + args [0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach (XmlNode apinode in root.ChildNodes) {
|
||||
if (apinode.Name != "api")
|
||||
continue;
|
||||
|
||||
string outfile = (apinode as XmlElement).GetAttribute ("filename");
|
||||
string prefile = outfile + ".pre";
|
||||
|
||||
if (File.Exists (prefile))
|
||||
File.Delete (prefile);
|
||||
|
||||
foreach (XmlNode libnode in apinode.ChildNodes) {
|
||||
if (libnode.Name != "library")
|
||||
continue;
|
||||
|
||||
string lib = (libnode as XmlElement).GetAttribute ("name");
|
||||
|
||||
foreach (XmlNode nsnode in libnode.ChildNodes) {
|
||||
if (nsnode.Name != "namespace")
|
||||
continue;
|
||||
|
||||
string ns = (nsnode as XmlElement).GetAttribute ("name");
|
||||
|
||||
ArrayList files = new ArrayList ();
|
||||
Hashtable excludes = new Hashtable ();
|
||||
|
||||
foreach (XmlNode srcnode in nsnode.ChildNodes) {
|
||||
if (!(srcnode is XmlElement))
|
||||
continue;
|
||||
|
||||
XmlElement elem = srcnode as XmlElement;
|
||||
|
||||
switch (srcnode.Name) {
|
||||
case "dir":
|
||||
string dir = elem.InnerXml;
|
||||
Console.Write ("<dir {0}> ", dir);
|
||||
DirectoryInfo di = new DirectoryInfo (dir);
|
||||
foreach (FileInfo file in di.GetFiles ("*.c"))
|
||||
files.Add (dir + Path.DirectorySeparatorChar + file.Name);
|
||||
foreach (FileInfo file in di.GetFiles ("*.h"))
|
||||
files.Add (dir + Path.DirectorySeparatorChar + file.Name);
|
||||
break;
|
||||
case "file":
|
||||
string incfile = elem.InnerXml;
|
||||
Console.Write ("<file {0}> ", incfile);
|
||||
files.Add (incfile);
|
||||
break;
|
||||
case "exclude":
|
||||
string excfile = elem.InnerXml;
|
||||
Console.Write ("<exclude {0}> ", excfile);
|
||||
excludes [excfile] = 1;
|
||||
break;
|
||||
case "directory":
|
||||
string dir_path = elem.GetAttribute ("path");
|
||||
Console.Write ("<directory {0}: excluding ", dir_path);
|
||||
Hashtable excs = new Hashtable ();
|
||||
foreach (XmlNode exc_node in srcnode.ChildNodes) {
|
||||
if (exc_node.Name != "exclude")
|
||||
continue;
|
||||
string excfilename = (exc_node as XmlElement).InnerXml;
|
||||
Console.Write (excfilename + " ");
|
||||
excs [excfilename] = 1;
|
||||
}
|
||||
DirectoryInfo dinfo = new DirectoryInfo (dir_path);
|
||||
foreach (FileInfo file in dinfo.GetFiles ("*.c")) {
|
||||
if (excs.Contains (file.Name))
|
||||
continue;
|
||||
files.Add (dir_path + Path.DirectorySeparatorChar + file.Name);
|
||||
}
|
||||
foreach (FileInfo file in dinfo.GetFiles ("*.h")) {
|
||||
if (excs.Contains (file.Name))
|
||||
continue;
|
||||
files.Add (dir_path + Path.DirectorySeparatorChar + file.Name);
|
||||
}
|
||||
Console.Write ("> ");
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine ("Invalid source: " + srcnode.Name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine ();
|
||||
|
||||
if (files.Count == 0)
|
||||
continue;
|
||||
|
||||
ArrayList realfiles = new ArrayList ();
|
||||
foreach (string file in files) {
|
||||
string trimfile = file.TrimEnd ();
|
||||
if (excludes.Contains (trimfile))
|
||||
continue;
|
||||
|
||||
realfiles.Add (trimfile);
|
||||
}
|
||||
|
||||
string[] filenames = (string[]) realfiles.ToArray (typeof (string));
|
||||
string pp_args = String.Join (" ", filenames);
|
||||
system ("gapi_pp.pl " + pp_args + " | gapi2xml.pl " + ns + " " + prefile + " " + lib);
|
||||
}
|
||||
}
|
||||
|
||||
XmlDocument final = new XmlDocument ();
|
||||
final.Load (prefile);
|
||||
XmlTextWriter writer = new XmlTextWriter (outfile, null);
|
||||
writer.Formatting = Formatting.Indented;
|
||||
final.Save (writer);
|
||||
File.Delete (prefile);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
1285
GtkSharp/Source/OldStuff/parser/gapi2xml.pl
Normal file
1285
GtkSharp/Source/OldStuff/parser/gapi2xml.pl
Normal file
File diff suppressed because it is too large
Load Diff
3
GtkSharp/Source/OldStuff/parser/gapi3-parser.in
Normal file
3
GtkSharp/Source/OldStuff/parser/gapi3-parser.in
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
export PATH=@prefix@/lib/gapi-3.0:$PATH
|
||||
@RUNTIME@ @prefix@/lib/gapi-3.0/gapi-parser.exe "$@"
|
||||
292
GtkSharp/Source/OldStuff/parser/gapi_pp.pl
Normal file
292
GtkSharp/Source/OldStuff/parser/gapi_pp.pl
Normal file
@@ -0,0 +1,292 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# gapi_pp.pl : A source preprocessor for the extraction of API info from a
|
||||
# C library source directory.
|
||||
#
|
||||
# Authors: Mike Kestner <mkestner@speakeasy.net>
|
||||
# Martin Willemoes Hansen <mwh@sysrq.dk>
|
||||
#
|
||||
# Copyright (c) 2001 Mike Kestner
|
||||
# Copyright (c) 2003 Martin Willemoes Hansen
|
||||
# Copyright (c) 2003-2004 Novell, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2 of the GNU General Public
|
||||
# License as published by the Free Software Foundation.
|
||||
#
|
||||
# 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.
|
||||
|
||||
$private_regex = '^#if.*(ENABLE_BACKEND|ENABLE_ENGINE)';
|
||||
$eatit_regex = '^#if(.*(__cplusplus|DEBUG|DISABLE_COMPAT|ENABLE_BROKEN)|\s+0\s*$)';
|
||||
$ignoreit_regex = '^\s+\*|#ident|#error|#\s*include|#\s*import|#\s*else|#\s*undef|G_(BEGIN|END)_DECLS|ATK_VAR|GDK_PIXBUF_VAR|GDKVAR|GTKVAR|GTKMAIN_C_VAR|GTKTYPEUTILS_VAR|VARIABLE|GTKTYPEBUILTIN|G_GNUC_INTERNAL';
|
||||
|
||||
foreach $arg (@ARGV) {
|
||||
if (-d $arg && -e $arg) {
|
||||
@hdrs = (@hdrs, `ls $arg/*.h`);
|
||||
@srcs = (@srcs, `ls $arg/*.c`);
|
||||
} elsif (-f $arg && -e $arg) {
|
||||
@hdrs = (@hdrs, $arg) if ($arg =~ /\.h$/);
|
||||
@srcs = (@srcs, $arg) if ($arg =~ /\.c$/);
|
||||
} else {
|
||||
die "unable to process arg: $arg";
|
||||
}
|
||||
}
|
||||
|
||||
foreach $fname (@hdrs) {
|
||||
|
||||
if ($fname =~ /test|private|internals|gtktextlayout|gtkmarshalers/) {
|
||||
@privhdrs = (@privhdrs, $fname);
|
||||
next;
|
||||
}
|
||||
|
||||
open(INFILE, $fname) || die "Could open $fname\n";
|
||||
|
||||
$braces = 0;
|
||||
$deprecated = -1;
|
||||
$ifdeflevel = 0;
|
||||
$prepend = "";
|
||||
while ($line = <INFILE>) {
|
||||
$braces++ if ($line =~ /{/ and $line !~ /}/);
|
||||
$braces-- if ($line =~ /}/ and $line !~ /{/);
|
||||
|
||||
next if ($line =~ /$ignoreit_regex/);
|
||||
|
||||
$line =~ s/\/\*[^<].*?\*\///g;
|
||||
|
||||
next if ($line !~ /\S/);
|
||||
|
||||
$line = $prepend . $line;
|
||||
$prepend = "";
|
||||
|
||||
while ($line =~ /(.*)\\$/) { $line = $1 . <INFILE>; }
|
||||
|
||||
if ($line =~ /#\s*define\s+\w+\s+\"/) {
|
||||
$def = $line;
|
||||
while ($def !~ /\".*\"/) {$def .= ($line = <INFILE>);}
|
||||
print $def;
|
||||
} elsif ($line =~ /#\s*define\s+\w+\s*\(\s*\w+_get_type\s*\(\)\)/) {
|
||||
print $line;
|
||||
} elsif ($line =~ /#\s*define\s+(\w+\s*)\(\(.*\)(".*")\)/) {
|
||||
print "#define $1 $2\n";
|
||||
} elsif ($line =~ /#\s*define\s+\w+\s*\D+/) {
|
||||
$def = $line;
|
||||
while ($line =~ /\\\n/) {$def .= ($line = <INFILE>);}
|
||||
if ($def =~ /_CHECK_\w*CAST|INSTANCE_GET_INTERFACE/) {
|
||||
$def =~ s/\\\n//g;
|
||||
print $def;
|
||||
}
|
||||
} elsif ($line =~ /^\s*\/\*[^<]/) {
|
||||
while ($line !~ /\*\//) {$line = <INFILE>;}
|
||||
} elsif ($line =~ /^extern/) {
|
||||
while ($line !~ /;/) {$line = <INFILE>;}
|
||||
} elsif ($line =~ /^#ifndef\s+\w+_H_*\b/) {
|
||||
while ($line !~ /#define|#endif/) {$line = <INFILE>;}
|
||||
} elsif ($line =~ /$private_regex/) {
|
||||
$nested = 0;
|
||||
while ($line = <INFILE>) {
|
||||
last if (!$nested && ($line =~ /#else|#endif/));
|
||||
if ($line =~ /#if/) {
|
||||
$nested++;
|
||||
} elsif ($line =~ /#endif/) {
|
||||
$nested--
|
||||
}
|
||||
next if ($line !~ /^struct/);
|
||||
|
||||
print "private$line";
|
||||
do {
|
||||
$line = <INFILE>;
|
||||
print $line;
|
||||
} until ($line =~ /^\}/);
|
||||
}
|
||||
} elsif ($line =~ /$eatit_regex/) {
|
||||
$nested = 0;
|
||||
while ($line = <INFILE>) {
|
||||
last if (!$nested && ($line =~ /#else|#endif/));
|
||||
if ($line =~ /#if/) {
|
||||
$nested++;
|
||||
} elsif ($line =~ /#endif/) {
|
||||
$nested--
|
||||
}
|
||||
}
|
||||
} elsif ($line =~ /^#\s*ifn?\s*\!?def/) {
|
||||
$ifdeflevel++;
|
||||
#print "#ifn?def ($ifdeflevel): $line\n";
|
||||
if ($line =~ /#ifndef.*DISABLE_DEPRECATED/) {
|
||||
$deprecated = $ifdeflevel;
|
||||
} elsif ($line =~ /#if !defined.*DISABLE_DEPRECATED/) {
|
||||
$deprecated = $ifdeflevel;
|
||||
}
|
||||
} elsif ($line =~ /^#\s*endif/) {
|
||||
#print "#endif ($ifdeflevel): $line\n";
|
||||
if ($deprecated == $ifdeflevel) {
|
||||
$deprecated = -1;
|
||||
}
|
||||
$ifdeflevel--;
|
||||
} elsif ($line =~ /typedef struct\s*\{?\s*$/) {
|
||||
while ($line !~ /{/) {
|
||||
chomp ($line);
|
||||
$line .= <INFILE>;
|
||||
}
|
||||
my $first_line = $line;
|
||||
my @lines = ();
|
||||
$line = <INFILE>;
|
||||
while ($line !~ /^}\s*(\w+);/) {
|
||||
if ($line =~ /\(.*\).*\(/) {
|
||||
while ($line !~ /;/) {
|
||||
chomp ($line);
|
||||
$nxt = <INFILE>;
|
||||
$nxt =~ s/^\s+/ /;
|
||||
$line .= $nxt;
|
||||
}
|
||||
}
|
||||
push @lines, $line;
|
||||
$line = <INFILE>;
|
||||
}
|
||||
$line =~ /^}\s*(\w+);/;
|
||||
my $name = $1;
|
||||
print "typedef struct _$name $name;\n";
|
||||
print "struct _$name {\n";
|
||||
foreach $line (@lines) {
|
||||
if ($line =~ /(\s*.+\;)/) {
|
||||
$field = $1;
|
||||
$field =~ s/(\w+) const/const $1/;
|
||||
print "$field\n";
|
||||
}
|
||||
}
|
||||
print "};\n";
|
||||
} elsif ($line =~ /^enum\s+\{/) {
|
||||
while ($line !~ /^};/) {$line = <INFILE>;}
|
||||
} elsif ($line =~ /^(typedef\s+)?union/) {
|
||||
next if ($line =~ /^typedef\s+union\s+\w+\s+\w+;/);
|
||||
while ($line !~ /^};/) {$line = <INFILE>;}
|
||||
} elsif ($line =~ /(\s+)union\s*{/) {
|
||||
# this is a hack for now, but I need it for the fields to work
|
||||
$indent = $1;
|
||||
$do_print = 1;
|
||||
while ($line !~ /^$indent}\s*\w+;/) {
|
||||
$line = <INFILE>;
|
||||
next if ($line !~ /;/);
|
||||
print $line if $do_print;
|
||||
$do_print = 0;
|
||||
}
|
||||
} else {
|
||||
if ($braces or $line =~ /;|\/\*/) {
|
||||
if ($deprecated == -1) {
|
||||
if ($line =~ /^\w*_AVAILABLE_IN_\w*/) {
|
||||
$line =~ s/^\w*_AVAILABLE_IN_\w*//g;
|
||||
$line =~ s/^\s+//;
|
||||
print $line;
|
||||
} elsif ($line =~ /^\w*_DEPRECATED_IN_[\w()]*/) {
|
||||
$line =~ s/^\w*_DEPRECATED_IN_[\w()]*//g;
|
||||
$line =~ s/^\s+//;
|
||||
print "deprecated$line";
|
||||
} elsif ($line =~ /^\w*_DEPRECATED/) {
|
||||
$line =~ s/^\w*_DEPRECATED//g;
|
||||
$line =~ s/^\s+//;
|
||||
print "deprecated$line";
|
||||
} else {
|
||||
print $line;
|
||||
}
|
||||
} else {
|
||||
print "deprecated$line";
|
||||
}
|
||||
} else {
|
||||
$prepend = $line;
|
||||
$prepend =~ s/\n/ /g;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach $fname (@srcs, @privhdrs) {
|
||||
|
||||
open(INFILE, $fname) || die "Could open $fname\n";
|
||||
|
||||
if ($fname =~ /builtins_ids/) {
|
||||
while ($line = <INFILE>) {
|
||||
next if ($line !~ /\{/);
|
||||
|
||||
chomp($line);
|
||||
$builtin = "BUILTIN" . $line;
|
||||
$builtin .= <INFILE>;
|
||||
print $builtin;
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
while ($line = <INFILE>) {
|
||||
next if ($line !~ /^(struct|typedef struct.*;|\w+_class_init|\w+_base_init|\w+_default_init|\w+_get_type\b|G_DEFINE_TYPE_EXTENDED|G_DEFINE_TYPE_WITH_CODE|G_DEFINE_BOXED_TYPE|G_DEFINE_INTERFACE)/);
|
||||
|
||||
if ($line =~ /^G_DEFINE_(TYPE_EXTENDED|TYPE_WITH_CODE|BOXED_TYPE|INTERFACE)/) {
|
||||
my $macro;
|
||||
my $parens = 0;
|
||||
do {
|
||||
chomp ($line);
|
||||
$line =~ s/(.*)\\$/\1/;
|
||||
$line =~ s/^\s+(.*)/ \1/;
|
||||
$macro .= $line;
|
||||
foreach $chr (split (//, $line)) {
|
||||
if ($chr eq "(") {
|
||||
$parens++;
|
||||
} elsif ($chr eq ")") {
|
||||
$parens--;
|
||||
}
|
||||
}
|
||||
$line = <INFILE>;
|
||||
} while ($parens > 0);
|
||||
print "$macro\n";
|
||||
next if ($line !~ /^(struct|\w+_class_init|\w+_base_init)/);
|
||||
}
|
||||
|
||||
if ($line =~ /^struct/) {
|
||||
# need some of these to parse out parent types
|
||||
print "private";
|
||||
if ($line =~ /;/) {
|
||||
print $line;
|
||||
next;
|
||||
}
|
||||
} elsif ($line =~ /^typedef.*;/) {
|
||||
print $line;
|
||||
next;
|
||||
}
|
||||
|
||||
$comment = 0;
|
||||
$begin = 0;
|
||||
$end = 0;
|
||||
do {
|
||||
# Following ifs strips out // and /* */ C comments
|
||||
if ($line =~ /\/\*/) {
|
||||
$comment = 1;
|
||||
$begin = 1;
|
||||
}
|
||||
|
||||
if ($comment != 1) {
|
||||
$line =~ s/\/\/.*//;
|
||||
print $line;
|
||||
}
|
||||
|
||||
if ($line =~ /\*\//) {
|
||||
$comment = 0;
|
||||
$end = 1;
|
||||
}
|
||||
|
||||
if ($begin == 1 && $end == 1) {
|
||||
$line =~ s/\/\*.*\*\///;
|
||||
print $line;
|
||||
}
|
||||
|
||||
$begin = 0;
|
||||
$end = 0;
|
||||
} until (($line = <INFILE>) =~ /^}/);
|
||||
print $line;
|
||||
}
|
||||
}
|
||||
|
||||
28
GtkSharp/Source/OldStuff/parser/gen_keysyms
Normal file
28
GtkSharp/Source/OldStuff/parser/gen_keysyms
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/perl -w
|
||||
# Generates a C# Key enum from the Gdk headers (gdkkeysyms.h)
|
||||
# Usage: ./gen_keysyms < gdkkeysyms.h > Key.cs
|
||||
# Alp Toker <alp@atoker.com>
|
||||
|
||||
print "// Generated File. Do not modify.\n\n";
|
||||
print "namespace Gdk\n";
|
||||
print "{\n";
|
||||
print "\tpublic enum Key {\n";
|
||||
|
||||
while(<>) {
|
||||
chomp;
|
||||
|
||||
if (m/^\W*#define\W+GDK_(\w+)\W+(\w+)\W*$/) {
|
||||
$key = $1;
|
||||
$value = $2;
|
||||
|
||||
# keys can't start with a digit
|
||||
if ($key =~ m/^\d.*$/) {
|
||||
$key = "Key_$key";
|
||||
}
|
||||
|
||||
print "\t\t$key = $value,\n";
|
||||
}
|
||||
}
|
||||
|
||||
print "\t}\n";
|
||||
print "}\n";
|
||||
31
GtkSharp/Source/OldStuff/parser/meson.build
Normal file
31
GtkSharp/Source/OldStuff/parser/meson.build
Normal file
@@ -0,0 +1,31 @@
|
||||
gapi_installdir = join_paths(get_option('libdir'), 'gapi-3.0')
|
||||
pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
|
||||
|
||||
gapi_parser = executable('gapi-parser', 'gapi-parser.cs',
|
||||
install_dir : gapi_installdir,
|
||||
install: install)
|
||||
|
||||
gapi_parser_data = configuration_data()
|
||||
gapi_parser_data.set('prefix', prefix)
|
||||
gapi_parser_data.set('RUNTIME', runtime)
|
||||
pkg_gapi_parser_data = configuration_data()
|
||||
pkg_gapi_parser_data .set('VERSION', meson.project_version())
|
||||
|
||||
if install
|
||||
configure_file(input: 'gapi3-parser.in',
|
||||
output: 'gapi3-parser',
|
||||
configuration : gapi_parser_data,
|
||||
install_dir: get_option('bindir'))
|
||||
configure_file(input: 'gapi-3.0.pc.in',
|
||||
output: 'gapi-3.0.pc',
|
||||
configuration : pkg_gapi_parser_data,
|
||||
install_dir: pkg_install_dir)
|
||||
install_data('gapi_pp.pl', 'gapi2xml.pl', install_dir: gapi_installdir)
|
||||
else
|
||||
configure_file(input: 'gapi3-parser.in',
|
||||
output: 'gapi3-parser',
|
||||
configuration : gapi_parser_data)
|
||||
configure_file(input: 'gapi-3.0.pc.in',
|
||||
output: 'gapi-3.0.pc',
|
||||
configuration : pkg_gapi_parser_data)
|
||||
endif
|
||||
Reference in New Issue
Block a user