65 lines
2.2 KiB
Bash
Executable File
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
|