All Downloads are FREE. Search and download functionalities are using the official Maven repository.

VAqua.release.build.xml Maven / Gradle / Ivy

The newest version!
<?xml version="1.0" encoding="UTF-8"?>

<project name="VAqua Look and Feel" default="build">

  <!-- See https://violetlib.org/vbuilder/overview.html" -->

  <typedef resource="org/violetlib/vbuilder/ant/antlib.xml"/>
  
  <property name="jdk8" value="/Library/Java/JavaVirtualMachines/jdk-8.jdk"/>
  <property name="bootclasspath8" value="${jdk8}/Contents/Home/jre/lib/rt.jar"/>

  <property name="RELEASE" value="13"/>

  <tstamp>
    <format property="NOW" timezone="GMT" pattern="yyyy-MM-dd'T'HH:mm:ss'Z'"/>
  </tstamp>

  <property name="libname" value="VAqua"/>
  <property name="artifactCoordinates" value="org.violetlib:vaqua:${RELEASE}"/>

  <use key="org.jetbrains:annotations" version="20.1.0" scope="compile"/>
  <use key="org.violetlib:vappearances" version="4"/>
  <use key="org.violetlib:jnr" version="14"/>
  <use key="com.sun.activation:javax.activation" version="1.2.0"/>

  <property name="base" location=".."/>
  <property name="src" location="${base}/src"/>
  <property name="src8" location="${base}/Java8Support/src"/>
  <property name="src9" location="${base}/Java9Support/src"/>
  <property name="jnisrc" location="${base}/libvaqua"/>
  <property name="jnusrc" location="${base}/libvaqua"/>
  <property name="libkeywindowpatchsrc" location="${base}/libkeywindowpatch"/>
  <property name="libwindowstylepatchsrc" location="${base}/libwindowstylepatch"/>
  <property name="resourcesdir" location="${base}/resources"/>
  <property name="builddir" location="out"/>
  <property name="classesdir" location="${builddir}/classes"/>
  <property name="uber-classesdir" location="${builddir}/uber-classes"/>
  <property name="headersdir" location="${builddir}/headers"/>
  <property name="jnidir" location="${builddir}/jni"/>
  <property name="distdir" location="dist"/>
  <property name="libdir" location="${base}/lib"/>
  <property name="jnuheadersdir" value="${base}/libvaqua"/>
  <property name="jniheadersdir" value="${base}/libvaqua"/>
  <property name="debug" value="false"/>
  <property name="debugoption" value=""/>

  <property name="fullReleaseName" value="${RELEASE} ${NOW}"/>

  <target name="clean">
    <deleteDirectory directory="${builddir}"/>
    <deleteDirectory directory="${distdir}"/>
  </target>

  <target name="saveIDs">
    <echo file="${classesdir}/org/violetlib/aqua/RELEASE.txt" message="${RELEASE}"/>
    <echo file="${classesdir}/org/violetlib/aqua/BUILD.txt" message="${NOW}"/>
  </target>

  <target name="native">

    <jni
      version="1"
      compatibilityversion="1"
      outputfile="${jnidir}/libvaqua.dylib"
      includepath="${headersdir}:${jnuheadersdir}"
      installdir="${distdir}"
      installname="libvaqua.dylib"
      >

      <target value="x86_64-apple-macos10.10"/>
      <target value="arm64-apple-macos11"/>

      <linkerOption>-U</linkerOption>
      <linkerOption>_VAppearances_updateAppearance</linkerOption>
      <linkerOption>-undefined</linkerOption>
      <linkerOption>dynamic_lookup</linkerOption>

      <filelist dir="${jnusrc}">
        <file name="jnu_support.m"/>
      </filelist>

      <filelist dir="${jnisrc}">
        <file name="AquaNativeSupport.m"/>
        <file name="AquaSidebarBackground.m"/>
        <file name="AquaWrappedAWTView.m"/>
        <file name="AquaVisualEffectView.m"/>
        <file name="JavaWindowAccess.m"/>
      </filelist>

      <framework>Cocoa</framework>
      <framework>QuickLookThumbnailing</framework>
      <framework>Quartz</framework>
    </jni>

    <exec executable="/usr/bin/otool">
      <arg value="-l"/>
      <arg file="/Volumes/L/P/hack/VAqua/release/out/jni/libvaqua.dylib"/>
      <redirector outputproperty="otool.output">
        <outputfilterchain>
          <linecontains>
            <contains value="QuickLookUI"/>
          </linecontains>
        </outputfilterchain>
      </redirector>
    </exec>
    <fail message="Xcode or Command Line Tools 16.1 required to support QLPreviewView on older macOS releases">
      <condition>
        <length string="${otool.output}" when="greater" length="0"/>
      </condition>
    </fail>

    <jni
      version="1"
      compatibilityversion="1"
      outputfile="${jnidir}/libkeywindowpatch.dylib"
      includepath="${headersdir}:${jnuheadersdir}"
      installdir="${distdir}"
      installname="libkeywindowpatch.dylib"
      visibility="hidden"
      librarypath="${jnidir}"
      >

      <target value="x86_64-apple-macos10.10"/>
      <target value="arm64-apple-macos11"/>

      <linkerOption>-undefined</linkerOption>
      <linkerOption>dynamic_lookup</linkerOption>

      <filelist dir="${libkeywindowpatchsrc}">
        <file name="KeyWindowPatch.m"/>
        <file name="AquaWrappedWindowDelegate.m"/>
        <file name="CMenuItemCategory.m"/>
        <file name="CMenuBarCategory.m"/>
      </filelist>

      <library>vaqua</library>
      <framework>Cocoa</framework>
    </jni>

    <jni
      version="1"
      compatibilityversion="1"
      outputfile="${jnidir}/libwindowstylepatch.dylib"
      includepath="${headersdir}:${jnuheadersdir}"
      installdir="${distdir}"
      installname="libwindowstylepatch.dylib"
      visibility="hidden"
      >

      <target value="x86_64-apple-macos10.10"/>
      <target value="arm64-apple-macos11"/>

      <linkerOption>-undefined</linkerOption>
      <linkerOption>dynamic_lookup</linkerOption>

      <filelist dir="${libwindowstylepatchsrc}">
        <file name="WindowStylePatch.m"/>
      </filelist>

      <framework>Cocoa</framework>
    </jni>

  </target>

  <target name="build" depends="clean, saveIDs">
    <echo level="info" message="Building ${libname} ${fullReleaseName}"/>
    <mkdir dir="${jnidir}"/>
    <javaLibrary
      name="VAquaOnly"
      expandedName="VAqua"
      dist="${distdir}"
      release="8"
      mavenCoordinates="${artifactCoordinates}"
      buildRoot="${builddir}"
      >
      <source base="${src}"/>
      <source base="${src8}" release="8"/>
      <source base="${src9}" release="9"/>
      <fileset dir="${resourcesdir}"/>
      <fileset dir="${jnidir}"/>
    </javaLibrary>
  </target>

</project>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy