def default_missing(self) -> PerThreeMachine[_T]:
        """Default host to build and target to host.

        This allows just specifying nothing in the native case, just host in the
        cross non-compiler case, and just target in the native-built
        cross-compiler case.
        """
        assert self.build is not None, 'Cannot default a PerMachine when all values are None'
        host = self.host if self.host is not None else self.build
        target = self.target if self.target is not None else host
        return PerThreeMachine(self.build, host, target)
Default host to build and target to host.

        This allows just specifying nothing in the native case, just host in the
        cross non-compiler case, and just target in the native-built
        cross-compiler case.
        
mesonbuild/utils/universal.py