Annotation of nono/Makefile.inc, revision 1.1.1.11

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.11! root       87: CPPFLAGS+=     ${NONO_CPPFLAGS}
1.1.1.3   root       88: 
                     89: # CFLAGS   は C   コンパイラに指定するコンパイルオプション。
                     90: # CXXFLAGS は C++ コンパイラに指定するコンパイルオプション。
                     91: # CPPFLAGS は C/C++ 共通でコンパイラに指定するプリプロセッサオプション。
                     92: 
1.1.1.10  root       93: CFLAGS+=       ${CCFLAGS}
                     94: CXXFLAGS+=     ${CCFLAGS}
                     95: .if !defined(RELEASE)
                     96: CFLAGS+=       ${WARNFLAGS} ${WARNFLAGS_C}
                     97: CXXFLAGS+=     ${WARNFLAGS} ${WARNFLAGS_CXX}
                     98: .endif
1.1.1.3   root       99: 
1.1       root      100: LDFLAGS+=      ${PROFOPT}
                    101: 
                    102: # リンカに指定する引数
                    103: MYLIBS=        \
                    104:        ../vm/libnnvm.a \
                    105:        ../debugger/libnndebugger.a \
                    106:        ../m680x0/libnnm680x0.a \
1.1.1.2   root      107:        ../m88xx0/libnnm88xx0.a \
1.1.1.9   root      108:        ../hd64180/libnnhd64180.a       \
1.1       root      109:        ../fpe/libnnfpe.a       \
                    110:        ../host/libnnhost.a \
                    111:        ../lib/libnnlib.a       \
                    112: 
1.1.1.2   root      113: .if "${.MAKE.OS}" == "Darwin"
                    114: # Apple Clang は --start-group, --end-group に対応してない。うーん。
                    115: MYLIBS_GROUP=  ${MYLIBS} ${MYLIBS}
                    116: .else
                    117: MYLIBS_GROUP=  -Wl,--start-group ${MYLIBS} -Wl,--end-group
                    118: .endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.