|
|
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 で値を追加してよい。
! 24:
! 25: # ここからコード
! 26:
! 27: # システム定義(/usr/share/mk/*.mk) の CFLAGS、CXXFLAGS は使わない。
! 28: # 定義が OS によってまちまちなのと、特に NetBSD の CXXFLAGS は特定のオプション
! 29: # を勝手に削るとか実にきしょい動きをするのでハマる。CPPFLAGS も念のため。
! 30: CFLAGS= # reset system definition
! 31: CXXFLAGS= # reset system definition
! 32: CPPFLAGS= # reset system definition
! 33:
1.1 root 34: .include "Makefile.cfg"
35:
36: PROFOPT= -g
37: #PROFOPT= -g -pg
38:
39: ## ASan for GCC
40: #PROFOPT+= -fsanitize=address -fno-omit-frame-pointer -static-libstdc++
41: ## ASan for clang
42: #PROFOPT+= -fsanitize=address -fno-omit-frame-pointer -O1
43: ## MSan for clang
44: #PROFOPT+= -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -O1
45: ## TSan
46: #PROFOPT+= -fsanitize=thread
47: ## UBSan
48: #PROFOPT+= -fsanitize=undefined
49:
1.1.1.3 ! root 50: CCFLAGS+= -O2
! 51: CCFLAGS+= -mtune=native
! 52: CCFLAGS+= ${PROFOPT}
! 53: WARNFLAGS+= -Wall -Werror -Wshadow
! 54: WARNFLAGS+= -Wignored-qualifiers
! 55: WARNFLAGS+= -Wno-sign-compare
! 56: WARNFLAGS+= -Wno-unused-result
! 57: WARNFLAGS+= -Wpointer-arith
1.1 root 58:
1.1.1.3 ! root 59: WARNFLAGS_CXX+= -Wnon-virtual-dtor
1.1 root 60:
1.1.1.3 ! root 61: WARNFLAGS_C+= ${WARNFLAGS_C_cfg}
! 62: WARNFLAGS_CXX+= ${WARNFLAGS_CXX_cfg}
1.1 root 63:
1.1.1.2 root 64: CPPFLAGS+= -I.
65: CPPFLAGS+= -I..
66: CPPFLAGS+= -I../debugger
67: CPPFLAGS+= -I../fpe
68: CPPFLAGS+= -I../host
69: CPPFLAGS+= -I../lib
70: CPPFLAGS+= -I../m680x0
71: CPPFLAGS+= -I../m88xx0
72: CPPFLAGS+= -I../vm
73:
1.1.1.3 ! root 74: .if ${NETDRIVER} == "tap"
! 75: CPPFLAGS+= -DNETDRIVER_TAP
! 76: .endif
! 77: .if ${NETDRIVER} == "bpf"
! 78: CPPFLAGS+= -DNETDRIVER_BPF
! 79: .endif
! 80:
! 81: # CFLAGS は C コンパイラに指定するコンパイルオプション。
! 82: # CXXFLAGS は C++ コンパイラに指定するコンパイルオプション。
! 83: # CPPFLAGS は C/C++ 共通でコンパイラに指定するプリプロセッサオプション。
! 84:
! 85: CFLAGS+= ${CCFLAGS} ${WARNFLAGS} ${WARNFLAGS_C}
! 86: CXXFLAGS+= ${CCFLAGS} ${WARNFLAGS} ${WARNFLAGS_CXX}
! 87:
1.1 root 88: LDFLAGS+= ${PROFOPT}
89:
90: # リンカに指定する引数
91: MYLIBS= \
92: ../vm/libnnvm.a \
93: ../debugger/libnndebugger.a \
94: ../m680x0/libnnm680x0.a \
1.1.1.2 root 95: ../m88xx0/libnnm88xx0.a \
1.1 root 96: ../fpe/libnnfpe.a \
97: ../host/libnnhost.a \
98: ../lib/libnnlib.a \
99:
1.1.1.2 root 100: .if "${.MAKE.OS}" == "Darwin"
101: # Apple Clang は --start-group, --end-group に対応してない。うーん。
102: MYLIBS_GROUP= ${MYLIBS} ${MYLIBS}
103: .else
104: MYLIBS_GROUP= -Wl,--start-group ${MYLIBS} -Wl,--end-group
105: .endif
106:
107: LIBS+= -lz
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.