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