blob: 983f3de891b315ca5609125222bf9df8f619792d [file] [log] [blame]
<?xml version="1.0" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="jk_native" default="main" basedir=".">
<description>Build the native component of jk.</description>
<property file="${user.home}/.ant.properties" />
<property file="${user.home}/build.properties" />
<property file="../build.properties" />
<property file="build.properties" />
<!-- Overriden if called from the main -->
<property name="jk.build" location="../build" />
<path id="cp.jkant" >
<pathelement location="${jk.build}/lib/jkant.jar"/>
</path>
<property name="native.dir" location="." />
<property name="apxs13" value="/opt/apache13/bin/apxs" />
<property name="apxs20" value="/opt/apache2/bin/apxs" />
<property name="iplanet.home" location="/opt/iplanet" />
<property name="apache2.home" location="/opt/apache2" />
<property name="apache13.home" location="/opt/apache13" />
<property name="apache2.include" location="${apache2.home}/include" />
<property name="apache13.include" location="${apache13.home}/include" />
<property name="so.debug" value="true" />
<property name="so.optimize" value="false" />
<property name="so.profile" value="false" />
<!-- ==================== Targets ==================== -->
<target name="main" depends="init,apache20,apache13,iis,netscape">
</target>
<target name="init" >
<echo message="${user.home}" />
<taskdef resource="META-INF/ant.tasks"
classpathref="cp.jkant" />
<available property="apache13.detect"
file="${apache13.home}" />
<available property="apache2.detect"
file="${apache2.home}" />
<available property="iis.detect"
file="${iis.home}" />
<available property="iplanet.detect"
file="${iplanet.home}" />
<available property="HAVE_APR"
file="${apr.include}/apr.h" />
<mkdir dir="${jk.build}/jk" />
<condition property="linux">
<equals arg1="${os.name}" arg2="Linux"/>
</condition>
<condition property="solaris">
<equals arg1="${os.name}" arg2="SunOS"/>
</condition>
<condition property="win32">
<os family="windows"/>
</condition>
<condition property="hpux">
<equals arg1="${os.name}" arg2="HP-UX"/>
</condition>
<!-- I believe they are using cross-compilation, so checking the os.name
doesn't help. We'll check if the NDK is installed instead -->
<condition property="netware">
<available file="novellndk.home" />
</condition>
<echo message="linux=${linux} solaris=${solaris} win32=${win32} hpux=${hpux} netware=${netware}"/>
</target>
<target name="apache20" depends="init" if="apache2.detect">
<mkdir dir="${jk.build}/jk/apache2" />
<so sofile="mod_jk"
buildDir="${jk.build}/jk/apache2"
optimize="${so.optimize}"
debug="${so.debug}"
taskDebug="0"
profile="${so.profile}" >
<def name="_REENTRANT" />
<def name="CHANNEL" if="use.channel"
info="Use the new (experimental) channel interface" />
<def name="AJP12" if="use.ajp12"
info="Build the deprecated ajp12 worker" />
<def name="CHUNK_SIZE" value="4096"
info="Read/Write buffer size" />
<def name="REUSE_WORKER"
unless="option_no_reuse_worker"
info="Reuse the worker endpoint, using per thread data" />
<def name="USE_APACHE_MD5" unless="netware"
info="Use the MD5 implementation that is part of apache2" />
<def name="HPUX11" if="hpux" />
<apacheConfig apxs="${apxs20}" />
<jniConfig />
<src dir=".">
<include name="apache-2.0/mod_jk.c" />
<include name="common/**/*.c" />
<exclude name="common/ajp12/*.c" unless="use.ajp12" />
<exclude name="common/jk_nwmain.c" unless="netware" />
</src>
<includes>
<include name="${native.dir}/common" />
<include name="${apache2.include}" />
<include name="${java.home}/../include" />
<!-- Platform specific includes -->
<include name="${java.home}/../include/win32" if="win32" unless="netware" />
<include name="${java.home}/../include/hp-ux" if="hpux" />
<include name="${java.home}/../include/netware" if="netware" />
<include name="${java.home}/../include/linux" if="linux"/>
<include name="${java.home}/../include/solaris" if="solaris" />
<include name="${novelllibc.home}/include" if="netware" />
<include name="${novelllibc.home}/include/winsock" if="netware" />
</includes>
<depends>
<fileset dir="${native.dir}/common" includes="*.h" />
</depends>
<!-- Platform-specific tags -->
<def name="WIN32" if="win32" unless="netware" />
<def name="DEBUG" if="win32.debug" unless="netware" />
<def name="NDEBUG" if="win32.release" unless="netware" />
<def name="_WINDOWS" if="win32" unless="netware" />
<def name="_MBCS" if="win32" unless="netware" />
<def name="_USRDLL" if="win32" unless="netware" />
<import fileName="libapr.lib" if="win32" unless="netware" />
<import fileName="libaprutil.lib" if="win32" unless="netware" />
<import fileName="libhttpd.lib" if="win32" unless="netware" />
<import fileName="wsock32.lib" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${build.compiler.base}/lib&quot;" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${apache2.home}/lib&quot;" if="win32" unless="netware" />
<def name="N_PLAT_NLM" if="netware"
info="Building for NetWare platform" />
<def name="NETWARE" if="netware"
info="Building for NetWare platform" />
<def name="__NETWARE__" if="netware"
info="Building for NetWare platform" />
<def name="__NOVELL_LIBC__" if="netware"
info="Building for NetWare platform with LibC libraries" />
<nlmmodule value="Apache2" if="netware" />
<import fileName="${novelllibc.home}/imports/libc.imp" if="netware" />
<import fileName="${novelllibc.home}/imports/ws2nlm.imp" if="netware" />
<import fileName="${apache2.home}/lib/httpd.imp" if="netware" />
<import fileName="${apache2.home}/lib/aprlib.imp" if="netware" />
<export symbol="jk_module" if="netware" />
<linkOpt value="-desc &quot;Apache 2.0 plugin for Tomcat&quot;" if="netware" />
<linkOpt value="-nlmversion 1,2,6" if="netware" />
<linkOpt value="-threadname &quot;mod_jk Module&quot;" if="netware" />
<linkOpt value="-stacksize 8192" if="netware" />
<linkOpt value="-l ${novelllibc.home}/imports" if="netware" />
<linkOpt value="-flags AUTOUNLOAD, PSEUDOPREEMPTION" if="netware" />
<linkOpt value="-entry _LibCPrelude" if="netware" />
<linkOpt value="-exit _LibCPostlude" if="netware" />
</so>
</target>
<target name="apache13" depends="init" if="apache13.detect">
<mkdir dir="${jk.build}/jk/apache13" />
<so sofile="mod_jk"
buildDir="${jk.build}/jk/apache13"
optimize="${so.optimize}"
debug="${so.debug}"
profile="${so.profile}">
<apacheConfig apxs="${apxs13}" />
<src dir=".">
<include name="apache-1.3/mod_jk.c" />
<include name="common/*.c" />
<exclude name="common/jk_jni_worker.c" />
<exclude name="common/jk_nwmain.c" unless="netware" />
<include name="common/apr/*.c" unless="HAVE_APR" />
</src>
<includes>
<include name="${native.dir}/common" />
<include name="${build.compiler.base}/include" />
<include name="${apache13.include}" />
<include name="${java.home}/../include" />
<!-- Platform specific includes -->
<include name="${apache13.home}/include" if="netware" />
<include name="${apache13.home}/os/netware" if="netware" />
<include name="${novellndk.home}/include/nlm" if="netware" />
<include name="${novellndk.home}/include" if="netware" />
<include name="${novellndk.home}/include/winsock" if="netware" />
<include name="${java.home}/../include/netware" if="netware" />
<include name="${apache13.home}/os/win32" if="win32" unless="netware" />
<include name="${java.home}/../include/win32" if="win32" unless="netware" />
<include name="${java.home}/../include/hp-ux" if="hpux" />
<include name="${native.dir}/common" if="win32" unless="netware" />
</includes>
<depends>
<fileset dir="${native.dir}/common" includes="*.h" />
</depends>
<!-- Platform-specific tags -->
<def name="N_PLAT_NLM" if="netware"
info="Building for NetWare platform" />
<def name="NETWARE" if="netware"
info="Building for NetWare platform" />
<def name="XP_NETWARE" if="netware"
info="Building for NetWare platform" />
<def name="USE_SPRINTF" if="netware"
info="Use the sprintf function to build strings" />
<def name="HPUX11" if="hpux" />
<def name="WIN32" if="win32" unless="netware" />
<def name="DEBUG" if="win32.debug" unless="netware" />
<def name="NDEBUG" if="win32.release" unless="netware" />
<def name="_WINDOWS" if="win32" unless="netware" />
<def name="_MBCS" if="win32" unless="netware" />
<def name="_USRDLL" if="win32" unless="netware" />
<def name="MOD_JK_EXPORTS" if="win32" unless="netware" />
<nlmmodule value="apache" if="netware" />
<import fileName="${novellndk.home}/imports/clib.imp" if="netware" />
<import fileName="${novellndk.home}/imports/lib0.imp" if="netware" />
<import fileName="${novellndk.home}/imports/nlmlib.imp" if="netware" />
<import fileName="${novellndk.home}/imports/threads.imp" if="netware" />
<import fileName="${novellndk.home}/imports/socklib.imp" if="netware" />
<import fileName="${novellndk.home}/imports/ws2nlm.imp" if="netware" />
<import fileName="${apache13.home}/os/netware/ApacheCore.imp" if="netware" />
<export symbol="jk_module" if="netware" />
<linkOpt value="-desc &quot;Apache 1.3 plugin for Tomcat&quot;" if="netware" />
<linkOpt value="-screenname &quot;System Console&quot;" if="netware" />
<linkOpt value="-nlmversion 1,2,6" if="netware" />
<linkOpt value="-threadname &quot;mod_jk Thread&quot;" if="netware" />
<linkOpt value="-stacksize 64000" if="netware" />
<import fileName="ApacheCore.lib" if="win32" unless="netware" />
<import fileName="wsock32.lib" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${build.compiler.base}/lib&quot;" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${apache13.home}/CoreR&quot;" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${apache13.home}/Release&quot;" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${apache13.home}/libexec&quot;" if="win32" unless="netware" />
</so>
</target>
<target name="iis" depends="init" if="iis.detect">
<mkdir dir="${jk.build}/jk/iis" />
<so sofile="isapi_redirector"
buildDir="${jk.build}/jk/iis"
optimize="${so.optimize}"
debug="${so.debug}"
profile="${so.profile}">
<src dir=".">
<include name="iis/jk_isapi_plugin.c" />
<include name="common/*.c" />
<exclude name="common/jk_nwmain.c" unless="netware" />
<include name="common/apr/*.c" unless="HAVE_APR" />
</src>
<includes>
<include name="${java.home}/../include" />
<include name="${java.home}/../include/win32" />
<include name="${native.dir}/common" />
<include name="${mssdk.include}" />
<include name="${build.compiler.base}/include" />
</includes>
<depends>
<fileset dir="${native.dir}/common" includes="*.h" />
</depends>
<!-- Platform-specific tags -->
<def name="WIN32" />
<def name="DEBUG" if="win32.debug" />
<def name="NDEBUG" if="win32.release" />
<def name="_WINDOWS" />
<def name="_MBCS" />
<def name="_USRDLL" />
<def name="ISAPI_EXPORTS" />
<import fileName="advapi32.lib" />
<import fileName="wsock32.lib" />
<export symbol="HttpFilterProc"/>
<export symbol="GetFilterVersion"/>
<export symbol="GetExtensionVersion"/>
<export symbol="HttpExtensionProc"/>
<export symbol="TerminateFilter"/>
<export symbol="TerminateExtension"/>
<linkOpt value="/libpath:&quot;${mssdk.lib}&quot;" />
<linkOpt value="/libpath:&quot;${build.compiler.base}/lib&quot;" />
</so>
</target>
<target name="netscape" depends="init" if="iplanet.detect">
<mkdir dir="${jk.build}/jk/netscape" />
<property name="netscape.home" value="${iplanet.home}/plugins" />
<available property="unix" file="/etc/passwd" />
<so sofile="nsapi_redirector"
buildDir="${jk.build}/jk/netscape"
optimize="${so.optimize}"
debug="${so.debug}"
profile="${so.profile}">
<src dir=".">
<include name="netscape/jk_nsapi_plugin.c" />
<include name="common/*.c" />
<exclude name="common/jk_nwmain.c" unless="netware" />
<include name="common/apr/*.c" unless="HAVE_APR" />
</src>
<includes>
<include name="${native.dir}/common" />
<include name="${build.compiler.base}/include" />
<include name="${netscape.home}/include" />
<include name="${java.home}/../include" />
<!-- Platform specific includes -->
<include name="${novellndk.home}/include/nlm" if="netware" />
<include name="${novellndk.home}/include" if="netware" />
<include name="${java.home}/../include/linux" if="linux" />
<include name="${java.home}/../include/netware" if="netware" />
<include name="${apache13.home}/os/win32" if="win32" unless="netware" />
<include name="${java.home}/../include/win32" if="win32" unless="netware" />
<include name="${native.dir}/common" if="win32" unless="netware" />
</includes>
<depends>
<fileset dir="${native.dir}/common" includes="*.h" />
</depends>
<!-- Platform-specific tags -->
<altSoFile value="nsapi_rd" if="netware" />
<def name="XP_UNIX" if="unix"
info="Building for unix platform" />
<def name="N_PLAT_NLM" if="netware"
info="Building for NetWare platform" />
<def name="NETWARE" if="netware"
info="Building for NetWare platform" />
<def name="XP_NETWARE" if="netware"
info="Building for NetWare platform" />
<def name="USE_SPRINTF" if="netware"
info="Use the sprintf function to build strings" />
<def name="WIN32" if="win32" unless="netware" />
<def name="DEBUG" if="win32.debug" unless="netware" />
<def name="NDEBUG" if="win32.release" unless="netware" />
<def name="_WINDOWS" if="win32" unless="netware" />
<def name="_MBCS" if="win32" unless="netware" />
<def name="_USRDLL" if="win32" unless="netware" />
<def name="XP_WIN32" if="win32" unless="netware" />
<def name="NSAPI_EXPORTS" if="win32" unless="netware" />
<def name="XP_UNIX" if="unix"
info="Unix platform - needed for nsapi.h" />
<nlmmodule value="nshttpd" if="netware" />
<import fileName="${novellndk.home}/imports/clib.imp" if="netware" />
<import fileName="${novellndk.home}/imports/lib0.imp" if="netware" />
<import fileName="${novellndk.home}/imports/nlmlib.imp" if="netware" />
<import fileName="${novellndk.home}/imports/threads.imp" if="netware" />
<import fileName="${novellndk.home}/imports/socklib.imp" if="netware" />
<import fileName="${netscape.home}/imports/nsapi.imp" if="netware" />
<export symbol="jk_init" if="netware" />
<export symbol="jk_service" if="netware" />
<linkOpt value="-desc &quot;Netscape Plugin for Tomcat&quot;" if="netware" />
<linkOpt value="-screenname &quot;System Console&quot;" if="netware" />
<linkOpt value="-nlmversion 1,2,6" if="netware" />
<linkOpt value="-threadname &quot;NSTomcat Thread&quot;" if="netware" />
<linkOpt value="-stacksize 64000" if="netware" />
<import fileName="ns-httpd36.lib" if="win32" unless="netware" />
<import fileName="wsock32.lib" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${build.compiler.base}/lib&quot;" if="win32" unless="netware" />
<linkOpt value="/libpath:&quot;${netscape.home}/lib&quot;" if="win32" unless="netware" />
</so>
</target>
<target name="clean" >
<delete dir="${jk.build}/jk"/>
</target>
</project>