202 lines
6.3 KiB
Bash
Executable File
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
|
|
|