複数のOS向けに自動でヘッダファイルや、リンクの指定を変えたいと思った場合での、
configure.ac
になんと書けばよいかのメモ。
(もっとよい方法があるかも・・・・)

まず、configure.acに以下の指定を加えます。

AC_CANONICAL_SYSTEM

このマクロを加えることで、configure時に指定するtargetやhostなどの指定を変数で取得できるようになります。

従って

AC_PREREQ([2.68])
AC_INIT([jvmvoke], [1.0], [coltware@gmail.com])
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([src/jvmvoke.c])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])

case "${target}" in
        *darwin*)
                echo "Target is MAX OS X"
JNI_INCLUDE=/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/
AC_SUBST(JNI_INCLUDE)
JNI_LDFLAGS="-Wl,-framework,JavaVM"
AC_SUBST(JNI_LDFLAGS)
                ;;
        *mingw*)

                echo "Target is WIN32"
                ;;
esac

ってな感じで、
AC_SUBST
で変数を動的に指定していきます。

つまり、
src/Makefile.am
には、

LDFLAGS=@JNI_LDFLAGS@
CFLAGS=-I@JNI_INCLUDE@
bin_PROGRAMS=jvmvoke
jvmvoke_SOURCES=jvmvoke.c

と記述することができました。

これが対応する前は

LDFLAGS=-I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/
CFLAGS=-Wl,-framework,JavaVM
bin_PROGRAMS=jvmvoke
jvmvoke_SOURCES=jvmvoke.c

ってな感じに記述していました。
これで、mingw32向けとか、Linux向けの指定を追加していけば、
同じMakefile.amファイルにて複数のOS向けのファイルができるという訳です。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2012年2月
« 1月   3月 »
 12345
6789101112
13141516171819
20212223242526
272829  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