java autoconf_java – JNI的Autoconf测试包括dir

检查标题很容易;只需使用AC_CHECK_HEADER.如果它处于一个奇怪的地方(即编译器不知道的那个),那么期望用户设置CPPFLAGS是完全合理的.

困难的部分实际上是定位libjvm.您通常不希望与此链接;但是如果在运行时未设置JAVA_HOME,您可能希望默认使用某个位置来删除它.

但是我没有比要求在配置时设置JAVA_HOME更好的解决方案.在各种操作系统(甚至只是Linux发行版)中部署这些内容的方式太多了.这就是我做的:

AC_CHECK_HEADER([jni.h], [have_jni=yes])

AC_ARG_VAR([JAVA_HOME], [Java Runtime Environment (JRE) location])

AC_ARG_ENABLE([java-feature],

[AC_HELP_STRING([--disable-java-feature],

[disable Java feature])])

case $target_cpu in

x86_64) JVM_ARCH=amd64 ;;

i?86) JVM_ARCH=i386 ;;

*) JVM_ARCH=$target_cpu ;;

esac

AC_SUBST([JVM_ARCH])

AS_IF([test X$enable_java_feature != Xno],

[AS_IF([test X$have_jni != Xyes],

[AC_MSG_FAILURE([The Java Native Interface is required for Java feature.])])

AS_IF([test -z "$JAVA_HOME"],

[AC_MSG_WARN([JAVA_HOME has not been set. JAVA_HOME must be set at run time to locate libjvm.])],

[save_LDFLAGS=$LDFLAGS

LDFLAGS="-L$JAVA_HOME/lib/$JVM_ARCH/client -L$JAVA_HOME/lib/$JVM_ARCH/server $LDFLAGS"

AC_CHECK_LIB([jvm], [JNI_CreateJavaVM], [LIBS=$LIBS],

[AC_MSG_WARN([no libjvm found at JAVA_HOME])])

LDFLAGS=$save_LDFLAGS

])])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值