unfortunately you can't do anything, you just have to be patient, its in some people and in some animals nature not to want to be held or petted. You need to ask yourself, does he do this with you or everyone? if its just you then he may be frightened of you. if its everyone its just his way and you may have to have a little Patience with him.
Your just gonna have to wait him out. My Siamese was just like that. She is sweet and didn't mind being around you. But being held and petted was not in her character. She would run if I ever came close or looked like I was gonna pick her up. But I also think having my other cat helped her come out her shell. When she sees him snuggled up next to me, I think she eventually wanted that too and saw that I wasn't so bad. Eventually she came up and bumped me with her head and let me pet her for 3 secs! It was a milestone. Now I can't get away from her! But she still wont let me pick her up, that probably won't change.
So you may have to let him come to you and you will probably just have to accept his personality as is.
Wait for it to go to sleep and sneak up on it and grab it and then you can pet it. I suggest you wear a long sleeve shirt to protect your self from scratches.
Don't try to pet him or hold him at first. Instead just give him toys and play with him. Twirl some rope in front of him and let him bat at it. After a while he'll eventually let you pet and hold him.
Some cats are like that. Sometimes when they are raised outside as kittens they learn this lifestyle. As kittens if is very important to handle them often and show them lots of affection. If this is missing at those first few months it can lead to a cat who wants to be completely independent. You will have to just keep trying but slowly. Never force the cat into anything or it will make it worse. Find things he likes. Give him treats or his meals and just sit beside him. After a couple of trys with that try petting him while he eats. Slowly work up to things.