Future wireless networks are expected to be OFDMA-based with generic topologies in the sense that nodes in addition to being a source and a destination, can act as a half-duplex relay. We consider a joint design that incorporates the physical, medium access and network layers of a network. The goal is to determine the data routes, subcarrier schedules, and power allocations that maximize a weighted sum of the rates, reliably communicated over the network. Four instances are considered. In the first instance, subcarriers are allowed to be time-shared by multiple links in the network. We cast this problem in an efficiently solvable convex form. In the second instance, time-sharing is not allowed, and each subcarrier is exclusively assigned to one link throughout the signalling interval. The joint design in this case results in a mixed integer programming. Developing insight into this problem, we propose lower and upper bounds on the weighted-sum rate of the network. In the third instance, the network employs frequency-reuse, whereby a subchannel might be used simultaneously by multiple nodes. In this case, the joint design problem is nonconvex, and hence to circumvent this difficulty, an efficient technique based on geometric programming is developed to obtain a sub-optimal solution. In the last instance, each subcarrier can be reused and time-shared by multiple links, thereby generalizing the first three instances and can therefore offer significant performance gains over them. We develop a framework to cast the joint design problem in an optimization form which gives rise to a nonconvex optimization problem. Using approximation techniques based on geometric programming, we provide a computationally-efficient method for obtaining locally optimal solutions. The generalized design is appealing for designing of future networks due to potentially higher gains. However, this gain comes at the price of complexity which grows exponentially with the size of the network. To circumvent this difficulty, we develop an iterative two-stage algorithm which we refer to it as constraint-splitting and it exhibits fast convergence and finds a sub-optimal power allocation in polynomial time.