How to make sawtooth wave from square or triangular wave?
Off the top of my head, here's how I might consider approaching the solution.

The higher the square wave frequency, the lower the resulting triangle wave if you use "normal" integration circuitry. If you want to address this issue you could "filter" the square wave and use a peak measurment circuit to produce a "control" voltage that rises linearly as the squarewave frequency increases. This can be used to control integration rates.

Another method is to "examine" the amplitude of the resulting triangle wave and use this to control the amount by which the triangle wave is post-amplified - i.e. big triangle wave = low gain, small triangle wave = big gain. Maybe this technique and the variable integration method can work together successfully.

To make a triangle wave I'd use an integrator circuit formed around a current source and this current source could be designed to inject more current as the squarewave frequency increases hence keeping  the output amplitude roughly constant. You'd need two current sources to make this work; one for the rise and one for the fall of the triangle.

Ultimately, you could make the rise and fall have different rates and therefore you'd be approaching the concept of a sawtooth waveform.

Alternatively you use a phase locked loop (PLL) to produce a frequency that is significantly higher than the square wave base frequency and use this higher frequency to control a sinewave/triangle/sawtooth look-up table - I think this is how Analog Devices make there DDS products.