<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I was finally able to successfully build Ipopt and the Matlab MEX interface (both 32-bit and 64-bit versions) on Mac OS X 10.6.8 (Snow Leopard). This is for the MUMPS linear solver ... next step is to try with Pardiso or something. Below are the details of what I did, in case it's helpful to anyone else.</div><div><br></div><div><div>This is for Mac OS X 10.6.8 with the dev tools from XCode 3.2.6, using Matlab R2011b for the 64-bit build and R2010a for the 32-bit build.</div><div><br></div><div>1. Install wget.</div><div>&nbsp; &nbsp;(I used wget-1.12 from <a href="http://www.merenbach.com/software/wget">http://www.merenbach.com/software/wget</a>)</div><div><br></div><div>2. Install gfortran</div><div>&nbsp; &nbsp;(I used gfortran-lion-5666-3.pkg from <a href="http://r.research.att.com/tools/">http://r.research.att.com/tools/</a>)</div><div><br></div><div>3. Download Ipopt and set up build environment.</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build (this is where I build things)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;tar zxvf ~/Downloads/Ipopt-3.10.1.tgz</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/ThirdParty/Mumps/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;./get.Mumps</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/ThirdParty/Metis/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;./get.Metis</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;mkdir build32</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;mkdir build64</font></div><div><br></div><div>4. Build 64-bit Ipopt</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build64</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;../configure --with-blas="-framework vecLib" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; --with-lapack="-framework vecLib" F77=gfortran \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m64 -fbackslash" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; -disable-shared</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make test</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make install</font></div><div><br></div><div>5. Set up 64-bit Matlab MEX environment</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;In Matlab R2011b:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; mex -setup (select option 1)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;edit 'maci64' section of ~/.matlab/R2011b/mexopts.sh:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; change 'libgfortran.dylib' to 'libgfortran.a' in FC_LIBDIR line</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(my gfortran includes only static libs, besides I want this</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to work on machines without gfortran installed)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; remove '-Wl,-syslibroot,$SDKROOT' from LDFLAGS line</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(otherwise it can't find gfortran libraries)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; add line:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LDFLAGS="$LDFLAGS -framework vecLib"</font></div><div><br></div><div>6. Build 64-bit MEX file</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build64/Ipopt/contrib/MatlabInterface/src</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;edit Makefile, make the following changes:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MATLAB_HOME = /Applications/MATLAB_R2011b.app</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MEXSUFFIX &nbsp; = mexmaci64</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; delete from LIBS line:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;all instances of '-framework vecLib' (4 instances in my case)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (this is added in mexopts.sh now)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../..</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (this causes it to find the wrong libmx.dylib</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;the one in /usr/lib rather than the Matlab one)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cp ipopt.mexmaci64 ~/Documents/MATLAB (or somewhere in your Matlab path)</font></div><div><br></div><div>7. Build 32-bit Ipopt</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build32</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;../configure --with-blas="-framework vecLib" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; --with-lapack="-framework vecLib" F77=gfortran \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m32 -fbackslash" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; -disable-shared</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make test</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make install</font></div><div><br></div><div>8. Set up 32-bit Matlab MEX environment</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;In Matlab R2010a:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; mex -setup (select option 1)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;edit 'maci' section of ~/.matlab/R2010a/mexopts.sh:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; (same as in step 5)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; change 'libgfortran.dylib' to 'libgfortran.a' in FC_LIBDIR line</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; remove '-Wl,-syslibroot,$SDKROOT' from LDFLAGS line</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; add line:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LDFLAGS="$LDFLAGS -framework vecLib"</font></div><div><br></div><div>9. Build 32-bit MEX file</div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build32/Ipopt/contrib/MatlabInterface/src</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;edit Makefile, make the following changes:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MATLAB_HOME = /Applications/MATLAB_R2010a.app</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MEXSUFFIX &nbsp; = mexmaci</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; delete from LIBS line:</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(same as in step 6)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;all instances of '-framework vecLib'</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../..</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;make</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp;cp ipopt.mexmaci ~/Documents/MATLAB (or somewhere in your Matlab path)</font></div></div><div><br></div><div><br></div><div>Hopefully, this will be a help to others who want to build Ipopt and the Matlab interface for Mac.</div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div>--&nbsp;</div><div>Ray Zimmerman</div><div>Senior Research Associate</div><div>419A Warren Hall, Cornell University, Ithaca, NY 14853</div><div>phone: (607) 255-9645</div><br class="Apple-interchange-newline"></span></div></span></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br></body></html>