SHIGENOBU KIMURA
skimu****@mac*****
2015年 12月 6日 (日) 13:26:50 JST
今までインストールの度にいちいち 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***** <mailto:shiro****@gmail*****>> wrote: >> >> あれ、その表記は対応してるはず、と思ったら値の方にスペースを許してませんでした。 >> >> 7534e6d でどうですか。 >> >> 2015-11-26 16:20 GMT-10:00 SHIGENOBU KIMURA <skimu****@mac***** <mailto: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***** <mailto:Gauch****@lists*****> >> http://lists.osdn.me/mailman/listinfo/gauche-devel-jp <http://lists.osdn.me/mailman/listinfo/gauche-devel-jp> >> >> _______________________________________________ >> Gauche-devel-jp mailing list >> Gauch****@lists***** <mailto: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... ダウンロード