154 lines
6.0 KiB
XML
154 lines
6.0 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<project name="COOJA Simulator - JNI Tests" default="about" basedir=".">
|
|
|
|
<!-- Properties used inside the COOJA Simulator -->
|
|
<property name="PATH_C_COMPILER" value="gcc"/>
|
|
<property name="COMPILER_ARGS" value=""/>
|
|
<property name="PATH_LINKER" value="ld"/>
|
|
<property name="LINKER_ARGS_1" value=""/>
|
|
<property name="LINKER_ARGS_2" value=""/>
|
|
|
|
<target name="help">
|
|
<echo>
|
|
Win32 cygwin users may try:
|
|
COMPILER_ARGS= -mno-cygwin -I....../jdk1.5.0/include -I....../jdk1.5.0/include/win32
|
|
LINKER_ARGS_1 = --add-stdcall-alias /usr/lib/mingw/dllcrt2.o
|
|
LINKER_ARGS_2 = -L/usr/lib/mingw -lmingw32 -lmingwex -lmsvcrt
|
|
|
|
Only for level 1, try the following compiler arguments:
|
|
COMPILER_ARGS= -mno-cygwin -I....../jdk1.5.0/include -I....../jdk1.5.0/include/win32 -Wl,--add-stdcall
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="about">
|
|
<echo>
|
|
The COOJA Simulator - JNI Tests
|
|
There examples may help understand errors during compilation from inside COOJA.
|
|
For some examples; "ant help".
|
|
|
|
|
|
ant level1
|
|
Runs JNI test level 1:
|
|
[compilation test]
|
|
Compiles level1.c to level1.library, using only c compiler.
|
|
Java class loads the library and calls a simple native function.
|
|
|
|
ant level2
|
|
Runs JNI test level 2:
|
|
[compilation test]
|
|
Compiles level2.c to level2.library, using both c compiler and linker.
|
|
Java class loads the library and calls a simple native function.
|
|
|
|
ant level3
|
|
Runs JNI test level 3:
|
|
[map file parsing test]
|
|
Compiles java + c.
|
|
The map file is parsed, and information about data+bss sections is outputted.
|
|
|
|
ant level4
|
|
Runs JNI test level 4:
|
|
[fetching reference var]
|
|
Calculates offset between relative (mapfile) and absolute memory.
|
|
A simple native function increases two counters (from both data and bss sections).
|
|
|
|
ant level5
|
|
Runs JNI test level 5:
|
|
[fetches and restores memory segments - the final test]
|
|
A simple native function increases two counters (from both data and bss sections).
|
|
The current memory (data+bss sections) is fetched and restored between function calls.
|
|
The counters should be restored with the memory!
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="clean">
|
|
<delete>
|
|
<fileset dir="." includes="**/*.class" />
|
|
<fileset dir="." includes="**/*.library" />
|
|
<fileset dir="." includes="**/*.o" />
|
|
<fileset dir="." includes="**/*.map" />
|
|
</delete>
|
|
</target>
|
|
|
|
<target name="init">
|
|
<tstamp/>
|
|
</target>
|
|
|
|
<target name="level1_compile_c" depends="init">
|
|
<echo message="EXECUTING: ${PATH_C_COMPILER} ${COMPILER_ARGS} -o level1.library -shared level1.c"/>
|
|
<exec dir="level1" executable="${PATH_C_COMPILER}" failonerror="true">
|
|
<arg line="${COMPILER_ARGS} -o level1.library -shared level1.c"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="level1" depends="init, level1_compile_c">
|
|
<javac srcdir="level1" destdir="level1"/>
|
|
<java fork="yes" dir="level1" classname="Level1"/>
|
|
</target>
|
|
|
|
<target name="level2_compile_c" depends="init">
|
|
<echo message="EXECUTING: ${PATH_C_COMPILER} ${COMPILER_ARGS} -c -o level2.o -shared level2.c"/>
|
|
<exec dir="level2" executable="${PATH_C_COMPILER}" failonerror="true">
|
|
<arg line="${COMPILER_ARGS} -c -o level2.o -shared level2.c"/>
|
|
</exec>
|
|
<echo message="EXECUTING: ${PATH_LINKER} -Map=level2.map -shared ${LINKER_ARGS_1} -o level2.library level2.o ${LINKER_ARGS_2}"/>
|
|
<exec dir="level2" executable="${PATH_LINKER}" failonerror="true">
|
|
<arg line="-Map=level2.map -shared ${LINKER_ARGS_1} -o level2.library level2.o ${LINKER_ARGS_2}"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="level2" depends="init, level2_compile_c">
|
|
<javac srcdir="level2" destdir="level2"/>
|
|
<java fork="yes" dir="level2" classname="Level2"/>
|
|
</target>
|
|
|
|
<target name="level3_compile_c" depends="init">
|
|
<echo message="EXECUTING: ${PATH_C_COMPILER} ${COMPILER_ARGS} -c -o level3.o -shared level3.c"/>
|
|
<exec dir="level3" executable="${PATH_C_COMPILER}" failonerror="true">
|
|
<arg line="${COMPILER_ARGS} -c -o level3.o -shared level3.c"/>
|
|
</exec>
|
|
<echo message="EXECUTING: ${PATH_LINKER} -Map=level3.map -shared ${LINKER_ARGS_1} -o level3.library level3.o ${LINKER_ARGS_2}"/>
|
|
<exec dir="level3" executable="${PATH_LINKER}" failonerror="true">
|
|
<arg line="-Map=level3.map -shared ${LINKER_ARGS_1} -o level3.library level3.o ${LINKER_ARGS_2}"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="level3" depends="init, level3_compile_c">
|
|
<javac srcdir="level3" destdir="level3"/>
|
|
<java fork="yes" dir="level3" classname="Level3"/>
|
|
</target>
|
|
|
|
<target name="level4_compile_c" depends="init">
|
|
<echo message="EXECUTING: ${PATH_C_COMPILER} ${COMPILER_ARGS} -c -o level4.o -shared level4.c"/>
|
|
<exec dir="level4" executable="${PATH_C_COMPILER}" failonerror="true">
|
|
<arg line="${COMPILER_ARGS} -c -o level4.o -shared level4.c"/>
|
|
</exec>
|
|
<echo message="EXECUTING: ${PATH_LINKER} -Map=level4.map -shared ${LINKER_ARGS_1} -o level4.library level4.o ${LINKER_ARGS_2}"/>
|
|
<exec dir="level4" executable="${PATH_LINKER}" failonerror="true">
|
|
<arg line="-Map=level4.map -shared ${LINKER_ARGS_1} -o level4.library level4.o ${LINKER_ARGS_2}"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="level4" depends="init, level4_compile_c">
|
|
<javac srcdir="level4" destdir="level4"/>
|
|
<java fork="yes" dir="level4" classname="Level4"/>
|
|
</target>
|
|
|
|
<target name="level5_compile_c" depends="init">
|
|
<echo message="EXECUTING: ${PATH_C_COMPILER} ${COMPILER_ARGS} -c -o level5.o -shared level5.c"/>
|
|
<exec dir="level5" executable="${PATH_C_COMPILER}" failonerror="true">
|
|
<arg line="${COMPILER_ARGS} -c -o level5.o -shared level5.c"/>
|
|
</exec>
|
|
<echo message="EXECUTING: ${PATH_LINKER} -Map=level5.map -shared ${LINKER_ARGS_1} -o level5.library level5.o ${LINKER_ARGS_2}"/>
|
|
<exec dir="level5" executable="${PATH_LINKER}" failonerror="true">
|
|
<arg line="-Map=level5.map -shared ${LINKER_ARGS_1} -o level5.library level5.o ${LINKER_ARGS_2}"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="level5" depends="init, level5_compile_c">
|
|
<javac srcdir="level5" destdir="level5"/>
|
|
<java fork="yes" dir="level5" classname="Level5"/>
|
|
</target>
|
|
|
|
</project>
|