Skip to content

Commit 908b003

Browse files
authored
Merge pull request #1 from RISC-OS-Community/chore/sync-from-template
Sync from template@f8d66f19008a83a464bfbd2b68fb02fe220b091b
2 parents f8d66f1 + be3eca8 commit 908b003

File tree

1 file changed

+76
-48
lines changed

1 file changed

+76
-48
lines changed

.rocog/scripts/ux-src

Lines changed: 76 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,41 @@ debug=0
3939
# Display command usage:
4040
function usage()
4141
{
42-
echo "Usage: ux-src [gen|clean] [path]"
43-
echo "gen: generate ux-src directory"
44-
echo "clean: remove ux-src directory"
42+
echo " Usage: ux-src <gen|clean> <github|local> [path]"
43+
echo " gen, generate ux-src directory"
44+
echo " clean, remove ux-src directory"
45+
echo "github, GitHub Actions environment"
46+
echo " local, local environment"
47+
echo " path, the path to the source tree (optional)"
4548
}
4649

4750
# Link files from directory f_dir to directory ux-src with extension f_ext:
4851
function link_files()
4952
{
50-
local src_dir="$1"
51-
local dst_dir="$2"
52-
local f_dir="$3"
53-
local f_ext="$4"
54-
if [ -d ${src_dir}/${f_dir} ]
53+
local dir_type="$1"
54+
local src_dir="$2"
55+
local dst_dir="$3"
56+
local f_dir="$4"
57+
local f_ext="$5"
58+
local srch_path=""
59+
local x="$(basename ${src_dir})"
60+
if [ "$dir_type" != "2" ];
5561
then
56-
for f in ${src_dir}/${f_dir}/*
62+
srch_path="${src_dir}/${f_dir}"
63+
else
64+
if [ "${x}" == "${f_dir}" ];
65+
then
66+
srch_path="${src_dir}"
67+
dst_dir="$(dirname ${dst_dir})"
68+
else
69+
return
70+
fi
71+
fi
72+
if [ -d ${srch_path} ];
73+
then
74+
for f in ${srch_path}/*
5775
do
58-
if [ ! -f ${f} ]
76+
if [ ! -f "${f}" ]
5977
then
6078
continue
6179
else
@@ -100,53 +118,54 @@ function check_path()
100118
# check for files with the known directory structure and link them in
101119
# the ux-src directory with their appropriate extension:
102120
function find_files_and_link() {
103-
local src_dir="$1"
104-
local dst_dir="$2"
121+
local dir_type="$1"
122+
local src_dir="$2"
123+
local dst_dir="$3"
105124

106125
# Link C files (if any):
107-
link_files "${src_dir}" "${dst_dir}" "c" "c"
108-
link_files "${src_dir}" "${dst_dir}" "C" "c"
126+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "c" "c"
127+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "C" "c"
109128

110129
# Link C++ files (if any):
111-
link_files "${src_dir}" "${dst_dir}" "cpp" "cpp"
112-
link_files "${src_dir}" "${dst_dir}" "CPP" "cpp"
113-
link_files "${src_dir}" "${dst_dir}" "cxx" "cxx"
114-
link_files "${src_dir}" "${dst_dir}" "CXX" "cxx"
115-
link_files "${src_dir}" "${dst_dir}" "cc" "cc"
116-
link_files "${src_dir}" "${dst_dir}" "CC" "cc"
117-
link_files "${src_dir}" "${dst_dir}" "c++" "cpp"
118-
link_files "${src_dir}" "${dst_dir}" "C++" "cpp"
130+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cpp" "cpp"
131+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CPP" "cpp"
132+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cxx" "cxx"
133+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CXX" "cxx"
134+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "cc" "cc"
135+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "CC" "cc"
136+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "c++" "cpp"
137+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "C++" "cpp"
119138

120139
# Link C++ header files (if any):
121-
link_files "${src_dir}" "${dst_dir}" "hpp" "hpp"
122-
link_files "${src_dir}" "${dst_dir}" "HPP" "hpp"
123-
link_files "${src_dir}" "${dst_dir}" "hxx" "hxx"
124-
link_files "${src_dir}" "${dst_dir}" "HXX" "hxx"
140+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "hpp" "hpp"
141+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "HPP" "hpp"
142+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "hxx" "hxx"
143+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "HXX" "hxx"
125144

126145
# Link C header files (if any):
127-
link_files "${src_dir}" "${dst_dir}" "h" "h"
128-
link_files "${src_dir}" "${dst_dir}" "H" "h"
146+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "h" "h"
147+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "H" "h"
129148

130149
# Link Assembler files (if any):
131-
link_files "${src_dir}" "${dst_dir}" "s" "s"
132-
link_files "${src_dir}" "${dst_dir}" "S" "s"
133-
link_files "${src_dir}" "${dst_dir}" "Hdr" "s"
150+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "s" "s"
151+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "S" "s"
152+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "Hdr" "s"
134153

135154
# Link Forth files (if any):
136-
link_files "${src_dir}" "${dst_dir}" "fth" "fth"
137-
link_files "${src_dir}" "${dst_dir}" "FTH" "fth"
155+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "fth" "fth"
156+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "FTH" "fth"
138157

139158
# Link Pascal and Prolog files (if any):
140-
link_files "${src_dir}" "${dst_dir}" "p" "p"
141-
link_files "${src_dir}" "${dst_dir}" "P" "p"
159+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "p" "p"
160+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "P" "p"
142161

143162
# Link Perl files (if any):
144-
link_files "${src_dir}" "${dst_dir}" "pl" "pl"
145-
link_files "${src_dir}" "${dst_dir}" "PL" "pl"
163+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "pl" "pl"
164+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "PL" "pl"
146165

147166
# Link BASIC files (if any):
148-
link_files "${src_dir}" "${dst_dir}" "bas" "bas"
149-
link_files "${src_dir}" "${dst_dir}" "BAS" "bas"
167+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "bas" "bas"
168+
link_files "${dir_type}" "${src_dir}" "${dst_dir}" "BAS" "bas"
150169

151170
# Find and link local files
152171
# (that may also be called Makefile.unix etc.):
@@ -162,11 +181,14 @@ function find_files_and_link() {
162181
fname="$(echo ${fname} | sed 's/,.*//')"
163182
local fext="$(echo ${fname} | sed 's/^.*\.//')"
164183
# Skip files with extensions: .o, .a, .so
165-
if [ "${fext}" == "o" ] || [ "${fext}" == "a" ] || [ "${fext}" == "so" ] || [[ "${fext}" =~ "so\..*" ]];
184+
if [ "${fext}" == "o" ] || [ "${fext}" == "a" ] ||
185+
[ "${fext}" == "od" ] || [ "${fext}" == "oz" ] ||
186+
[ "${fext}" == "odz" ] || [ "${fext}" == "so" ] ||
187+
[[ "${fext}" =~ "so\..*" ]];
166188
then
167189
continue
168190
fi
169-
if [ -f ${f} ];
191+
if [ -f "${f}" ];
170192
then
171193
if [ "$env" == "github" ]
172194
then
@@ -190,27 +212,33 @@ function gen_dirs()
190212
if [ ! -d "${d}" ]
191213
then
192214
local dname2="$(echo ${d} | sed 's/^.*\/src\///')"
193-
find_files_and_link "${d}" "${curr_dir}/ux-src/${dname2}"
215+
find_files_and_link "0" "${d}" "${curr_dir}/ux-src/${dname2}"
194216
else
195217
local dname="$(basename "${d}")"
196218
check_path "${dname}"
197219
local rval=$?
198220
if [ $rval -eq 1 ];
199221
then
200-
local dname2="$(echo ${d} | sed 's/^.*\/src\///')"
201-
find_files_and_link "${d}" "${curr_dir}/ux-src/${dname2}"
222+
#local dname2="$(echo ${d} | sed 's/^.*\/src\///')"
223+
local dname2="${d#*/src/}"
224+
if [ "${dname2}" != "" ]
225+
then
226+
find_files_and_link "2" "${d}" "${curr_dir}/ux-src/${dname2}"
227+
fi
202228
else
203229
local dname2="$(echo ${d} | sed 's/^.*\/src\///')"
204230
echo -n "Processing: ${dname2} ... "
205231
local dname3="$(basename ${dname2})"
206-
if [ "${dname3}" != "o" ];
232+
if [ "${dname3}" != "o" ] && [ "${dname3}" != "a" ] &&
233+
[ "${dname3}" != "od" ] && [ "${dname3}" != "oz" ] &&
234+
[ "${dname3}" != "odz" ] && [ "${dname3}" != "so" ] ;
207235
then
208236
# Skip the o directory (it's not required in the UX world)
209237
# process everythign else:
210238
if [ ! -d "${curr_dir}/ux-src/${dname2}" ]
211239
then
212240
mkdir -p "${curr_dir}/ux-src/${dname2}"
213-
find_files_and_link "${d}" "${curr_dir}/ux-src/${dname2}"
241+
find_files_and_link "${rval}" "${d}" "${curr_dir}/ux-src/${dname2}"
214242
fi
215243
echo "ok"
216244
# Recursive call to explore the sub-directory
@@ -259,7 +287,7 @@ then
259287
gen_dirs "${curr_path}"
260288

261289
# Link main Makefiles:
262-
if [ -f ${curr_dir}/src/Makefile* ]
290+
if compgen -G "${curr_dir}/src/Makefile*" > /dev/null;
263291
then
264292
for f in ${curr_dir}/src/Makefile*
265293
do
@@ -275,7 +303,7 @@ then
275303
fi
276304

277305
# Link the Build Script for Unix:
278-
if [ -f ${curr_dir}/src/MkGCC.sh ]
306+
if [ -f "${curr_dir}/src/MkGCC.sh" ]
279307
then
280308
if [ "$env" == "github" ]
281309
then

0 commit comments

Comments
 (0)