Converting switched receptacle to overhead light
raise BoxOverflowError()

The installer who put that switch and light in wasn't paying enough attention to box fill, as the 2" deep single gang boxes in there aren't big enough to hold 5 wires + ground + the double share of a yoke, never mind a new cable!

So, you'll need to add extensions to both boxes.  A Raco 665 or equivalent will provide ample volume for both boxes (it will stick out an inch and a half from the wall though).  Once you have the fill problem solved, then you can move on to running a new 14/2 cable to either box from the new light fixture's location.  Once the cable is in place and pulled into the box, you can then follow the instructions below.

If you pulled the cable to the switch box, connect the white wire from the new cable to the existing white wires and the black wire from the new cable to screw that's now occupied by the red wire.  You can then disconnect the existing black wires from the screw, nut them together with a pigtail and the existing red wire, and hook the pigtail's other end to the other screw on the switch.  Finish by connecting the new ground in with the rest of the bare grounds and buttoning it all up.

On the other hand, if you pulled the cable to the receptacle box, connect the white wire from the new cable to the existing white wires, the black wire from the new cable to the existing red wire after it's removed from the existing receptacle, and replace the receptacle with a new one that hasn't had its tabs broken off (brass to black, silver to white, green to ground).  Finish by connecting the new ground in with the rest of the bare grounds and buttoning it all up.