There seems to be some debate about sequential vs combinatorial logic. Assuming sequential, you'll need to gate your clock.
The following is based on your question:
I know how to build a circuit that counts the number of 1s in an 8-bit input — it can be done using Full Adders and Half Adders. The problem is how to make it stop once it reaches three 1s, and then output a 1 at that exact moment or output 0 if it didn’t reach that count.
In the diagram, the clock will run as long as the adder output is not 11 (i.e. three 1's were found).
As an exercise to the OP, try to incorporate this to accommodate the when the MSB is reached without any 1's detected.
