Mercurial > hg > graal-jvmci-8
changeset 9163:45b37dcb24de
Automatically add service providers to build-graal.xml
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 16 Apr 2013 19:01:24 +0200 |
parents | 85b71f453ef5 |
children | 380857cb7117 |
files | make/build-graal.xml mx/commands.py |
diffstat | 2 files changed, 39 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/make/build-graal.xml Tue Apr 16 18:16:57 2013 +0200 +++ b/make/build-graal.xml Tue Apr 16 19:01:24 2013 +0200 @@ -74,7 +74,16 @@ </target> <target depends="compile" name="jar"> <mkdir dir="${jar.dir}"/> - <jar basedir="${classes.dir}" destfile="${jar.file}"/> + <jar basedir="${classes.dir}" destfile="${jar.file}"> + <service type="com.oracle.graal.phases.tiers.CompilerConfiguration"> + <provider classname="com.oracle.graal.compiler.phases.BasicConfiguration"/> + </service> + <service type="com.oracle.graal.nodes.spi.ReplacementsProvider"> + <provider classname="com.oracle.graal.hotspot.replacements.HotSpotInstalledCodeIntrinsics"/> + <provider classname="com.oracle.graal.hotspot.replacements.CallSiteSubstitutions"/> + <provider classname="com.oracle.graal.replacements.GraalMethodSubstitutions"/> + </service> + </jar> </target> <target name="cleanclasses"> <delete dir="${classes.dir}"/>
--- a/mx/commands.py Tue Apr 16 18:16:57 2013 +0200 +++ b/mx/commands.py Tue Apr 16 19:01:24 2013 +0200 @@ -501,11 +501,31 @@ out.element('target', {'name' : 'main', 'depends' : 'jar'}) + serviceMap = {}; + def addService(service, provider): + if service not in serviceMap: + serviceMap[service] = set(); + serviceMap[service].add(provider) + out.open('target', {'name' : 'compile', 'depends' : 'cleanclasses'}) out.element('mkdir', {'dir' : '${classes.dir}'}) out.open('javac', {'destdir' : '${classes.dir}', 'debug' : 'on', 'includeantruntime' : 'false', 'encoding' : 'UTF-8'}) + for p in mx.sorted_deps(mx.distribution('GRAAL').deps): out.element('src', {'path' : '${src.dir}/' + p.name}) + servicesDir = join(p.output_dir(), 'META-INF', 'services') + if exists(servicesDir): + for service in os.listdir(servicesDir): + with open(join(servicesDir, service), 'r') as serviceFile: + for line in serviceFile: + addService(service, line.strip()) + providersDir = join(p.output_dir(), 'META-INF', 'providers') + if exists(providersDir): + for provider in os.listdir(providersDir): + with open(join(providersDir, provider), 'r') as providerFile: + for line in providerFile: + addService(line.strip(), provider) + out.element('compilerarg', {'value' : '-XDignore.symbol.file'}) out.open('classpath') @@ -519,7 +539,15 @@ out.open('target', {'name' : 'jar', 'depends' : 'compile'}) out.element('mkdir', {'dir' : '${jar.dir}'}) - out.element('jar', {'destfile' : '${jar.file}', 'basedir' : '${classes.dir}'}) + out.open('jar', {'destfile' : '${jar.file}', 'basedir' : '${classes.dir}'}) + + for service, providers in serviceMap.iteritems(): + out.open('service', {'type' : service}) + for provider in providers: + out.element('provider', {'classname' : provider}) + out.close('service') + + out.close('jar'); out.close('target') out.open('target', {'name' : 'cleanclasses'})