I would do variant three: 2 separate buildings, one a roof. If you want you can create an attached_to role in a “provider” relation or something like this 
The main building should probably remain building=retail and not yes, as option 3 suggests.
If the sidewalk is mapped you can add covered=yes to the part under the roof
1 Like