|
|
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.2 root 76: CPPFLAGS+= -I.
1.1.1.7 root 77: CPPFLAGS+= -I${TOPDIR}
78: CPPFLAGS+= -I${TOPDIR}/debugger
79: CPPFLAGS+= -I${TOPDIR}/fpe
1.1.1.9 root 80: CPPFLAGS+= -I${TOPDIR}/hd64180
1.1.1.7 root 81: CPPFLAGS+= -I${TOPDIR}/host
82: CPPFLAGS+= -I${TOPDIR}/lib
83: CPPFLAGS+= -I${TOPDIR}/m680x0
84: CPPFLAGS+= -I${TOPDIR}/m88xx0
85: CPPFLAGS+= -I${TOPDIR}/vm
86: CPPFLAGS+= -I${TOPDIR}/wx
1.1.1.3 root 87:
88: # CFLAGS は C コンパイラに指定するコンパイルオプション。
89: # CXXFLAGS は C++ コンパイラに指定するコンパイルオプション。
90: # CPPFLAGS は C/C++ 共通でコンパイラに指定するプリプロセッサオプション。
91:
1.1.1.10! root 92: CFLAGS+= ${CCFLAGS}
! 93: CXXFLAGS+= ${CCFLAGS}
! 94: .if !defined(RELEASE)
! 95: CFLAGS+= ${WARNFLAGS} ${WARNFLAGS_C}
! 96: CXXFLAGS+= ${WARNFLAGS} ${WARNFLAGS_CXX}
! 97: .endif
1.1.1.3 root 98:
1.1 root 99: LDFLAGS+= ${PROFOPT}
100:
101: # リンカに指定する引数
102: MYLIBS= \
103: ../vm/libnnvm.a \
104: ../debugger/libnndebugger.a \
105: ../m680x0/libnnm680x0.a \
1.1.1.2 root 106: ../m88xx0/libnnm88xx0.a \
1.1.1.9 root 107: ../hd64180/libnnhd64180.a \
1.1 root 108: ../fpe/libnnfpe.a \
109: ../host/libnnhost.a \
110: ../lib/libnnlib.a \
111:
1.1.1.2 root 112: .if "${.MAKE.OS}" == "Darwin"
113: # Apple Clang は --start-group, --end-group に対応してない。うーん。
114: MYLIBS_GROUP= ${MYLIBS} ${MYLIBS}
115: .else
116: MYLIBS_GROUP= -Wl,--start-group ${MYLIBS} -Wl,--end-group
117: .endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.