From 4b026777efc46b90046fcd7f938671e82e8768b3 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Sat, 11 Nov 2023 15:00:32 +0100 Subject: [PATCH 1/2] Fixed install script --- install-macos.sh | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 install-macos.sh diff --git a/install-macos.sh b/install-macos.sh new file mode 100755 index 00000000..2fa4af71 --- /dev/null +++ b/install-macos.sh @@ -0,0 +1,103 @@ +#!/bin/bash -e + +#******************************************************************************** +# Copyright (c) 2020-2023, Intel Corporation. All rights reserved. # +# # +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception. # +# # +#******************************************************************************** + +################################################################################# +# This bash script downloads and builds Protobuf, Clang/LLVM, GDB (optional), # +# builds and installs ICSC, runs ICSCS examples. # +# To build GDB with Python3 compatible with SystemC pretty printers use: # +# ./install.sh gdb # +################################################################################# + +test -z $ICSC_HOME && { echo "ICSC_HOME is not configured"; exit 1; } +echo "Using ICSC_HOME = $ICSC_HOME" + +export CWD_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +echo $CWD_DIR +export CMAKE_PREFIX_PATH=$ICSC_HOME:$CMAKE_PREFIX_PATH +export GCC_INSTALL_PREFIX="$(realpath "$(dirname $(which g++))"/..)" + +echo "Downloading and building Protobuf/LLVM at $CWD_DIR/build_deps..." +mkdir -p build_deps && cd build_deps + +# ################################################################################ +# Download, unpack, build, install Protobuf 3.13 +wget -N https://github.com/protocolbuffers/protobuf/archive/v3.13.0.tar.gz --no-check-certificate +tar -xf v3.13.0.tar.gz +( + cd protobuf-3.13.0 + mkdir -p build_folder && cd build_folder + cmake ../cmake/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ICSC_HOME -DBUILD_SHARED_LIBS=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_CXX_STANDARD=17 + make -j + make install +) + +# ################################################################################ +# Download, unpack, build, install Clang and LLVM +wget -N https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.1/clang-12.0.1.src.tar.xz --no-check-certificate +wget -N https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.1/llvm-12.0.1.src.tar.xz --no-check-certificate +tar -xf clang-12.0.1.src.tar.xz +tar -xf llvm-12.0.1.src.tar.xz +ln -sf ../../clang-12.0.1.src llvm-12.0.1.src/tools/clang +( + cd llvm-12.0.1.src + mkdir -p build && cd build + cmake ../ -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ICSC_HOME -DGCC_INSTALL_PREFIX=$GCC_INSTALL_PREFIX -DCMAKE_CXX_STANDARD=17 + make -j + make install +) + +# ################################################################################ +# Download, unpack, build, install GDB with Python3 +if [[ $1 == gdb ]] +then + wget -N https://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.gz --no-check-certificate + tar -xf gdb-11.2.tar.gz + ( + cd gdb-11.2 + ./configure --prefix="$ICSC_HOME" --with-python="$(which python3)" + make -j + make install + ) +fi + +# ################################################################################ +# Build and install ISCC +cd $CWD_DIR +( + mkdir -p build_icsc_rel && cd build_icsc_rel + cmake ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ICSC_HOME -DCMAKE_CXX_STANDARD=17 + make -j + make install + + cd .. + + mkdir -p build_icsc_dbg && cd build_icsc_dbg + cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$ICSC_HOME -DCMAKE_CXX_STANDARD=17 -DCMAKE_DEBUG_POSTFIX=d + make -j12 + make install + + cp $CWD_DIR/cmake/CMakeLists.top $ICSC_HOME/CMakeLists.txt +) + +echo "*** ISCC Build and Installation Complete! ***" + + +# ################################################################################ +# Build and run examples +echo "*** Building Examples ***" +cd $ICSC_HOME +( + ln -s $ICSC_HOME/icsc/components/common $ICSC_HOME/designs/single_source/common + source setenv.sh + mkdir -p build && cd build + cmake ../ # prepare Makefiles + cd designs/examples # run examples only + ctest -j12 # compile and run Verilog generation + # use "-jN" key to run in "N" processes +) From 54b03835414f99ca072fc2a6b392dff2c35e3250 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Thu, 16 Nov 2023 09:49:06 +0100 Subject: [PATCH 2/2] Implemented suggested swap --- CMakeLists.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea27885e..ca0b7745 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,19 +29,6 @@ set(BUILD_SHARED_LIBS ON) # Patched SystemC kernel with additional elaboration instrumentation add_subdirectory(systemc) -# Include LLVM`s should be after SystemC build -include_directories(${LLVM_INCLUDE_DIRS}) -link_directories(${LLVM_LIBRARY_DIRS}) -add_definitions(${LLVM_DEFINITIONS}) - -# Support for using custom linker -if( LLVM_USE_LINKER ) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") - message("USING CUSTOM LINKER: ${CMAKE_EXE_LINKER_FLAGS}") -endif() - # SystemC Precompiled header to speed-up parsing in debug build SET(CLANG_CXX_EXECUTABLE ${LLVM_TOOLS_BINARY_DIR}/clang++) SET(CLANG_INT_INC_DIR ${LLVM_LIBRARY_DIR}/clang/${LLVM_PACKAGE_VERSION}/include) @@ -63,6 +50,19 @@ add_custom_command(OUTPUT ${SYSTEMC_PCH} ) add_custom_target(systemcPCH DEPENDS ${SYSTEMC_PCH}) +# Include LLVM`s should be after SystemC build +include_directories(${LLVM_INCLUDE_DIRS}) +link_directories(${LLVM_LIBRARY_DIRS}) +add_definitions(${LLVM_DEFINITIONS}) + +# Support for using custom linker +if( LLVM_USE_LINKER ) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LLVM_USE_LINKER}") + message("USING CUSTOM LINKER: ${CMAKE_EXE_LINKER_FLAGS}") +endif() + set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Dynamic Elaboration (Requires GDB 8.0.1 configured with Python3)