dosemu2/scripts/buildwithfdpp.sh
geos_one 91736529d5
Some checks failed
Master / Scheduled (FULL) (push) Has been cancelled
Master / Triggered (push) Has been cancelled
Master / Triggered (ASAN) (push) Has been cancelled
Master / Triggered (FULL) (push) Has been cancelled
New upstream version 2.0pre9.2
2025-08-10 12:35:43 +02:00

65 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
# Usage: ./buildwithfdpp.sh /path/to/fdpp.git --matchapi
# Notes:
# 1/ Copy this script to the top directory of the dosemu source,
# as it won't exist in earlier versions and will be removed
# during bisect checkouts.
# 2/ This script has been tested with dosemu2 / fdpp combinations to
# API 26..13 tags okay to configure, build and run FDPP plugin.
# API 12..11 tags okay to configure, build and run but with FS issues
# API <= 10 tags not tested
if [ ! -d src ] ; then
echo Run this script from the top directory of the dosemu2 source
exit 3
fi
FDPP_LIBRARY_SOURCE=$(realpath "$1")
if [ ! -d ${FDPP_LIBRARY_SOURCE} ] ; then
echo Local FDPP git directory \"${FDPP_LIBRARY_SOURCE}\" does\'t exist
exit 2
fi
FDPP_PLUGIN_SOURCE=src/plugin/fdpp/fdpp.c
if [ ! -f ${FDPP_PLUGIN_SOURCE} ] ; then
echo FDPP plugin was not implemented at this version of Dosemu2
exit 1
fi
FDPP_PLUGIN_VER=$(awk -F= '/FDPP_API_VER !=/{printf("%d", $2);}' ${FDPP_PLUGIN_SOURCE})
if [ -f "${FDPP_LIBRARY_SOURCE}/fdpp/thunks.h" ] ; then
THUNKS="${FDPP_LIBRARY_SOURCE}/fdpp/thunks.h"
else
THUNKS="${FDPP_LIBRARY_SOURCE}/include/fdpp/thunks.h"
fi
FDPP_LIBRARY_VER=$(awk -F" " '/#define FDPP_API_VER/{printf("%d", $3);}' "${THUNKS}")
if [ "${FDPP_PLUGIN_VER}" != "${FDPP_LIBRARY_VER}" ] ; then
if [ "$2" != "--matchapi" ] ; then
echo FDPP version mismatch in "${FDPP_LIBRARY_SOURCE}"
echo need API"${FDPP_PLUGIN_VER}" but have API"${FDPP_LIBRARY_VER}"
exit 1
fi
echo Building FDPP at API${FDPP_PLUGIN_VER}
(cd ${FDPP_LIBRARY_SOURCE} && git checkout -f API${FDPP_PLUGIN_VER} && make clean all)
fi
# make distclean
if grep -q fdpp-build-path default-configure ; then
CC=clang ./default-configure -d fdpp-build-path=${FDPP_LIBRARY_SOURCE}/fdpp \
fdpp-include-path=${FDPP_LIBRARY_SOURCE}/include && make
else
[ -d pkgconfig ] || mkdir pkgconfig
sed \
-e "s,^fdpplibdir=.*$,fdpplibdir=${FDPP_LIBRARY_SOURCE}/fdpp,g" \
-e "s,^fdppincdir=.*$,fdppincdir=${FDPP_LIBRARY_SOURCE},g" \
-e "s,^includedir=.*$,includedir=${FDPP_LIBRARY_SOURCE},g" \
${FDPP_LIBRARY_SOURCE}/fdpp/fdpp.pc > pkgconfig/fdpp.pc
env PKG_CONFIG_PATH=`pwd`/pkgconfig CC=clang ./default-configure -d && make
fi