| #!/usr/bin/env python |
| |
| ## Copyright (C) 2006, 2011 Free Software Foundation |
| ## Written by Gary Benson <gbenson@redhat.com> |
| ## |
| ## 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. |
| |
| import sys |
| sys.path.insert(0, "@python_mod_dir_expanded@") |
| import aotcompile |
| import getopt |
| import os |
| |
| usage = """\ |
| Usage: %s [OPTION...] SRCDIR DSTDIR |
| AOT-compile all Java bytecode in SRCDIR into DSTDIR. |
| |
| Options: |
| -M, --make=PATH make executable to use (%s) |
| -C, --gcj=PATH gcj executable to use (%s) |
| -D, --dbtool=PATH gcj-dbtool executable to use (%s) |
| -m, --makeflags=FLAGS flags to pass to make during build |
| -c, --gcjflags=FLAGS flags to pass to gcj during compilation |
| in addition to %s |
| -l, --ldflags=FLAGS flags to pass to gcj during linking |
| in addition to %s |
| -e, --exclude=PATH do not compile PATH |
| |
| Extra flags may also be passed using the AOT_MAKEFLAGS, AOT_GCJFLAGS |
| and AOT_LDFLAGS environment variables.""" % ( |
| os.path.basename(sys.argv[0]), |
| aotcompile.PATHS["make"], |
| aotcompile.PATHS["gcj"], |
| aotcompile.PATHS["dbtool"], |
| repr(" ".join(aotcompile.GCJFLAGS)), |
| repr(" ".join(aotcompile.LDFLAGS))) |
| |
| try: |
| if os.environ.has_key("RPM_PACKAGE_NAME"): |
| raise aotcompile.Error, "not for use within rpm specfiles" |
| |
| try: |
| opts, args = getopt.getopt( |
| sys.argv[1:], |
| "M:C:D:m:c:l:e:", |
| ["make=", "gcj=", "dbtool=", |
| "makeflags=" "gcjflags=", "ldflags=", |
| "exclude="]) |
| srcdir, dstdir = args |
| except: |
| print >>sys.stderr, usage |
| sys.exit(1) |
| |
| compiler = aotcompile.Compiler(srcdir, dstdir) |
| for o, a in opts: |
| if o in ("-M", "--make"): |
| aotcompile.PATHS["make"] = a |
| if o in ("-C", "--gcj"): |
| aotcompile.PATHS["gcj"] = a |
| if o in ("-D", "--dbtool"): |
| aotcompile.PATHS["dbtool"] = a |
| if o in ("-m", "--makeflags"): |
| compiler.makeflags[0:0] = a.split() |
| if o in ("-c", "--gcjflags"): |
| compiler.gcjflags[0:0] = a.split() |
| if o in ("-l", "--ldflags"): |
| compiler.ldflags[0:0] = a.split() |
| if o in ("-e", "--exclude"): |
| compiler.exclusions.append(a) |
| |
| compiler.makeflags[0:0] = os.environ.get("AOT_MAKEFLAGS", "").split() |
| compiler.gcjflags[0:0] = os.environ.get("AOT_GCJFLAGS", "").split() |
| compiler.ldflags[0:0] = os.environ.get("AOT_LDFLAGS", "").split() |
| |
| compiler.compile() |
| |
| except aotcompile.Error, e: |
| print >>sys.stderr, "%s: error: %s" % ( |
| os.path.basename(sys.argv[0]), e) |
| sys.exit(1) |