UDT/build.sh

202 lines
6.3 KiB
Bash
Executable File

#!/bin/bash
#*******************************************************************************
#
# This will build ALL variants!
#
# This expects the following environment variables set:
#
# COMPILE_OS - linux, macosx, windows
# COMPILE_OS_ARCH - 32, 64, arm
#
#
# possible packages you might need in order to compile:
# gcc-4.8 gcc-4.8-multilib g++-4.8-multilib gdb make libgtk2.0-dev libxtst-dev libc6-dev-i386 mingw-w64
# ccache libssl0.9.8
#
# Then, in gcc_apple_amd64 dir: sudo dpkg -i *.deb (this is 64bit gcc to build macosx binaries)
#
# Because we fake the 32bit/arm library calls during compile time (the libs are
# loaded during run time) we can build 32bit/arm builds on a 64bit system without needing multi-arch
# GTK libraries (fyi: there aren't any... and DO NOT install the i386 ones, since they will REMOVE what
# you already have - buggering your system!)
#
#
#
# TODO: clean up below, verify arm builds.
# # arm: gcc-arm-linux-gnueabi gcc-4.8-arm-linux-gnueabihf
# hf or no hf? beaglebone, rasbpi, ODROID-U3, other ARM devices
#
# ARMv7sf needs gcc-arm-linux-gnueabi, ARMv7hf needs gcc-arm-linux-gnueabihf
#
# To compile for the ARMv7 (BeagleBone Black), follow:
# http://www.michaelhleonard.com/cross-compile-for-beaglebone-black/
#
# for raspi/BBB
# http://www.michaelhleonard.com/cross-compile-for-beaglebone-black/
# http://derekmolloy.ie/beaglebone/setting-up-eclipse-on-the-beaglebone-for-c-development/
# http://stackoverflow.com/questions/9324772/cross-compiling-static-c-hello-world-for-android-using-arm-linux-gnueabi-gcc?rq=1
#
#
#for ANY OTHER OS/ARCH, the easiest, and most straight forward method is to use
# crosstool-ng. http://crosstool-ng.org/
# howto's:
# http://raspberrypi.stackexchange.com/questions/1/how-do-i-build-a-gcc-4-7-toolchain-for-cross-compiling
# http://www.bootc.net/archives/2012/05/26/how-to-build-a-cross-compiler-for-your-raspberry-pi/
# http://www.ps3devwiki.com/wiki/Cross_Compiling
#
#
######################################################################
# as per: http://stackoverflow.com/questions/8937492/what-is-upxs-best-compression-method
# it is NOT a good idea to compress exe's. WHY? Because they run slower, and HDD space is no longer a concern.
# especially since the executable is ~ 500k.
######################################################################
#
# Copyright 2015 dorkbox, llc
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
######################################################################
readonly true=1 yes=1 no=0 false=0
BUILD_ENV=`uname -s`-`uname -m`
if [[ "$BUILD_ENV" != "Linux-x86_64" ]]; then
echo " ********"
echo " ******** Can ONLY build on [[ $BUILD_ENV ]]"
echo " ********"
return false
fi
echo " ********"
echo " ******** Build Environment: [[ $BUILD_ENV ]]"
echo " ********"
export PROGRAM_DEPLOY=true
#############
#core function that will build our targets
#############
build() {
BUILD_TYPE=$1
export COMPILE_OS=$2
export COMPILE_OS_ARCH=$3
echo " ********"
echo " ******** Building: ${COMPILE_OS}""_""${COMPILE_OS_ARCH}"
echo " ********"
# compile
make -f $BUILD_TYPE all
}
####################################################################
####################################################################
####################################################################
####################################################################
# DONE WITH FUNCTIONS
####################################################################
####################################################################
####################################################################
BUILD_ALL=false
if [ -z "$1" ]; then
BUILD_ALL=true
elif [[ "$1" == "all" ]]; then
BUILD_ALL=true
fi
# No args will build all.
if [[ $BUILD_ALL == true ]]; then
if [ -z "$1" ]; then
echo " ******** Building linux (32/64), macosx (32/64), windows (32/64)"
echo " ******** Press enter to continue... "
read VARNAME
fi
# LINUX
build "make_linux.mak" linux 32
build "make_linux.mak" linux 64
# WINDOWS
build "make_windows.mak" windows 32
build "make_windows.mak" windows 64
# MAC
build "make_macosx.mak" macosx 32
build "make_macosx.mak" macosx 64
else
# LINUX
if [[ "$1" == "linux" ]]; then
echo " ******** Building linux (32/64)"
build "make_linux.mak" linux 32
build "make_linux.mak" linux 64
elif [[ "$1" == "linux_32" ]]; then
build "make_linux.mak" linux 32
elif [[ "$1" == "linux_64" ]]; then
build "make_linux.mak" linux 64
# WINDOWS
elif [[ "$1" == "windows" ]]; then
#all
echo " ******** Building windows (32/64)"
build "make_windows.mak" windows 32
build "make_windows.mak" windows 64
elif [[ "$1" == "windows_32" ]]; then
build "make_windows.mak" windows 32
elif [[ "$1" == "windows_64" ]]; then
build "make_windows.mak" windows 64
# MAC
elif [[ "$1" == "macosx" ]]; then
#all
echo " ******** Building macosx (32/64)"
build "make_macosx.mak" macosx 32
build "make_macosx.mak" macosx 64
elif [[ "$1" == "macosx_32" ]]; then
build "make_macosx.mak" macosx 32
elif [[ "$1" == "macosx_64" ]]; then
build "make_macosx.mak" macosx 64
else
echo "Please one of the following:"
echo " [all] - builds all of them"
echo ""
echo "linux"
echo " linux [all] - builds 32 and 64 bit linux"
echo " linux_32 [all] - builds 32 bit linux"
echo " linux_64 [all] - builds 64 bit linux"
echo ""
echo "mac"
echo " macosx [all] - builds 32 and 64 bit mac"
echo " macosx_32 [all] - builds 32 bit mac"
echo " macosx_64 [all] - builds 64 bit mac"
echo ""
echo "windows"
echo " windows [all] - builds 32 and 64 bit windows"
echo " windows_32 [all] - builds 32 bit windows"
echo " windows_64 [all] - builds 64 bit windows"
exit 0
fi
fi