Have you tried the inversion method? If not, you could start by programming the case m=2. If that works, generalize to an arbitrary positive integer m. So long as m isn't too large, I believe inversion will be okay. Here is an outline for the m=2 case.
(1) Generate uniform pseudo random numbers u_1 and u_2 on [0,1].
(2) Solve G_1(\alpha_1) = u_1 for \alpha_1.
(3) Solve G_2(\alpha_2) = u_2 for \alpha_2.
The pair (\alpha_1,\alpha_2) is a pseudo random instance of X.
Steps (2) and (3) involve both numerical integration and a method for finding the (unique) zeros of G_1(\alpha_1) - u_1 = 0 and G_2(\alpha_2) - u_2 = 0. In finding the zeros, you'll need an initial guess, or else lower and upper bounds where the function (whose zeros are sought) changes sign.
Also, you'll need to generalize the result to handle m>2. Then, the marginal PDF's involve multidimensional integrals, and numerical cubature techniques. However, the functions whose zeros are sought should be monotonically increasing, which will help numerically.
The general case may get pretty involved algebraically and you may want to improve on my notation to help mitigate that issue. Also, there may be more computationally efficient methods that someone will suggest.