1 Star 6 Fork 1

龙叔/jna

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.xml 62.99 KB
一键复制 编辑 原始数据 按行查看 历史
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454
<?xml version="1.0" encoding="UTF-8"?>
<project name="JNA" default="default" basedir="."
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
xmlns:as="antlib:org.codehaus.mojo.animal_sniffer"
xmlns:if="ant:if">
<description>Builds and tests JNA</description>
<!-- Default build compiles all platform-independent stuff as well
as the JNI bits for the current platform, using the arch model
of the current Java VM to determine whether 32- or 64-bit
binaries are built (ANT_OPTS=-d32/-d64 to switch on platforms that
support it).
Cross-compile by specifying -Dos.prefix={name-arch} to ant
(cross-compile currently only configured/tested on w32ce-arm and
android targets)
Use ANT_OPTS=-D-native=true to build native parts, or directly
invoke the native or test targets
Use ANT_OPTS=-Dheadless to run tests headless
Use ANT_OPTS=-Drelease to stage a final, non-snapshot version
-->
<!--
Conventions (since ant can't easily specify arbitrary file dependencies):
The uptodate property for a given target TARGET is "-TARGET"; the actual
target to generate the uptodate property is named ":TARGET".
Properties (except for uptodate properties) separate words by dots, targets
by dashes.
-->
<!-- global properties -->
<!-- (all build-related props should go in -dynamic-properties) -->
<property name="name" value="jna"/>
<property name="jar" value="${name}.jar"/>
<property name="aar" value="${name}.aar"/>
<property name="minjar" value="${name}-min.jar"/>
<property name="testjar" value="${name}-test.jar"/>
<property name="debug" value="true"/>
<property name="debug.native" value="false"/>
<property name="cflags_extra.native" value=""/>
<property name="dynlink.native" value="false"/>
<property name="native" location="native"/>
<property name="src" location="src"/>
<property name="platform.src" location="contrib/platform/src"/>
<property name="contrib" location="contrib"/>
<property name="dist" location="dist"/>
<property name="lib.native" location="lib/native"/>
<property name="test.src" location="test"/>
<property name="doc" location="doc"/>
<property name="javadoc" location="${doc}/javadoc"/>
<property name="stylesheet" location="${javadoc}/doc/css/javadoc.css"/>
<property name="vendor" value="JNA Development Team"/>
<property name="year" value="2018"/>
<property name="copyright"
value="Copyright &amp;copy; 2007-${year} Timothy Wall. All Rights Reserved."/>
<buildnumber/>
<!-- JNA library release version - android versionCode is derived from mjar/minor/revision -->
<property name="jna.major" value="5"/>
<property name="jna.minor" value="2"/>
<property name="jna.revision" value="1"/>
<property name="jna.build" value="0"/> <!--${build.number}-->
<condition property="version.suffix" value="" else="-SNAPSHOT">
<or>
<isset property="release"/>
<isset property="maven-release"/>
</or>
</condition>
<property name="jna.version" value="${jna.major}.${jna.minor}.${jna.revision}${version.suffix}"/>
<!-- jnidispatch library release version -->
<property name="jni.major" value="6"/>
<property name="jni.minor" value="0"/>
<property name="jni.revision" value="0"/>
<property name="jni.build" value="0"/> <!--${build.number}-->
<property name="jni.version" value="${jni.major}.${jni.minor}.${jni.revision}"/>
<property name="jni.md5" value="147a998f0cbc89681a1ae6c0dd121629"/>
<property name="spec.title" value="Java Native Access (JNA)"/>
<property name="spec.vendor" value="${vendor}"/>
<property name="spec.version" value="${jna.major}"/>
<property name="impl.title" value="com.sun.jna"/>
<property name="impl.vendor" value="${spec.vendor}"/>
<property name="impl.version" value="${jna.version} (b${jna.build})"/>
<!-- Set up restrictions for w32ce, based on JavaME/CDC -->
<condition property="compatibility" value="1.4">
<equals arg1="${os.prefix}" arg2="w32ce-arm"/>
</condition>
<condition property="test.compatibility" value="1.4">
<equals arg1="${os.prefix}" arg2="w32ce-arm"/>
</condition>
<!-- Default compatibility, 1.6, or whatever version is running -->
<condition property="compatibility" value="${ant.java.version}" else="1.6">
<matches pattern="^1.[345]$" string="${ant.java.version}"/>
</condition>
<!-- Platform default compatibility, 1.5+ -->
<condition property="platform.compatibility" value="1.5" else="${compatibility}">
<equals arg1="${compatibility}" arg2="1.4"/>
</condition>
<!-- Test default compatibility, 1.5+ -->
<condition property="test.compatibility" value="1.5" else="${compatibility}">
<equals arg1="${compatibility}" arg2="1.4"/>
</condition>
<condition property="tests.exclude-patterns" value="**/VarArgsTest.java,**/AnnotatedLibraryTest.java,**/WebStartTest.java,**/PointerBufferTest.java,**/HeadlessLoadLibraryTest.java,**/StructureBufferFieldTest.java,**/PerformanceTest.java,**/*BufferArgumentsMarshalTest.java" else="**/wince/*.java,**/WebStartTest.java">
<equals arg1="${os.prefix}" arg2="w32ce-arm"/>
</condition>
<property name="dist-jar" value="${dist}/${jar}"/>
<property name="dist-aar" value="${dist}/${aar}"/>
<!-- Maven -->
<!-- define Maven coordinates -->
<property name="groupId" value="net.java.dev.jna" />
<property name="artifactId" value="jna" />
<property name="maven-javadoc-jar" value="${dist}/${artifactId}-${jna.version}-javadoc.jar" />
<property name="maven-sources-jar" value="${dist}/${artifactId}-${jna.version}-sources.jar" />
<property name="platform-jar" value="${dist}/jna-platform.jar"/>
<property name="platform-javadoc-jar" value="${dist}/platform-${jna.version}-javadoc.jar" />
<property name="platform-sources-jar" value="${dist}/platform-${jna.version}-sources.jar" />
<property name="pom" value="pom-jna.xml" />
<property name="pom-platform" value="pom-jna-platform.xml" />
<!-- defined maven snapshots and staging repository id and url -->
<property name="maven-snapshots-repository-id" value="oss.sonatype.org" />
<property name="maven-snapshots-repository-url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
<property name="maven-staging-repository-id" value="oss.sonatype.org" />
<property name="maven-staging-repository-url" value="https://oss.sonatype.org/service/local/staging/deploy/maven2/" />
<!-- Miscellaneous -->
<property name="build" value="build"/>
<property name="build.compiler.emacs" value="true"/>
<target name="default" depends="test" description="Build and Test."/>
<target name="init" depends="-setup"/>
<target name="compile-test-single" depends="compile-tests"/>
<target name="compile-single" depends="compile"/>
<!-- Prepare additional ant task -->
<path id="maven-ant-tasks.classpath">
<pathelement location="lib/animal-sniffer-ant-tasks-1.17.jar" />
<pathelement location="lib/maven-ant-tasks-2.1.3.jar" />
</path>
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="maven-ant-tasks.classpath" />
<typedef resource="org/codehaus/mojo/animal_sniffer/antlib.xml"
uri="antlib:org.codehaus.mojo.animal_sniffer"
classpathref="maven-ant-tasks.classpath" />
<target name="-prepare-anttools">
<mkdir dir="${build}/ant-tools" />
<javac classpath="lib/ant.jar"
destdir="${build}/ant-tools"
includeantruntime="false"
source="1.6"
target="1.6"
encoding="UTF-8"
>
<src path="src" />
<src path="ant-tools-src" />
<include name="**/ELFAnalyser.java" />
<include name="**/BuildArmSoftFloatDetector.java" />
<include name="**/CalcAndroidVersion.java" />
</javac>
<taskdef name="BuildArmSoftFloatDetector" classname="com.sun.jna.BuildArmSoftFloatDetector" classpath="${build}/ant-tools" />
<taskdef name="CalcAndroidVersion" classname="com.sun.jna.CalcAndroidVersion" classpath="${build}/ant-tools" />
</target>
<target name="-dynamic-properties" depends="-prepare-anttools">
<property name="build.os.name" value="${os.name}"/>
<condition property="build.os.family" value="windows">
<contains string="${build.os.name}" substring="windows" casesensitive="false"/>
</condition>
<condition property="build.os.family" value="mac">
<or>
<contains string="${build.os.name}" substring="darwin" casesensitive="false"/>
<contains string="${build.os.name}" substring="mac" casesensitive="false" />
</or>
</condition>
<property name="build.os.family" value="other"/>
<property name="build.os.arch" value="${os.arch}" />
<property name="build.os.endianess" value="${sun.cpu.endian}" />
<condition property="-native" value="true">
<not><isset property="build-native"/></not>
</condition>
<condition property="jni.valid" value="true">
<isset property="-native"/>
</condition>
<replaceregexp match="(&lt;version&gt;).*(&lt;/version&gt;)"
replace="\1${jna.version}\2"
file="${pom}"/>
<replaceregexp match="(&lt;version&gt;).*(&lt;/version&gt;)"
replace="\1${jna.version}\2"
flags="g"
file="${pom-platform}"/>
<replaceregexp match='VERSION = ".*";'
replace='VERSION = "${jna.version}";'
file="src/com/sun/jna/Version.java"/>
<replaceregexp match='VERSION_NATIVE = ".*";'
replace='VERSION_NATIVE = "${jni.version}";'
file="src/com/sun/jna/Version.java"/>
<condition property="jar.omitted" value="**/*jnidispatch*" else="jnilib-included">
<isset property="omit-jnilib"/>
</condition>
<condition property="cross-compile" value="true">
<isset property="os.prefix"/>
</condition>
<property name="classes" location="${build}/classes"/>
<property name="eclipse.classes" location="build.eclipse/classes"/>
<property name="test.classes" location="${build}/test-classes"/>
<property name="reports" value="${build}/reports"/>
<CalcAndroidVersion
major="${jna.major}"
minor="${jna.minor}"
revision="${jna.revision}"
releaseProperty="release"
targetProperty="android.versionCode"
/>
<BuildArmSoftFloatDetector targetProperty="build.isArmSoftFloat"/>
<!-- Add other supported platforms here -->
<condition property="jre.arch" value="x86">
<matches pattern="(i[3456]86|pentium)" string="${build.os.arch}"/>
</condition>
<condition property="jre.arch" value="x86-64">
<matches pattern="(x86_64|amd64|em64t)" string="${build.os.arch}"/>
</condition>
<condition property="jre.arch" value="ppc">
<matches pattern="(powerpc|power)" string="${build.os.arch}"/>
</condition>
<condition property="jre.arch" value="ppc64le">
<or>
<matches pattern="(powerpc64le|power64le|ppc64le)" string="${build.os.arch}"/>
<and>
<matches pattern="(powerpc64|power64|ppc64)" string="${build.os.arch}"/>
<matches pattern="little" string="${build.os.endianess}"/>
</and>
</or>
</condition>
<condition property="jre.arch" value="ppc64">
<matches pattern="(powerpc64|power64)" string="${build.os.arch}"/>
</condition>
<condition property="jre.arch" value="armel">
<and>
<matches pattern="arm" string="${build.os.arch}"/>
<matches pattern="true" string="${build.isArmSoftFloat}"/>
</and>
</condition>
<property name="jre.arch" value="${build.os.arch}"/>
<condition property="os.prefix" value="linux-${jre.arch}">
<equals arg1="${build.os.name}" arg2="Linux"/>
</condition>
<condition property="os.prefix" value="aix-${jre.arch}">
<equals arg1="${build.os.name}" arg2="AIX"/>
</condition>
<condition property="os.prefix" value="win32-${jre.arch}">
<equals arg1="${build.os.family}" arg2="windows"/>
</condition>
<!-- Darwin builds are universal, no arch required -->
<condition property="os.prefix" value="darwin">
<equals arg1="${build.os.family}" arg2="mac"/>
</condition>
<condition property="os.prefix" value="sunos-${jre.arch}">
<equals arg1="${build.os.name}" arg2="SunOS"/>
</condition>
<condition property="os.prefix" value="freebsd-${jre.arch}">
<equals arg1="${build.os.name}" arg2="FreeBSD"/>
</condition>
<condition property="os.prefix" value="openbsd-${jre.arch}">
<equals arg1="${build.os.name}" arg2="OpenBSD"/>
</condition>
<condition property="os.prefix" value="netbsd-${jre.arch}">
<equals arg1="${build.os.name}" arg2="NetBSD"/>
</condition>
<condition property="os.prefix" value="kfreebsd-${jre.arch}">
<equals arg1="${build.os.name}" arg2="GNU/kFreeBSD"/>
</condition>
<fail unless="os.prefix" message="OS/arch not supported (${os.name}/${jre.arch}), edit build.xml and native/Makefile to add it."/>
<!-- Keep all natives separate -->
<property name="native.subdir" value="native-${os.prefix}"/>
<condition property="jdk.home" value="${java.home}">
<available file="${java.home}/include"/>
</condition>
<condition property="jdk.home" value="${java.home}/..">
<available file="${java.home}/../include"/>
</condition>
<condition property="jdk.home" value="/System/Library/Frameworks/JavaVM.framework/Home">
<available file="/System/Library/Frameworks/JavaVM.framework/Headers"/>
</condition>
<fail unless="jdk.home" message="Can't find JNI headers (java.home=${java.home})"/>
<property name="libarch" value="${os.arch}"/>
<condition property="libjsig"
value="${java.home}/lib/${libarch}/libjsig.so" else="">
<available file="${java.home}/lib/${libarch}/libjsig.so"/>
</condition>
<condition property="ld.preload.name" value="LD_PRELOAD" else="IGNORE">
<not><equals arg1="${libjsig}" arg2=""/></not>
</condition>
<property name="native.jar" value="${os.prefix}.jar"/>
<property name="build.native" location="${build}/${native.subdir}"/>
<property name="build.headers" location="${build}/headers"/>
<property name="build.aar" location="${build}/aar"/>
<property name="md5.file" location="${build.headers}/jni.checksum"/>
<property name="jni.info" location="${build.headers}/jni.properties"/>
<mkdir dir="${build}"/>
<mkdir dir="${build.native}"/>
<mkdir dir="${build.headers}"/>
<mkdir dir="${classes}"/>
<mkdir dir="${test.classes}"/>
<mkdir dir="${reports}"/>
<mkdir dir="${doc}"/>
<mkdir dir="${build.aar}"/>
<echo>Java version ${java.version}, compatibility: ${compatibility}, ant: ${ant.java.version}</echo>
<echo>JNA version ${jna.version}, native ${jni.version}, android ${android.versionCode}</echo>
<echo>${java.vm.name} (${java.vm.vendor}, ${java.vm.version})</echo>
<echo>java.home=${java.home}</echo>
<echo>java.library.path=${java.library.path}</echo>
<echo>os.prefix=${os.prefix}</echo>
<echo>os.name=${build.os.name}</echo>
<echo>os.arch=${build.os.arch} (${build.os.endianess})</echo>
<echo>build=${build}</echo>
<echo>build.native=${build.native}</echo>
<echo>build.headers=${build.headers}</echo>
<echo>build.aar=${build.aar}</echo>
</target>
<target name="-setup" depends="-dynamic-properties">
<path id="compile-test.path">
<path id="test.libs">
<fileset dir="lib">
<include name="junit.jar"/>
<include name="hamcrest-core-1.3.jar"/>
</fileset>
<fileset dir="lib/test"/>
<pathelement path="${classes}"/>
</path>
</path>
<path id="compile.path"/>
<path id="src.path">
<pathelement location="${src}"/>
</path>
<path id="test.runpath">
<pathelement path="${build}/${jar}"/>
<pathelement path="${test.classes}"/>
<pathelement path="${build}/${testjar}"/>
<pathelement path="lib/clover.jar"/>
<path refid="test.libs"/>
</path>
</target>
<target name="compile" depends="-setup"
description="Compile all Java source">
<javac classpathref="compile.path"
source="${compatibility}"
target="${compatibility}"
destdir="${classes}"
includeantruntime="false"
deprecation="on"
debug="${debug}"
encoding="UTF-8"
nativeheaderdir="${build.headers}">
<src refid="src.path"/>
</javac>
</target>
<target name=":jar">
<uptodate property="-jar" targetfile="${build}/${jar}">
<srcfiles dir="${classes}">
<patternset id="jar-compiled">
<include name="com/sun/jna/*"/>
<include name="com/sun/jna/**/*"/>
</patternset>
</srcfiles>
</uptodate>
</target>
<target name="jar" depends="-setup,native,:jar" unless="-jar"
description="Build primary jar">
<!-- Bundle native components with primary jar to facilitate
easy distribution to common platforms.
-->
<jar jarfile="${build}/${jar}" duplicate="preserve">
<manifest>
<attribute name="Main-Class" value="com.sun.jna.Native"/>
<attribute name="Manifest-Version" value="1.0"/>
<attribute name="Implementation-Title" value="${impl.title}"/>
<attribute name="Implementation-Vendor" value="${vendor}"/>
<attribute name="Implementation-Version" value="${impl.version}"/>
<attribute name="Specification-Title" value="${spec.title}"/>
<attribute name="Specification-Vendor" value="${spec.vendor}"/>
<attribute name="Specification-Version" value="${spec.version}"/>
<attribute name="Automatic-Module-Name" value="com.sun.jna"/>
<!--
OSGi Bundle attributes
See http://www.osgi.org/Specifications/Reference
-->
<attribute name="Bundle-Category" value="jni"/>
<attribute name="Bundle-ManifestVersion" value="2"/>
<attribute name="Bundle-Name" value="jna"/>
<attribute name="Bundle-Description" value="JNA Library"/>
<attribute name="Bundle-SymbolicName" value="com.sun.jna"/>
<attribute name="Bundle-Version" value="${jna.major}.${jna.minor}.${jna.revision}"/>
<attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.4"/>
<attribute name="Bundle-Vendor" value="${vendor}"/>
<attribute name="Bundle-ActivationPolicy" value="lazy"/>
<attribute name="Export-Package" value="com.sun.jna;version=${jna.major}.${jna.minor}.${jna.revision}, com.sun.jna.ptr;version=${jna.major}.${jna.minor}.${jna.revision}, com.sun.jna.win32;version=${jna.major}.${jna.minor}.${jna.revision}"/>
<!-- Note that no terminal "*" is included in this list,
which will force failure on unsupported platforms.
-->
<attribute name="Bundle-NativeCode"
value="
com/sun/jna/win32-x86/jnidispatch.dll;
processor=x86;osname=win32,
com/sun/jna/win32-x86-64/jnidispatch.dll;
processor=x86-64;osname=win32,
com/sun/jna/win32-x86/jnidispatch.dll;
processor=x86;osname=win,
com/sun/jna/win32-x86-64/jnidispatch.dll;
processor=x86-64;osname=win,
com/sun/jna/w32ce-arm/jnidispatch.dll;
processor=arm;osname=wince,
com/sun/jna/sunos-x86/libjnidispatch.so;
processor=x86;osname=sunos,
com/sun/jna/sunos-x86-64/libjnidispatch.so;
processor=x86-64;osname=sunos,
com/sun/jna/sunos-sparc/libjnidispatch.so;
processor=sparc;osname=sunos,
com/sun/jna/sunos-sparcv9/libjnidispatch.so;
processor=sparcv9;osname=sunos,
com/sun/jna/aix-ppc/libjnidispatch.a;
processor=ppc;osname=aix,
com/sun/jna/aix-ppc64/libjnidispatch.a;
processor=ppc64;osname=aix,
com/sun/jna/linux-ppc/libjnidispatch.so;
processor=ppc;osname=linux,
com/sun/jna/linux-ppc64/libjnidispatch.so;
processor=ppc64;osname=linux,
com/sun/jna/linux-ppc64le/libjnidispatch.so;
processor=ppc64le;osname=linux,
com/sun/jna/linux-x86/libjnidispatch.so;
processor=x86;osname=linux,
com/sun/jna/linux-x86-64/libjnidispatch.so;
processor=x86-64;osname=linux,
com/sun/jna/linux-arm/libjnidispatch.so;
processor=arm;osname=linux,
com/sun/jna/linux-armel/libjnidispatch.so;
processor=armel;osname=linux,
com/sun/jna/linux-aarch64/libjnidispatch.so;
processor=aarch64;osname=linux,
com/sun/jna/linux-ia64/libjnidispatch.so;
processor=ia64;osname=linux,
com/sun/jna/linux-sparcv9/libjnidispatch.so;
processor=sparcv9;osname=linux,
com/sun/jna/linux-mips64el/libjnidispatch.so;
processor=mips64el;osname=linux,
com/sun/jna/linux-s390x/libjnidispatch.so;
processor=S390x;osname=linux,
com/sun/jna/freebsd-x86/libjnidispatch.so;
processor=x86;osname=freebsd,
com/sun/jna/freebsd-x86-64/libjnidispatch.so;
processor=x86-64;osname=freebsd,
com/sun/jna/openbsd-x86/libjnidispatch.so;
processor=x86;osname=openbsd,
com/sun/jna/openbsd-x86-64/libjnidispatch.so;
processor=x86-64;osname=openbsd,
com/sun/jna/darwin/libjnidispatch.jnilib;
osname=macosx;processor=x86;processor=x86-64;processor=ppc
"/>
</manifest>
<fileset dir="${classes}" excludes="${jar.omitted}">
<patternset refid="jar-compiled"/>
</fileset>
<zipfileset src="${lib.native}/win32-x86.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/win32-x86"/>
<zipfileset src="${lib.native}/aix-ppc.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/aix-ppc"/>
<zipfileset src="${lib.native}/aix-ppc64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/aix-ppc64"/>
<zipfileset src="${lib.native}/darwin.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/darwin"/>
<zipfileset src="${lib.native}/linux-x86.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-x86"/>
<zipfileset src="${lib.native}/linux-x86-64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-x86-64"/>
<zipfileset src="${lib.native}/linux-arm.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-arm"/>
<zipfileset src="${lib.native}/linux-armel.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-armel"/>
<zipfileset src="${lib.native}/linux-aarch64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-aarch64"/>
<zipfileset src="${lib.native}/linux-ia64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-ia64"/>
<zipfileset src="${lib.native}/linux-ppc.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-ppc"/>
<zipfileset src="${lib.native}/linux-ppc64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-ppc64"/>
<zipfileset src="${lib.native}/linux-ppc64le.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-ppc64le"/>
<zipfileset src="${lib.native}/linux-sparcv9.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-sparcv9"/>
<zipfileset src="${lib.native}/linux-mips64el.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-mips64el"/>
<zipfileset src="${lib.native}/linux-s390x.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/linux-s390x"/>
<zipfileset src="${lib.native}/sunos-x86.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/sunos-x86"/>
<zipfileset src="${lib.native}/sunos-x86-64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/sunos-x86-64"/>
<zipfileset src="${lib.native}/sunos-sparc.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/sunos-sparc"/>
<zipfileset src="${lib.native}/sunos-sparcv9.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/sunos-sparcv9"/>
<zipfileset src="${lib.native}/freebsd-x86.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/freebsd-x86"/>
<zipfileset src="${lib.native}/freebsd-x86-64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/freebsd-x86-64"/>
<zipfileset src="${lib.native}/openbsd-x86.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/openbsd-x86"/>
<zipfileset src="${lib.native}/openbsd-x86-64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/openbsd-x86-64"/>
<zipfileset src="${lib.native}/win32-x86-64.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/win32-x86-64"/>
<zipfileset src="${lib.native}/w32ce-arm.jar"
includes="*jnidispatch*"
prefix="com/sun/jna/w32ce-arm"/>
</jar>
<zip zipfile="${build}/${minjar}">
<zipfileset src="${build}/${jar}" excludes="**/*jnidispatch*"/>
</zip>
</target>
<target name="aar" depends="jar" description="Build Android Archive">
<!-- Dummy entries in R.txt and the string resources are needed or a grails
build using this library will fail (tested with Android Studio 2.2.3 -->
<mkdir dir="${build.aar}/res/values" />
<echo file="${build.aar}/res/values/values.xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="jna_library_appname">JNA bindings</string>
</resources>
]]></echo>
<echo file="${build.aar}/R.txt">int string jna_library_appname 0x7f050021
</echo>
<echo file="${build.aar}/AndroidManifest.xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sun.jna"
android:versionCode="]]>${android.versionCode}<![CDATA["
android:versionName="]]>${jna.version}<![CDATA[" >
<uses-sdk android:targetSdkVersion="25" />
</manifest>
]]></echo>
<zip zipfile="${build}/${aar}">
<mappedresources>
<fileset file="${build}/${minjar}"/>
<globmapper from="*" to="classes.jar"/>
</mappedresources>
<zipfileset src="${lib.native}/android-aarch64.jar"
includes="*jnidispatch*"
prefix="jni/arm64-v8a"/>
<zipfileset src="${lib.native}/android-arm.jar"
includes="*jnidispatch*"
prefix="jni/armeabi"/>
<zipfileset src="${lib.native}/android-armv7.jar"
includes="*jnidispatch*"
prefix="jni/armeabi-v7a"/>
<zipfileset src="${lib.native}/android-mips.jar"
includes="*jnidispatch*"
prefix="jni/mips"/>
<zipfileset src="${lib.native}/android-mips64.jar"
includes="*jnidispatch*"
prefix="jni/mips64"/>
<zipfileset src="${lib.native}/android-x86-64.jar"
includes="*jnidispatch*"
prefix="jni/x86_64"/>
<zipfileset src="${lib.native}/android-x86.jar"
includes="*jnidispatch*"
prefix="jni/x86"/>
<fileset dir="${build.aar}"/>
</zip>
</target>
<target name="platform-jar" depends="jar">
<subant target="jar" failonerror="true">
<property name="file.reference.jna.build" location="${build}"/>
<property name="file.reference.jna.jar" location="${build}/${jar}"/>
<property name="libs.junit.classpath" refid="test.libs"/>
<property name="javac.source" value="${platform.compatibility}"/>
<property name="javac.target" value="${platform.compatibility}"/>
<!-- OSGi manifest properties -->
<property name="vendor" value="${vendor}"/>
<property name="impl.title" value="${impl.title}.platform"/>
<property name="impl.version" value="${impl.version}"/>
<property name="spec.title" value="${spec.title}"/>
<property name="spec.vendor" value="${spec.vendor}"/>
<property name="spec.version" value="${spec.version}"/>
<property name="osgi.version" value="${jna.major}.${jna.minor}.${jna.revision}"/>
<fileset dir="${contrib}" includes="platform/build.xml" />
</subant>
<!-- Sources package as required by maven -->
<zip zipfile="${platform-sources-jar}">
<zipfileset dir="${contrib}/platform/src" />
</zip>
</target>
<target name="contrib-jars" depends="platform-jar" description="Build contrib jars">
<subant target="jar" failonerror="true">
<property name="file.reference.jna.build" location="${build}"/>
<property name="file.reference.jna.jar" location="${build}/${jar}"/>
<property name="libs.junit.classpath" refid="test.libs"/>
<fileset dir="${contrib}" includes="*/build.xml" excludes="platform/build.xml"/>
</subant>
</target>
<target name="idea-jar" depends="jar" description="Build Intellij Idea convenience jar">
<jar destfile="${dist}/idea-dispatch.jar">
<zipfileset src="${dist-jar}" excludes="**/*.class"/>
</jar>
</target>
<target name="javah" depends="compile" unless="-native">
<condition property="grep" value="/usr/sfw/bin/ggrep">
<os name="SunOS"/>
</condition>
<condition property="grep" value="ggrep">
<os name="OpenBSD"/>
</condition>
<property name="grep" value="grep"/>
<condition property="grep.required" value="false" else="true">
<os name="AIX"/>
</condition>
<!-- args are based on GNU grep, other versions may differ -->
<apply dir="${build.headers}" executable="${grep}" parallel="true"
failonerror="${grep.required}" relative="true" output="${md5.file}">
<arg value="-A"/>
<arg value="1"/>
<arg value="JNIEXPORT"/>
<fileset dir="${build.headers}" includes="*.h"/>
</apply>
<!-- Clean up gcj javah output to match that of Sun's javah -->
<fixcrlf file="${md5.file}" eol="unix"/>
<replaceregexp match="^((.*\.h):JNIEXPORT[^(]+)( +\(.*)"
replace="\1&#xa;\2- \3&#xa;--"
byline="true"
file="${md5.file}"/>
<replaceregexp match="(JNIEnv *\*) *env"
replace="\1"
byline="true"
file="${md5.file}"/>
<replaceregexp match="&#xa;--&#xa;.*\.h-$"
replace=""
flags="m"
file="${md5.file}"/>
<checksum property="md5" file="${md5.file}" />
<propertyfile file="${jni.info}">
<entry key="checksum" value="${md5}" />
<entry key="version" value="${jni.version}" />
</propertyfile>
<condition property="jni.valid" value="true">
<or>
<os name="AIX"/>
<equals arg1="${jni.md5}" arg2="${md5}" trim="true"/>
<equals arg1="${jni.md5}" arg2=""/>
</or>
</condition>
</target>
<!-- Invalidate native libraries when native API changes -->
<target name="-native-api-check" depends="javah" unless="jni.valid">
<echo>Invalidating native code, new checksum is ${md5}</echo>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/darwin.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/win32-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/win32-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/w32ce-arm.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-arm.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-armel.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-aarch64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-ia64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-ppc.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-ppc64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-ppc64le.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-sparcv9.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-mips64el.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/linux-s390x.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/freebsd-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/freebsd-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/openbsd-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/openbsd-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/sunos-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/sunos-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/sunos-sparc.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/sunos-sparcv9.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-arm.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-armv7.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-aarch64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-x86.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-x86-64.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-mips.jar" overwrite="true"/>
<copy file="${lib.native}/out-of-date.jar" tofile="${lib.native}/android-mips64.jar" overwrite="true"/>
<delete failOnError="false" includeEmptyDirs="true">
<fileset dir="${build.native}" includes="*.o,*jnidispatch*"/>
</delete>
<fail>API for native code has changed, or javah output is inconsistent. Re-run this build after checking ${md5.file} or updating jni.version and jni.md5 in build.xml</fail>
</target>
<target name=":rsrc">
<condition property="-rsrc">
<and>
<not><equals arg1="${build.os.family}" arg2="windows"/></not>
<not><equals arg1="${os.prefix}" arg2="w32ce-arm"/></not>
</and>
</condition>
</target>
<target name="rsrc" depends="-setup,:rsrc" unless="-rsrc"
description="Generate w32 DLL version resource information">
<property name="rsrc" location="${build.native}/jnidispatch.rc"/>
<copy todir="${build.native}" file="${native}/jnidispatch.rc"/>
<replaceregexp match="FILEVERSION.*"
replace="FILEVERSION ${jni.major},${jni.minor},${jni.revision},${jni.build}"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
<replaceregexp match="PRODUCTVERSION.*"
replace="PRODUCTVERSION ${jna.major},${jna.minor},${jna.revision},${jna.build}"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
<replaceregexp match="FileVersion.*"
replace="FileVersion&quot;,&quot;${jni.version}&quot;"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
<replaceregexp match="Full Version.*"
replace="Full Version&quot;,&quot;${jni.version} b${jni.build}&quot;"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
<replaceregexp match="ProductVersion.*"
replace="ProductVersion&quot;,&quot;${spec.version}&quot;"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
<replaceregexp match="(Copyright.*-)2..."
replace="\1${year}"
preserveLastModified="true"
file="${rsrc}" byline="true"/>
</target>
<target name="-prepare-native" depends="-setup,rsrc">
<property name="comment" value="# auto-generated by ant"/>
<condition property="make.OS" value="OS=w32ce">
<equals arg1="${os.prefix}" arg2="w32ce-arm"/>
</condition>
<condition property="make.OS" value="OS=android">
<matches pattern="^android-" string="${os.prefix}"/>
</condition>
<property name="make.OS" value="IGNORE="/>
<!-- Ensure Makefile ARCH property properly set -->
<condition property="ARCH" value="arm">
<equals arg1="${os.prefix}" arg2="w32ce-arm"/>
</condition>
<condition property="ARCH" value="arm">
<equals arg1="${os.prefix}" arg2="android-arm"/>
</condition>
<condition property="ARCH" value="armv7">
<equals arg1="${os.prefix}" arg2="android-armv7"/>
</condition>
<condition property="ARCH" value="aarch64">
<equals arg1="${os.prefix}" arg2="android-aarch64"/>
</condition>
<condition property="ARCH" value="x86">
<equals arg1="${os.prefix}" arg2="android-x86"/>
</condition>
<condition property="ARCH" value="x86-64">
<equals arg1="${os.prefix}" arg2="android-x86-64"/>
</condition>
<condition property="ARCH" value="mips">
<equals arg1="${os.prefix}" arg2="android-mips"/>
</condition>
<condition property="ARCH" value="mips64">
<equals arg1="${os.prefix}" arg2="android-mips64"/>
</condition>
<condition property="ARCH" value="ppc">
<equals arg1="${os.prefix}" arg2="aix-ppc"/>
</condition>
<condition property="ARCH" value="ppc64">
<equals arg1="${os.prefix}" arg2="aix-ppc64"/>
</condition>
<!-- ensure ARCH is set properly for 64-bit capable platforms -->
<!-- use ANT_OPTS=-d64/-d32 to build 64-bit/32-bit if not the platform default -->
<property name="ARCH" value="${build.os.arch}"/>
<condition property="make.USE_MSVC" value="USE_MSVC=${USE_MSVC}" else="IGNORE=">
<isset property="USE_MSVC"/>
</condition>
<condition property="make.CC" value="CC=${CC}" else="IGNORE=">
<isset property="CC"/>
</condition>
<condition property="make.ARCH" value="ARCH=${ARCH}" else="IGNORE=">
<isset property="ARCH"/>
</condition>
<condition property="make.SDKROOT" value="SDKROOT=${SDKROOT}">
<isset property="SDKROOT"/>
</condition>
<property name="xcode" value="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform"/>
<condition property="make.SDKROOT"
value="SDKROOT=${xcode}/Developer/SDKs/MacOSX10.11.sdk">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="${xcode}/Developer/SDKs/MacOSX10.11.sdk"/>
</and>
</condition>
<condition property="make.SDKROOT"
value="SDKROOT=${xcode}/Developer/SDKs/MacOSX10.9.sdk">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="${xcode}/Developer/SDKs/MacOSX10.9.sdk"/>
</and>
</condition>
<condition property="make.SDKROOT"
value="SDKROOT=${xcode}/Developer/SDKs/MacOSX10.8.sdk">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="${xcode}/Developer/SDKs/MacOSX10.8.sdk"/>
</and>
</condition>
<condition property="make.SDKROOT"
value="SDKROOT=/Developer/SDKs/MacOSX10.6.sdk">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="/Developer/SDKs/MacOSX10.6.sdk"/>
</and>
</condition>
<condition property="make.SDKROOT"
value="SDKROOT=/Developer/SDKs/MacOSX10.5.sdk">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="/Developer/SDKs/MacOSX10.5.sdk"/>
</and>
</condition>
<condition property="make.SDKROOT"
value="SDKROOT=/Developer/SDKs/MacOSX10.4u.sdk" else="IGNORE=">
<and>
<equals arg1="${os.prefix}" arg2="darwin" trim="true"/>
<available file="/Developer/SDKs/MacOSX10.4u.sdk"/>
</and>
</condition>
<!-- Windows' drive letters and spaces in absolute paths wreak havoc on
make -->
<condition property="make.BUILD" value="BUILD=../${build}/${native.subdir}" else="BUILD=${build.native}">
<equals arg1="${build.os.family}" arg2="windows"/>
</condition>
<condition property="make.PATH" value="PATH=/opt/csw/bin:/usr/sfw/bin:/usr/bin:/usr/ccs/bin" else="IGNORE=">
<equals arg1="${build.os.name}" arg2="SunOS"/>
</condition>
<condition property="make" value="/usr/sfw/bin/gmake">
<and>
<equals arg1="${build.os.name}" arg2="SunOS"/>
<available file="/usr/sfw/bin/gmake"/>
</and>
</condition>
<condition property="make" value="gmake">
<or>
<equals arg1="${build.os.name}" arg2="FreeBSD"/>
<equals arg1="${build.os.name}" arg2="OpenBSD"/>
<equals arg1="${build.os.name}" arg2="NetBSD"/>
<equals arg1="${build.os.name}" arg2="SunOS"/>
<equals arg1="${build.os.name}" arg2="AIX"/>
</or>
</condition>
<!-- Allow explicit override of make variables -->
<condition property="make.OPTS" value="${EXTRA_MAKE_OPTS}" else="IGNORE=">
<isset property="EXTRA_MAKE_OPTS"/>
</condition>
<!-- Native resource path within jna.jar -->
<property name="native.path" value="com/sun/jna/${os.prefix}"/>
<!-- Default make program -->
<property name="make" value="make"/>
</target>
<target name="native-build-package" depends="javah,-native-api-check,-prepare-native">
<echo file="${build}/build.sh">#!/bin/sh
cwd=$(pwd)
if [ -z "$JAVA_HOME" ]; then
echo "Please make sure JAVA_HOME is set"
exit 1
fi
cd native
${make}\
JAVA_HOME=$JAVA_HOME\
JAVAH=$cwd/headers\
DEBUG=${debug.native}\
CFLAGS_EXTRA=${cflags_extra.native}\
DYNAMIC_LIBFFI=${dynlink.native}\
${make.CC}\
${make.USE_MSVC}\
BUILD=../build\
${make.SDKROOT}\
${make.ARCH}\
${make.PATH}\
${make.OS}\
${make.OPTS}\
JNA_JNI_VERSION=${jni.version}\
CHECKSUM=${jni.md5}
cd ..
cd build
zip ../${os.prefix}.jar libjnidispatch.so jnidispatch.dll
cd ..
</echo>
<jar jarfile="${build}/${os.prefix}.jar">
<manifest>
<attribute name="Implementation-Version" value="${jni.version} b${jni.build}"/>
<attribute name="Specification-Version" value="${jni.version}"/>
</manifest>
</jar>
<zip destfile="${build}/build-package-${os.prefix}-${jni.version}.zip">
<zipfileset dir="native"
prefix="build-package-${os.prefix}-${jni.version}/native"
>
<!-- Exclude generated files from the ZIP -->
<exclude name="libffi/autom4te.cache/**" />
<exclude name="libffi/Makefile.in" />
<exclude name="libffi/aclocal.m4" />
<exclude name="libffi/compile" />
<exclude name="libffi/config.guess" />
<exclude name="libffi/config.sub" />
<exclude name="libffi/configure" />
<exclude name="libffi/depcomp" />
<exclude name="libffi/fficonfig.h.in" />
<exclude name="libffi/install-sh" />
<exclude name="libffi/ltmain.sh" />
<exclude name="libffi/mdate-sh" />
<exclude name="libffi/missing" />
</zipfileset>
<zipfileset dir="${build}" includes="${os.prefix}.jar" prefix="build-package-${os.prefix}-${jni.version}"/>
<zipfileset dir="${build}" includes="build.sh" prefix="build-package-${os.prefix}-${jni.version}"/>
<zipfileset dir="build/headers" prefix="build-package-${os.prefix}-${jni.version}/headers" />
</zip>
</target>
<target name="native" depends="-enable-native,javah,-native-api-check,-prepare-native" unless="-native"
description="Build native libraries. Use 'ant -DCC=xxx' to build using a compiler other than gcc">
<exec executable="${make}" dir="${native}" failonerror="true">
<arg value="JAVA_HOME=${jdk.home}"/>
<arg value="JAVAH=${build.headers}"/>
<arg value="DEBUG=${debug.native}"/>
<arg value="CFLAGS_EXTRA=${cflags_extra.native}"/>
<arg value="DYNAMIC_LIBFFI=${dynlink.native}"/>
<arg value="${make.CC}"/>
<arg value="${make.USE_MSVC}"/>
<arg value="${make.BUILD}"/>
<arg value="${make.SDKROOT}"/>
<arg value="${make.ARCH}"/>
<arg value="${make.PATH}"/>
<arg value="${make.OS}"/>
<arg line="${make.OPTS}"/>
<arg value="JNA_JNI_VERSION=${jni.version}"/>
<arg value="CHECKSUM=${jni.md5}"/>
</exec>
<mkdir dir="${classes}/${native.path}"/>
<copy todir="${classes}/${native.path}">
<fileset dir="${build.native}"
includes="jnidispatch.dll,libjnidispatch.*"/>
</copy>
<mkdir dir="${eclipse.classes}/${native.path}"/>
<copy todir="${eclipse.classes}/${native.path}"
failonerror="false">
<fileset dir="${build.native}"
includes="jnidispatch.dll,libjnidispatch.*"/>
</copy>
<!-- For web start, native libraries may be provided in the root of -->
<!-- an included jar file -->
<jar jarfile="${build}/${native.jar}">
<fileset dir="${build.native}" includes="jnidispatch.dll,libjnidispatch.*"/>
<manifest>
<attribute name="Implementation-Version" value="${jni.version} b${jni.build}"/>
<attribute name="Specification-Version" value="${jni.version}"/>
</manifest>
</jar>
<copy todir="${lib.native}">
<fileset dir="${build}" includes="${native.jar}"/>
</copy>
</target>
<target name="compile-some-tests" depends="compile,jar"
description="Compile test code which does not have additional native
dependencies">
<javac classpathref="compile-test.path"
source="${test.compatibility}"
target="${test.compatibility}"
destdir="${test.classes}"
includeantruntime="false"
includes="**/StructureFieldOrderInspector.java"
deprecation="on"
debug="${debug}"
encoding="UTF-8"
>
<src path="${test.src}"/>
</javac>
</target>
<target name="compile-tests" depends="compile,native,jar"
description="Compile all test code">
<javac classpathref="compile-test.path"
source="${test.compatibility}"
target="${test.compatibility}"
destdir="${test.classes}"
includeantruntime="false"
excludes="${tests.exclude-patterns}"
deprecation="on"
debug="${debug}"
encoding="UTF-8"
>
<src path="${test.src}"/>
<exclude name="${tests.exclude}"/>
</javac>
<!-- Embed testlib-jar at root and at default resource path -->
<mkdir dir="${test.classes}/${os.prefix}"/>
<copy todir="${test.classes}">
<fileset dir="${build.native}">
<include name="*testlib-jar*"/>
</fileset>
</copy>
<copy todir="${test.classes}/${os.prefix}">
<fileset dir="${build.native}">
<include name="*testlib-jar*"/>
</fileset>
</copy>
<copy todir="${test.classes}">
<fileset dir="${test.src}">
<include name="**/data/**" />
</fileset>
</copy>
<!-- Create a jar for easy movement of tests, and jar load test -->
<jar jarfile="${build}/${testjar}">
<fileset dir="${test.classes}">
<patternset refid="jar-compiled"/>
<include name="**/*testlib-jar*"/>
<include name="**/data/**" />
</fileset>
<manifest>
<attribute name="permissions" value="all-permissions"/>
</manifest>
</jar>
<!-- Ensure jar-based library is unavailable on FS-based class path -->
<delete>
<fileset dir="${build}">
<include name="**/*testlib-jar*"/>
</fileset>
</delete>
<mkdir dir="${build}/jws"/>
<copy todir="${build}/jws" file="${build}/${jar}"/>
<copy todir="${build}/jws" file="${build}/${testjar}"/>
<copy todir="${build}/jws" file="lib/junit.jar"/>
<copy todir="${build}/jws" file="lib/clover.jar"/>
<jar jarfile="${build}/jws/jnidispatch.jar">
<fileset dir="${build.native}" includes="*jnidispatch.*"/>
</jar>
<!-- To allow JNLP tests to run, import the JNA testing certificate as a CA -->
<!-- keytool -exportcert -file jna.csr -keystore jna.keystore -alias jna -->
<!-- javaws -viewer (security tab, import CSR as CA-->
<!--
<signjar alias="jna" keystore="jna.keystore" storepass="jnadev" lazy="true">
<fileset dir="${build}/jws" includes="${jar},${testjar},junit.jar,jnidispatch.jar,clover.jar"/>
</signjar>
-->
</target>
<target name="android-test-setup" depends="compile-tests"
description="Configure tests for running on an Android emulator">
<!-- 'shared' should be the path to a folder mounted as the mobile
device/simulator storage card. -->
<property name="shared" value="shared"/>
</target>
<target name="wince-test-setup" depends="compile-tests"
description="Configure tests for running on the WM emulator">
<!-- 'shared' should be the path to a folder mounted as the mobile
device/simulator storage card. -->
<property name="shared" value="shared"/>
<!-- w32ce arm testing -->
<jar jarfile="${shared}/test.jar">
<zipfileset src="${build}/${jar}"/>
<zipfileset src="${build}/${testjar}"/>
</jar>
<copy todir="${shared}" file="${build}/${jar}"/>
<copy todir="${shared}" file="${build.native}/jnidispatch.dll"/>
<copy todir="${shared}" file="${build.native}/testlib.dll"/>
<copy todir="${shared}" file="${build.native}/testlib2.dll"/>
<copy todir="${shared}" file="${build.native}/test-path.dll"/>
<copy todir="${shared}" file="${build.native}/testlib-truncated"/>
<copy todir="${shared}" file="w32ce-test.lnk"/>
<chmod file="${shared}/*.dll" perm="+x"/>
</target>
<target name="-enable-native" unless="-native">
<property name="build-native" value="true"/>
</target>
<!-- When running tests from an IDE, be sure to set jna.library.path -->
<!-- to where the test library (testlib) is found. -->
<target name="test" depends="-enable-native,jar,compile-tests" unless="cross-compile"
description="Run all unit tests">
<echo>Checking JDK compatibility 1.6</echo>
<echo></echo>
<as:check-signature signature="lib/java16-1.1.signature">
<path path="${classes}"/>
</as:check-signature>
<echo></echo>
<property name="test.fork" value="yes"/>
<property name="test.forkmode" value="perTest"/>
<condition property="test.jdwp" value="-Xrunjdwp:transport=dt_socket,address=${test.debugport},server=y,suspend=y">
<isset property="test.debugport" />
</condition>
<property name="reports.junit" location="${reports}/junit/${os.prefix}"/>
<property name="results.junit" location="${build}/junit-results/${os.prefix}"/>
<mkdir dir="${results.junit}"/>
<echo>Saving test results in ${results.junit}</echo>
<property name="tests.stdcall" value="**/win32/*StdCallTest.java"/>
<condition property="tests.platform" value="**/win32/**/*Test.java">
<os family="windows"/>
</condition>
<condition property="tests.exclude" value="${tests.stdcall}">
<and><os family="windows"/><not><os arch="x86"/></not></and>
</condition>
<condition property="tests.platform" value="**/mac/**/*Test.java">
<os family="mac"/>
</condition>
<condition property="tests.platform" value="**/unix/**/*Test.java">
<and>
<os family="unix"/>
<not><os family="mac"/></not>
</and>
</condition>
<property name="tests.platform" value=""/>
<property name="tests.include" value="com/sun/jna/*Test.java"/>
<property name="tests.exclude" value=""/>
<property name="tests.exclude-patterns" value=""/>
<condition property="java.awt.headless" value="true">
<isset property="headless"/>
</condition>
<propertyset id="headless">
<propertyref prefix="java.awt.headless"/>
</propertyset>
<junit fork="${test.fork}" forkmode="${test.forkmode}" failureproperty="testfailure" tempdir="${build}">
<jvmarg if:set="test.jdwp" value="${test.jdwp}" />
<!-- optionally run headless -->
<syspropertyset refid="headless"/>
<!-- avoid VM conflicts with JNA protected mode -->
<env key="${ld.preload.name}" file="${libjsig}"/>
<env key="LC_MESSAGES" value="C" />
<sysproperty key="jna.library.path" file="${build.native}"/>
<!-- Ignore any system install of JNA -->
<sysproperty key="jna.nosys" value="true"/>
<sysproperty key="jna.builddir" file="${build}"/>
<sysproperty key="jna.nativedir" file="${build.native}"/>
<classpath><path refid="test.runpath"/></classpath>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<batchtest todir="${results.junit}">
<fileset dir="${test.src}" excludes="${tests.exclude-patterns}">
<include name="${tests.include}"/>
<include name="${tests.platform}"/>
<exclude name="${tests.exclude}"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${results.junit}">
<fileset dir="${results.junit}">
<include name="TEST-*.xml"/>
</fileset>
<report todir="${reports.junit}"/>
</junitreport>
<echo>View test report in file://${reports.junit}/index.html</echo>
<fail if="testfailure" unless="clover">One or more tests failed</fail>
</target>
<target name="test-platform" depends="compile-some-tests,platform-jar"
description="Run platform-specific tests">
<subant target="test" failonerror="true" inheritall="true" inheritrefs="true">
<property name="file.reference.jna.build" location="${build}"/>
<property name="file.reference.jna.jar" location="${build}/${jar}"/>
<property name="libs.junit.classpath" refid="test.libs"/>
<property name="javac.source" value="${test.compatibility}"/>
<property name="javac.target" value="${test.compatibility}"/>
<fileset dir="${contrib}" includes="platform/build.xml"/>
</subant>
</target>
<target name="with.clover" description="Enable code coverage for tests">
<taskdef resource="cloverlib.xml" classpath="lib/clover.jar"/>
<property name="clover" value="true"/>
<property name="build" value="build.clover"/>
<clover-setup/>
</target>
<target name="clover" depends="with.clover,test"
description="Generate test code coverage reports">
<property name="reports.clover" value="${reports}/clover"/>
<mkdir dir="${reports.clover}"/>
<clover-report>
<current outfile="${reports.clover}" title="clover">
<fileset dir="." includes="**/*.java" />
<testresults dir="${results.junit}" includes="TEST-*.xml"/>
<format type="html"/>
</current>
</clover-report>
<echo>Reports generated in ${reports.clover}</echo>
</target>
<target name="javadoc" depends="-setup">
<path id="javadoc.src.path">
<path refid="src.path"/>
<pathelement location="${platform.src}"/>
</path>
<path id="javadoc.compile.path">
<path refid="compile.path"/>
<pathelement location="${classes}"/>
</path>
<property name="header"
value="&lt;b&gt;JNA API&lt;/&gt;&lt;font size=&quot;-1&quot;&gt; ${jna.version}&lt;/font&gt;"/>
<property name="footer"
value="&lt;center&gt;&lt;i&gt;${copyright}&lt;/i&gt;&lt;/center&gt;"/>
<mkdir dir="${javadoc}"/>
<condition property="javadoc.opts" value="-Xdoclint:none" else="">
<not><matches pattern="^1.[0-7]$" string="${ant.java.version}"/></not>
</condition>
<javadoc package="true"
windowtitle="JNA API"
encoding="UTF-8"
sourcepathref="javadoc.src.path"
classpathref="javadoc.compile.path"
maxmemory="256m"
packagenames="com.sun.jna,com.sun.jna.ptr,com.sun.jna.types,com.sun.jna.platform,com.sun.jna.platform.win32"
overview="${src}/com/sun/jna/overview.html"
additionalparam="${javadoc.opts}"
destdir="${javadoc}">
<!-- stylesheetfile="${stylesheet}" -->
<doctitle>JNA API Documentation</doctitle>
<header>${header}</header>
<bottom>${footer}</bottom>
<link href="http://download.oracle.com/javase/${compatibility}/docs/api/"/>
<packageset dir="${src}" defaultexcludes="yes">
<patternset>
<include name="com/sun/jna/**/*"/>
</patternset>
</packageset>
<packageset dir="${platform.src}" defaultexcludes="yes">
<patternset>
<include name="com/sun/jna/platform/**/*"/>
</patternset>
</packageset>
<group title="Java Native Access" packages="com.sun.jna,com.sun.jna.ptr,com.sun.jna.types,com.sun.jna.win32"/>
<group title="Platform Utilities" packages="com.sun.jna.platform,com.sun.jna.platform.dnd"/>
<group title="Platform Specific" packages="com.sun.jna.platform.*"/>
<arg value="-notimestamp"/>
</javadoc>
<jar jarfile="${platform-javadoc-jar}">
<fileset dir="${javadoc}" />
</jar>
</target>
<target name="dist" depends="jar,aar,javadoc,contrib-jars,compile-tests,native"
description="Build distribution files">
<copy todir="${dist}" force="true" overwrite="true">
<fileset dir="${build}" includes="${jar},${minjar},${aar}"/>
<fileset dir="${contrib}/platform/dist" includes="jna-platform.jar"/>
<fileset dir="${lib.native}">
<include name="*.jar"/>
<exclude name="out-of-date.jar"/>
</fileset>
</copy>
<copy todir="${dist}/jnacontrib" flatten="true">
<fileset dir="${contrib}">
<include name="**/build/demo-*.jar" />
</fileset>
</copy>
<jar jarfile="${maven-javadoc-jar}">
<fileset dir="${javadoc}" />
</jar>
<zip zipfile="${dist}/doc.zip">
<zipfileset dir="${javadoc}" prefix="javadoc"/>
</zip>
<!-- Javadoc -->
<!-- JNA sources only, for use in Linux build from source/shared libffi -->
<zip zipfile="${dist}/src.zip">
<zipfileset dir="." includes="build.xml,${pom},LICENSE,LGPL2.1,AL2.0"/>
<zipfileset dir="${src}" includes="**/*.java" prefix="src"/>
<zipfileset dir="${test.src}" includes="**/*.java" prefix="test"/>
<zipfileset dir="${native}" excludes="libffi,libffi/**/*,build,build/**/*" prefix="native"/>
<zipfileset dir="${contrib}/platform" includes="**/*.java" prefix="contrib/platform"/>
</zip>
<!-- Full sources required to build and test everything -->
<zip zipfile="${dist}/src-full.zip">
<zipfileset src="${dist}/src.zip"/>
<zipfileset dir="lib" includes="junit.jar,clover.jar" prefix="lib"/>
<zipfileset dir="." includes=".classpath,.project"/>
<zipfileset dir="${native}" includes="libffi,libffi/**/*" prefix="native"/>
</zip>
<!-- Sources package as required by maven -->
<zip zipfile="${maven-sources-jar}">
<zipfileset dir="${src}" />
</zip>
</target>
<target name="clean" depends="-dynamic-properties">
<delete failOnError="false" includeEmptyDirs="true">
<fileset dir="${build}"/>
</delete>
<delete quiet="true" includeEmptyDirs="true">
<fileset dir=".clover"/>
<fileset dir="build.clover" />
<fileset dir="${javadoc}"/>
<fileset dir="." includes="*~,**/*~,build.number,native/libffi/configure"/>
</delete>
<subant target="clean" failonerror="true">
<fileset dir="${contrib}" includes="*/build.xml"/>
</subant>
</target>
<target name="install" depends="dist" description="Install jna and jna-platform artifacts into local maven repository">
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-install-plugin:2.5:install-file"/>
<arg value="-DpomFile=${pom}"/>
<arg value="-Dfile=${dist-jar}"/>
<arg value="-Dsources=${maven-sources-jar}"/>
<arg value="-Djavadoc=${maven-javadoc-jar}"/>
</artifact:mvn>
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-install-plugin:2.5:install-file"/>
<arg value="-DpomFile=${pom}"/>
<arg value="-Dfile=${dist-aar}"/>
<arg value="-Dpackaging=aar"/>
</artifact:mvn>
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-install-plugin:2.5:install-file"/>
<arg value="-DpomFile=${pom-platform}"/>
<arg value="-Dfile=${platform-jar}"/>
<arg value="-Dsources=${platform-sources-jar}"/>
<arg value="-Djavadoc=${platform-javadoc-jar}"/>
</artifact:mvn>
</target>
<!-- NOTE: The 'deploy' target works only if the version (jna.version in build.xml) ends in '-SNAPSHOT'. -->
<target name="deploy" depends="dist" description="deploy snapshot version to Maven snapshot repository">
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file"/>
<arg value="-Durl=${maven-snapshots-repository-url}"/>
<arg value="-DrepositoryId=${maven-snapshots-repository-id}"/>
<arg value="-DpomFile=${pom}"/>
<arg value="-Dfile=${dist-jar}"/>
<arg value="-Dfiles=${maven-sources-jar},${maven-javadoc-jar},${dist-aar}"/>
<arg value="-Dtypes=jar,jar,aar"/>
<arg value="-Dclassifiers=sources,javadoc,"/>
</artifact:mvn>
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file"/>
<arg value="-Durl=${maven-snapshots-repository-url}"/>
<arg value="-DrepositoryId=${maven-snapshots-repository-id}"/>
<arg value="-DpomFile=${pom-platform}"/>
<arg value="-Dfile=${platform-jar}"/>
<arg value="-Dfiles=${platform-sources-jar},${platform-javadoc-jar}"/>
<arg value="-Dtypes=jar,jar"/>
<arg value="-Dclassifiers=sources,javadoc"/>
</artifact:mvn>
</target>
<property name="version-maven-gpg-plugin" value="1.4"/>
<target name="stage" depends="dist" description="deploy release version to Maven staging repository">
<!-- sign and deploy the jna, artifact -->
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-gpg-plugin:${version-maven-gpg-plugin}:sign-and-deploy-file"/>
<arg value="-Durl=${maven-staging-repository-url}"/>
<arg value="-DrepositoryId=${maven-staging-repository-id}"/>
<arg value="-DpomFile=${pom}"/>
<arg value="-Dfile=${dist-jar}"/>
<arg value="-Dfiles=${maven-sources-jar},${maven-javadoc-jar},${dist-aar}"/>
<arg value="-Dclassifiers=sources,javadoc,"/>
<arg value="-Dtypes=jar,jar,aar"/>
<arg value="-Dgpg.useagent=true"/>
</artifact:mvn>
<!-- sign and deploy the platform artifact -->
<artifact:mvn failonerror="true">
<arg value="org.apache.maven.plugins:maven-gpg-plugin:${version-maven-gpg-plugin}:sign-and-deploy-file"/>
<arg value="-Durl=${maven-staging-repository-url}"/>
<arg value="-DrepositoryId=${maven-staging-repository-id}"/>
<arg value="-DpomFile=${pom-platform}"/>
<arg value="-Dfile=${platform-jar}"/>
<arg value="-Dfiles=${platform-sources-jar},${platform-javadoc-jar}"/>
<arg value="-Dclassifiers=sources,javadoc"/>
<arg value="-Dtypes=jar,jar"/>
<arg value="-Dgpg.useagent=true"/>
</artifact:mvn>
</target>
</project>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/longshu/jna.git
git@gitee.com:longshu/jna.git
longshu
jna
jna
master

搜索帮助