1
0
Fork 0
fgmeta/download_and_compile.sh
James Turner 2e4f0171eb Updated download_and_compile script.
From Pat Callahan.
2014-01-04 16:16:57 +00:00

1787 lines
52 KiB
Bash
Executable file

#!/bin/bash
#* Written by Francesco Angelo Brisa, started January 2008.
#
# Copyright (C) 2013 Francesco Angelo Brisa
# email: fbrisa@gmail.com - fbrisa@yahoo.it
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
VERSION="1.9-13"
#compatibility with UBUNTU 13.10 - libhal no longer in ubuntu 13.10
#symbolic link error when using data directories in higher directories
#fixed array index on FGDATA version picker
#fixed fgdata directory reference when using parent or grandparent directories to store master copies.
#fixed rebuild command
#COMPILE GIT FGFS
#######################################################
# THANKS TO
#######################################################
# Special thanks to Alessandro Garosi for FGComGui and
# other patches
# Thanks to "Pat Callahan" for patches for fgrun compilation
# Thanks to "F-JJTH" for bug fixes and suggestions
# Thanks again to "F-JJTH" for OpenRTI and FGX
# Thanks to André, ( taureau89_9 ) for debian stable packages fixes
# ---------------------------------------------------------
# Script Section: Script and Option Initialization
# ---------------------------------------------------------
function write_log(){
if [[ "$1" = "separator" ]]
then
echo "" | tee -a download_and_compile_summary.log
echo "-----------------------------------------------------------------------------------" \
| tee -a download_and_compile_summary.log
echo "" | tee -a download_and_compile_summary.log
else
echo "$(date) $1"| tee -a download_and_compile_summary.log
fi
}
function write_log_and_exec(){
write_log "$1 $2"
$1
}
function write_log_and_exec_subprocess(){
write_log "$1 $2"
if [[ "$3" = "noerror" ]]
then
$1 2>/dev/null || true
else
$1
fi
}
function git_check_branch_or_tag(){
if [[ "$1" != "" ]]
then
branch="$(git branch |sed "s/* //" |grep $1)"
tag="$(git tag |sed "s/* //" |grep $1)"
echo $branch$tag
fi
}
function SET_WINDOW_TITLE(){
echo -ne "\033]0;Build Flightgear: - ${CBD} - $1\007"
}
function check_build(){
#
# which directories have flightgear installations
#
cd $1
pwd=$(pwd)
for fgfs_install_dir in $(find $1 -type d -regex '.*install/fgfs')
do
write_log; write_log;
cd $pwd
cd "${fgfs_install_dir}/.."
install_dir=$(pwd)
exe_fgfs=""
exe_fgrun=""
exe_fgcom=""
exe_fgcomgui=""
install_dir_fgfs=""
install_dir_fgrun=""
install_dir_fgcom=""
install_dir_fgcomgui=""
no_exe_fgfs=""
no_exe_fgrun=""
no_exe_fgcom=""
no_exe_fgcomgui=""
no_install_dir_fgfs=""
no_install_dir_fgrun=""
no_install_dir_fgcom=""
no_install_dir_fgcomgui=""
if [[ -e ${install_dir}/fgfs/bin/fgfs ]]
then
exe_fgfs="fgfs"
else
no_exe_fgfs="fgfs"
fi
if [[ -e "${install_dir}/fgrun/bin/fgrun" ]]
then
exe_fgrun="fgrun"
else
no_exe_fgrun="fgrun"
fi
if [[ -e "${install_dir}/fgcom/bin/fgcom" ]]
then
exe_fgcom="fgcom"
else
no_exe_fgcom="fgcom"
fi
if [[ -e "${install_dir}/fgcomgui/bin/fgcomgui" ]]
then
exe_fgcomgui="fgcomgui"
else
no_exe_fgcomgui="fgcomgui"
fi
if [[ -e ${install_dir}/fgfs ]]
then
install_dir_fgfs="fgfs"
else
no_install_dir_fgfs="fgfs"
fi
if [[ -e "${install_dir}/fgrun" ]]
then
install_dir_fgrun="fgrun"
else
no_install_dir_fgrun="fgrun"
fi
if [[ -e "${install_dir}/fgcom" ]]
then
install_dir_fgcom="fgcom"
else
no_install_dir_fgcom="fgcom"
fi
if [[ -e "${install_dir}/fgcomgui" ]]
then
install_dir_fgcomgui="fgcomgui"
else
no_install_dir_fgcomgui="fgcomgui"
fi
found_exe="$exe_fgfs $exe_fgrun $exe_fgcom $exe_fgcomgui"
no_exe="$no_exe_fgfs $no_exe_fgrun $no_exe_fgcom $no_exe_fgcomgui"
found_install_dir="$install_dir_fgfs $install_dir_fgrun $install_dir_fgcom $install_dir_fgcomgui"
no_install_dir="$no_install_dir_fgfs $no_install_dir_fgrun $no_install_dir_fgcom $no_install_dir_fgcomgui"
found_exe=${found_exe=## }
found_install_dir=${found_install_dir=##}
no_exe=${no_exe##}
no_install_dir=${no_install_dir##}
cd $pwd
write_log separator
write_log "Install dir: ${install_dir}"
write_log separator
write_log "Found fgdata: $(cat $install_dir/fgfs/fgdata/version)"
write_log "Found Executables: $found_exe"
write_log "Found Install Dir: $found_install_dir"
write_log "Found No Executables: $no_exe"
write_log "Found No Install Dir: $no_install_dir"
write_log ""
write_log separator
write_log separator
write_log ""
done
}
rebuild_command="$0 $*"
echo $0 $* >>download_and_compile.log
echo " started building in $(pwd)" >>download_and_compile.log
echo " at $(date)" >>download_and_compile.log
LOGFILE=compilation_log.txt
LOGSEP="***********************************"
WHATTOBUILD=
WHATTOBUILDALL=( PLIB OSG OPENRTI SIMGEAR FGFS DATA FGRUN FGCOM )
UPDATE=
STABLE=
STOP_AFTER_ONE_MODULE=false
APT_GET_UPDATE="y"
DOWNLOAD_PACKAGES="y"
COMPILE="y"
RECONFIGURE="y"
DOWNLOAD="y"
JOPTION=""
OOPTION=""
DEBUG=""
WITH_EVENT_INPUT=""
WITH_OPENRTI=""
FGSG_BRANCH="next"
FGSG_REVISION="HEAD"
OSG_VERSION="3.0.1"
# ---------------------------------------------------------
# Script Section: Option Interpretation
# ---------------------------------------------------------
SET_WINDOW_TITLE "Script and Option Initialization"
while getopts "zsuhgeixvwc:p:a:d:r:j:O:B:R:G:" OPTION
do
echo $OPTION
case $OPTION in
s)
STABLE="STABLE"
FGSG_BRANCH="2.10.0"
FGSG_REVISION="HEAD"
;;
B)
FGSG_BRANCH=$OPTARG
;;
R)
FGSG_REVISION=$OPTARG
;;
G)
OSG_VERSION=${OPTARG^^} #3.0.1, 3.0.1d 3.1.9 3.1.9d, next nextd, etc
OSG_DEBUG_OR_RELEASE='Release'
if [[ ${OSG_VERSION%d} != ${OSG_VERSION} ]]
then
OSG_DEBUG_OR_RELEASE='Debug'
OSG_VERSION= ${OSG_VERSION%d}
fi
;;
u)
UPDATE="UPDATE"
;;
h)
HELP="HELP"
;;
a)
APT_GET_UPDATE=$OPTARG
;;
c)
COMPILE=$OPTARG
;;
p)
DOWNLOAD_PACKAGES=$OPTARG
;;
d)
DOWNLOAD=$OPTARG
;;
r)
RECONFIGURE=$OPTARG
;;
j)
JOPTION=" -j"$OPTARG" "
;;
O)
OOPTION=" -O"$OPTARG" "
;;
g)
DEBUG="CXXFLAGS=-g"
;;
e)
WITH_EVENT_INPUT="--with-eventinput"
;;
i)
WITH_OPENRTI="-D ENABLE_RTI=ON"
;;
x)
set -x
;;
v)
set -v
;;
w)
VERBOSE_MAKEFILE="-D CMAKE_VERBOSE_MAKEFILE=ON"
;;
z)
STOP_AFTER_ONE_MODULE=true
;;
?)
echo "error"
HELP="HELP"
#exit
;;
esac
done
# ---------------------------------------------------------
# Script Section: Build Argument Interpretation
# ---------------------------------------------------------
SET_WINDOW_TITLE "Option Interpretation"
shift $(($OPTIND - 1))
#printf "Remaining arguments are: %s\n" "$*"
#printf "Num: %d\n" "$#"
if [ ! "$#" = "0" ]
then
for arg in $*
do
#echo "$arg"
if [ "${arg^^}" == "UPDATE" ]
then
UPDATE="UPDATE"
else
WHATTOBUILD=( "${WHATTOBUILD[@]}" "${arg^^}" )
fi
done
else
WHATTOBUILD=( "${WHATTOBUILDALL[@]}" )
fi
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="ALL"' ]]
then
WHATTOBUILD=( "${WHATTOBUILDALL[@]}" )
fi
printf "%s\n" "${WHATTOBUILD[@]}"
# ---------------------------------------------------------
# Script Section: Set Source Archive Version Variables
# ---------------------------------------------------------
# Last stable revision: currently FlightGear 2.10.0 with 3.0.1
PLIB_STABLE_REVISION="2172"
OSG_SVN="http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-${OSG_VERSION}/"
declare -A OPENRTI_MAP
declare -A FGSG_MAP
declare -A FGDATA_MAP
FGSG_MAP=( [next]="next HEAD" \
[master]="master HEAD " \
[2.12.1]="release/2.12.1 HEAD" \
[2.12.0]="release/2.12.0 HEAD" \
[2.10.0]="release/2.10.0 HEAD " \
[2.8.0]="release/2.8.0 version/2.8.0-final" )
FGDATA_MAP=([next]="master HEAD 2.99.9" \
[master]="master HEAD 2.99.9" \
[2.12.1]="release/2.12.0 HEAD 2.12.0" \
[2.12.0]="release/2.12.0 HEAD 2.12.0" \
[2.10.0]="release/2.10.0 HEAD 2.10.0" \
[2.8.0]="release/2.8.0 HEAD 2.8.0" )
OPENRTI_MAP=( [next]="master HEAD" \
[master]="master HEAD" \
[2.12.1]="master HEAD" \
[2.12.0]="master HEAD" \
[2.10.0]="master HEAD" \
[2.8.0]="release-0.3 OpenRTI-0.3.0" )
FG_SG_VERSION=${FGSG_BRANCH##*/}
MAP_ITEM=( ${FGSG_MAP[${FG_SG_VERSION}]} )
FGSG_BRANCH=${MAP_ITEM[0]}
FGSG_REVISION=${MAP_ITEM[1]}
MAP_ITEM=( ${FGDATA_MAP[${FG_SG_VERSION}]} )
FGDATA_BRANCH=${MAP_ITEM[0]}
FGDATA_REVISION=${MAP_ITEM[1]}
FGDATA_VERSION=${MAP_ITEM[2]}
MAP_ITEM=( ${OPENRTI_MAP[${FG_SG_VERSION}]} )
OPENRTI_BRANCH=${MAP_ITEM[0]}
OPENRTI_REVISION=${MAP_ITEM[1]}
# FGCOM
FGCOM_BRANCH="master"
FGCOMGUI_STABLE_REVISION="46"
#OpenRadar
OR_STABLE_RELEASE="http://wagnerw.de/OpenRadar.zip"
fgdata_git="git://gitorious.org/fg/fgdata.git"
echo $(pwd)
# ---------------------------------------------------------
# Script Section: Display Script Help
# ---------------------------------------------------------
if [ "$HELP" = "HELP" ]
then
echo "$0 Version $VERSION"
echo "Usage:"
echo "./$0 [-u] [-h] [-s] [-e] [-i] [-g] [-a y|n] [-c y|n] [-p y|n] [-d y|n] [-r y|n] [ALL|PLIB|OSG|OPENRTI|SIMGEAR|FGFS|FGO|FGX|FGRUN|FGCOM|FGCOMGUI|ATLAS] [UPDATE]"
echo "* without options it recompiles: PLIB,OSG,OPENRTI,SIMGEAR,FGFS,FGRUN"
echo "* Using ALL compiles everything"
echo "* Adding UPDATE it does not rebuild all (faster but to use only after one successfull first compile)"
echo "Switches:"
echo "* -u such as using UPDATE"
echo "* -h show this help"
echo "* -e compile FlightGear with --with-eventinput option (experimental)"
echo "* -i compile SimGear and FlightGear with -D ENABLE_RTI=ON option (experimental)"
echo "* -g compile with debug info for gcc"
echo "* -a y|n y=do an apt-get update n=skip apt-get update default=y"
echo "* -p y|n y=download packages n=skip download packages default=y"
echo "* -c y|n y=compile programs n=do not compile programs default=y"
echo "* -d y|n y=fetch programs from internet (cvs, svn, etc...) n=do not fetch default=y"
echo "* -j X Add -jX to the make compilation default=None"
echo "* -O X Add -OX to the make compilation default=None"
echo "* -r y|n y=reconfigure programs before compiling them n=do not reconfigure default=y"
echo "* -s compile only last stable known versions default=y"
echo "* -w cmake verbose option"
echo "* -x set -x bash option"
echo "* -v set -v bash option"
echo "* -B branch"
echo "* -R revision"
echo "* -G osg version"
exit
fi
# --------------------------------------------
# Warning about compilation time and size
# Idea from Jester
echo "**************************************"
echo "* *"
echo "* Warning, the compilation process *"
echo "* is going to use 12 or more Gbytes *"
echo "* of space and at least a couple of *"
echo "* hours to download and build FG. *"
echo "* *"
echo "* Please, be patient ...... *"
echo "* *"
echo "**************************************"
# ---------------------------------------------------------
# Script Section: Debian Backports
# ---------------------------------------------------------
# Debian 4.0rX (Etch) backports.org
# From D-HUND
ISSUE=$(cat /etc/issue)
# Uncomment following line to confirm backports.org is in sources.list:
#ISSUE=""
if [ "$ISSUE" = "Debian GNU/Linux 4.0 \n \l" ]; then
clear
echo "*****************************************************"
echo "* Note to users of Debian Etch (Stable 4.0rX) *"
echo "*****************************************************"
echo
echo "Since autumn 2008 it is not possible anymore to easily install fgfs"
echo "cvs by using standard repositry. Therefore it is necessary to have"
echo "backports.org in the apt sources.list to run this script."
echo
echo "If you're using synaptic you may follow these steps:"
echo " - Open synaptics menu 'Settings' --> 'Repositories'"
echo " - Click 'Add' and do"
echo " select 'Binaries (deb)'"
echo " enter Address: 'www.backports.org/backports.org/'"
echo " enter Distribution: 'etch-backports'"
echo " enter Section(s): 'main contrib non-free'"
echo " - Close Repositries window using 'OK'"
echo " - Click 'Reload' to update database."
echo
echo "If you have backports.org in your apt-repositries and want to get"
echo "rid of this message have a look at the script."
echo -n "[c] to continue or just [ENTER] to exit script: "
if [ "$(read GOON)" != "c" ]; then
echo "Script aborted!"
exit 0
fi
fi
# ---------------------------------------------------------
# Script Section: Display Options Chosen
# ---------------------------------------------------------
echo $0 $* > $LOGFILE
echo "APT_GET_UPDATE=$APT_GET_UPDATE" |tee -a $LOGFILE
echo "DOWNLOAD_PACKAGES=$DOWNLOAD_PACKAGES" |tee -a $LOGFILE
echo "COMPILE=$COMPILE" |tee -a $LOGFILE
echo "RECONFIGURE=$RECONFIGURE" |tee -a $LOGFILE
echo "DOWNLOAD=$DOWNLOAD" |tee -a $LOGFILE
echo "JOPTION=$JOPTION" |tee -a $LOGFILE
echo "OOPTION=$OOPTION" |tee -a $LOGFILE
echo "DEBUG=$DEBUG" |tee -a $LOGFILE
echo "FGSG_VERSION=$FGSG_VERSION" |tee -a LOGFILE
echo "FGSG_REVISION=$FGSG_REVISION" |tee -a LOGFILE
echo "FGDATA_BRANCH=$FGDATA_BRANCH" |tee -a LOGFILE
echo "FGDATA_REVISION=$FGDATA_REVISION" |tee -a LOGFILE
echo "FGDATA_VERSION=$FGDATA_VERSION" |tee -a LOGFILE
echo "$LOGSEP" |tee -a $LOGFILE
# ---------------------------------------------------------
# Script Section: Determine Linux Distribution
# ---------------------------------------------------------
if [ -e /etc/lsb-release ]
then
. /etc/lsb-release
fi
# default is hardy
DISTRO_PACKAGES="libopenal-dev libalut-dev libalut0 cvs subversion cmake make build-essential automake zlib1g-dev zlib1g libwxgtk2.8-0 libwxgtk2.8-dev fluid gawk gettext libxi-dev libxi6 libxmu-dev libxmu6 libboost-dev libasound2-dev libasound2 libpng12-dev libpng12-0 libjasper1 libjasper-dev libopenexr-dev libboost-serialization-dev git-core libqt4-dev scons python-tk python-imaging-tk libsvn-dev libglew1.5-dev libxft2 libxft-dev libxinerama1 libxinerama-dev"
UBUNTU_PACKAGES="freeglut3-dev libjpeg62-dev libjpeg62 libapr1-dev libfltk1.3-dev libfltk1.3"
if [[ ( "$DISTRIB_ID" = "Ubuntu" || "$DISTRIB_ID" = "LinuxMint" ) && "$DISTRIB_RELEASE" < "13.10" ]]
then
UBUNTU_PACKAGES="$UBUNTU_PACKAGES libhal-dev"
fi
DEBIAN_PACKAGES_STABLE="freeglut3-dev libjpeg8-dev libjpeg8 libfltk1.1-dev libfltk1.1"
DEBIAN_PACKAGES_TESTING="freeglut3-dev libjpeg8-dev libjpeg8 libfltk1.3-dev libfltk1.3"
DEBIAN_PACKAGES_UNSTABLE="freeglut3-dev libjpeg8-dev libjpeg8 libfltk1.3-dev libfltk1.3"
if [ "$DISTRIB_ID" = "Ubuntu" -o "$DISTRIB_ID" = "LinuxMint" ]
then
echo "$DISTRIB_ID $DISTRIB_RELEASE" >> $LOGFILE
DISTRO_PACKAGES="$DISTRO_PACKAGES $UBUNTU_PACKAGES"
else
echo "DEBIAN I SUPPOUSE" >> $LOGFILE
DEBIAN_PACKAGES=$DEBIAN_PACKAGES_STABLE
if [ ! "$(apt-cache search libfltk1.3)" = "" ]
then
#TESTING MAYBE
DEBIAN_PACKAGES=$DEBIAN_PACKAGES_TESTING
fi
DISTRO_PACKAGES="$DISTRO_PACKAGES $DEBIAN_PACKAGES"
fi
echo "$LOGSEP" >> $LOGFILE
# ---------------------------------------------------------
# Script Section: Install Prerequisite Development Packages
# ---------------------------------------------------------
SET_WINDOW_TITLE "Install Prerequisite Development Packages"
if [ "$DOWNLOAD_PACKAGES" = "y" ]
then
echo -n "PACKAGE INSTALLATION ... " >> $LOGFILE
LIBOPENALPACKAGE=$(apt-cache search libopenal | grep "libopenal. " | sed s/\ .*//)
DISTRO_PACKAGES=$DISTRO_PACKAGES" "$LIBOPENALPACKAGE
# checking linux distro and version to differ needed packages
if [ "$DISTRIB_ID" = "Ubuntu" ]
then
if [ "$APT_GET_UPDATE" = "y" ]
then
echo "Asking your password to perform an apt-get update"
sudo apt-get update
fi
echo "Asking your password to perform an apt-get install ... "
sudo apt-get install $DISTRO_PACKAGES
else
# WE ARE USING DEBIAN
if [ "$APT_GET_UPDATE" = "y" ]
then
echo "Asking root password to perform an apt-get update"
su -c "apt-get update"
fi
echo "Asking root password to perform an apt-get install ... "
su -c "apt-get install $DISTRO_PACKAGES"
fi
echo " OK" >> $LOGFILE
fi
# -------------------------------------------------------------
# Script Section: Create Required Build and install Directories
# -------------------------------------------------------------
SET_WINDOW_TITLE "Create Required Build and install Directories"
COMPILE_BASE_DIR=.
#cd into compile base directory
cd "$COMPILE_BASE_DIR"
#get absolute path
CBD=$(pwd)
LOGFILE=$CBD/$LOGFILE
echo "DIRECTORY= $CBD" >> $LOGFILE
echo "$LOGSEP" >> $LOGFILE
mkdir -p install
SUB_INSTALL_DIR=install
INSTALL_DIR=$CBD/$SUB_INSTALL_DIR
cd "$CBD"
mkdir -p build
# ---------------------------------------------------------
# Script Section: set script to stop if an error occours
# ---------------------------------------------------------
set -e
# ---------------------------------------------------------
# Script Section: Build Components
# ---------------------------------------------------------
#######################################################
# PLIB
#######################################################
PLIB_INSTALL_DIR=plib
INSTALL_DIR_PLIB=$INSTALL_DIR/$PLIB_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="PLIB"' ]]
then
if [ ! "$UPDATE" = "UPDATE" ]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** PLIB ******************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
SET_WINDOW_TITLE "Building PLIB"
echo "COMPILING PLIB" >> $LOGFILE
echo "INSTALL_DIR_PLIB=$INSTALL_DIR_PLIB" >> $LOGFILE
PLIB_STABLE_REVISION_=""
if [ "$STABLE" = "STABLE" ]
#if [ "STABLE" = "STABLE" ]
then
PLIB_STABLE_REVISION_=" -r $PLIB_STABLE_REVISION"
fi
if [ "$DOWNLOAD" = "y" ]
then
if [ -d "plib/.svn" ]
then
echo -n "updating plib svn" >>$LOGFILE
cd plib
svn update $PLIB_STABLE_REVISION_
cd -
else
echo -n "DOWNLOADING FROM http://svn.code.sf.net/p/plib/code/trunk/ ..." >> $LOGFILE
svn $PLIB_STABLE_REVISION_ co http://svn.code.sf.net/p/plib/code/trunk/ plib
echo " OK" >> $LOGFILE
fi
fi
cd plib
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/plib
cd plib
echo "AUTOGEN plib" >> $LOGFILE
./autogen.sh 2>&1 | tee -a $LOGFILE
echo "CONFIGURING plib" >> $LOGFILE
cd "$CBD"/build/plib
../../plib/configure --disable-pw --disable-sl --disable-psl --disable-ssg --disable-ssgaux --prefix="$INSTALL_DIR_PLIB" --exec-prefix="$INSTALL_DIR_PLIB" 2>&1 | tee -a $LOGFILE
else
echo "NO RECONFIGURE FOR plib" >> $LOGFILE
fi
if [ "$COMPILE" = "y" ]
then
echo "MAKE plib" >> $LOGFILE
echo "make $JOPTION $OOPTION" >> $LOGFILE
cd "$CBD"/build/plib
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
if [ ! -d $INSTALL_DIR_PLIB ]
then
mkdir -p "$INSTALL_DIR_PLIB"
fi
echo "INSTALL plib" >> $LOGFILE
echo "make install" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd "$CBD"
fi
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# OpenSceneGraph
#######################################################
SET_WINDOW_TITLE "Building OpenSceneGraph"
OSG_INSTALL_DIR=OpenSceneGraph
INSTALL_DIR_OSG=$INSTALL_DIR/$OSG_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="OSG"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** OSG *******************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
echo -n "SVN FROM $OSG_SVN ... " >> $LOGFILE
if [ -d "OpenSceneGraph/.svn" ]
then
echo -n "updating OpenSceneGraph svn"
cd OpenSceneGraph
svn update
cd -
else
echo -n "downloadING FROM $OSG_SVN ..."
svn co "$OSG_SVN" OpenSceneGraph
echo " OK"
fi
echo " OK" >> $LOGFILE
fi
cd OpenSceneGraph
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/osg
cd "$CBD"/build/osg
echo -n "RECONFIGURE OSG ... " >> $LOGFILE
rm -f CMakeCache.txt ../../OpenSceneGraph/CMakeCache.txt
cmake ../../OpenSceneGraph/
echo " OK" >> $LOGFILE
cmake ${VERBOSE_MAKEFILE} -D CMAKE_BUILD_TYPE="Release" -D CMAKE_CXX_FLAGS="-O3 -D__STDC_CONSTANT_MACROS" -D CMAKE_C_FLAGS="-O3" -D CMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_OSG" ../../OpenSceneGraph/ 2>&1 | tee -a $LOGFILE
echo "RECONFIGURE OSG DONE." >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
echo "COMPILING OSG" >> $LOGFILE
cd "$CBD"/build/osg
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
if [ ! -d $INSTALL_DIR_OSG ]
then
mkdir -p "$INSTALL_DIR_OSG"
fi
echo "INSTALLING OSG" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
#FIX FOR 64 BIT COMPILATION
if [ -d "$INSTALL_DIR_OSG/lib64" ]
then
if [ -L "$INSTALL_DIR_OSG/lib" ]
then
echo "link already done"
else
ln -s "$INSTALL_DIR_OSG/lib64" "$INSTALL_DIR_OSG/lib"
fi
fi
cd -
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# OPENRTI
#######################################################
SET_WINDOW_TITLE "Building OPENRTI"
OPENRTI_INSTALL_DIR=openrti
INSTALL_DIR_OPENRTI=$INSTALL_DIR/$OPENRTI_INSTALL_DIR
cd "$CBD"
if [ ! -d "openrti" ]
then
mkdir "openrti"
fi
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="OPENRTI"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** OPENRTI ***************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
cd openrti
echo -n "git FROM git://gitorious.org/openrti/openrti.git ... " >> $LOGFILE
if [ -d "openrti" ]
then
echo "openrti exists already."
else
git clone git://gitorious.org/openrti/openrti.git
fi
cd openrti
git fetch origin
if [ "$STABLE" = "STABLE" ]
then
# switch to stable branch
# create local stable branch, ignore errors if it exists
git branch -f $OPENRTI_BRANCH origin/$OPENRTI_BRANCH 2> /dev/null || true
# switch to stable branch. No error is reported if we're already on the branch.
git checkout -f $OPENRTI_BRANCH
# get indicated stable version
git reset --hard $OPENRTI_REVISION
else
# switch to unstable branch
# create local unstable branch, ignore errors if it exists
git branch -f $OPENRTI_BRANCH origin/$OPENRTI_BRANCH 2> /dev/null || true
# switch to unstable branch. No error is reported if we're already on the branch.
git checkout -f $OPENRTI_BRANCH
# pull latest version from the unstable branch
git pull
fi
cd ..
echo " OK" >> $LOGFILE
cd ..
fi
cd "openrti/openrti"
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/openrti
cd "$CBD"/build/openrti
echo -n "RECONFIGURE OPENRTI ... " >> $LOGFILE
rm -f ../../openrti/openrti/CMakeCache.txt
cmake ${VERBOSE_MAKEFILE} -D CMAKE_BUILD_TYPE="Release" -D CMAKE_CXX_FLAGS="-O3 -D__STDC_CONSTANT_MACROS" -D CMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_OPENRTI" ../../openrti/openrti/ 2>&1 | tee -a $LOGFILE
echo " OK" >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
cd "$CBD"/build/openrti
echo "MAKE OPENRTI" >> $LOGFILE
echo "make $JOPTION $OOPTION " >> $LOGFILE
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
echo "INSTALL OPENRTI" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd -
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# SIMGEAR
#######################################################
SET_WINDOW_TITLE "Building Simgear"
SIMGEAR_INSTALL_DIR=simgear
INSTALL_DIR_SIMGEAR=$INSTALL_DIR/$SIMGEAR_INSTALL_DIR
cd "$CBD"
if [ ! -d "simgear" ]
then
mkdir "simgear"
fi
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="SIMGEAR"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** SIMGEAR ***************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
cd simgear
#echo -n "CVS FROM cvs.simgear.org:/var/cvs/SimGear-0.3 ... " >> $LOGFILE
#cvs -z5 -d :pserver:cvsguest:guest@cvs.simgear.org:/var/cvs/SimGear-0.3 login
#cvs -z5 -d :pserver:cvsguest@cvs.simgear.org:/var/cvs/SimGear-0.3 co source
echo -n "git FROM git://gitorious.org/fg/simgear.git ... " >> $LOGFILE
if [ -d "simgear" ]
then
echo "simgear exists already."
else
git clone git://gitorious.org/fg/simgear.git
fi
cd simgear
git fetch origin
if [ "$STABLE" = "STABLE" ]
then
# switch to stable branch
# create local stable branch, ignore errors if it exists
git branch -f $FGSG_BRANCH origin/$FGSG_BRANCH 2> /dev/null || true
# switch to stable branch. No error is reported if we're already on the branch.
git checkout -f $FGSG_BRANCH
# get indicated stable version
git reset --hard $SIMGEAR_STABLE_REVISION
else
# switch to unstable branch
# create local unstable branch, ignore errors if it exists
git branch -f $FGSG_BRANCH origin/$FGSG_BRANCH 2> /dev/null || true
# switch to unstable branch. No error is reported if we're already on the branch.
git checkout -f $FGSG_BRANCH
# pull latest version from the unstable branch
git pull
fi
cd ..
echo " OK" >> $LOGFILE
cd ..
fi
cd "simgear/simgear"
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/simgear
cd "$CBD"/build/simgear
echo -n "RECONFIGURE SIMGEAR ... " >> $LOGFILE
rm -f ../../simgear/simgear/CMakeCache.txt
rm -f CMakeCache.txt
cmake ${VERBOSE_MAKEFILE} -D CMAKE_BUILD_TYPE="Release" $WITH_OPENRTI -D CMAKE_CXX_FLAGS="-O3 -D__STDC_CONSTANT_MACROS" -D CMAKE_C_FLAGS="-O3" -D CMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_SIMGEAR" -D "CMAKE_PREFIX_PATH=$INSTALL_DIR_OSG;$INSTALL_DIR_OPENRTI" ../../simgear/simgear/ 2>&1 | tee -a $LOGFILE
echo " OK" >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
cd "$CBD"/build/simgear
echo "MAKE SIMGEAR" >> $LOGFILE
echo "make $JOPTION $OOPTION " >> $LOGFILE
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
echo "INSTALL SIMGEAR" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd -
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGFS
#######################################################
SET_WINDOW_TITLE "Building Flightgear"
FGFS_INSTALL_DIR=fgfs
INSTALL_DIR_FGFS=$INSTALL_DIR/$FGFS_INSTALL_DIR
cd "$CBD"
if [ ! -d "fgfs" ]
then
mkdir "fgfs"
fi
#if [ "$WHATTOBUILD" = "" -o "$WHATTOBUILD" = "FGFS" -o "$WHATTOBUILD" = "DATA" -o "$WHATTOBUILD" = "ALL" ]
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGFS"' || "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="DATA"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** FGFS ******************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
cd fgfs
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGFS"' ]]
then
if [ "$DOWNLOAD" = "y" ]
then
#echo -n "CVS FROM cvs.flightgear.org:/var/cvs/FlightGear-0.9 ... " >> $LOGFILE
#cvs -z5 -d :pserver:cvsguest:guest@cvs.flightgear.org:/var/cvs/FlightGear-0.9 login
#cvs -z5 -d :pserver:cvsguest@cvs.flightgear.org:/var/cvs/FlightGear-0.9 co source
echo -n "GIT FROM git://gitorious.org/fg/flightgear.git ... " >> $LOGFILE
if [ -d "flightgear" ]
then
echo "flightgear exists already."
else
git clone git://gitorious.org/fg/flightgear.git
fi
cd flightgear
# fix for CMakeLists.txt broken by fltk issues on Ubuntu 13.10
git fetch origin
if [ "$STABLE" = "STABLE" ]
then
# switch to stable branch
# create local stable branch, ignore errors if it exists
git branch -f $FGSG_BRANCH origin/$FGSG_BRANCH 2> /dev/null || true
# switch to stable branch. No error is reported if we're already on the branch.
git checkout -f $FGSG_BRANCH
# get indicated stable version
git reset --hard $FGFS_STABLE_REVISION
else
# switch to unstable branch
# create local unstable branch, ignore errors if it exists
git branch -f $FGSG_BRANCH origin/$FGSG_BRANCH 2> /dev/null || true
# switch to unstable branch. No error is reported if we're already on the branch.
git checkout -f $FGSG_BRANCH
# pull latest version from the unstable branch
git pull
fi
cd ..
echo " OK" >> $LOGFILE
fi
cd flightgear
if [[ $(grep -L 'list(APPEND FLTK_LIBRARIES ${CMAKE_DL_LIBS})' CMakeLists.txt) != "" ]]
then
patch CMakeLists.txt <<\EOF
--- fgfs/flightgear/CMakeLists.txt_old 2013-08-04 08:59:00.614104454 -0400
+++ fgfs/flightgear/CMakeLists.txt_new 2013-08-04 09:03:32.430104979 -0400
@@ -203,6 +203,10 @@
list(APPEND FLTK_LIBRARIES ${X11_Xft_LIB})
endif()
+ if ( CMAKE_DL_LIBS )
+ list(APPEND FLTK_LIBRARIES ${CMAKE_DL_LIBS})
+ endif()
+
message(STATUS "Using FLTK_LIBRARIES for fgadmin: ${FLTK_LIBRARIES}")
endif ( FLTK_FOUND )
endif(ENABLE_FGADMIN)
EOF
fi
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
#echo "AUTOGEN FGFS" >> $LOGFILE
#./autogen.sh 2>&1 | tee -a $LOGFILE
#echo "CONFIGURE FGFS" >> $LOGFILE
#echo ./configure "$DEBUG" $WITH_EVENT_INPUT --prefix=$INSTALL_DIR_FGFS --exec-prefix=$INSTALL_DIR_FGFS --with-osg="$INSTALL_DIR_OSG" --with-simgear="$INSTALL_DIR_SIMGEAR" --with-plib="$INSTALL_DIR_PLIB"
#./configure "$DEBUG" $WITH_EVENT_INPUT --prefix=$INSTALL_DIR_FGFS --exec-prefix=$INSTALL_DIR_FGFS --with-osg="$INSTALL_DIR_OSG" --with-simgear="$INSTALL_DIR_SIMGEAR" --with-plib="$INSTALL_DIR_PLIB" 2>&1 | tee -a $LOGFILE
cd "$CBD"
mkdir -p build/fgfs
cd "$CBD"/build/fgfs
echo -n "RECONFIGURE FGFS ... " >> $LOGFILE
rm -f ../../fgfs/flightgear/CMakeCache.txt
rm -f CMakeCache.txt
# REMOVING BAD LINES IN CMakeLists.txt
#echo "REMOVING BAD LINES IN CMakeLists.txt"
#cat utils/fgadmin/src/CMakeLists.txt | sed /X11_Xft_LIB/d | sed /X11_Xinerama_LIB/d > utils/fgadmin/src/CMakeLists_without_err.txt
#cp -f utils/fgadmin/src/CMakeLists_without_err.txt utils/fgadmin/src/CMakeLists.txt
cmake ${VERBOSE_MAKEFILE} -D CMAKE_BUILD_TYPE="Release" $WITH_OPENRTI -D "WITH_FGPANEL=OFF" -D CMAKE_CXX_FLAGS="-O3 -D__STDC_CONSTANT_MACROS" -D CMAKE_C_FLAGS="-O3" -D CMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_FGFS" -D "CMAKE_PREFIX_PATH=$INSTALL_DIR_OSG;$INSTALL_DIR_PLIB;$INSTALL_DIR_SIMGEAR;$INSTALL_DIR_OPENRTI" ../../fgfs/flightgear 2>&1 | tee -a $LOGFILE
echo " OK" >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
cd "$CBD"
mkdir -p build/fgfs
cd "$CBD"/build/fgfs
echo "MAKE FGFS" >> $LOGFILE
echo "make $JOPTION $OOPTION" >> $LOGFILE
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
echo "INSTALL FGFS" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd ..
fi
cd ..
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="DATA"' ]]
then
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$DOWNLOAD" = "y" ]
then
SET_WINDOW_TITLE " FGDATA"
if [[ -e ../fgdata_${FGDATA_VERSION} ]]
then
FGDATA_DIR=$(cd $(dirname ../fgdata_${FGDATA_VERSION}/fgdata); pwd)/$(basename ../fgdata_${FGDATA_VERSION}/fgdata)
fi
if [[ -e ../../fgdata_${FGDATA_VERSION} ]]
then
FGDATA_DIR=$(cd $(dirname ../../fgdata_${FGDATA_VERSION}/fgdata); pwd)/$(basename ../../fgdata_${FGDATA_VERSION}/fgdata)
fi
if [[ ! -e $INSTALL_DIR_FGFS/fgdata && -e ${FGDATA_DIR} ]]
then
ln -s ${FGDATA_DIR} $INSTALL_DIR_FGFS/fgdata
ls -lah $INSTALL_DIR_FGFS/fgdata
fi
EXDIR=$(pwd)
cd $INSTALL_DIR_FGFS
echo -n "GIT DATA FROM $fgdata_git ... " |tee -a $LOGFILE
if [ -e "fgdata" ]
then
echo "fgdata exists already."
else
# no repository yet - need to clone a fresh one
git clone $fgdata_git fgdata
fi
cd $INSTALL_DIR_FGFS/fgdata
git remote set-url origin $fgdata_git
git fetch origin
if [ "$STABLE" = "STABLE" ]
then
# switch to stable branch
# create local stable branch, ignore errors if it exists
if [[ "$(git_check_branch_or_tag $FGSG_BRANCH)" = "" ]]
then
write_log_and_exec
"git branch -f $FGSG_BRANCH origin/$FGSG_BRANCH"
fi
# switch to stable branch. No error is reported if we're already on the branch.
write_log_and_exec "git checkout -f $FGSG_BRANCH"
# get indicated stable version
write_log_and_exec "git reset --hard $FGSG_BRANCH"
else
# switch to unstable branch
# create local unstable branch, ignore errors if it exists
$(git_check_branch_or_tag)
if [[ "$(git_check_branch_or_tag $FGDATA_BRANCH)" = "" ]]
then
write_log_and_exec
"git branch -f $FGDATA_BRANCH origin/$FGDATA_BRANCH"
fi
# switch to unstable branch. No error is reported if we're already on the branch.
write_log_and_exec "git checkout -f $FGDATA_BRANCH"
# pull latest version from the unstable branch
write_log_and_exec "git pull"
fi
cd ..
echo " OK" >> $LOGFILE
cd "$EXDIR"
fi
fi
fi
cd "$CBD"
# IF SEPARATED FOLDER FOR AIRCRAFTS
# --fg-aircraft=\$PWD/../aircrafts
cat > run_fgfs.sh << ENDOFALL
#!/bin/sh
cd \$(dirname \$0)
cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin
export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib
./fgfs --fg-root=\$PWD/../fgdata/ \$@
ENDOFALL
chmod 755 run_fgfs.sh
cat > run_fgfs_debug.sh << ENDOFALL2
#!/bin/sh
cd \$(dirname \$0)
P1=\$PWD
cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin
export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib:../../$OPENRTI_INSTALL_DIR/lib
gdb --directory="\$P1"/fgfs/source/src/ --args fgfs --fg-root=\$PWD/../fgdata/ \$@
ENDOFALL2
chmod 755 run_fgfs_debug.sh
SCRIPT=run_terrasync.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGFS_INSTALL_DIR/bin" >> $SCRIPT
echo "export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib" >> $SCRIPT
echo "./terrasync \$@" >> $SCRIPT
chmod 755 $SCRIPT
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGO!
#######################################################
SET_WINDOW_TITLE "Building FGO"
FGO_INSTALL_DIR=fgo
INSTALL_DIR_FGO=$INSTALL_DIR/$FGO_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGO"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "***************** FGO ******************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
wget http://sites.google.com/site/erobosprojects/flightgear/add-ons/fgo/download/fgo-1-3-1.tar.gz?attredirects=0 -O fgo-1-3-1.tar.gz
cd install
tar zxvf ../fgo-1-3-1.tar.gz
cat fgo/src/gui.py | sed s/"self.process = subprocess.Popen".*/"self.process = subprocess.Popen(self.options, cwd=self.FG_working_dir,env=os.environ)"/g > fgo/src/gui.py-new
mv fgo/src/gui.py-new fgo/src/gui.py
cd ..
fi
SCRIPT=run_fgo.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR" >> $SCRIPT
echo "p=\$(pwd)" >> $SCRIPT
echo "cd $FGO_INSTALL_DIR" >> $SCRIPT
echo "export LD_LIBRARY_PATH=\$p/plib/lib:\$p/OpenSceneGraph/lib:\$p/simgear/lib" >> $SCRIPT
echo "python fgo" >> $SCRIPT
chmod 755 $SCRIPT
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGx
#######################################################
SET_WINDOW_TITLE "Building FGX"
FGX_INSTALL_DIR=fgx
INSTALL_DIR_FGX=$INSTALL_DIR/$FGX_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGX"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "***************** FGX ******************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
echo -n "git clone git://gitorious.org/fgx/fgx.git ... " >> $LOGFILE
if [ -d "fgx" ]
then
echo "fgx exists already."
else
git clone git://gitorious.org/fgx/fgx.git fgx
fi
echo " OK" >> $LOGFILE
fi
cd fgx/
git branch -f $FGX_BRANCH origin/$FGX_BRANCH 2> /dev/null || true
git checkout -f $FGX_BRANCH
git pull
cd ..
cd fgx/src/
#Patch in order to pre-setting paths
cd resources/default/
cp x_default.ini x_default.ini.orig
cat x_default.ini | sed s/\\/usr\\/bin\\/fgfs/INSTALL_DIR_FGXMY_SLASH_HERE..MY_SLASH_HEREfgfsMY_SLASH_HEREbinMY_SLASH_HEREfgfs/g > tmp1
cat tmp1 | sed s/\\/usr\\/share\\/flightgear/INSTALL_DIR_FGXMY_SLASH_HERE..MY_SLASH_HEREfgfsMY_SLASH_HEREfgdata/g > tmp2
cat tmp2 | sed s/\\/usr\\/bin\\/terrasync/INSTALL_DIR_FGXMY_SLASH_HERE..MY_SLASH_HEREfgfsMY_SLASH_HEREbinMY_SLASH_HEREterrasync/g > tmp3
cat tmp3 | sed s/\\/usr\\/bin\\/fgcom/INSTALL_DIR_FGXMY_SLASH_HERE..MY_SLASH_HEREfgcomMY_SLASH_HEREbinMY_SLASH_HEREfgcom/g > tmp4
cat tmp4 | sed s/\\/usr\\/bin\\/js_demo/INSTALL_DIR_FGXMY_SLASH_HERE..MY_SLASH_HEREfgfsMY_SLASH_HEREbinMY_SLASH_HEREjs_demo/g > tmp5
INSTALL_DIR_FGX_NO_SLASHS=$(echo "$INSTALL_DIR_FGX" | sed -e 's/\//MY_SLASH_HERE/g')
cat tmp5 | sed s/INSTALL_DIR_FGX/"$INSTALL_DIR_FGX_NO_SLASHS"/g > tmp
cat tmp | sed s/MY_SLASH_HERE/\\//g > x_default.ini
rm tmp*
cd ..
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
echo -n "RECONFIGURE FGX ... " >> $LOGFILE
mkdir -p $INSTALL_DIR_FGX
cd $INSTALL_DIR_FGX
qmake ../../fgx/src
echo " OK" >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
cd $INSTALL_DIR_FGX
echo "MAKE AND INSTALL FGX" >> $LOGFILE
echo "make $JOPTION $OOPTION " >> $LOGFILE
make $JOPTION $OOPTION | tee -a $LOGFILE
cd ..
fi
cd "$CBD"
SCRIPT=run_fgx.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR" >> $SCRIPT
echo "p=\$(pwd)" >> $SCRIPT
echo "cd $FGX_INSTALL_DIR" >> $SCRIPT
echo "export LD_LIBRARY_PATH=\$p/plib/lib:\$p/OpenSceneGraph/lib:\$p/simgear/lib" >> $SCRIPT
echo "./fgx" >> $SCRIPT
chmod 755 $SCRIPT
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGRUN
#######################################################
SET_WINDOW_TITLE "Building FGRUN"
FGRUN_INSTALL_DIR=fgrun
INSTALL_DIR_FGRUN=$INSTALL_DIR/$FGRUN_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGRUN"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** FGRUN *****************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
#echo -n "CVS FROM cvs.flightgear.org:/var/cvs/FlightGear-0.9 ... " >> $LOGFILE
#cvs -z5 -d :pserver:cvsguest:guest@cvs.flightgear.org:/var/cvs/FlightGear-0.9 login
#cvs -z5 -d :pserver:cvsguest@cvs.flightgear.org:/var/cvs/FlightGear-0.9 co source
echo -n "GIT FROM git://gitorious.org/fg/fgrun.git ... " >> $LOGFILE
if [ -d "fgrun" ]
then
echo "fgrun exists already."
else
git clone git://gitorious.org/fg/fgrun.git fgrun
fi
cd fgrun
if [[ $(grep -L 'list(APPEND FLTK_LIBRARIES ${CMAKE_DL_LIBS})' CMakeLists.txt) != "" ]]
then
patch CMakeLists.txt <<\EOD
--- master/fgrun/CMakeLists.txt 2013-05-25 06:37:31.882942339 -0400
+++ next/fgrun/CMakeLists.txt 2013-08-04 07:54:59.274097042 -0400
@@ -212,6 +212,10 @@ if ( FLTK_FOUND )
list(APPEND FLTK_LIBRARIES ${X11_Xft_LIB})
endif()
+ if ( CMAKE_DL_LIBS )
+ list(APPEND FLTK_LIBRARIES ${CMAKE_DL_LIBS})
+ endif()
+
set( CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR} )
set( CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES} )
message(STATUS "Using FLTK_LIBRARIES for fgrun: ${FLTK_LIBRARIES}")
EOD
fi
git fetch origin
if [ "$STABLE" = "STABLE" ]
then
# switch to stable branch
# create local stable branch, ignore errors if it exists
ls
git branch -f $FGRUN_BRANCH origin/$FGRUN_BRANCH 2> /dev/null || true
# switch to stable branch. No error is reported if we're already on the branch.
git checkout -f $FGRUN_BRANCH
# get indicated stable version
git reset --hard $FGRUN_BRANCH
else
# switch to unstable branch
# create local unstable branch, ignore errors if it exists
git branch -f $FGRUN_BRANCH origin/$FGRUN_BRANCH 2> /dev/null || true
# switch to unstable branch. No error is reported if we're already on the branch.
git checkout -f $FGRUN_BRANCH
# pull latest version from the unstable branch
git pull
fi
cd ..
echo " OK" >> $LOGFILE
fi
cd fgrun
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/fgrun
cd "$CBD"/build/fgrun
echo -n "RECONFIGURE FGRUN ... " >> $LOGFILE
rm -f ../../fgrun/CMakeCache.txt
rm -f CMakeCache.txt
cmake ${VERBOSE_MAKEFILE} -D CMAKE_BUILD_TYPE="Release" -D CMAKE_CXX_FLAGS="-O3 -D__STDC_CONSTANT_MACROS" -D CMAKE_C_FLAGS="-O3" -D CMAKE_INSTALL_PREFIX:PATH="$INSTALL_DIR_FGRUN" -D "CMAKE_PREFIX_PATH=$INSTALL_DIR_OSG;$INSTALL_DIR_PLIB;$INSTALL_DIR_SIMGEAR" ../../fgrun/ 2>&1 | tee -a $LOGFILE
echo " OK" >> $LOGFILE
fi
fi
if [ "$COMPILE" = "y" ]
then
cd "$CBD"/build/fgrun
echo "MAKE FGRUN" >> $LOGFILE
echo "make $JOPTION $OOPTION" >> $LOGFILE
make $JOPTION $OOPTION 2>1 | tee -a $LOGFILE
echo "INSTALL FGRUN" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd "$CBD"
SCRIPT=run_fgrun.sh
echo "#!/bin/sh" > $SCRIPT
echo "cd \$(dirname \$0)" >> $SCRIPT
echo "cd $SUB_INSTALL_DIR/$FGRUN_INSTALL_DIR/bin" >> $SCRIPT
echo "export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib" >> $SCRIPT
#echo "export FG_AIRCRAFTS=\$PWD/../../$FGFS_INSTALL_DIR/aircrafts" >> $SCRIPT
echo "./fgrun --fg-exe=\$PWD/../../$FGFS_INSTALL_DIR/bin/fgfs --fg-root=\$PWD/../../$FGFS_INSTALL_DIR/fgdata \$@" >> $SCRIPT
chmod 755 $SCRIPT
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGCOM
#######################################################
SET_WINDOW_TITLE "Building FGCOM"
FGCOM_INSTALL_DIR=fgcom
INSTALL_DIR_FGCOM=$INSTALL_DIR/$FGCOM_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGCOM"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** FGCOM *****************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
#svn checkout svn://svn.dfn.de:/fgcom/trunk fgcom
if [ "$DOWNLOAD" = "y" ]
then
echo -n "git://gitorious.org/fg/fgcom.git ... " >> $LOGFILE
if [ -d "fgcom" ]
then
echo "fgcom exists already."
else
git clone git://gitorious.org/fg/fgcom.git
fi
cd fgcom
git fetch origin
# create local unstable branch, ignore errors if it exists
git branch -f $FGCOM_UNSTABLE_GIT_BRANCH origin/$FGCOM_UNSTABLE_GIT_BRANCH 2> /dev/null || true
# switch to unstable branch. No error is reported if we're already on the branch.
git checkout -f $FGCOM_UNSTABLE_GIT_BRANCH
# pull latest version from the unstable branch
git pull
echo " OK" >> $LOGFILE
cd ..
#patch for new netdb.h version.
cat fgcom/iaxclient/lib/libiax2/src/iax.c | sed s/hp-\>h_addr,/hp-\>h_addr_list[0],/g > fgcom/iaxclient/lib/libiax2/src/iax_ok.c
mv fgcom/iaxclient/lib/libiax2/src/iax_ok.c fgcom/iaxclient/lib/libiax2/src/iax.c
fi
cd "$CBD"
if [ -d "fgcom" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"/fgcom
cd "$CBD"
mkdir -p build/fgcom
cd "$CBD"/build/fgcom
echo -n "RECONFIGURE FGCOM ... " >> $LOGFILE
rm -f CMakeCache.txt
# add -lpthread for UNIX
cmake ${VERBOSE_MAKEFILE} -DCMAKE_SKIP_INSTALL_RPATH:BOOL=TRUE -DCMAKE_SKIP_RPATH:BOOL=TRUE -DFIND_PTHREAD_LIB:BOOL=TRUE -D CMAKE_BUILD_TYPE="Release" -D "CMAKE_PREFIX_PATH=$INSTALL_DIR_PLIB" -D "CMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR_FGCOM" "$CBD"/fgcom 2>&1 | tee -a $LOGFILE
echo " OK" >> $LOGFILE
cd "$CBD"/fgcom/src/
fi
cd "$CBD"/build/fgcom
mkdir -p "$INSTALL_DIR_FGCOM"/bin
if [ "$COMPILE" = "y" ]
then
echo "MAKE FGCOM" >> $LOGFILE
echo "cmake --build . --config Release" >> $LOGFILE
cmake --build . --config Release 2>&1 | tee -a $LOGFILE
echo "INSTALL FGCOM" >> $LOGFILE
cmake ${VERBOSE_MAKEFILE} -DBUILD_TYPE=Release -P cmake_install.cmake 2>&1 | tee -a $LOGFILE
fi
cd "$CBD"
echo "#!/bin/sh" > run_fgcom.sh
echo "cd \$(dirname \$0)" >> run_fgcom.sh
echo "cd $SUB_INSTALL_DIR/$FGCOM_INSTALL_DIR/bin" >> run_fgcom.sh
echo "export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib" >> run_fgcom.sh
echo "./fgcom -Sfgcom.flightgear.org.uk \$@" >> run_fgcom.sh
chmod 755 run_fgcom.sh
fi
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# FGCOMGUI
#######################################################
SET_WINDOW_TITLE "Building FGCOMGUI"
FGCOMGUI_INSTALL_DIR=fgcomgui
INSTALL_DIR_FGCOMGUI=$INSTALL_DIR/$FGCOMGUI_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="FGCOMGUI"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "*************** FGCOMGUI ***************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
#svn checkout svn://svn.dfn.de:/fgcom/trunk fgcom
if [ "$DOWNLOAD" = "y" ]
then
FGCOMGUI_STABLE_REVISION_=""
if [ "$STABLE" = "STABLE" ]
then
FGCOMGUI_STABLE_REVISION_=" -r $FGCOMGUI_STABLE_REVISION"
fi
echo -n "SVN FROM https://fgcomgui.googlecode.com/svn/trunk ... " >> $LOGFILE
svn $FGCOMGUI_STABLE_REVISION_ co https://fgcomgui.googlecode.com/svn/trunk fgcomgui
echo " OK" >> $LOGFILE
fi
if [ -d "fgcomgui" ]
then
cd fgcomgui/
mkdir -p "$INSTALL_DIR_FGCOMGUI"
if [ "$COMPILE" = "y" ]
then
echo "SCONS FGCOMGUI" >> $LOGFILE
echo "scons prefix=\"$INSTALL_DIR_FGCOMGUI\" $JOPTION" >> $LOGFILE
scons prefix="$INSTALL_DIR_FGCOMGUI" $JOPTION 2>&1 | tee -a $LOGFILE
echo "INSTALL FGCOM" >> $LOGFILE
scons install 2>&1 | tee -a $LOGFILE
fi
cd "$CBD"
echo "#!/bin/sh" > run_fgcomgui.sh
echo "cd \$(dirname \$0)" >> run_fgcomgui.sh
echo "cd $SUB_INSTALL_DIR/$FGCOMGUI_INSTALL_DIR/bin" >> run_fgcomgui.sh
echo "export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib" >> run_fgcomgui.sh
echo "export PATH=../../fgcom/bin/:$PATH" >> run_fgcomgui.sh
echo "./fgcomgui \$@" >> run_fgcomgui.sh
chmod 755 run_fgcomgui.sh
fi
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# OPENRADAR
#######################################################
SET_WINDOW_TITLE "Building OPENRADAR"
OR_INSTALL_DIR=openradar
INSTALL_DIR_OR=$INSTALL_DIR/$OR_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="OPENRADAR"' ]]
then
echo "****************************************"
echo "************** OPENRADAR ***************"
echo "****************************************"
if [ "$DOWNLOAD" = "y" ]
then
wget $OR_STABLE_RELEASE -O OpenRadar.zip
cd install
unzip ../OpenRadar.zip
cd ..
fi
echo "#!/bin/sh" > run_openradar.sh
echo "cd \$(dirname \$0)" >> run_openradar.sh
echo "cd install/OpenRadar" >> run_openradar.sh
echo "java -jar OpenRadar.jar" >> run_openradar.sh
chmod 755 run_openradar.sh
if [[ $STOP_AFTER_ONE_MODULE = true ]]; then exit; fi
fi
#######################################################
# ATLAS
#######################################################
SET_WINDOW_TITLE "Building ATLAS"
ATLAS_INSTALL_DIR=atlas
INSTALL_DIR_ATLAS=$INSTALL_DIR/$ATLAS_INSTALL_DIR
cd "$CBD"
if [[ "$(declare -p WHATTOBUILD)" =~ '['([0-9]+)']="ATLAS"' ]]
then
echo "****************************************" | tee -a $LOGFILE
echo "**************** ATLAS *****************" | tee -a $LOGFILE
echo "****************************************" | tee -a $LOGFILE
if [ "$DOWNLOAD" = "y" ]
then
echo -n "CSV FROM atlas.cvs.sourceforge.net:/cvsroot/atlas ... " >> $LOGFILE
cvs -z3 -d:pserver:anonymous@atlas.cvs.sourceforge.net:/cvsroot/atlas co Atlas
echo " OK" >> $LOGFILE
echo "fixing old function name \".get_gbs_center2(\" in Subbucket.cxx"
cd Atlas/src
cp Subbucket.cxx Subbucket.cxx.original
cat Subbucket.cxx.original | sed s/\.get_gbs_center2\(/\.get_gbs_center\(/g > Subbucket.cxx
cd "$CBD"
fi
if [ -d "Atlas" ]
then
cd Atlas
if [ ! "$UPDATE" = "UPDATE" ]
then
if [ "$RECONFIGURE" = "y" ]
then
cd "$CBD"
mkdir -p build/atlas
cd Atlas
echo "AUTOGEN ATLAS" >> $LOGFILE
./autogen.sh 2>&1 | tee -a $LOGFILE
echo "CONFIGURE ATLAS" >> $LOGFILE
cd "$CBD"/build/atlas
../../Atlas/configure --prefix=$INSTALL_DIR_ATLAS --exec-prefix=$INSTALL_DIR_ATLAS --with-plib=$INSTALL_DIR_PLIB --with-simgear="$INSTALL_DIR_SIMGEAR" --with-fgbase="$INSTALL_DIR_FGFS/fgdata" CXXFLAGS="$CXXFLAGS -I$CBD/OpenSceneGraph/include" 2>&1 | tee -a $LOGFILE
make clean
fi
fi
if [ "$COMPILE" = "y" ]
then
echo "MAKE ATLAS" >> $LOGFILE
echo "make $JOPTION $OOPTION" >> $LOGFILE
cd "$CBD"/build/atlas
make $JOPTION $OOPTION 2>&1 | tee -a $LOGFILE
echo "INSTALL ATLAS" >> $LOGFILE
make install 2>&1 | tee -a $LOGFILE
fi
cd "$CBD"
echo "#!/bin/sh" > run_atlas.sh
echo "cd \$(dirname \$0)" >> run_atlas.sh
echo "cd $SUB_INSTALL_DIR/$ATLAS_INSTALL_DIR/bin" >> run_atlas.sh
echo "export LD_LIBRARY_PATH=../../$PLIB_INSTALL_DIR/lib:../../$OSG_INSTALL_DIR/lib:../../$SIMGEAR_INSTALL_DIR/lib" >> run_atlas.sh
echo "./Atlas --fg-root=\$PWD/../../$FGFS_INSTALL_DIR/fgdata \$@" >> run_atlas.sh
chmod 755 run_atlas.sh
fi
fi
SET_WINDOW_TITLE "Finished Building"
echo " finished at $(date)" >>download_and_compile.log
echo "" >>download_and_compile.log
check_build "$CBD"
echo "To start fgfs, run the run_fgfs.sh file"
echo "To start terrasync, run the run_terrasync.sh file"
echo "To start fgrun, run the run_fgrun.sh file"
echo "To start fgcom, run the run_fgcom.sh file"
echo "To start fgcom GUI, run the run_fgcomgui.sh file"
echo "To start atlas, run the run_atlas.sh file"
if [ "$HELP" = "HELP" ]
then
echo ""
else
echo "Usage: $0 -h"
echo "for help"
echo "$rebuild_command" >rebuild
chmod +x rebuild
fi