On Sep 28, 2021, at 05:09, Michael Monschau wrote:
> 
> Background:
> I recently had the need to resort to some open software to add certain PDF 
> manipulation features to one of my products. The open source tool I am using 
> is podofo-0.9.7. That uses various other libraries including openssl. As part 
> of my own XCode project I have to link against crypto.dylib (linking against 
> the crypto.a library in XCode). 
> Note: I am using 'port install' with the ‘+universal’ flag as I need 
> universal libraries
> 
> The problem:
> I am building the macports libraries that I need on macOS 11.4. However, I 
> need the deployment target for my own xcode projects to be 10.13 and to avoid 
> hundreds of link warnings which may push out important ones, I need to 
> rebuild openssl with that deployment target set. I understand there is 
> CMAKE_OSX_DEPLOYMENT_TARGET and I can do set(CMAKE_OSX_DEPLOYMENT_TARGET 
> “10.13”), but I don’t know
>     1. where I do this (I was thinking in 
> '/opt/local/share/cmake-3.20/Modules/Platform/Darwin.cmake' but not sure)
>     2. how to force the rebuilding from source using cmake of the openssl 
> libraries via 'port install'

By default MacPorts builds for the current OS deployment target, i.e., if you 
are on macOS 11.x MacPorts builds for deployment target 11, and if you are on 
macOS 10.15.x MacPorts builds for deployment target 10.15.

You can instruct MacPorts to build for a different deployment target by editing 
macports.conf, e.g.

macosx_deployment_target 10.13

If you need to build using a different SDK, you can indicate that too:

macosx_sdk_version 10.13

You don't have the 10.13 SDK on a macOS 11 system by default, so you would need 
to get a copy and put it in the right place 
(/Library/Developer/CommandLineTools/SDKs/ for ports that build with the 
command line tools or 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
 for ports that build with Xcode).

Because these are undocumented and seldom-used options, you may encounter ports 
that do not respect these settings. If so, that would be a bug that we should 
fix and you could file a bug report or pull request, just be prepared for the 
likelihood of encountering these problems.

By default MacPorts fetches binaries for ports when it can. Those binaries were 
built with default deployment target and SDK settings. If you are trying to 
create a MacPorts installation using different settings for those values, you 
should uninstall all ports and, before installing any ports, disable the use of 
binaries by setting "buildfromsource always" in macports.conf.

You may want to leave your default prefix /opt/local untouched so that it 
builds with default settings and receives binaries, and set up a second 
MacPorts prefix somewhere else, such as /opt/local10.13. That way you remember 
that you've given /opt/local10.13 special settings, and you retain /opt/local 
and are still able to receive binaries when installing ports that are unrelated 
to your 10.13 deployment target project.

Another option if you are just looking for binaries pre-built for specific OS 
versions is to download them from our packages server, assuming binaries are 
available. For example, the latest openssl we compiled for macOS 10.13 is 
currently 
http://packages.macports.org/openssl/openssl-1.1.1l_1.darwin_17.x86_64.tbz2

Reply via email to