SlideShare a Scribd company logo
GNU make 4.0に
何かいる
@emasaka
GNU make 4.0登場
●

10/8リリース

●

主な新機能
–

--output-sync:並列実行で出力が混ざるのを防ぐ

–

--trace:実行するコマンドを出力

–

Guileを組み込める
Guile?
●

GNUのSchemeインタープリタ

●

アプリ組み込みが主な目的
–

TclとかLuaとかmrubyとかと同類
ブログにも書いた
やってみる1
●

Guileをインストールしておく
–

●

$ sudo apt-get install guile-2.0 guile-2.0-devs

「guile-2.0」パッケージはなくてもいいと思うけ
ど、Schemeコードの動作確認のため
やってみる2
●

GNU make 4.0のソースをもってきて展開

●

./configure
–

このときにGuile(ライブラリ)が入っていると、makeの
Guileサポートが有効になる
●

–

おそらくLinuxディストロでは無効になるのでは?

--with-guile=noで明示的に無効に
やってみる3
●
●

$ make
$ ldd ./make | grep guile
libguile-2.0.so.22 => /usr/lib/libguile-2.0.so.22
(0x00007f6482291000)
確認
●

.FEATURES変数に“guile”が入っていればOK

$ cat features.mk
all:
        @echo $(.FEATURES)
$ ./make ­f features.mk
target­specific order­only second­expansion else­if 
shortest­stem undefine oneshell archives jobserver 
output­sync check­symlink guile load
使いかた
●

$(guile 〜)関数

●

ようは$(shell 〜)関数でシェルを呼ぶのといっしょ
例1:とりあえず出力
all:
echo $(guile '("Hello, World!"))
例2:なんかSchemeっぽいの
sexp = (map (lambda (x) (+ x 3)) (iota 10))
all:
@echo $(guile $(sexp))
例3:FizzBuzz(shell版)
http://d.hatena.ne.jp/eel3/20110924/1316791928 より

all: $(shell seq 1 1 100)
$(shell seq 3 3 100):
@echo Fizz
$(shell seq 5 5 100):
@echo Buzz
$(shell seq 15 15 100):
@echo FizzBuzz
.DEFAULT:
@echo $@
例3:FizzBuzz(guile版)
all: $(guile (use­modules (srfi srfi­1))) $
(guile (iota 100 1 1))
$(guile (iota 100 3 3)):
@echo Fizz
$(guile (iota 100 5 5)):
@echo Buzz
$(guile (iota 100 15 15)):
@echo FizzBuzz
.DEFAULT:
@echo $@
例3:FizzBuzz(実行時間)
$ time ./make ­f fb­scm.mk >& /dev/null
./make ­f fb­scm.mk >&/dev/null  0.10s user 
0.06s system 47% cpu 0.337 total
$ time ./make ­f fb­sh.mk >& /dev/null
./make ­f fb­sh.mk >&/dev/null  0.05s user 
0.04s system 35% cpu 0.258 total

shell版のほうが速い!
例4:SchemeでmakeのDSL
define dsl
(use­modules (srfi srfi­1))
(define targets '())
(define (showtargets)
  (string­join (reverse targets) "n") )
(define­macro (push! place item)
  `(set! ,place (cons ,item ,place)) )
(define (mklist­>str lst)
  (string­join (map symbol­>string lst)) )
(define­macro (deftarget tgt dep . cmds)
  (push! targets
 (format #f "~a:~a~a"
 tgt (mklist­>str dep)
 (fold (lambda (x r)
 (string­append r "nt" (mklist­>str x))) "" cmds )) ))
(deftarget all (foo)
  (@./foo))
(deftarget foo (foo.c)
  (cc foo.c ­o foo) )
endef
dummy := $(guile $(dsl))
$(guile (gmk­eval (showtargets)))

More Related Content

More from emasaka

ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
emasaka
 
濁点の話
濁点の話濁点の話
濁点の話
emasaka
 
GoBoLinuxを試した
GoBoLinuxを試したGoBoLinuxを試した
GoBoLinuxを試した
emasaka
 
さくらのクラウドでh2oのベンチマーク
さくらのクラウドでh2oのベンチマークさくらのクラウドでh2oのベンチマーク
さくらのクラウドでh2oのベンチマーク
emasaka
 
みおぽん for CLI
みおぽん for CLIみおぽん for CLI
みおぽん for CLIemasaka
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
emasaka
 
長いの
長いの長いの
長いのemasaka
 
)の品格
)の品格)の品格
)の品格emasaka
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
Bash on Railsの逆襲
Bash on Railsの逆襲Bash on Railsの逆襲
Bash on Railsの逆襲emasaka
 

More from emasaka (12)

ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
 
濁点の話
濁点の話濁点の話
濁点の話
 
GoBoLinuxを試した
GoBoLinuxを試したGoBoLinuxを試した
GoBoLinuxを試した
 
さくらのクラウドでh2oのベンチマーク
さくらのクラウドでh2oのベンチマークさくらのクラウドでh2oのベンチマーク
さくらのクラウドでh2oのベンチマーク
 
みおぽん for CLI
みおぽん for CLIみおぽん for CLI
みおぽん for CLI
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
長いの
長いの長いの
長いの
 
)の品格
)の品格)の品格
)の品格
 
人力
人力人力
人力
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Bash on Railsの逆襲
Bash on Railsの逆襲Bash on Railsの逆襲
Bash on Railsの逆襲
 

Recently uploaded

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (16)

CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

GNU make 4.0に何かいる