On Monday 29 May 2006 15:21, Matthew Toseland wrote:
> Immediate priorities:
> ...
> 4. Work on GCJ/Kaffe/whatever support.

If this is still necessary / relevant after today's changes, I did quite a bit 
of work on GCJ building over the weekend. Attached is a modified 
build_binary.xml buildfile form the one in svn. The old one tried to link 
against gnu-crypto libraries, but I'm guessing not many people have them 
(although it did still download gnu-crypto and then not use it...)

The GCJ build seems to max out the CPU for a good few seconds before returning 
any document, whereas on Sun Java I can browse between pages on my site 
pretty much instantly (same delay happens with GIJ, but longer). I'm guessing 
it's severely un-optimised crypto or FEC.


Dave

> -- 
> Matthew J Toseland - [EMAIL PROTECTED]
> Freenet Project Official Codemonkey - http://freenetproject.org/
> ICTHUS - Nothing is impossible. Our Boss says so.
> 
<?xml version="1.0"?>

<project name="Freenet_binary" default="dist_gcj" basedir=".">
	<description>
		This file builds freenet... as a binary :p
	</description>

	<!-- set global properties for this build -->
  	<property name="src" location="src"/>
	<property name="build" location="build"/>
	<property name="lib"	location="lib"/>
	<property name="bin"	location="bin"/>
	<property name="freenet-cvs-snapshot.location" location="${lib}/freenet-cvs-snapshot.jar"/>
	<property name="freenet-ext.location" location="${lib}/freenet-ext.jar"/>
	<property name="gnu-crypto.location" location="${lib}/gnu-crypto.jar"/>
	
	<property name="compiler_optim" value="-O3"/>
	<property name="compiler_arch" value="-march=pentium2"/>

<target name="env_gcj"  description="Learn about the environment">
	<mkdir dir="${bin}"/>
	<mkdir dir="${build}"/>
	<mkdir dir="${lib}"/>
	<mkdir dir="misc"/>
	<available file="${lib}/gnu-crypto.jar"     property="gnu-crypto.present"/>
	<available file="${lib}/freenet-cvs-snapshot.jar" property="freenet.present"/>
	<available file="${lib}/freenet-ext.jar" property="freenet-ext.present"/>
	
	<available file="${bin}/gnu-crypto.o"     property="gnu-crypto-bin.present"/>
	<available file="${bin}/freenet-ext.o" property="freenet-ext-bin.present"/>
