Skip to content

Commit ee3719d

Browse files
committed
Merge branch 'develop' into main
2 parents 0f0a400 + 93d56f8 commit ee3719d

128 files changed

Lines changed: 895 additions & 36397 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.20)
22
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_CURRENT_BINARY_DIR}) # project specific cmake dir
33
cmake_policy(SET CMP0077 NEW)
44

5-
project(scc VERSION 2022.4.0 LANGUAGES CXX C)
5+
project(scc VERSION 2024.03 LANGUAGES CXX C)
66

77
option(USE_CWR_SYSTEMC "Use Synopsys Virtualizer SystemC" OFF)
88
option(USE_NCSC_SYSTEMC "Cadence Xcelium SystemC" OFF)
@@ -19,6 +19,8 @@ include(Common)
1919

2020
if(CMAKE_PROJECT_NAME STREQUAL "scc")
2121
message(STATUS "Building SCC in standalone mode")
22+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
23+
2224
include(GNUInstallDirs)
2325
if(ENABLE_CONAN)
2426
include(ConanInline)
@@ -42,12 +44,12 @@ if(CMAKE_PROJECT_NAME STREQUAL "scc")
4244
if(BUILD_SCC_DOCUMENTATION)
4345
list(APPEND CONAN_PACKAGE_LIST doxygen/1.9.2)
4446
endif()
45-
set(CONAN_PACKAGE_OPTIONS fmt:header_only=True spdlog:header_only=True boost:without_stacktrace=True boost:shared=False boost:header_only=False)
47+
set(CONAN_PACKAGE_OPTIONS fmt:header_only=True spdlog:header_only=True boost:without_stacktrace=True boost:fPIC=True boost:shared=False boost:header_only=False)
4648
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
4749
list(APPEND CONAN_PACKAGE_OPTIONS boost:fPIC=True)
4850
endif()
4951
if(NOT USE_CWR_SYSTEMC AND NOT USE_NCSC_SYSTEMC AND NOT DEFINED ENV{SYSTEMC_HOME})
50-
set(CONAN_PACKAGE_LIST ${CONAN_PACKAGE_LIST} systemc/2.3.3 systemc-cci/1.0.0)
52+
set(CONAN_PACKAGE_LIST ${CONAN_PACKAGE_LIST} systemc/2.3.4 systemc-cci/1.0.0)
5153
set(CONAN_PACKAGE_OPTIONS ${CONAN_PACKAGE_OPTIONS} systemc-cci:shared=False)
5254
endif()
5355
conan_configure(REQUIRES ${CONAN_PACKAGE_LIST} GENERATORS cmake_find_package OPTIONS ${CONAN_PACKAGE_OPTIONS})
@@ -191,6 +193,16 @@ if(SystemC_FOUND)
191193
PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/src/scc.h
192194
)
193195

