[MacPorts] #69412: Thought bubble from my LTO PortGroup

MacPorts noreply at macports.org
Tue Feb 27 17:54:23 UTC 2024


#69412: Thought bubble from my LTO PortGroup
--------------------------------+--------------------
 Reporter:  RJVB                |      Owner:  (none)
     Type:  enhancement         |     Status:  new
 Priority:  Normal              |  Milestone:
Component:  base                |    Version:
 Keywords:  build optimisation  |       Port:
--------------------------------+--------------------
 Mostly thinking aloud :)

 I know at least one of the core devs is aware of the LTO PortGroup I have
 in my MacStrop tree and which provides an easy way to get builds with
 link-time and compiler optimisation.

 https://github.com/RJVB/macstrop/blob/master/_resources/port1.0/group/LTO-1.0.tcl

 This blurb is mostly about the `cpucompat` variant, which came to be as a
 means to generate code targetting the common subset of extended
 instructions (SSE* and the like). It allows me to build generic code that
 will run as optimally as possible on all CPUs I have in the house. For me
 that comes into play mostly when I boot a backup clone of my Linux root
 disk in a VM on my Mac, and is defined as

 {{{
 default LTO.compatcpu westmere
 default LTO.compatflags {-msse4.1 -msse4.2 -msse3 -mssse3 -msse2 -msse
 -mmmx -mpclmul}

 if {[variant_isset cpucompat]} {
     default LTO.cpuflags "-march=${LTO.compatcpu} [join ${LTO.compatflags}
 " "]"
 }
 }}}

 But MacPorts chiefly targets Apple's closed hardware universe, where I
 think we know exactly what minimum extended instruction set is available
 for each OS version. I'm not aware that Apple ever introduced new OS
 versions able to run on less capable processors so I don't think that one
 could end up in a situation where a port built for OS-i won't run on
 OS-i+1 .

 In other words, "base" should be able to define its own OS-specific
 equivalents for `cpucompat` and `compatflags` and then `-fvectorize` to
 the default compiler options (unless -O3 is now the default optimisation
 level). (I often use `configure.optflags="-Os -fvectorize"` for big ports
 nowadays.

 Auto-vectorisation has come a long way since its debuts, still doesn't
 always make a really noticeable difference (I like to think it will when a
 system gets real busy, as older systems often are) but I've never yet
 observed it causing problems.

-- 
Ticket URL: <https://trac.macports.org/ticket/69412>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list