Build VM producing Windows, MacOS, Linux, and IIgs binaries.
This commit is contained in:
parent
99b1ac8e6d
commit
051c81d3d2
1 changed files with 149 additions and 102 deletions
|
@ -30,6 +30,7 @@ TRIPLE=
|
||||||
BUILD_PROJECT=
|
BUILD_PROJECT=
|
||||||
BUILD_PLATFORMS=
|
BUILD_PLATFORMS=
|
||||||
BUILD_RESULTS=
|
BUILD_RESULTS=
|
||||||
|
LDFIRST=
|
||||||
|
|
||||||
EHOME=$(getent passwd $(logname) | cut -d: -f6)
|
EHOME=$(getent passwd $(logname) | cut -d: -f6)
|
||||||
SRC=${EHOME}/joeylib/joeylib/src
|
SRC=${EHOME}/joeylib/joeylib/src
|
||||||
|
@ -43,6 +44,7 @@ export CC=
|
||||||
export AR=
|
export AR=
|
||||||
export CFLAGS=
|
export CFLAGS=
|
||||||
export LD_LIBRARY_PATH=
|
export LD_LIBRARY_PATH=
|
||||||
|
export LDFLAGS=
|
||||||
|
|
||||||
export GOLDEN_GATE=${IIGS}/ORCA
|
export GOLDEN_GATE=${IIGS}/ORCA
|
||||||
|
|
||||||
|
@ -79,14 +81,14 @@ function buildIIgsSDK() {
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
cp -f "${PUBLIC}" ~/.ssh/id_rsa.pub
|
cp -f "${PUBLIC}" ~/.ssh/id_rsa.pub
|
||||||
cp -f "${PRIVATE}" ~/.ssh/id_rsa
|
cp -f "${PRIVATE}" ~/.ssh/id_rsa
|
||||||
touch ${HOME}/.ssh/authorized_keys
|
touch ${EHOME}/.ssh/authorized_keys
|
||||||
touch ${HOME}/.ssh/config
|
touch ${EHOME}/.ssh/config
|
||||||
chmod go-w ${HOME}
|
chmod go-w ${EHOME}
|
||||||
chmod 700 ${HOME}/.ssh
|
chmod 700 ${EHOME}/.ssh
|
||||||
chmod 600 ${HOME}/.ssh/*id_rsa
|
chmod 600 ${EHOME}/.ssh/*id_rsa
|
||||||
chmod 644 ${HOME}/.ssh/*.pub
|
chmod 644 ${EHOME}/.ssh/*.pub
|
||||||
chmod 644 ${HOME}/.ssh/authorized_keys
|
chmod 644 ${EHOME}/.ssh/authorized_keys
|
||||||
chmod 644 ${HOME}/.ssh/config
|
chmod 644 ${EHOME}/.ssh/config
|
||||||
|
|
||||||
if [[ ! -e "${IIGS}/jfsDrive.img" ]]; then
|
if [[ ! -e "${IIGS}/jfsDrive.img" ]]; then
|
||||||
O=${IIGS}/mountORCA.sh
|
O=${IIGS}/mountORCA.sh
|
||||||
|
@ -131,7 +133,7 @@ function buildIIgsSDK() {
|
||||||
mkdir -p ${IIGS}
|
mkdir -p ${IIGS}
|
||||||
cp -f bin/{iix,dumpobj,opus-extractor} "${IIGS}/."
|
cp -f bin/{iix,dumpobj,opus-extractor} "${IIGS}/."
|
||||||
cd installed
|
cd installed
|
||||||
msiextract "${HOME}/${GGATE}"
|
msiextract "${EHOME}/${GGATE}"
|
||||||
find -name ".*" -delete
|
find -name ".*" -delete
|
||||||
cp -rf GoldenGate/* "${IIGS}/ORCA/."
|
cp -rf GoldenGate/* "${IIGS}/ORCA/."
|
||||||
popd
|
popd
|
||||||
|
@ -230,7 +232,7 @@ function buildJoeyLib() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
SDL2)
|
SDL2)
|
||||||
export CFLAGS="${CFLAGS} -DBUILD_SERVER -Wall -D_REENTRANT_ -I${SRC} -I${INSTALLED}/include -c"
|
export CFLAGS="${CFLAGS} -I${SRC} -I${INSTALLED}/include -c"
|
||||||
${CC} ${CFLAGS} -o jPixBuf.o ${SRC}/jPixBuf.c
|
${CC} ${CFLAGS} -o jPixBuf.o ${SRC}/jPixBuf.c
|
||||||
${CC} ${CFLAGS} -o jSDL2.o ${SRC}/jSDL2.c
|
${CC} ${CFLAGS} -o jSDL2.o ${SRC}/jSDL2.c
|
||||||
${CC} ${CFLAGS} -o joey.o ${SRC}/joey.c
|
${CC} ${CFLAGS} -o joey.o ${SRC}/joey.c
|
||||||
|
@ -361,18 +363,19 @@ function doBuild() {
|
||||||
if [[ -z ${BUILD_PROJECT} ]]; then
|
if [[ -z ${BUILD_PROJECT} ]]; then
|
||||||
BUILD_PROJECT=${LINE}
|
BUILD_PROJECT=${LINE}
|
||||||
# Generate a list of non-source files.
|
# Generate a list of non-source files.
|
||||||
for FILE in $(ls -1); do
|
for FILE in $(ls -1B); do
|
||||||
if [[ "${FILE}" != "build.start" && "${FILE}" != "build.temp" && "${FILE}" != "build.tar.bz2" && "${FILE}" != "results" ]]; then
|
if [[ -f "${FILE}" ]]; then
|
||||||
|
if [[ "${FILE}" != "build.start" && "${FILE}" != "build.temp" && "${FILE}" != "build.tar.bz2" ]]; then
|
||||||
EXTENSION="${FILE##*.}"
|
EXTENSION="${FILE##*.}"
|
||||||
if [[ "${EXTENSION}" != "c" && "${EXTENSION}" != "h" && "${EXTENSION}" != "asm" && "${EXTENSION}" != "macro" && "${EXTENSION}" != "inc" ]]; then
|
if [[ "${EXTENSION}" != "c" && "${EXTENSION}" != "h" && "${EXTENSION}" != "asm" && "${EXTENSION}" != "macro" && "${EXTENSION}" != "inc" ]]; then
|
||||||
DATA+=(${FILE})
|
DATA+=(${FILE})
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
# Generate a list of C files to compile.
|
# Generate a list of C files to compile.
|
||||||
CFILES=($(ls -1 *.c))
|
CFILES=($(ls -1 *.c))
|
||||||
else
|
else
|
||||||
BUILD_PLATFORMS="${BUILD_PLATFORMS}${LINE,,} "
|
|
||||||
case ${LINE,,} in
|
case ${LINE,,} in
|
||||||
iigs)
|
iigs)
|
||||||
setCompiler gsos 816
|
setCompiler gsos 816
|
||||||
|
@ -423,8 +426,14 @@ function doBuild() {
|
||||||
EXT=.exe
|
EXT=.exe
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
TARGET=
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [[ ! -z "${TARGET}" ]]; then
|
||||||
|
|
||||||
|
BUILD_PLATFORMS="${BUILD_PLATFORMS}${LINE,,} "
|
||||||
LOG="${BUILD_RESULTS}/build.${LINE,,}"
|
LOG="${BUILD_RESULTS}/build.${LINE,,}"
|
||||||
LIB="${DIST}/${NAME}-${ARCH}"
|
LIB="${DIST}/${NAME}-${ARCH}"
|
||||||
|
|
||||||
|
@ -461,6 +470,7 @@ function doBuild() {
|
||||||
OFILES="${GSTARGET}/jIIgsc ${GSTARGET}/joey ${GSTARGET}/jIIgsasm ${OFILES}"
|
OFILES="${GSTARGET}/jIIgsc ${GSTARGET}/joey ${GSTARGET}/jIIgsasm ${OFILES}"
|
||||||
# Link.
|
# Link.
|
||||||
iix -DKeepType=S16 link ${OFILES} keep=${GSTARGET}/${BUILD_PROJECT}#b3db03
|
iix -DKeepType=S16 link ${OFILES} keep=${GSTARGET}/${BUILD_PROJECT}#b3db03
|
||||||
|
rm -f *.sym || true
|
||||||
# Create disk image, setting known file types
|
# Create disk image, setting known file types
|
||||||
DISK=${BUILD_RESULTS}/${LINE,,}/build.po
|
DISK=${BUILD_RESULTS}/${LINE,,}/build.po
|
||||||
${CADIUS} createvolume ${DISK} ${BUILD_PROJECT} 32MB
|
${CADIUS} createvolume ${DISK} ${BUILD_PROJECT} 32MB
|
||||||
|
@ -478,7 +488,7 @@ function doBuild() {
|
||||||
;;
|
;;
|
||||||
|
|
||||||
SDL2)
|
SDL2)
|
||||||
export CFLAGS="${CFLAGS} -DBUILD_SERVER -Wall -D_REENTRANT_ -I${DIST}"
|
export CFLAGS="${CFLAGS} -I${DIST}"
|
||||||
# Compile C files and generate object list.
|
# Compile C files and generate object list.
|
||||||
OFILES=""
|
OFILES=""
|
||||||
for FILE in "${CFILES[@]}"; do
|
for FILE in "${CFILES[@]}"; do
|
||||||
|
@ -487,14 +497,18 @@ function doBuild() {
|
||||||
${CC} ${CFLAGS} -c ${FILE} -o ${TARGET}/${O}
|
${CC} ${CFLAGS} -c ${FILE} -o ${TARGET}/${O}
|
||||||
done
|
done
|
||||||
# Link.
|
# Link.
|
||||||
${CC} ${CFLAGS} -o ${BUILD_RESULTS}/${LINE,,}/${BUILD_PROJECT}${EXT} ${OFILES} ${LIB}/libjoeylib.a -lm -ldl -lpthread
|
${CC} ${CFLAGS} -o ${BUILD_RESULTS}/${LINE,,}/${BUILD_PROJECT}${EXT} ${LDFIRST} ${OFILES} ${LIB}/libjoeylib.a ${LDFLAGS}
|
||||||
# Copy game data.
|
# Copy game data.
|
||||||
|
mkdir -p ${BUILD_RESULTS}/${LINE,,}/data
|
||||||
for FILE in "${DATA[@]}"; do
|
for FILE in "${DATA[@]}"; do
|
||||||
#***TODO*** Data conversion here!
|
#***TODO*** Data conversion here!
|
||||||
cp -f ${FILE} ${BUILD_RESULTS}/${LINE,,}/.
|
cp -f ${FILE} ${BUILD_RESULTS}/${LINE,,}/data/.
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
done < build.start
|
done < build.start
|
||||||
|
|
||||||
|
@ -517,36 +531,28 @@ function doInstall() {
|
||||||
buildMacOSSDK MacOSX10.13.sdk.tar.xz macos-intel
|
buildMacOSSDK MacOSX10.13.sdk.tar.xz macos-intel
|
||||||
buildMacOSSDK MacOSX11.3.sdk.tar.xz macos-apple
|
buildMacOSSDK MacOSX11.3.sdk.tar.xz macos-apple
|
||||||
|
|
||||||
setCompiler gsos 816
|
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler linux i386
|
setCompiler linux i386
|
||||||
buildSDL2 ${SDL2_NEW}
|
buildSDL2 ${SDL2_NEW}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler linux x86_64
|
setCompiler linux x86_64
|
||||||
buildSDL2 ${SDL2_NEW}
|
buildSDL2 ${SDL2_NEW}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler macos i386
|
setCompiler macos i386
|
||||||
buildSDL2 ${SDL2_OLD}
|
buildSDL2 ${SDL2_OLD}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler macos x86_64
|
setCompiler macos x86_64
|
||||||
buildSDL2 ${SDL2_OLD}
|
buildSDL2 ${SDL2_OLD}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler macos arm
|
setCompiler macos arm
|
||||||
buildSDL2 ${SDL2_NEW}
|
buildSDL2 ${SDL2_NEW}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler windows i386
|
setCompiler windows i386
|
||||||
buildSDL2 ${SDL2_NEW}
|
buildSDL2 ${SDL2_NEW}
|
||||||
buildJoeyLib
|
|
||||||
|
|
||||||
setCompiler windows x86_64
|
setCompiler windows x86_64
|
||||||
buildSDL2 ${SDL2_NEW}
|
buildSDL2 ${SDL2_NEW}
|
||||||
buildJoeyLib
|
|
||||||
|
rebuildJoeyLib
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -584,6 +590,33 @@ function fetchGitHubRelease() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function rebuildJoeyLib() {
|
||||||
|
setCompiler gsos 816
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler linux i386
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler linux x86_64
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler macos i386
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler macos x86_64
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler macos arm
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler windows i386
|
||||||
|
buildJoeyLib
|
||||||
|
|
||||||
|
setCompiler windows x86_64
|
||||||
|
buildJoeyLib
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function setCompiler() {
|
function setCompiler() {
|
||||||
local OS=$1
|
local OS=$1
|
||||||
local CPU=$2
|
local CPU=$2
|
||||||
|
@ -608,18 +641,21 @@ function setCompiler() {
|
||||||
NAME="linux-intel"
|
NAME="linux-intel"
|
||||||
ARCH=i386
|
ARCH=i386
|
||||||
TRIPLE="x86_64-linux-gnu"
|
TRIPLE="x86_64-linux-gnu"
|
||||||
export CFLAGS="-m32"
|
export CFLAGS="-m32 -DBUILD_SERVER -Wall -D_REENTRANT_"
|
||||||
|
export LDFLAGS="-lm -ldl -lpthread"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64)
|
x86_64)
|
||||||
NAME="linux-intel"
|
NAME="linux-intel"
|
||||||
ARCH=x86_64
|
ARCH=x86_64
|
||||||
TRIPLE="${ARCH}-linux-gnu"
|
TRIPLE="${ARCH}-linux-gnu"
|
||||||
export CFLAGS=
|
export CFLAGS="-DBUILD_SERVER -Wall -D_REENTRANT_"
|
||||||
|
export LDFLAGS="-lm -ldl -lpthread"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
BACKEND=SDL2
|
BACKEND=SDL2
|
||||||
|
LDFIRST=
|
||||||
export PATH=${OLD_PATH}
|
export PATH=${OLD_PATH}
|
||||||
export LD_LIBRARY_PATH=
|
export LD_LIBRARY_PATH=
|
||||||
export CC=${TRIPLE}-gcc
|
export CC=${TRIPLE}-gcc
|
||||||
|
@ -632,29 +668,33 @@ function setCompiler() {
|
||||||
NAME="macos-intel"
|
NAME="macos-intel"
|
||||||
ARCH=i386
|
ARCH=i386
|
||||||
TRIPLE="${ARCH}-apple-darwin17"
|
TRIPLE="${ARCH}-apple-darwin17"
|
||||||
|
export LDFLAGS="-lm -liconv -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64)
|
x86_64)
|
||||||
NAME="macos-intel"
|
NAME="macos-intel"
|
||||||
ARCH=x86_64
|
ARCH=x86_64
|
||||||
TRIPLE="${ARCH}-apple-darwin17"
|
TRIPLE="${ARCH}-apple-darwin17"
|
||||||
|
export LDFLAGS="-lm -liconv -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
arm)
|
arm)
|
||||||
NAME="macos-apple"
|
NAME="macos-apple"
|
||||||
ARCH=aarch64
|
ARCH=aarch64
|
||||||
TRIPLE="${ARCH}-apple-darwin20.4"
|
TRIPLE="${ARCH}-apple-darwin20.4"
|
||||||
|
export LDFLAGS="-lm -liconv -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
BACKEND=SDL2
|
BACKEND=SDL2
|
||||||
export CFLAGS=
|
LDFIRST=
|
||||||
export PATH=${HOME}/cross/${NAME}/bin:${OLD_PATH}
|
export CFLAGS="-DBUILD_SERVER -Wall -D_THREAD_SAFE"
|
||||||
export LD_LIBRARY_PATH=${HOME}/cross/${NAME}/lib
|
export PATH=${EHOME}/cross/${NAME}/bin:${OLD_PATH}
|
||||||
|
export LD_LIBRARY_PATH=${EHOME}/cross/${NAME}/lib
|
||||||
export CC=${TRIPLE}-clang
|
export CC=${TRIPLE}-clang
|
||||||
export AR=${TRIPLE}-ar
|
export AR=${TRIPLE}-ar
|
||||||
sudo rm -f /usr/lib/llvm-10/lib/clang/10.0.0/lib/darwin && true
|
sudo rm -f /usr/lib/llvm-10/lib/clang/10.0.0/lib/darwin && true
|
||||||
sudo ln -s ${HOME}/cross/${NAME}/darwin /usr/lib/llvm-10/lib/clang/10.0.0/lib/.
|
sudo ln -s ${EHOME}/cross/${NAME}/darwin /usr/lib/llvm-10/lib/clang/10.0.0/lib/.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
windows)
|
windows)
|
||||||
|
@ -673,16 +713,18 @@ function setCompiler() {
|
||||||
|
|
||||||
esac
|
esac
|
||||||
BACKEND=SDL2
|
BACKEND=SDL2
|
||||||
|
LDFIRST="-lmingw32"
|
||||||
export PATH=${OLD_PATH}
|
export PATH=${OLD_PATH}
|
||||||
export LD_LIBRARY_PATH=
|
export LD_LIBRARY_PATH=
|
||||||
export CFLAGS="-static-libgcc"
|
export CFLAGS="-DBUILD_SERVER -Dmain=SDL_main -Wall -static-libgcc"
|
||||||
|
export LDFLAGS="-mwindows -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid"
|
||||||
export CC=${TRIPLE}-gcc
|
export CC=${TRIPLE}-gcc
|
||||||
export AR=${TRIPLE}-ar
|
export AR=${TRIPLE}-ar
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
INSTALLED=${HOME}/installed/${NAME}-${ARCH}
|
INSTALLED=${EHOME}/installed/${NAME}-${ARCH}
|
||||||
mkdir -p ${INSTALLED}
|
mkdir -p ${INSTALLED}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -707,6 +749,10 @@ function scriptIsDownloaded() {
|
||||||
doInstall "${2}" "${3}"
|
doInstall "${2}" "${3}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
rebuild)
|
||||||
|
rebuildJoeyLib
|
||||||
|
;;
|
||||||
|
|
||||||
server)
|
server)
|
||||||
startBuildServer "${2}"
|
startBuildServer "${2}"
|
||||||
;;
|
;;
|
||||||
|
@ -716,6 +762,7 @@ function scriptIsDownloaded() {
|
||||||
echo "${0} build DIST SRC"
|
echo "${0} build DIST SRC"
|
||||||
echo "${0} del USER"
|
echo "${0} del USER"
|
||||||
echo "${0} install GGUSER GGPASS"
|
echo "${0} install GGUSER GGPASS"
|
||||||
|
echo "${0} rebuild"
|
||||||
echo "${0} server DIST"
|
echo "${0} server DIST"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Add table
Reference in a new issue