196+
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
197+
#set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols")
198+
add_library(scc_shared SHARED $<TARGET_OBJECTS:scc-util>
199+
$<TARGET_OBJECTS:scc-sysc>
200+
$<TARGET_OBJECTS:busses>
201+
$<TARGET_OBJECTS:scv-tr>
202+
)
203+
set_target_properties(scc_shared PROPERTIES CXX_VISIBILITY_PRESET hidden)
204+
add_library(scc::scc_shared ALIAS scc_shared)
205+
endif()
194206
install(TARGETS scc
195207
EXPORT scc-targets
196208
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
@@ -203,7 +215,20 @@ if(SystemC_FOUND)
203215
DESTINATION ${SCC_CMAKE_CONFIG_DIR}
204216
NAMESPACE scc::
205217
)
206-
218+
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
219+
install(TARGETS scc_shared
220+
EXPORT scc_shared-targets
221+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
222+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${SCC_LIBRARY_DIR_MODIFIER}
223+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${SCC_LIBRARY_DIR_MODIFIER}${SCC_ARCHIVE_DIR_MODIFIER}
224+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
225+
)
226+
install(EXPORT scc_shared-targets
227+
FILE scc_shared-targets.cmake
228+
DESTINATION ${SCC_CMAKE_CONFIG_DIR}
229+
NAMESPACE scc::
230+
)
231+
endif()
207232
include(CMakePackageConfigHelpers)
208233
write_basic_package_version_file(
209234
${CMAKE_CURRENT_BINARY_DIR}/scc-config-version.cmake

contrib/install_wo_conan.cmd

Lines changed: 155 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,158 @@
1-
@REM call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
2-
@REM call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
1+
#!/bin/bash
2+
##
33

4-
set CURR_LOC=%cd%
5-
set INSTALL_DIR=%CURR_LOC%\..\SCC-Install
6-
:parse
7-
IF "%1"=="" GOTO endparse
8-
set INSTALL_DIR=%1
9-
:endparse
4+
export CXX_STD=14
5+
export CC=$(type -p gcc)
6+
export CXX=$(type -p g++)
7+
[ -z "${BUILD_TYPE}" ] && BUILD_TYPE=RelWithDebInfo
8+
if [ -z "${INSTALL_ROOT}" ]; then
9+
if [ -z "${1}" ]; then
10+
echo "Missing install dir argument"
11+
exit 1
12+
fi
13+
export INSTALL_ROOT=$1
14+
fi
15+
export SC_VERSION=2.3.4
16+
export SYSTEMC_HOME=${INSTALL_ROOT}/systemc
17+
export SYSTEMCAMS_HOME=${INSTALL_ROOT}/systemc
18+
export SCC_INSTALL=${INSTALL_ROOT}/scc
19+
DISTRO=$(lsb_release -i -s)
20+
[ "$DISTRO" == "Ubuntu" ] || BOOST_LIBDIR=--libdir=${SCC_INSTALL}/lib64
21+
[ "$DISTRO" == "Ubuntu" ] || YAML_LIBDIR=-DLIB_SUFFIX=64
22+
CMAKE_COMMON_SETTINGS="-DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_SHARED_LIBS=OFF -DCMAKE_CXX_STANDARD=${CXX_STD}"
23+
BOOST_SETTINGS="link=static cxxflags='-std=c++${CXX_STD}'"
24+
############################################################################################
25+
#
26+
############################################################################################
27+
function build_boost {
28+
export BOOST_LIB_EXCLUDE=contract,fiber,graph,graph_parallel,iostreams,json,locale,log,math,mpi,nowide,python,random,stacktrace,test,timer,wave
1029

11-
set CXX_STD=14
12-
set SCC_HOME=%INSTALL_DIR%\scc
13-
set SYSTEMC_HOME=%INSTALL_DIR%\systemc
30+
if [ ! -d boost_1_80_0 ]; then
31+
[ -f boost_1_80_0.tar.bz2 ] || wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2
32+
tar xjf boost_1_80_0.tar.bz2
33+
fi
34+
(cd boost_1_80_0; \
35+
./bootstrap.sh --prefix=${SCC_INSTALL} ${BOOST_LIBDIR} --without-libraries=${BOOST_LIB_EXCLUDE};\
36+
./b2 ${BOOST_SETTINGS} install) || exit 2
37+
}
38+
############################################################################################
39+
#
40+
############################################################################################
41+
function build_fmt {
42+
if [ ! -d fmt ]; then
43+
if [ ! -f fmt_8.0.1.tar.gz ]; then
44+
git clone --depth 1 --branch 8.0.1 -c advice.detachedHead=false https://github.com/fmtlib/fmt.git
45+
tar czf fmt_8.0.1.tar.gz fmt --exclude=.git
46+
else
47+
tar xzf fmt_8.0.1.tar.gz
48+
fi
49+
fi
50+
cmake -S fmt -B build/fmt ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SCC_INSTALL} || exit 1
51+
cmake --build build/fmt -j 10 --target install || exit 2
52+
}
53+
############################################################################################
54+
#
55+
############################################################################################
56+
function build_spdlog {
57+
if [ ! -d spdlog ]; then
58+
if [ ! -f spdlog_1.9.2.tar.gz ]; then
59+
git clone --depth 1 --branch v1.9.2 -c advice.detachedHead=false https://github.com/gabime/spdlog.git
60+
tar czf spdlog_1.9.2.tar.gz spdlog --exclude=.git
61+
else
62+
tar xzf spdlog_1.9.2.tar.gz
63+
fi
64+
fi
65+
cmake -S spdlog -B build/spdlog ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SCC_INSTALL} || exit 1
66+
cmake --build build/spdlog -j 10 --target install || exit 2
67+
}
68+
############################################################################################
69+
#
70+
############################################################################################
71+
function build_yamlcpp {
72+
if [ ! -d yaml-cpp ]; then
73+
if [ ! -f yaml-cpp_0.6.3.tar.gz ]; then
74+
git clone --depth 1 --branch yaml-cpp-0.6.3 -c advice.detachedHead=false https://github.com/jbeder/yaml-cpp.git
75+
tar czf yaml-cpp_0.6.3.tar.gz yaml-cpp --exclude=.git
76+
else
77+
tar xzf yaml-cpp_0.6.3.tar.gz
78+
fi
79+
fi
80+
cmake -S yaml-cpp -B build/yaml-cpp ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SCC_INSTALL} \
81+
-DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF ${YAML_LIBDIR} || exit 1
82+
cmake --build build/yaml-cpp -j 10 --target install || exit 2
83+
rm -rf ~/.cmake/packages/yaml-cpp
84+
}
85+
############################################################################################
86+
#
87+
############################################################################################
88+
function build_lz4 {
89+
if [ ! -d lz4 ]; then
90+
if [ ! -f lz4_1.9.4.tar.gz ]; then
91+
git clone --depth 1 --branch v1.9.4 -c advice.detachedHead=false https://github.com/lz4/lz4.git
92+
tar czf lz4_1.9.4.tar.gz yaml-cpp --exclude=.git
93+
else
94+
tar xzf lz4_1.9.4.tar.gz
95+
fi
96+
fi
97+
make -C lz4 clean all || exit 1
98+
make -C lz4 install PREFIX=${SCC_INSTALL} LIBDIR=${SCC_INSTALL}/lib64 || exit 2
99+
export PKG_CONFIG_PATH=${SCC_INSTALL}/lib64/pkgconfig
100+
}
101+
############################################################################################
102+
#
103+
############################################################################################
104+
function build_systemc {
105+
if [ ! -d systemc ]; then
106+
if [ ! -f systemc_${SC_VERSION}.tar.gz ]; then
107+
git clone --depth 1 --branch 2.3.4 -c advice.detachedHead=false https://github.com/accellera-official/systemc.git
108+
tar czf systemc_${SC_VERSION}.tar.gz systemc --exclude=.git
109+
else
110+
tar xzf systemc_${SC_VERSION}.tar.gz
111+
fi
112+
fi
113+
cmake -S systemc -B build/systemc ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SYSTEMC_HOME} -DENABLE_PHASE_CALLBACKS_TRACING=OFF || exit 1
114+
cmake --build build/systemc -j 10 --target install || exit 2
115+
rm -rf ~/.cmake/packages/SystemC*
116+
}
117+
############################################################################################
118+
#
119+
############################################################################################
120+
function build_systemc_ams {
121+
if [ ! -d systemc-ams-${SC_VERSION} ]; then
122+
if [ ! -f systemc-ams-${SC_VERSION}.tar.gz ]; then
123+
echo "systemc-ams-${SC_VERSION}.tar.gz missing!"
124+
exit 2
125+
fi
126+
tar xzf systemc-ams-${SC_VERSION}.tar.gz
127+
fi
128+
cmake -S systemc-ams-${SC_VERSION} -B build/systemc-ams ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SYSTEMCAMS_HOME} || exit 1
129+
cmake --build build/systemc-ams -j 10 --target install || exit 2
130+
rm -rf ~/.cmake/packages/SystemC*
131+
}
132+
############################################################################################
133+
#
134+
############################################################################################
135+
function build_scc {
136+
if [ ! -d scc ]; then
137+
if [ ! -f scc.tar.gz ]; then
138+
git clone --recursive --branch develop -c advice.detachedHead=false https://github.com/Minres/SystemC-Components.git scc
139+
tar czf scc.tar.gz scc --exclude=.git
140+
else
141+
tar xzf scc.tar.gz
142+
fi
143+
elif [ ! -f scc.tar.gz ]; then
144+
(cd scc; git pull; git submodule update --recrusive)
145+
tar czf scc.tar.gz scc --exclude=.git
146+
fi
147+
cmake -S scc -B build/scc -Wno-dev ${CMAKE_COMMON_SETTINGS} -DCMAKE_INSTALL_PREFIX=${SCC_INSTALL} -DENABLE_CONAN=OFF \
148+
-DBoost_NO_SYSTEM_PATHS=TRUE -DBOOST_ROOT=${SCC_INSTALL} -DBoost_NO_WARN_NEW_VERSIONS=ON || exit 1
149+
cmake --build build/scc -j 10 --target install || exit 2
150+
}
14151

