You combat Inactive[Integrate] with Activate and backsubstitution:
solU0[x_] = DSolveValue[eqn1, u[x], x]
solP0[x_] = 
 DSolveValue[Simplify[eqn2 /. u -> Function[x, Evaluate[solU0[x]]]],
   P[x], x] // Simplify
solMu[x_] = 
 DSolveValue[
    Simplify[
     eqn3 /. u -> Function[x, Evaluate[solU0[x]]] /. 
      P -> Function[x, Evaluate[solP0[x]]]],
    \[Mu][x], x] // Activate // Simplify
FreeQ[solMu[x], Integrate]
solP[x_] = 
 Simplify[solP0[x] /. \[Mu] -> Function[x, Evaluate[solMu[x]]]] // 
  Activate
FreeQ[solP[x], Integrate]
solU[x_] = 
 Simplify[
   solP0[x] /. \[Mu] -> Function[x, Evaluate[solMu[x]]] /. 
    P -> Function[x, Evaluate[solP0[x]]]] // Activate
FreeQ[solU[x], Integrate]
Beware that you get very large expressions.