lazarus/tools/update_pkgfileslcl_inc.sh

48 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Author: Mattias Gaertner
#
# Abstract:
# Updates the list of files of the LCL package:
# lazarus/packager/pkgfileslcl.inc
#set -x
set -e
# find the lazarus directory
PrgPath=$0
if [ "${PrgPath:0:1}" != "/" ]; then
# path does not start with / => relative
PrgPath=$(pwd)/$PrgPath
fi
LazarusDir=${PrgPath%/tools/*}/
OutputFile=$LazarusDir"packager/pkgfileslcl.inc"
echo "{%MainUnit packagesystem.pas}" > $OutputFile
echo "// automatically created by tools/update_pkgfileslcl_inc.sh" >> $OutputFile
# cd into the lcl directory
cd $LazarusDir/lcl
# scan every LCL .pas/.pp file
for file in $(ls -1 *.pp *.pas widgetset/*.pp nonwin32/*.pp); do
echo $file
# get unit name
Unitname=$(egrep -i '^unit .*;' $file | sed -e 's/unit \+//I' -e 's/;.*//')
if [ -n "$Unitname" ]; then
# check if 'procedure Register;' exists
Flags=""
if [ -n "$(egrep -i 'procedure register;' $file)" ]; then
Flags="pffHasRegisterProc"
fi
Line="AddFile('"$file"','"$Unitname"',pftUnit,["$Flags"],cpBase);"
echo $Line >> $OutputFile
fi
done
echo "" >> $OutputFile
# end.