15-
set CMAKE_OPTS=-DCMAKE_GENERATOR_PLATFORM=x64 -DCMAKE_CXX_STANDARD=%CXX_STD%
16-
set BOOST_LIB_EXCLUDE=--without-contract --without-fiber --without-graph --without-graph_parallel --without-iostreams --without-json --without-locale --without-log --without-math --without-mpi --without-nowide --without-python --without-random --without-stacktrace --without-test --without-timer --without-wave
17-
@REM ############################################################################################
18-
@REM build_boost
19-
@REM ############################################################################################
20-
if NOT EXIST "boost_1_80_0" tar xjvf boost_1_80_0.tar.bz2
21-
pushd boost_1_80_0
22-
@call .\bootstrap.bat
23-
b2 -j8 toolset=msvc address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal --build-dir=..\build\boost --stagedir=..\build\boost --prefix=%SCC_HOME% %BOOST_LIB_EXCLUDE% install
24-
popd
25-
@REM ############################################################################################
26-
@REM build_fmt
27-
@REM ############################################################################################
28-
if NOT EXIST "fmt" tar xzvf fmt_8.0.1.tar.gz
29-
cmake -S fmt -B build/fmt %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SCC_HOME%
30-
cmake --build build/fmt -j 10 --config Release --target install
31-
@REM ############################################################################################
32-
@REM build_spdlog
33-
@REM ############################################################################################
34-
if NOT EXIST "spdlog" tar xzvf spdlog_1.9.2.tar.gz
35-
cmake -S spdlog -B build/spdlog %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SCC_HOME% -DSPDLOG_FMT_EXTERNAL_HO=ON
36-
cmake --build build/spdlog -j 10 --config Release --target install
37-
@REM ############################################################################################
38-
@REM build_yamlcpp
39-
@REM ############################################################################################
40-
if NOT EXIST "yaml-cpp" tar xzvf yaml-cpp_0.6.3.tar.gz
41-
cmake -S yaml-cpp -B build/yaml-cpp %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SCC_HOME% -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF
42-
cmake --build build/yaml-cpp -j 10 --config Release --target install
43-
@REM ############################################################################################
44-
@REM build_zlib
45-
@REM ############################################################################################
46-
if NOT EXIST "zlib-1.3" tar xzvf zlib-1.3.tar.gz
47-
cmake -S zlib-1.3 -B build/zlib %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SCC_HOME%
48-
cmake --build build/zlib -j 10 --config Release --target install
49-
@REM ############################################################################################
50-
@REM build_systemc
51-
@REM ############################################################################################
52-
if NOT EXIST "systemc" tar xzvf systemc_2.3.4.tar.gz
53-
cmake -S systemc -B build/systemc %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SYSTEMC_HOME%
54-
cmake --build build/systemc -j 10 --config Release --target install
55-
@REM ############################################################################################
56-
@REM build_scc
57-
@REM ############################################################################################
58-
if NOT EXIST "scc" tar xzvf scc.tar.gz
59-
cmake -S scc -B build/scc -Wno-dev %CMAKE_OPTS% -DCMAKE_INSTALL_PREFIX=%SCC_HOME% -DENABLE_CONAN=OFF -DBoost_NO_SYSTEM_PATHS=TRUE -DBOOST_ROOT=%SCC_HOME% -DBOOST_INCLUDEDIR=%SCC_HOME%\include\boost-1_80 -DBoost_NO_WARN_NEW_VERSIONS=ON -DBoost_USE_STATIC_LIBS=ON -DBoost_USE_MULTITHREADED=ON -DBoost_USE_STATIC_RUNTIME=OFF
60-
cmake --build build/scc -j 10 --config Release --target install
152+
build_boost
153+
build_fmt
154+
build_spdlog
155+
build_yamlcpp
156+
build_systemc
157+
build_systemc_ams
158+
build_scc

0 commit comments

Comments
 (0)