#!/usr/bin/env bash # Copyright (c) 2017, University of Kaiserslautern # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Author: Éder F. Zulian dest=$HOME sysc=systemc-2.3.1a sysctarball=$sysc.tar.gz builddir=objdir function getnumprocs { local __retvar=$1; local __nprocs=$(cat /proc/cpuinfo | grep processor | wc -l) if [[ "$__retvar" ]]; then eval $__retvar="'$__nprocs'" else echo "$__nprocs" fi } # Get the code cd $dest wget -nc http://accellera.org/images/downloads/standards/systemc/$sysctarball tar -xaf $sysctarball rm $sysctarball # Create a git repo to keep track of local changes cd $sysc git init git add . git commit -m "Adding files to repository" # Build the library mkdir $builddir cd $builddir # Patch needed for building systemc-2.3.1a if [[ $sysc == 'systemc-2.3.1a' ]]; then printf "Patching $sysc\n" sedfile="../src/systemc.h" sed -i "s@using\ std::gets;@//using\ std::gets;@g" $sedfile fi export SYSTEMC_HOME=$dest/$sysc ../configure $cfgopts getnumprocs np nj=`expr $np - 1` make -j$nj make check -j$nj make install # Add env. variables to ~/.bashrc arch=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') echo "# SystemC home" >> ~/.bashrc echo "export SYSTEMC_HOME=$dest/$sysc" >> ~/.bashrc echo "# SystemC target architecture" >> ~/.bashrc echo "export SYSTEMC_TARGET_ARCH=linux$arch" >> ~/.bashrc echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:\${SYSTEMC_HOME}/lib-linux$arch" >> ~/.bashrc echo "Done."