ADC sampling rate to MCU clock speed relationship
Are you sure it's 40Msps? I am not aware of any SPI based ADCs that run that fast - it would require a 400MHz SPI rate for 10-bit :-)
Assuming it's parallel, you would need at least an 80MIPS (i.e. not necessarily clock rate unless it's one instruction per cycle) microcontroller, or one with a suitable peripheral (e.g. DMA from parallel port)
An FPGA would be the preferred tool for something at this speed though.
If you tell us more about what you are trying to do (plus the ADC part number) and confirm exact speed (e.g. 40,0000ksps as written above = 400Msps, not 40Msps) a better answer can be given.  

EDIT - converting the parallel ADC output to serial would mean you need to either multiply the clock rate (i.e 40Mhz * 10bit = 400Mhz which is not feasible) or run the ADC at a much slower clock rate.
As mentioned, an FPGA/CPLD can be used to process data very quickly in parallel, so they are made for this type of task.
If you can reduce the Msps requirement a bit, a PIC32 has DMA and a parallel master port (PMP) which IIRC can read every 3 (or possibly 2 under some circumstances, you would have to check the datasheets) instructions (max 80 MIPS)
I have used one (PIC32) to read an 8-bit ADC at around 20-30Msps (short bursts into buffer then sent via USB), though it was just a quick experimental project and an FPGA took over this job in other versions. I remember messing about with an assembler routine to call from the C code (e.g. a long unlooped list of read then write)
Note that this is only reading/sending data in short bursts. You don't mention whether you want to read/write continuously, or how you want to output it (e.g. in what format, how fast) so it's hard to say what you can achieve.
What is certain is that any processing at all will slow things down significantly, and as this will probably include sending it back out (unless a peripheral can be used) I wouldn't hope for much more than 10 Msps (continuous, probably optimistic) doing nothing more than reading and then writing to output directly. If you are reading in short bursts you will probably be able to improve this.
Of course you could look at faster processors (e.g. some ARMs) too, but the cheapest and most flexible way of doing this will be a programmable logic device. I would maybe grab a small dev board (like the Flashy combined with a Pluto from KNJN) and give them a try.