回答編集履歴

10

Makefile自分で書くならBSD makeにこだわる必要ないことを追記

2019/03/30 02:09

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  - ビルドシステム用のインクルードファイルが[増えています](https://svn.freebsd.org/base/releng/12.0/share/mk/)ので、これも取ってきてbsdmakeに`-m`オプションでパスを指定してみましたが、Makefileの読み込みの際に文法エラーになります。bsdmakeのソースコードを探してみると、どうもFreeBSD 5.4あたり (正確ではありません) のバージョンを元にしているようで、その後の拡張に対応していないようです。
36
36
  おそらく新しいFreeBSDのmakeのソースを取ってきてコンパイルすれば新しいBSD makeが手に入るのでしょう。
37
- - NetBSDの実行結果を見て、何をすればビルドできるのかはわかっているので、自分でMakefileを書きました。最初からこうすればよかった。
37
+ - NetBSDの実行結果を見て、何をすればビルドできるのかはわかっているので、自分でMakefileを書きました。最初からこうすればよかった。\[3/30追記] こうなると、makeはBSDでもGNUでもなんでもいいですね。
38
38
 
39
39
  ### configureシステム
40
40
 

9

用語訂正: マクロ→インクルードファイル

2019/03/30 02:09

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  まず、BSD系ならmakeにはGNU makeではなくBSD makeが必要になるだろうことは容易に想像がつきます (portsコレクションなどには逆にgmakeでないとビルドできないパッケージもありますが、コアツールでは確実にこれが必要です)。
11
11
 
12
- - homebrewでbsdmakeをインストールしました (手順は略)。BSDのビルドシステムで使われる (`bsd.prog.mk`など) もちゃんと含まれています。
12
+ - homebrewでbsdmakeをインストールしました (手順は略)。BSDのビルドシステムで使われるインルードファイル (`bsd.prog.mk`など) もちゃんと含まれています。
13
13
 
14
14
  Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。
15
15
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  できました。
34
34
 
35
- - ビルドシステム用のが[増えています](https://svn.freebsd.org/base/releng/12.0/share/mk/)ので、これも取ってきてbsdmakeに`-m`オプションでパスを指定してみましたが、Makefileの読み込みの際に文法エラーになります。bsdmakeのソースコードを探してみると、どうもFreeBSD 5.4あたり (正確ではありません) のバージョンを元にしているようで、その後の拡張に対応していないようです。
35
+ - ビルドシステム用のインルードファイルが[増えています](https://svn.freebsd.org/base/releng/12.0/share/mk/)ので、これも取ってきてbsdmakeに`-m`オプションでパスを指定してみましたが、Makefileの読み込みの際に文法エラーになります。bsdmakeのソースコードを探してみると、どうもFreeBSD 5.4あたり (正確ではありません) のバージョンを元にしているようで、その後の拡張に対応していないようです。
36
36
  おそらく新しいFreeBSDのmakeのソースを取ってきてコンパイルすれば新しいBSD makeが手に入るのでしょう。
37
37
  - NetBSDの実行結果を見て、何をすればビルドできるのかはわかっているので、自分でMakefileを書きました。最初からこうすればよかった。
38
38
 

8

一部取り消し

2019/03/29 08:12

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -1,4 +1,4 @@
1
- - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
1
+ - ~~configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。~~
2
2
  - homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
3
3
 
4
4
  # 追記

7

FreeBSDほか

2019/03/29 05:44

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -1,7 +1,5 @@
1
- 補足。
2
-
3
1
  - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
4
- - homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
2
+ - homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
5
3
 
6
4
  # 追記
7
5
 
@@ -15,7 +13,7 @@
15
13
 
16
14
  Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。
17
15
 
18
- ## NetBSD
16
+ ### NetBSD
19
17
 
20
18
  「最新の」という条件なのでCURRENTがいいのかもしれませんが、とりあえずRELEASE-8でやってみました。
21
19
  <https://ftp.netbsd.org/pub/NetBSD/NetBSD-release-8/src/usr.bin/sed/>
@@ -27,7 +25,30 @@
27
25
  - `BINDIR`が定義されていないのでinstallが失敗する。本来なら`/etc/mk.conf`で定義するものなのだろうが、面倒なのでこれも実行時変数として指定する。
28
26
  - 実行ファイルの名前を`bsdsed`とかにしたい? これもできるので、調べてください。
29
27
 
28
+ ### FreeBSD
29
+
30
- 次はFreeBSDをやってみます。これもCURRENTがいいのかもしれませんが、とりあえずRELENG-12にしましょう。
30
+ これもCURRENTがいいのかもしれませんが、とりあえずRELENG-12にしましょう。
31
31
  <https://svn.freebsd.org/base/releng/12.0/usr.bin/sed/>
32
- 続く。
33
32
 
33
+ できました。
34
+
35
+ - ビルドシステム用のマクロが[増えています](https://svn.freebsd.org/base/releng/12.0/share/mk/)ので、これも取ってきてbsdmakeに`-m`オプションでパスを指定してみましたが、Makefileの読み込みの際に文法エラーになります。bsdmakeのソースコードを探してみると、どうもFreeBSD 5.4あたり (正確ではありません) のバージョンを元にしているようで、その後の拡張に対応していないようです。
36
+ おそらく新しいFreeBSDのmakeのソースを取ってきてコンパイルすれば新しいBSD makeが手に入るのでしょう。
37
+ - NetBSDの実行結果を見て、何をすればビルドできるのかはわかっているので、自分でMakefileを書きました。最初からこうすればよかった。
38
+
39
+ ### configureシステム
40
+
41
+ これもできます。できるのがわかっているのでわたしは試しません。
42
+
43
+ ここまで説明したことを実際に自分で試していれば、`configure.ac`や`Makefile.am`の記述のしかたを知るだけでできます。といってもネット上の情報は英語が多いし読みづらいので、参考書を挙げておきます。
44
+
45
+ - Gary V. Vaughan et al.『[GNU Autoconf/Automake/Libtool](https://www.ohmsha.co.jp/book/9784274064111/)』オーム社.
46
+
47
+ ### pkgsrc
48
+
49
+ macOSでもpkgsrcを使えます。しかしBSD sedのようなコアツールは含まれていないので、自分でパッケージを作ればいいでしょう。
50
+
51
+ ここまで説明したことを実際に自分で試していれば、あとはパッケージの作りかたを知るだけでできます。やりかたは自分で調べてください。
52
+
53
+ 回答終り。
54
+

6

OSバージョン

2019/03/29 05:21

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -7,10 +7,13 @@
7
7
 
8
8
  質問者さんがいつまでたっても試してくれないので、自分でやってみることにしました。
9
9
 
10
+ 試した環境はmacOS Sierra 10.12.xです。
11
+
10
12
  まず、BSD系ならmakeにはGNU makeではなくBSD makeが必要になるだろうことは容易に想像がつきます (portsコレクションなどには逆にgmakeでないとビルドできないパッケージもありますが、コアツールでは確実にこれが必要です)。
11
13
 
12
14
  - homebrewでbsdmakeをインストールしました (手順は略)。BSDのビルドシステムで使われるマクロ (`bsd.prog.mk`など) もちゃんと含まれています。
15
+
13
- - Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。
16
+ Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。
14
17
 
15
18
  ## NetBSD
16
19
 

5

typo

2019/03/28 12:01

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -20,7 +20,7 @@
20
20
  できました。詳細な手順は書きません (自分で試せば以下の説明で十分わかるはずです)。
21
21
 
22
22
  - Nullabilityのチェックでコンパイルが失敗するので、bsdmakeの実行時変数として`COPTS`に`-Wno-nullability-completeness`を追加。
23
- - `__UNCONST`という識別子が未定義だとしてコンパイルが失敗する。NetBSDでは \<sys/cdefs.h> で定義されているらしいが、macOSの \<sys/cdef.h> にはない。ソースコードを見たところとりあえずなくしてしまっても動きそうなので、`#define __UNCONST(x) (x)`をmacOSのsys/cdefs.hに追加定義したものを作り、それのパスを`-I`オプションで前記の`COPTS`に加えた。
23
+ - `__UNCONST`という識別子が未定義だとしてコンパイルが失敗する。NetBSDでは \<sys/cdefs.h> で定義されているらしいが、macOSの \<sys/cdefs.h> にはない。ソースコードを見たところとりあえずなくしてしまっても動きそうなので、`#define __UNCONST(x) (x)`をmacOSのsys/cdefs.hに追加定義したものを作り、それのパスを`-I`オプションで前記の`COPTS`に加えた。
24
24
  - `BINDIR`が定義されていないのでinstallが失敗する。本来なら`/etc/mk.conf`で定義するものなのだろうが、面倒なのでこれも実行時変数として指定する。
25
25
  - 実行ファイルの名前を`bsdsed`とかにしたい? これもできるので、調べてください。
26
26
 

4

link

2019/03/28 11:56

投稿

ikedas
ikedas

スコア4352

test CHANGED
File without changes

3

追記

2019/03/28 11:50

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -3,3 +3,28 @@
3
3
  - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
4
4
  - homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
5
5
 
6
+ # 追記
7
+
8
+ 質問者さんがいつまでたっても試してくれないので、自分でやってみることにしました。
9
+
10
+ まず、BSD系ならmakeにはGNU makeではなくBSD makeが必要になるだろうことは容易に想像がつきます (portsコレクションなどには逆にgmakeでないとビルドできないパッケージもありますが、コアツールでは確実にこれが必要です)。
11
+
12
+ - homebrewでbsdmakeをインストールしました (手順は略)。BSDのビルドシステムで使われるマクロ (`bsd.prog.mk`など) もちゃんと含まれています。
13
+ - Cコンパイラ、リンカは標準化のおかげでどのOSも似たようなものなので、OSに入っているclangやgccを使うことにします。
14
+
15
+ ## NetBSD
16
+
17
+ 「最新の」という条件なのでCURRENTがいいのかもしれませんが、とりあえずRELEASE-8でやってみました。
18
+ <https://ftp.netbsd.org/pub/NetBSD/NetBSD-release-8/src/usr.bin/sed/>
19
+
20
+ できました。詳細な手順は書きません (自分で試せば以下の説明で十分わかるはずです)。
21
+
22
+ - Nullabilityのチェックでコンパイルが失敗するので、bsdmakeの実行時変数として`COPTS`に`-Wno-nullability-completeness`を追加。
23
+ - `__UNCONST`という識別子が未定義だとしてコンパイルが失敗する。NetBSDでは \<sys/cdefs.h> で定義されているらしいが、macOSの \<sys/cdef.h> にはない。ソースコードを見たところとりあえずなくしてしまっても動きそうなので、`#define __UNCONST(x) (x)`をmacOSのsys/cdefs.hに追加定義したものを作り、それのパスを`-I`オプションで前記の`COPTS`に加えた。
24
+ - `BINDIR`が定義されていないのでinstallが失敗する。本来なら`/etc/mk.conf`で定義するものなのだろうが、面倒なのでこれも実行時変数として指定する。
25
+ - 実行ファイルの名前を`bsdsed`とかにしたい? これもできるので、調べてください。
26
+
27
+ 次はFreeBSDをやってみます。これもCURRENTがいいのかもしれませんが、とりあえずRELENG-12にしましょう。
28
+ <https://svn.freebsd.org/base/releng/12.0/usr.bin/sed/>
29
+ 続く。
30
+

2

はづかしいスペルミス

2019/03/28 11:48

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -1,5 +1,5 @@
1
1
  補足。
2
2
 
3
3
  - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージがconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
4
- - homebrew にはbsdmakeのformulaがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
4
+ - homebrew にはbsdmakeのformulaeがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
5
5
 

1

余計な文言削除

2019/03/21 13:14

投稿

ikedas
ikedas

スコア4352

test CHANGED
@@ -1,5 +1,5 @@
1
- ソースコードは入手できたようですからもういいのかもしれませんが補足。
1
+ 補足。
2
2
 
3
- - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
3
+ - configure スクリプトを実行してビルド環境を設定し、ビルドとインストールをするには、ソースパッケージconfigure スクリプトを含むように作られていないといけません。なので今回は無理です。
4
4
  - homebrew にはbsdmakeのformulaがあるようです。これを使えばBSD用のMakefileでビルドできそうです。ただし、このmakeから呼び出されるツール (installなど) もBSD向けのものを使わなければならない可能性があります (わたしは試してないので推測ですが)。これらをhomebrew でどのくらい面倒見てくれるかは不明です。
5
5