SystemC-2.3.3インストール(Mac)
何年振りかのインストール。
環境
- macOS Monterey 12.5
前提
以下がインストールされている状態です。
インストール
こんな感じでインストールしました。
$ wget https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz $ tar xvf systemc-2.3.3.tar.gz $ cd systemc-2.3.3 $ mkdir objdir $ cd objdir $ export CXX=clang++ $ ../configure #: --------------------------------------------------------------------- Configuration summary of SystemC 2.3.3 for x86_64-apple-darwin21.6.0 --------------------------------------------------------------------- Directory setup (based on classic layout): Installation prefix (aka SYSTEMC_HOME): /{解凍ディレクトリパス}/systemc-2.3.3 Header files : <SYSTEMC_HOME>/include Libraries : <SYSTEMC_HOME>/lib-macosx64 Documentation : <SYSTEMC_HOME>/docs Examples : <SYSTEMC_HOME>/examples Architecture : macosx64 Compiler : g++ (C/C++) Build settings: Enable compiler optimizations : yes Include debugging symbols : no Coroutine package for processes: QuickThreads Enable VCD scopes by default : yes Disable async_request_update : no Phase callbacks (experimental) : no --------------------------------------------------------------------- $ make $ make check #: ============================================================================ Testsuite summary for SystemC 2.3.3 ============================================================================ # TOTAL: 22 # PASS: 22 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ #: ============================================================================ Testsuite summary for TLM 2.0.5 ============================================================================ # TOTAL: 11 # PASS: 11 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ $ make install
動作確認
SYSTEMC_INCLUDE
, SYSTEMC_LIBDIR
は環境変数として設定済み。
CC = clang++ INCDIR = -I. -I$(SYSTEMC_INCLUDE) LIBDIR = -L. -L$(SYSTEMC_LIBDIR) LIBS = -lsystemc -lm CFLAGS = -O2 -Wall TARGET = run.exe SRCS = sc_main.cpp OBJS = $(SRCS:.cpp=.o) all: $(TARGET) $(TARGET): $(OBJS) $(CC) -o $@ $(LIBDIR) $(LIBS) $(OBJS) .cpp.o: $(CC) $(CFLAGS) $(INCDIR) -c $< clean: @rm -f *.o $(TARGET)
- sc_main.cpp
#include <systemc.h> int sc_main(int argc, char* argv[]) { std::cout << "Hello, World" << std::endl; return 0; }
$ make $ ./run.exe SystemC 2.3.3-Accellera --- Aug 15 2022 16:07:44 Copyright (c) 1996-2018 by all Contributors, ALL RIGHTS RESERVED Hello, World
動いた。
余談1
export CXX=clang++
をせずに、g++
のまま実行すると make check
のところでエラーが発生しました。
$ make check #: To compile and run the examples type make check ============================================================================ Testsuite summary for SystemC 2.3.3 ============================================================================ # TOTAL: 22 # PASS: 0 # SKIP: 0 # XFAIL: 0 # FAIL: 22 # XPASS: 0 # ERROR: 0
make check
のエラーについては、フォーラムであがっており、C++11以上であれば問題なさそう。
src/sysc/communication/sc_host_semaphore.h
を見ると、SC_CPLUSPLUS
で判断しており、
src/sysc/kernel/sc_cmnhdr.h
で(多少分岐はあるが)最終的には、 __cplusplus
を代入している。
__cplusplus
は以下のコマンドで出力することが可能です。
$ g++ -dM -E -x c++ /dev/null #: #define __cplusplus 199711L
ちなみに、clang++
の場合は以下になってます。
$ clang++ -dM -E -x c++ /dev/null #: #define __cplusplus 201402L
余談2
2.3.2
でよければ、brew install systemc
でインストールできるみたい
2.3.3
で TLMが同封された。という記憶。