|
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 | +## |
3 | 3 |
|
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 |
10 | 29 |
|
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 | +} |
14 | 151 |
|
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