Skip to content

Commit 802cde6

Browse files
committedJan 14, 2024
second bug test
1 parent 303b616 commit 802cde6

File tree

4 files changed

+809
-6
lines changed

4 files changed

+809
-6
lines changed
 

‎bin/cutest2matlab_macos

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#!/bin/bash
2+
###############################################################################
3+
#
4+
# cutest2matlab_macos: build the bridge between CUTEst and Matlab on macOS
5+
# without relying on Matlab gfortran support
6+
#
7+
# Adapted from cutest2matlab_osx by E. Tansley and J. Fowkes, December 2023.
8+
# Original version by D. Orban, June 2017, itself adapted from
9+
# cutest2matlab by Nick Gould for GALAHAD Productions, January 2013
10+
#
11+
###############################################################################
12+
13+
function help() {
14+
echo 'Use this script on macOS with gfortran and Apple Silicon Matlab R2023b or later.'
15+
echo 'The script *will not* work with earlier Legacy Intel versions of Matlab.'
16+
echo
17+
echo "Use: $(basename $0) PROBLEM[.SIF]"
18+
exit 0
19+
}
20+
21+
[[ $# > 0 && ("$1" == '-h' || "$1" == '--help') ]] && help
22+
23+
if [[ -z "$MYMATLABARCH" ]]; then
24+
if [[ -z "$MYARCH" ]]; then
25+
echo ' neither environment variable MYMATLABARCH nor MYARCH is set.'
26+
echo ' Set MYMATLABARCH as a gfortran-installed version from the list '
27+
/bin/ls -1 $CUTEST/versions 2>/dev/null
28+
echo ' and re-run.'
29+
exit 1
30+
else
31+
ARCH=${MYARCH}
32+
fi
33+
else
34+
ARCH=${MYMATLABARCH}
35+
fi
36+
echo $ARCH
37+
38+
# check that the architecture provided in MYMATLABARCH or MYARCH exists
39+
40+
if [[ ! -e $CUTEST/versions/$ARCH ]] ; then
41+
echo ' The architecture provided by the environment variables MYMATLABARCH'
42+
echo ' and MYARCH has not been installed. Install a gfortran version of'
43+
echo ' CUTEst unsing install_cutest and re-run.'
44+
exit 2
45+
fi
46+
47+
# check that a gfortran version is used (as this is what Matlab supports!)
48+
49+
if [[ ${ARCH##*.} != 'gfo' && ${ARCH##*.} != 'gfo47' ]] ; then
50+
echo ' The architecture provided by the environment variables MYMATLABARCH'
51+
echo ' (or otherwise MYARCH) must use the gfortran compiler. Install a '
52+
echo ' gfortran version of CUTEst unsing install_cutest and re-run.'
53+
exit 3
54+
fi
55+
56+
# decode
57+
[[ $# > 0 ]] && sifdecoder -A $ARCH -st $1
58+
59+
# build small shared library specific to problem being decoded
60+
EXTERF=$([[ -f "EXTER.f" ]] && echo "EXTER.f" || echo "")
61+
EXTERO=$([[ -f "EXTER.f" ]] && echo "EXTER.o" || echo "")
62+
gfortran -I/opt/homebrew/opt/cutest/libexec/modules/mac64.osx.gfo/ -c -fPIC -fno-second-underscore -flat_namespace -O -ffixed-form ELFUN.f RANGE.f GROUP.f $EXTERF
63+
PROB=$(basename $1 .SIF)
64+
gfortran -shared -o lib${PROB}.dylib ELFUN.o RANGE.o GROUP.o $EXTERO -L/opt/homebrew/lib -lcutest
65+
66+
# build and link mex file
67+
[[ -f ${PWD}/mcutest.o ]] || ${MYMATLAB}/bin/mex -c -I/opt/homebrew/opt/cutest/libexec/include /opt/homebrew/opt/cutest/libexec/src/matlab/mcutest.c
68+
${MYMATLAB}/bin/mex -cxx -I/opt/homebrew/opt/cutest/libexec/include -output mcutest ${PWD}/mcutest.o -L${PWD} -l${PROB} -L/opt/homebrew/lib -lcutest
69+
70+
exit 0

‎bin/install_cutest_main

+30-6
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,41 @@ PKGDIR=$CUTEST/packages/$VERSION
5252

5353
echo "$MACHINE ($OPSYS) $COMPUSED" > $CUTEST/versions/$VERSION
5454

55+
5556
if [[ ! -e $OBJDIR ]]; then
5657
$MKDIR $OBJDIR
57-
$MKDIR $OBJDIR/double $OBJDIR/single
58+
$MKDIR $OBJDIR/double $OBJDIR/single $OBJDIR/double_64 $OBJDIR/single_64
5859
else
59-
[[ ! -e $OBJDIR/double ]] && $MKDIR $OBJDIR/double
60-
[[ ! -e $OBJDIR/single ]] && $MKDIR $OBJDIR/single
60+
if [[ ! -e $OBJDIR/double ]]; then
61+
$MKDIR $OBJDIR/double
62+
fi
63+
if [[ ! -e $OBJDIR/single ]]; then
64+
$MKDIR $OBJDIR/single
65+
fi
66+
if [[ ! -e $OBJDIR/double_64 ]]; then
67+
$MKDIR $OBJDIR/double_64
68+
fi
69+
if [[ ! -e $OBJDIR/single_64 ]]; then
70+
$MKDIR $OBJDIR/single_64
71+
fi
6172
fi
6273

6374
if [[ ! -e $MODDIR ]]; then
6475
$MKDIR $MODDIR
65-
$MKDIR $MODDIR/double $MODDIR/single
76+
$MKDIR $MODDIR/double $MODDIR/single $OBJDIR/double_64 $OBJDIR/single_64
6677
else
67-
[[ ! -e $MODDIR/double ]] && $MKDIR $MODDIR/double
68-
[[ ! -e $MODDIR/single ]] && $MKDIR $MODDIR/single
78+
if [[ ! -e $MODDIR/double ]]; then
79+
$MKDIR $MODDIR/double
80+
fi
81+
if [[ ! -e $MODDIR/single ]]; then
82+
$MKDIR $MODDIR/single
83+
fi
84+
if [[ ! -e $OBJDIR/double_64 ]]; then
85+
$MKDIR $OBJDIR/double_64
86+
fi
87+
if [[ ! -e $OBJDIR/single_64 ]]; then
88+
$MKDIR $OBJDIR/single_64
89+
fi
6990
fi
7091

7192
[[ ! -e $PKGDIR ]] && $MKDIR $PKGDIR
@@ -119,6 +140,8 @@ echo 'PRECIS = double' >> $MAKEFILE
119140
echo 'OBJ = $(CUTEST)/objects/$(VERSION)/$(PRECIS)' >> $MAKEFILE
120141
echo 'OBJS = $(CUTEST)/objects/$(VERSION)/single' >> $MAKEFILE
121142
echo 'OBJD = $(CUTEST)/objects/$(VERSION)/double' >> $MAKEFILE
143+
echo 'OBJS64 = $(CUTEST)/objects/$(VERSION)/single_64' >> $MAKEFILE
144+
echo 'OBJD64 = $(CUTEST)/objects/$(VERSION)/double_64' >> $MAKEFILE
122145
echo 'MOD = $(CUTEST)/modules/$(VERSION)/$(PRECIS)' >> $MAKEFILE
123146
echo 'SEDS = $(CUTEST)/seds/$(PRECIS).sed' >> $MAKEFILE
124147
echo 'MVMODS = '"$MVMODS" >> $MAKEFILE
@@ -144,6 +167,7 @@ echo 'F95SUFFIX = '$F95SUFFIX >> $MAKEFILE
144167
echo 'TIMER = '$TIMER >> $MAKEFILE
145168
echo 'NOT95 = '$NOT95 >> $MAKEFILE
146169
echo 'NOT64 = '$NOT64 >> $MAKEFILE
170+
echo 'INTEGER = '$INTEGER >> $MAKEFILE
147171
echo ' ' >> $MAKEFILE
148172
echo 'AMPLDIR = '$AMPLLIBDIR >> $MAKEFILE
149173
echo 'CC = '$CC >> $MAKEFILE

0 commit comments

Comments
 (0)