Would have done是一个固定的语法结构,表示的是本来应该是要这样做,或是本来想这样做,结果因为某种客观的原因而无法按之前想法来做,或无法达成之前的意愿的意思.
整句的意思就是:我本来是打算要给你一份生日礼物,但是我没钱了,所以没能给你.