This one can be tricky since it requires a lua script to do, since I dont think you can reward Great People*
* = I stand to be corrected.
Best way to go about it is record the civ's GGP, adding the nessasary remainder required to get the general, wait for them to spawn the Great General unit, and then add the recorded number back into the their GPP pool. Use the PlayerEraChanged event as the first step to get the player era changed, and UnitAddedToMap event as the second step to give back the banked GPP.