mirror of
https://github.com/gnustep/apps-projectcenter.git
synced 2025-02-21 19:01:18 +00:00
135 lines
4.1 KiB
Bash
Executable file
135 lines
4.1 KiB
Bash
Executable file
#! /usr/bin/env sh
|
|
|
|
set -ex
|
|
|
|
DEP_SRC=$HOME/dependency_source/
|
|
DEP_ROOT=$HOME/staging
|
|
|
|
install_prerequisites() {
|
|
sudo apt-get -qq update
|
|
sudo apt-get install -y cmake pkg-config libgnutls28-dev libgmp-dev libffi-dev libicu-dev \
|
|
libxml2-dev libxslt1-dev libssl-dev libavahi-client-dev zlib1g-dev
|
|
|
|
if [ $LIBRARY_COMBO = 'gnu-gnu-gnu' ];
|
|
then
|
|
if [ $CC = 'gcc' ];
|
|
then
|
|
sudo apt-get install -y gobjc;
|
|
fi;
|
|
sudo apt-get install -y libobjc-8-dev libblocksruntime-dev;
|
|
else
|
|
curl -s -o - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -;
|
|
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" && sudo apt-get update -qq;
|
|
sudo apt-get install -y clang-9 libkqueue-dev libpthread-workqueue-dev;
|
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 10 \
|
|
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-9;
|
|
export PATH=$(echo "$PATH" | sed -e 's/:\/usr\/local\/clang-7.0.0\/bin//');
|
|
if [ "$RUNTIME_VERSION" = "gnustep-2.0" ];
|
|
then
|
|
sudo update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 10;
|
|
fi;
|
|
fi;
|
|
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ];
|
|
then
|
|
curl -LO https://cmake.org/files/v3.15/cmake-3.15.5-Linux-x86_64.tar.gz;
|
|
tar xf cmake-3.15.5-Linux-x86_64.tar.gz;
|
|
mv cmake-3.15.5-Linux-x86_64 $HOME/cmake;
|
|
export PATH=$HOME/cmake/:$HOME/cmake/bin:$PATH
|
|
fi;
|
|
}
|
|
|
|
install_gnustep_make() {
|
|
cd $DEP_SRC
|
|
git clone https://github.com/gnustep/tools-make.git
|
|
cd tools-make
|
|
if [ -n "$RUNTIME_VERSION" ]
|
|
then
|
|
WITH_RUNTIME_ABI="--with-runtime-abi=${RUNTIME_VERSION}"
|
|
else
|
|
WITH_RUNTIME_ABI=""
|
|
fi
|
|
./configure --prefix=$DEP_ROOT --with-library-combo=$LIBRARY_COMBO $WITH_RUNTIME_ABI
|
|
make install
|
|
echo Objective-C build flags: `$HOME/staging/bin/gnustep-config --objc-flags`
|
|
}
|
|
|
|
install_ng_runtime() {
|
|
cd $DEP_SRC
|
|
git clone https://github.com/gnustep/libobjc2.git
|
|
cd libobjc2
|
|
git submodule init
|
|
git submodule sync
|
|
git submodule update
|
|
cd ..
|
|
mkdir libobjc2/build
|
|
cd libobjc2/build
|
|
export CC="clang"
|
|
export CXX="clang++"
|
|
export CXXFLAGS="-std=c++11"
|
|
cmake -DTESTS=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGNUSTEP_INSTALL_TYPE=NONE -DCMAKE_INSTALL_PREFIX:PATH=$DEP_ROOT ../
|
|
make install
|
|
}
|
|
|
|
install_libdispatch() {
|
|
cd $DEP_SRC
|
|
# will reference upstream after https://github.com/apple/swift-corelibs-libdispatch/pull/534 is merged
|
|
git clone -b system-blocksruntime https://github.com/ngrewe/swift-corelibs-libdispatch.git
|
|
mkdir swift-corelibs-libdispatch/build
|
|
cd swift-corelibs-libdispatch/build
|
|
export CC="clang"
|
|
export CXX="clang++"
|
|
export LIBRARY_PATH=$DEP_ROOT/lib;
|
|
export LD_LIBRARY_PATH=$DEP_ROOT/lib:$LD_LIBRARY_PATH;
|
|
export CPATH=$DEP_ROOT/include;
|
|
cmake -DBUILD_TESTING=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX:PATH=$HOME/staging -DINSTALL_PRIVATE_HEADERS=1 -DBlocksRuntime_INCLUDE_DIR=$DEP_ROOT/include -DBlocksRuntime_LIBRARIES=$DEP_ROOT/lib/libobjc.so ../
|
|
make install
|
|
}
|
|
|
|
install_gnustep_base() {
|
|
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
|
|
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
cd $DEP_SRC
|
|
git clone https://github.com/gnustep/libs-base.git
|
|
cd libs-base
|
|
./configure
|
|
make
|
|
make install
|
|
}
|
|
|
|
install_gnustep_gui() {
|
|
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
|
|
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
cd $DEP_SRC
|
|
git clone https://github.com/gnustep/libs-gui.git
|
|
cd libs-gui
|
|
./configure
|
|
make
|
|
make install
|
|
}
|
|
|
|
install_gnustep_back() {
|
|
export GNUSTEP_MAKEFILES=$HOME/staging/share/GNUstep/Makefiles
|
|
. $HOME/staging/share/GNUstep/Makefiles/GNUstep.sh
|
|
|
|
cd $DEP_SRC
|
|
git clone https://github.com/gnustep/libs-back.git
|
|
cd libs-back
|
|
./configure
|
|
make
|
|
make install
|
|
}
|
|
|
|
mkdir -p $DEP_SRC
|
|
if [ "$LIBRARY_COMBO" = 'ng-gnu-gnu' ]
|
|
then
|
|
install_ng_runtime
|
|
install_libdispatch
|
|
fi
|
|
|
|
install_prerequisites
|
|
install_gnustep_make
|
|
install_gnustep_base
|
|
install_gnustep_gui
|
|
install_gnustep_back
|