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_PLATFORMS=
|
||||
BUILD_RESULTS=
|
||||
LDFIRST=
|
||||
|
||||
EHOME=$(getent passwd $(logname) | cut -d: -f6)
|
||||
SRC=${EHOME}/joeylib/joeylib/src
|
||||
|
@ -43,6 +44,7 @@ export CC=
|
|||
export AR=
|
||||
export CFLAGS=
|
||||
export LD_LIBRARY_PATH=
|
||||
export LDFLAGS=
|
||||
|
||||
export GOLDEN_GATE=${IIGS}/ORCA
|
||||
|
||||
|
@ -79,14 +81,14 @@ function buildIIgsSDK() {
|
|||
mkdir -p ~/.ssh
|
||||
cp -f "${PUBLIC}" ~/.ssh/id_rsa.pub
|
||||
cp -f "${PRIVATE}" ~/.ssh/id_rsa
|
||||
touch ${HOME}/.ssh/authorized_keys
|
||||
touch ${HOME}/.ssh/config
|
||||
chmod go-w ${HOME}
|
||||
chmod 700 ${HOME}/.ssh
|
||||
chmod 600 ${HOME}/.ssh/*id_rsa
|
||||
chmod 644 ${HOME}/.ssh/*.pub
|
||||
chmod 644 ${HOME}/.ssh/authorized_keys
|
||||
chmod 644 ${HOME}/.ssh/config
|
||||
touch ${EHOME}/.ssh/authorized_keys
|
||||
touch ${EHOME}/.ssh/config
|
||||
chmod go-w ${EHOME}
|
||||
chmod 700 ${EHOME}/.ssh
|
||||
chmod 600 ${EHOME}/.ssh/*id_rsa
|
||||
chmod 644 ${EHOME}/.ssh/*.pub
|
||||
chmod 644 ${EHOME}/.ssh/authorized_keys
|
||||
chmod 644 ${EHOME}/.ssh/config
|
||||
|
||||
if [[ ! -e "${IIGS}/jfsDrive.img" ]]; then
|
||||
O=${IIGS}/mountORCA.sh
|
||||
|
@ -131,7 +133,7 @@ function buildIIgsSDK() {
|
|||
mkdir -p ${IIGS}
|
||||
cp -f bin/{iix,dumpobj,opus-extractor} "${IIGS}/."
|
||||
cd installed
|
||||
msiextract "${HOME}/${GGATE}"
|
||||
msiextract "${EHOME}/${GGATE}"
|
||||
find -name ".*" -delete
|
||||
cp -rf GoldenGate/* "${IIGS}/ORCA/."
|
||||
popd
|
||||
|
@ -230,7 +232,7 @@ function buildJoeyLib() {
|
|||
;;
|
||||
|
||||
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 jSDL2.o ${SRC}/jSDL2.c
|
||||
${CC} ${CFLAGS} -o joey.o ${SRC}/joey.c
|
||||
|
@ -361,18 +363,19 @@ function doBuild() {
|
|||
if [[ -z ${BUILD_PROJECT} ]]; then
|
||||
BUILD_PROJECT=${LINE}
|
||||
# Generate a list of non-source files.
|
||||
for FILE in $(ls -1); do
|
||||
if [[ "${FILE}" != "build.start" && "${FILE}" != "build.temp" && "${FILE}" != "build.tar.bz2" && "${FILE}" != "results" ]]; then
|
||||
EXTENSION="${FILE##*.}"
|
||||
if [[ "${EXTENSION}" != "c" && "${EXTENSION}" != "h" && "${EXTENSION}" != "asm" && "${EXTENSION}" != "macro" && "${EXTENSION}" != "inc" ]]; then
|
||||
DATA+=(${FILE})
|
||||
for FILE in $(ls -1B); do
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
if [[ "${FILE}" != "build.start" && "${FILE}" != "build.temp" && "${FILE}" != "build.tar.bz2" ]]; then
|
||||
EXTENSION="${FILE##*.}"
|
||||
if [[ "${EXTENSION}" != "c" && "${EXTENSION}" != "h" && "${EXTENSION}" != "asm" && "${EXTENSION}" != "macro" && "${EXTENSION}" != "inc" ]]; then
|
||||
DATA+=(${FILE})
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# Generate a list of C files to compile.
|
||||
CFILES=($(ls -1 *.c))
|
||||
else
|
||||
BUILD_PLATFORMS="${BUILD_PLATFORMS}${LINE,,} "
|
||||
case ${LINE,,} in
|
||||
iigs)
|
||||
setCompiler gsos 816
|
||||
|
@ -423,78 +426,89 @@ function doBuild() {
|
|||
EXT=.exe
|
||||
;;
|
||||
|
||||
*)
|
||||
TARGET=
|
||||
|
||||
esac
|
||||
|
||||
LOG="${BUILD_RESULTS}/build.${LINE,,}"
|
||||
LIB="${DIST}/${NAME}-${ARCH}"
|
||||
if [[ ! -z "${TARGET}" ]]; then
|
||||
|
||||
[[ -d "${TARGET}" ]] && rm -rf "${TARGET}"
|
||||
mkdir -p "${TARGET}"
|
||||
BUILD_PLATFORMS="${BUILD_PLATFORMS}${LINE,,} "
|
||||
LOG="${BUILD_RESULTS}/build.${LINE,,}"
|
||||
LIB="${DIST}/${NAME}-${ARCH}"
|
||||
|
||||
[[ -d "${TARGET}" ]] && rm -rf "${TARGET}"
|
||||
mkdir -p "${TARGET}"
|
||||
|
||||
mkdir -p ${BUILD_RESULTS}/${LINE,,}
|
||||
|
||||
# Make sure we have the official JoeyLib header.
|
||||
cp -f "${DIST}/joey.h" "${SOURCE}/."
|
||||
|
||||
case ${BACKEND} in
|
||||
orca)
|
||||
#***TODO*** Somehow pass in -DBUILD_SERVER
|
||||
# Compile C files and generate object list.
|
||||
OFILES=""
|
||||
for FILE in "${CFILES[@]}"; do
|
||||
O=${FILE%.*}
|
||||
OFILES="${OFILES} ${GSTARGET}/${O}"
|
||||
iix compile ${FILE} keep=${GSTARGET}/${O}
|
||||
done
|
||||
# We need a local copy of JoeyLib to link.
|
||||
cp -f "${LIB}/jIIgsc.a#b10000" "${TARGET}/jIIgsc.a"
|
||||
cp -f "${LIB}/jIIgsc.root#b10000" "${TARGET}/jIIgsc.root"
|
||||
cp -f "${LIB}/jIIgsasm.a#b10000" "${TARGET}/jIIgsasm.a"
|
||||
cp -f "${LIB}/jIIgsasm.root#b10000" "${TARGET}/jIIgsasm.root"
|
||||
cp -f "${LIB}/joey.a#b10000" "${TARGET}/joey.a"
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsc.a
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsc.root
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsasm.a
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsasm.root
|
||||
iix chtyp -t obj ${GSTARGET}/joey.a
|
||||
# Add our library files to OFILES
|
||||
OFILES="${GSTARGET}/jIIgsc ${GSTARGET}/joey ${GSTARGET}/jIIgsasm ${OFILES}"
|
||||
# Link.
|
||||
iix -DKeepType=S16 link ${OFILES} keep=${GSTARGET}/${BUILD_PROJECT}#b3db03
|
||||
# Create disk image, setting known file types
|
||||
DISK=${BUILD_RESULTS}/${LINE,,}/build.po
|
||||
${CADIUS} createvolume ${DISK} ${BUILD_PROJECT} 32MB
|
||||
${CADIUS} createfolder ${DISK} ${BUILD_PROJECT}/data
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT} ${TARGET}/${BUILD_PROJECT}#b3db03
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT}/data ${LIB}/Tool222#ba0000
|
||||
# Copy game data.
|
||||
for FILE in "${DATA[@]}"; do
|
||||
#***TODO*** Data conversion here!
|
||||
O=`basename ${FILE}`#060000
|
||||
cp -f ${FILE} ${O}
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT}/data ${O}
|
||||
rm ${O}
|
||||
done
|
||||
;;
|
||||
|
||||
SDL2)
|
||||
export CFLAGS="${CFLAGS} -DBUILD_SERVER -Wall -D_REENTRANT_ -I${DIST}"
|
||||
# Compile C files and generate object list.
|
||||
OFILES=""
|
||||
for FILE in "${CFILES[@]}"; do
|
||||
O=${FILE%.*}.o
|
||||
OFILES="${OFILES} ${TARGET}/${O}"
|
||||
${CC} ${CFLAGS} -c ${FILE} -o ${TARGET}/${O}
|
||||
done
|
||||
# Link.
|
||||
${CC} ${CFLAGS} -o ${BUILD_RESULTS}/${LINE,,}/${BUILD_PROJECT}${EXT} ${OFILES} ${LIB}/libjoeylib.a -lm -ldl -lpthread
|
||||
# Copy game data.
|
||||
for FILE in "${DATA[@]}"; do
|
||||
#***TODO*** Data conversion here!
|
||||
cp -f ${FILE} ${BUILD_RESULTS}/${LINE,,}/.
|
||||
done
|
||||
;;
|
||||
esac
|
||||
mkdir -p ${BUILD_RESULTS}/${LINE,,}
|
||||
|
||||
# Make sure we have the official JoeyLib header.
|
||||
cp -f "${DIST}/joey.h" "${SOURCE}/."
|
||||
|
||||
case ${BACKEND} in
|
||||
orca)
|
||||
#***TODO*** Somehow pass in -DBUILD_SERVER
|
||||
# Compile C files and generate object list.
|
||||
OFILES=""
|
||||
for FILE in "${CFILES[@]}"; do
|
||||
O=${FILE%.*}
|
||||
OFILES="${OFILES} ${GSTARGET}/${O}"
|
||||
iix compile ${FILE} keep=${GSTARGET}/${O}
|
||||
done
|
||||
# We need a local copy of JoeyLib to link.
|
||||
cp -f "${LIB}/jIIgsc.a#b10000" "${TARGET}/jIIgsc.a"
|
||||
cp -f "${LIB}/jIIgsc.root#b10000" "${TARGET}/jIIgsc.root"
|
||||
cp -f "${LIB}/jIIgsasm.a#b10000" "${TARGET}/jIIgsasm.a"
|
||||
cp -f "${LIB}/jIIgsasm.root#b10000" "${TARGET}/jIIgsasm.root"
|
||||
cp -f "${LIB}/joey.a#b10000" "${TARGET}/joey.a"
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsc.a
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsc.root
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsasm.a
|
||||
iix chtyp -t obj ${GSTARGET}/jIIgsasm.root
|
||||
iix chtyp -t obj ${GSTARGET}/joey.a
|
||||
# Add our library files to OFILES
|
||||
OFILES="${GSTARGET}/jIIgsc ${GSTARGET}/joey ${GSTARGET}/jIIgsasm ${OFILES}"
|
||||
# Link.
|
||||
iix -DKeepType=S16 link ${OFILES} keep=${GSTARGET}/${BUILD_PROJECT}#b3db03
|
||||
rm -f *.sym || true
|
||||
# Create disk image, setting known file types
|
||||
DISK=${BUILD_RESULTS}/${LINE,,}/build.po
|
||||
${CADIUS} createvolume ${DISK} ${BUILD_PROJECT} 32MB
|
||||
${CADIUS} createfolder ${DISK} ${BUILD_PROJECT}/data
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT} ${TARGET}/${BUILD_PROJECT}#b3db03
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT}/data ${LIB}/Tool222#ba0000
|
||||
# Copy game data.
|
||||
for FILE in "${DATA[@]}"; do
|
||||
#***TODO*** Data conversion here!
|
||||
O=`basename ${FILE}`#060000
|
||||
cp -f ${FILE} ${O}
|
||||
${CADIUS} addfile ${DISK} ${BUILD_PROJECT}/data ${O}
|
||||
rm ${O}
|
||||
done
|
||||
;;
|
||||
|
||||
SDL2)
|
||||
export CFLAGS="${CFLAGS} -I${DIST}"
|
||||
# Compile C files and generate object list.
|
||||
OFILES=""
|
||||
for FILE in "${CFILES[@]}"; do
|
||||
O=${FILE%.*}.o
|
||||
OFILES="${OFILES} ${TARGET}/${O}"
|
||||
${CC} ${CFLAGS} -c ${FILE} -o ${TARGET}/${O}
|
||||
done
|
||||
# Link.
|
||||
${CC} ${CFLAGS} -o ${BUILD_RESULTS}/${LINE,,}/${BUILD_PROJECT}${EXT} ${LDFIRST} ${OFILES} ${LIB}/libjoeylib.a ${LDFLAGS}
|
||||
# Copy game data.
|
||||
mkdir -p ${BUILD_RESULTS}/${LINE,,}/data
|
||||
for FILE in "${DATA[@]}"; do
|
||||
#***TODO*** Data conversion here!
|
||||
cp -f ${FILE} ${BUILD_RESULTS}/${LINE,,}/data/.
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
done < build.start
|
||||
|
||||
|
@ -517,36 +531,28 @@ function doInstall() {
|
|||
buildMacOSSDK MacOSX10.13.sdk.tar.xz macos-intel
|
||||
buildMacOSSDK MacOSX11.3.sdk.tar.xz macos-apple
|
||||
|
||||
setCompiler gsos 816
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler linux i386
|
||||
buildSDL2 ${SDL2_NEW}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler linux x86_64
|
||||
buildSDL2 ${SDL2_NEW}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler macos i386
|
||||
buildSDL2 ${SDL2_OLD}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler macos x86_64
|
||||
buildSDL2 ${SDL2_OLD}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler macos arm
|
||||
buildSDL2 ${SDL2_NEW}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler windows i386
|
||||
buildSDL2 ${SDL2_NEW}
|
||||
buildJoeyLib
|
||||
|
||||
setCompiler windows x86_64
|
||||
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() {
|
||||
local OS=$1
|
||||
local CPU=$2
|
||||
|
@ -608,18 +641,21 @@ function setCompiler() {
|
|||
NAME="linux-intel"
|
||||
ARCH=i386
|
||||
TRIPLE="x86_64-linux-gnu"
|
||||
export CFLAGS="-m32"
|
||||
export CFLAGS="-m32 -DBUILD_SERVER -Wall -D_REENTRANT_"
|
||||
export LDFLAGS="-lm -ldl -lpthread"
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
NAME="linux-intel"
|
||||
ARCH=x86_64
|
||||
TRIPLE="${ARCH}-linux-gnu"
|
||||
export CFLAGS=
|
||||
export CFLAGS="-DBUILD_SERVER -Wall -D_REENTRANT_"
|
||||
export LDFLAGS="-lm -ldl -lpthread"
|
||||
;;
|
||||
|
||||
esac
|
||||
BACKEND=SDL2
|
||||
LDFIRST=
|
||||
export PATH=${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=
|
||||
export CC=${TRIPLE}-gcc
|
||||
|
@ -632,29 +668,33 @@ function setCompiler() {
|
|||
NAME="macos-intel"
|
||||
ARCH=i386
|
||||
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)
|
||||
NAME="macos-intel"
|
||||
ARCH=x86_64
|
||||
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)
|
||||
NAME="macos-apple"
|
||||
ARCH=aarch64
|
||||
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
|
||||
BACKEND=SDL2
|
||||
export CFLAGS=
|
||||
export PATH=${HOME}/cross/${NAME}/bin:${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=${HOME}/cross/${NAME}/lib
|
||||
LDFIRST=
|
||||
export CFLAGS="-DBUILD_SERVER -Wall -D_THREAD_SAFE"
|
||||
export PATH=${EHOME}/cross/${NAME}/bin:${OLD_PATH}
|
||||
export LD_LIBRARY_PATH=${EHOME}/cross/${NAME}/lib
|
||||
export CC=${TRIPLE}-clang
|
||||
export AR=${TRIPLE}-ar
|
||||
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)
|
||||
|
@ -673,16 +713,18 @@ function setCompiler() {
|
|||
|
||||
esac
|
||||
BACKEND=SDL2
|
||||
LDFIRST="-lmingw32"
|
||||
export PATH=${OLD_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 AR=${TRIPLE}-ar
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
INSTALLED=${HOME}/installed/${NAME}-${ARCH}
|
||||
INSTALLED=${EHOME}/installed/${NAME}-${ARCH}
|
||||
mkdir -p ${INSTALLED}
|
||||
}
|
||||
|
||||
|
@ -707,6 +749,10 @@ function scriptIsDownloaded() {
|
|||
doInstall "${2}" "${3}"
|
||||
;;
|
||||
|
||||
rebuild)
|
||||
rebuildJoeyLib
|
||||
;;
|
||||
|
||||
server)
|
||||
startBuildServer "${2}"
|
||||
;;
|
||||
|
@ -716,6 +762,7 @@ function scriptIsDownloaded() {
|
|||
echo "${0} build DIST SRC"
|
||||
echo "${0} del USER"
|
||||
echo "${0} install GGUSER GGPASS"
|
||||
echo "${0} rebuild"
|
||||
echo "${0} server DIST"
|
||||
;;
|
||||
esac
|
||||
|
|
Loading…
Add table
Reference in a new issue