<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Here is an updated summary of my experience building Ipopt 3.10.1 and the Matlab interface for it on Mac OS X 10.6 Snow Leopard and 10.7 Lion. I believe I have now built all combinations&nbsp;of the following:</div><div><br></div><div><font class="Apple-style-span" face="Courier">OS</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; S = built on Snow Leopard (10.6.8), dev tools from Xcode 3.2.6</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; L =&nbsp;</font><span class="Apple-style-span" style="font-family: Courier; ">built on</span><span class="Apple-style-span" style="font-family: Courier; ">&nbsp;</span><span class="Apple-style-span" style="font-family: Courier; ">Lion (10.7.2), dev tools from Xcode 4.2</span></div><div><font class="Apple-style-span" face="Courier">Linear Solver</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; M = MUMPS</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; H = HSL MA57</font></div><div><font class="Apple-style-span" face="Courier">Blas/Lapack</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; N = Netlib BLAS/LAPACK</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; A = native OS X optimized BLAS/LAPACK included in Accelerate/vecLib framework [1]</font></div><div><font class="Apple-style-span" face="Courier">32 vs 64 bit</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; 32 = 32-bit build (with Matlab R2011b)</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; 64 = 64-bit build (with Matlab R2010a)</font></div><div><br></div><div>For shorthand, I'll use the letters above to distinguish between the options in the build instructions below.</div><div><br></div><div>While I have been able to build all combinations above, it appears there is an issue with the BLAS/LAPACK in Lion's Accelerate/vecLib framework [2] that causes Ipopt to frequently fail. So the only binaries that I could get to work reliably on Lion were those built (on Snow Leopard or Lion) with the Netlib BLAS.</div><div><br></div><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 (I used the ones from <a href="http://r.research.att.com/tools/">http://r.research.att.com/tools/</a>)</div><div>&nbsp; &nbsp; S : gfortran-42-5664.pkg (<a href="http://r.research.att.com/gfortran-42-5664.pkg">http://r.research.att.com/gfortran-42-5664.pkg</a>)</div><div>&nbsp; &nbsp; L : gfortran-lion-5666-3.pkg (<a href="http://r.research.att.com/gfortran-lion-5666-3.pkg">http://r.research.att.com/gfortran-lion-5666-3.pkg</a>)</div></div><div><br></div><div>3. Download Ipopt and set up build environment.</div><div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; cd ~/build (this is where I build things)</span></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/Metis/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; ./get.Metis</font></div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1</font></div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; mkdir build64</font></div></font><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; mkdir build32</font></div></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div>4. Choose and set up BLAS</div><div>&nbsp; N - download Netlib BLAS/LAPACK</div><div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1/ThirdParty/Blas/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; ./get.Blas</font></div></div><div><font class="Apple-style-span" face="Courier"></font></div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1/ThirdParty/Lapack/</font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; ./get.Lapack</font></div></div><div><font class="Apple-style-span" face="Courier"></font></div><div>&nbsp; A - do nothing</div></div><div><div><br></div><div>5. Choose and set up linear solver</div><div>&nbsp; M - get Mumps</div><div><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><div><font class="Apple-style-span" face="Courier"></font></div></div><div>&nbsp; H - download latest source&nbsp;(coinhsl-2011.10.03.tar.gz)&nbsp;from&nbsp;<a href="http://www.hsl.rl.ac.uk/ipopt/">http://www.hsl.rl.ac.uk/ipopt/</a></div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; cd ~/build</font></div></div><div><font class="Apple-style-span" face="Courier"><div>&nbsp; &nbsp; tar zxvf ~/Downloads/coinhsl-2011.10.03.tar.gz</div><div>&nbsp; &nbsp; cd ~/build/coinhsl-2011.10.03</div><div>&nbsp; &nbsp; cp mc19/mc19d.f ../Ipopt-3.10.1/ThirdParty/HSL/mc19ad.f</div><div>&nbsp; &nbsp; cat ma57/ma57d.f common/deps.f &gt; ../Ipopt-3.10.1/ThirdParty/HSL/ma57ad.f</div><div><br></div></font><div>6. Configure Ipopt build, depends on N vs A and 32 vs 64 bit, so choose the appropriate one:</div></div><div>&nbsp; N64</div><div>&nbsp;&nbsp;<span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build64</span></div><div><font class="Apple-style-span" face="Courier"><div>&nbsp; &nbsp; ../configure --with-blas=BUILD \</div><div>&nbsp; &nbsp; &nbsp; --with-lapack=BUILD F77=gfortran \</div><div>&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m64 -fbackslash" \</div><div>&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</div><div>&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</div><div>&nbsp; &nbsp; &nbsp; -disable-shared</div></font>&nbsp; N32</div><div>&nbsp; &nbsp;<span class="Apple-style-span" style="font-family: Courier; ">&nbsp; cd ~/build/Ipopt-3.10.1/build32</span></div><div><span class="Apple-style-span" style="font-family: Courier; "><div>&nbsp; &nbsp; ../configure --with-blas=BUILD \</div><div>&nbsp; &nbsp; &nbsp; --with-lapack=BUILD F77=gfortran \</div><div>&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m32 -fbackslash" \</div><div>&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</div><div>&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</div><div>&nbsp; &nbsp; &nbsp; &nbsp;-disable-shared</div></span>&nbsp; A64</div><div>&nbsp;&nbsp;<span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp;cd ~/build/Ipopt-3.10.1/build64</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; ../configure --with-blas="-framework Accelerate" \</span></div><div><font class="Apple-style-span" face="Courier"><div><div>&nbsp; &nbsp; &nbsp; --with-lapack="" F77=gfortran \</div><div>&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m64 -fbackslash" \</div><div>&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</div><div>&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch x86_64 -m64" \</div><div>&nbsp; &nbsp; &nbsp; -disable-shared</div></div></font>&nbsp; A32</div><div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1/build32</span></div><div><span class="Apple-style-span" style="font-family: Courier; "><div>&nbsp; &nbsp; ../configure --with-blas="-framework Accelerate" \</div><div>&nbsp; &nbsp; &nbsp; --with-lapack="" F77=gfortran \</div><div>&nbsp; &nbsp; &nbsp; FFLAGS="-fexceptions -m32 -fbackslash" \</div><div>&nbsp; &nbsp; &nbsp; CFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</div><div>&nbsp; &nbsp; &nbsp; CXXFLAGS="-fno-common -no-cpp-precomp -fexceptions -arch i386 -m32" \</div><div>&nbsp; &nbsp; &nbsp; -disable-shared</div></span><div><br></div>7. Build, test and install Ipopt</div></div></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; make</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; make test</span></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; make install</font></div><div><br></div><div><div>8. Set up Matlab MEX environment (depends on N vs A and 32 vs 64 bit)</div></div><div>&nbsp; N64</div><div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; in Matlab R2011b:</font></div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; mex -setup (select option 1)</font></div></div><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; edit 'maci64' section of ~/.matlab/R2011b/mexopts.sh:</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; change 'libgfortran.dylib' to 'libgfortran.a' in FC_LIBDIR line</font></div><div style="font-family: Helvetica; "><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 style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to work on machines without gfortran installed)</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; remove '-Wl,-syslibroot,$SDKROOT' from LDFLAGS line</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(otherwise it can't find gfortran libraries)</font></div><div style="font-family: Helvetica; ">&nbsp; N32</div></font></div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; in Matlab R2010a:</font></div><div><div><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; mex -setup (select option 1 or 2)</font></div></div><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; edit 'maci' section of ~/.matlab/R2010a/mexopts.sh:</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; (same as for N64)</font></div><div style="font-family: Helvetica; ">&nbsp; A64</div></font></div><div>&nbsp;&nbsp;<span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp;same as N64, with following addition to mexopts.sh edit:</span></div><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; add line:</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; LDFLAGS="$LDFLAGS -framework Accelerate"</font></div></font>&nbsp; A32</div><div><div><font class="Apple-style-span" face="Courier"><div>&nbsp;&nbsp;<span class="Apple-style-span" style="font-family: Courier; ">&nbsp; same as N32, with following addition to mexopts.sh edit:</span></div><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; add line:</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; LDFLAGS="$LDFLAGS -framework Accelerate"</font></div></font></div></font><div><br></div>9. Build MEX file&nbsp;(depends on N vs A and 32 vs 64 bit)</div></div></div></div><div><div>&nbsp; N64</div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1/build64/Ipopt/contrib/MatlabInterface/src</span></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; all duplicates</font></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; &nbsp; &nbsp; -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../..</span></div><div><font class="Apple-style-span" face="Courier">&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;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><div>&nbsp; N32</div></div><div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; cd ~/build/Ipopt-3.10.1/build32/Ipopt/contrib/MatlabInterface/src</span></div></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; edit Makefile, make the following changes:</span><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MATLAB_HOME = /Applications/MATLAB_R2010a.app</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; MEXSUFFIX &nbsp; = mexmaci</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; delete from LIBS line:</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Courier">&nbsp; &nbsp; &nbsp; &nbsp; (same as N64)</font></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; &nbsp; add '-maci' to MEXFLAGS</span></div></font><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></div><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; "><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; ">&nbsp; A64</div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; same as N64 with following exception</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; in LIBS line of Makefile:</span></div></font><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; &nbsp; delete all instances of '-framework Accelerate'</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; &nbsp; (this is added in mexopts.sh now)</span></div></div></font><div><font class="Apple-style-span" face="Courier"><div style="font-family: Helvetica; ">&nbsp; A32</div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; same as N32 with following exception</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; in LIBS line of Makefile:</span></div></font><span class="Apple-style-span" style="font-family: Courier; ">&nbsp; &nbsp; &nbsp; delete all instances of '-framework Accelerate'</span></div><div><font class="Apple-style-span" face="Courier"><br></font></div></div></div><div>Hopefully, this will be a help to others who want to build Ipopt and the Matlab interface for Mac.</div><div><br></div><div>[1] Mac OS X includes it's own optimized BLAS and LAPACK libraries in the vecLib framework, which is a sub-component of the Accelerate framework. I believe that using '-framework Accelerate' and '-framework vecLib' has the same effect and can be used interchangeably in this context.</div>[2] I think this is related to the issue mentioned here &lt;<a href="https://github.com/mxcl/homebrew/issues/6649#issuecomment-1666673">https://github.com/mxcl/homebrew/issues/6649#issuecomment-1666673</a>&gt;.<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; "><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></span></div></span></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>