Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
103 changes: 103 additions & 0 deletions install-macos.sh
Original file line number Diff line number Diff line change
@@ -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
)