|
|
1.1 root 1: #
2: # nono
1.1.1.3 root 3: # Copyright (C) 2020 nono project
4: # Licensed under nono-license.txt
1.1 root 5: #
6:
1.1.1.3 root 7: # 共通の定義。
8: # サブディレクトリの Makefile は先頭で .include すること。
9: #
10: # ここでは以下の変数を定義する。これらはコマンドライン上に完全順不同で登場
11: # すると読みにくいのでなんとなくグループ分けしたいというくらいの意味合い。
12: #
13: # CCFLAGS
14: # C/C++ 共通のコンパイラオプション。
15: # WARNFLAGS
16: # C/C++ 共通のワーニングオプション。
17: # WARNFLAGS_C
18: # WARNFLAGS_CXX
19: # C/C++ 専用のワーニングオプション。
20: # CPPFLAGS
21: # C/C++ 共通のプリプロセッサオプション。
22: #
23: # これらの変数には必要なら各 Makefile で値を追加してよい。
1.1.1.4 root 24: #
25: # COPT は C/C++ 共通の追加の一時的なオプションで、make のコマンドラインで
26: # 指定されることを想定している (./Makefile.rule 参照)。
1.1.1.3 root 27:
28: # ここからコード
29:
30: # システム定義(/usr/share/mk/*.mk) の CFLAGS、CXXFLAGS は使わない。
31: # 定義が OS によってまちまちなのと、特に NetBSD の CXXFLAGS は特定のオプション
32: # を勝手に削るとか実にきしょい動きをするのでハマる。CPPFLAGS も念のため。
33: CFLAGS= # reset system definition
34: CXXFLAGS= # reset system definition
35: CPPFLAGS= # reset system definition
36:
1.1 root 37: .include "Makefile.cfg"
38:
39: PROFOPT= -g
40: #PROFOPT= -g -pg
41:
42: ## ASan for GCC
43: #PROFOPT+= -fsanitize=address -fno-omit-frame-pointer -static-libstdc++
44: ## ASan for clang
45: #PROFOPT+= -fsanitize=address -fno-omit-frame-pointer -O1
46: ## MSan for clang
47: #PROFOPT+= -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -O1
48: ## TSan
49: #PROFOPT+= -fsanitize=thread
50: ## UBSan
51: #PROFOPT+= -fsanitize=undefined
52:
1.1.1.3 root 53: CCFLAGS+= -O2
54: CCFLAGS+= ${PROFOPT}
1.1.1.4 root 55:
56: # C++17 では不要になるはず?
57: CXXFLAGS+= -faligned-new
58:
1.1.1.3 root 59: WARNFLAGS+= -Wall -Werror -Wshadow
60: WARNFLAGS+= -Wignored-qualifiers
61: WARNFLAGS+= -Wno-sign-compare
62: WARNFLAGS+= -Wno-unused-result
63: WARNFLAGS+= -Wpointer-arith
1.1 root 64:
1.1.1.3 root 65: WARNFLAGS_CXX+= -Wnon-virtual-dtor
1.1 root 66:
1.1.1.3 root 67: WARNFLAGS_C+= ${WARNFLAGS_C_cfg}
68: WARNFLAGS_CXX+= ${WARNFLAGS_CXX_cfg}
1.1 root 69:
1.1.1.2 root 70: CPPFLAGS+= -I.
71: CPPFLAGS+= -I..
72: CPPFLAGS+= -I../debugger
73: CPPFLAGS+= -I../fpe
74: CPPFLAGS+= -I../host
75: CPPFLAGS+= -I../lib
76: CPPFLAGS+= -I../m680x0
77: CPPFLAGS+= -I../m88xx0
78: CPPFLAGS+= -I../vm
79:
1.1.1.3 root 80: .if ${NETDRIVER} == "tap"
81: CPPFLAGS+= -DNETDRIVER_TAP
82: .endif
83: .if ${NETDRIVER} == "bpf"
84: CPPFLAGS+= -DNETDRIVER_BPF
85: .endif
86:
87: # CFLAGS は C コンパイラに指定するコンパイルオプション。
88: # CXXFLAGS は C++ コンパイラに指定するコンパイルオプション。
89: # CPPFLAGS は C/C++ 共通でコンパイラに指定するプリプロセッサオプション。
90:
91: CFLAGS+= ${CCFLAGS} ${WARNFLAGS} ${WARNFLAGS_C}
92: CXXFLAGS+= ${CCFLAGS} ${WARNFLAGS} ${WARNFLAGS_CXX}
93:
1.1 root 94: LDFLAGS+= ${PROFOPT}
95:
96: # リンカに指定する引数
97: MYLIBS= \
98: ../vm/libnnvm.a \
99: ../debugger/libnndebugger.a \
100: ../m680x0/libnnm680x0.a \
1.1.1.2 root 101: ../m88xx0/libnnm88xx0.a \
1.1 root 102: ../fpe/libnnfpe.a \
103: ../host/libnnhost.a \
104: ../lib/libnnlib.a \
105:
1.1.1.2 root 106: .if "${.MAKE.OS}" == "Darwin"
107: # Apple Clang は --start-group, --end-group に対応してない。うーん。
108: MYLIBS_GROUP= ${MYLIBS} ${MYLIBS}
109: .else
110: MYLIBS_GROUP= -Wl,--start-group ${MYLIBS} -Wl,--end-group
111: .endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.