Shiro Kawai
shiro****@gmail*****
2015年 12月 6日 (日) 14:10:08 JST
もともとのconfigure.acだとcase $target in *-linux-*) ... ;; *-darwin-*) ... ;; esacとか するところですから、少し野暮ったくてもrxmatch-caseでマッチを明示しても いいんじゃないかなあという気もします。 (rxmatch-case (gauche-architecture) (#/-darwin(\d+)\./ (#f major) (if (>= (x->integer major) 15) ...)) (#/-linux/ (#f) ....) ...) それほど煩雑ではないように思うのですが、いかがでしょう。 2015-12-05 18:26 GMT-10:00 SHIGENOBU KIMURA <skimu****@mac*****>: > 今までインストールの度にいちいち Makefile を書き > 換えていたのを gauche.configure を使うように直してます。 > > 大抵の場合、 linux か Mac かを区別するだけでいいので > (gauche-architecture)からすぐに分岐できるのですが、 > 一つだけ、MacOSX のバージョンによってリンクオプションを > 変える必要が出てきました。 > そうなってくると(gauche-architechture)をパーズして > バージョン番号を取り出す手続きが欲しくなります。 > そこで、添付したようなのを書いたのですが、 > 実は、同様の機能が既にあったりするでしょうか? > なんかそんな気がしてきたので。 > > ただ、linux か Mac かの区別は cond-expand で出来ると > 嬉しいのですが、どうでしょう? > > 以下、該当する configure スクリプトの一部です。 > ;;; > ;;; target-triplet : cpu-vendor-os where os can be kernel-system > ;;; > https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html > ;;; > (use srfi-11) ; let*-values > > (define (parse-target-triplet str) > (let*-values (((cpu str) (string-scan str #\- 'both)) > ((vendor os) (string-scan str #\- 'both))) > (let ((version (cond ((rxmatch->string #/\d+(\.\d+)*$/ os) > => (lambda (v) > (map x->number (string-split v #\.)))) > (else #f)))) > (list :cpu cpu :vendor vendor :os os :version version)))) > > (define (version-number target-kv n) > (cond ((get-keyword :version target-kv) > => (lambda (v) (list-ref v n))) > (else #f))) > > ;;; TEST > ;(parse-target-triplet "x86_64-apple-darwin15.0.0") > ; => (:cpu "x86_64" :vendor "apple" :os "darwin15.0.0" :version (15 0 0)) > ;(parse-target-triplet "i686-pc-linux-gnu") > ; => (:cpu "i686" :vendor "pc" :os "linux-gnu" :version #f) > > ;;; > ;;; > ;;; > (unless (cf-have-subst? 'LAPACKLIBS) > > (let ((target (parse-target-triplet (gauche-architecture)))) > > (define (os~ str) (string-scan (get-keyword :os target) str)) > (define (version-major) (version-number target 0)) > (define (version-minor) (version-number target 1)) > (define (version-patch) (version-number target 2)) > > (cond ((os~ "darwin") > (cond ((>= (version-major) 15) (cf-subst 'LAPACKLIBS > "-framework Accelerate")) > (else (cf-subst 'LAPACKLIBS > "-framework veclib")))) > ((os~ "netbsd1.6") (cf-subst 'LAPACKLIBS "-Wl,-rpath > /usr/pkg/lib -L/usr/pkg/lib -llapack -lblas -lg2c")) > ((os~ "solaris2") (cf-subst 'LAPACKLIBS "-L/usr/local/lib > -llapack -lblas")) > ((os~ "linux") (cf-subst 'LAPACKLIBS "-Wl,-rpath > /apps/free/lapack/3.4.2/lib -L/apps/free/lapack/3.4.2/lib -llapack -lblas")) > (else (cf-subst 'LAPACKLIBS "-llapack -lblas"))) > > )) > > > > > On Nov 27, 2015, at 9:26 AM, SHIGENOBU KIMURA <skimu****@mac*****> wrote: > > バッチリです。ありがとうございます。 > > ちなみに、—with の方は —with-mylib=' -L/usr/lib -lmylib’ のように先頭にスペースを入れるとうまくいきました。 > > On Nov 27, 2015, at 9:54 AM, Shiro Kawai <shiro****@gmail*****> wrote: > > あれ、その表記は対応してるはず、と思ったら値の方にスペースを許してませんでした。 > > 7534e6d でどうですか。 > > 2015-11-26 16:20 GMT-10:00 SHIGENOBU KIMURA <skimu****@mac*****>: > >> こんにちは、 gauche.configure で >> >> $ ./configure MYLIB='-L/home/skimu/lib -lmylib' >> >> とかできると嬉しいのですが… >> >> $ ./configure MYLIB="-L/home/skimu/lib -lmylib" >> Invalid argument: MYLIB=-L/home/skimu/lib -lmylib >> Type `./configure --help' for usage. >> >> make で >> >> $ make MYLIB='-L/home/skimu/lib -lmylib' >> >> とすればいいんですが、.gpd に ./configure した時のオプションが保存されるので >> できたら ./configure で対応したいのです。 >> >> できたら ―with-mylib='-L/home/skimu/lib -lmylib' もできると嬉しいです。 >> >> よろしくお願いします。 >> >> 木村栄伸 >> >> >> _______________________________________________ >> Gauche-devel-jp mailing list >> Gauch****@lists***** >> http://lists.osdn.me/mailman/listinfo/gauche-devel-jp >> > > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.osdn.me/mailman/listinfo/gauche-devel-jp > > > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.osdn.me/mailman/listinfo/gauche-devel-jp > > > > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.osdn.me/mailman/listinfo/gauche-devel-jp > -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... ダウンロード