</target>

	<target name="get-gnu-crypto" depends="env_gcj" unless="gnu-crypto.present">
		<get src="ftp://ftp.gnu.org/gnu/gnu-crypto/gnu-crypto-2.1.0-bin.zip"; 
		     dest="misc/gnu-crypto-2.1.0-bin.zip" 
			verbose="true"
			usetimestamp="true"/>
	
		<unzip src="misc/gnu-crypto-2.1.0-bin.zip" dest="misc"/>
	
		<move todir="lib">
			<fileset dir="misc/gnu-crypto-2.1.0-bin/lib/">
				<include name="gnu-crypto.jar"/>
			</fileset>
		</move>
	
		<property name="gnu-crypto.present" value="true"/>
		<property name="javax-crypto.present" value="true"/>
		<property name="javax-security.present" value="true"/>
	</target>

	<target name="get-release" depends="env_gcj" unless="freenet.present"
		description="Download FRED">
		<exec executable="ant" failonerror="true"/>
		<property name="freenet.present" value="true"/>
		<property name="freenet-ext.present" value="true"/>
	</target>

	<target name="get-extjar" depends="env_gcj" unless="freenet-ext.present"
		description="Download some external libraries which Freenet relies on">
		<get src="http://downloads.freenetproject.org/alpha/freenet-ext.jar"; 
			dest="${freenet-ext.location}" 
			verbose="true"
			usetimestamp="true"/>
		<property name="freenet-ext.present" value="true"/>
	</target>
	
	<!-- ================================================== -->
    
	<target name="compile_ext" depends="get-release,get-extjar,get-gnu-crypto" unless="freenet-ext-bin.present">
		<!-- Create the time stamp -->
		<tstamp/>
		<echo message="Compiling freenet-ext.jar"/>
		<exec executable="gcj" failonerror="true">
			<arg value="-c"/>
			<arg value="${compiler_optim}"/>
			<arg value="${compiler_arch}"/>
			<arg value="-fno-bounds-check"/>
			<arg value="-fno-store-check"/>
			<arg value="-fjni"/>
			<arg value="-o"/>
			<arg value="${bin}/freenet-ext.o"/>
			<arg value="-I${lib}/freenet-cvs-snapshot.jar"/>
			<arg value="-I${lib}/freenet-ext.jar"/>
			<arg value="-I${gnu-crypto.location}"/>
			<arg value="-I${javax-crypto.location}"/>
			<arg value="-I${javax-security.location}"/>
			<arg value="${lib}/freenet-ext.jar"/>
		</exec>
	</target>
	
	<target name="compile_freenet" depends="get-release,get-extjar,get-gnu-crypto">
		<tstamp/>
		<echo message="Compiling freenet-cvs-snapshot.jar"/>
		<exec executable="gcj" failonerror="true">
			<arg value="-c"/>
			<arg value="${compiler_optim}"/>
			<arg value="${compiler_arch}"/>
			<arg value="-fno-bounds-check"/>
			<arg value="-fno-store-check"/>
			<arg value="-fjni"/>
			<arg value="-o"/>
			<arg value="${bin}/freenet-cvs-snapshot.o"/>
			<arg value="-I${lib}/freenet-cvs-snapshot.jar"/>
			<arg value="-I${lib}/freenet-ext.jar"/>
			<arg value="-I${gnu-crypto.location}"/>
			<arg value="-I${javax-crypto.location}"/>
			<arg value="-I${javax-security.location}"/>
			<arg value="${lib}/freenet-cvs-snapshot.jar"/>
		</exec>
	</target>
	
	<target name="compile_gnu_crypto" depends="get-gnu-crypto" unless="gnu-crypto-bin.present">
		<tstamp/>
		<echo message="Compiling gnu-crypto.jar"/>
		<exec executable="gcj" failonerror="true">
			<arg value="-c"/>
			<arg value="${compiler_optim}"/>
			<arg value="${compiler_arch}"/>
			<arg value="-fno-bounds-check"/>
			<arg value="-fno-store-check"/>
			<arg value="-fjni"/>
			<arg value="-o"/>
			<arg value="${bin}/gnu-crypto.o"/>
			<arg value="-I${gnu-crypto.location}"/>
			<arg value="${lib}/gnu-crypto.jar"/>
		</exec>
	</target>
	
    <!-- ================================================== -->
    <target name="link_gcj" depends="compile_ext,compile_freenet,compile_gnu_crypto"
		description="generate the distribution" >
<!-- 		<echo message="Extracting libs from freenet-ext.jar"/> -->
<!-- 		<unzip src="${lib}/freenet-ext.jar" dest="${bin}"/> -->
	
		<echo message="Linking"/>
		<exec executable="gcj" failonerror="true">
			<arg value="-combine"/>
			<arg value="${compiler_optim}"/>
			<arg value="${compiler_arch}"/>
			<arg value="-fno-bounds-check"/>
			<arg value="-fno-store-check"/>
			<arg value="-fjni"/>
			<arg value="-o"/>
			<arg value="freenet"/>
			<arg value="--main=freenet.node.Node"/>
			<arg value="-I${lib}/freenet-cvs-snapshot.jar"/>
			<arg value="-I${lib}/freenet-ext.jar"/>
			<arg value="-I${gnu-crypto.location}"/>
<!-- 			<arg value="-L${bin}/lib/linux/x86/"/> -->
<!-- 			<arg value="-L${bin}/net/i2p/util/"/> -->
<!-- 			<arg value="-lfec16"/> -->
<!-- 			<arg value="-lfec8"/> -->
<!-- 			<arg value="-ljbigi-linux-athlon"/> -->
			<arg value="${bin}/gnu-crypto.o"/>
			<arg value="${bin}/freenet-ext.o"/>
			<arg value="${bin}/freenet-cvs-snapshot.o"/>
		</exec>
	</target>
  
	<target name="dist_gcj" depends="link_gcj"
		description="generate the distribution" />

	<!-- ================================================== -->
	<target name="clean" description="Delete class files and docs dir.">
		<delete dir="${build}"/>
		<delete dir="${bin}"/>
		<delete file="freenet"/>
		<delete file="*.o"/>
	</target>
	<target name="distclean" description="Delete class files, lib dir and docs dir.">
		<delete dir="${build}"/>
		<delete dir="${bin}"/>
		<delete dir="${lib}"/>
		<delete dir="misc"/>
		<delete file="freenet"/>
		<delete file="*.o"/>
	</target>
</project>
_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to