diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4bd7fef29b4ce9aa5371a47efec11b6e0c3ac8f6..85f2145e48718de2b32039f3d7be6d826fea4986 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,7 +20,7 @@ build_starpu_cuda_mpi:
     - mkdir -p build
     - cd build
     - cmake .. -DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON -DCMAKE_INSTALL_PREFIX=${PWD}/install -DCMAKE_VERBOSE_MAKEFILE=ON -DMORSE_ENABLE_WARNING=ON -DMORSE_ENABLE_COVERAGE=ON
-    - make -j2 | tee ../chameleon-build-starpu.log
+    - make -j5 | tee ../chameleon-build-starpu.log
     - make install | tee -a ../chameleon-build-starpu.log && rm install/ -r
 
 build_starpu_simgrid:
@@ -37,7 +37,7 @@ build_starpu_simgrid:
     - mkdir -p build
     - cd build
     - cmake .. -DCHAMELEON_SIMULATION=ON -DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=OFF -DCMAKE_INSTALL_PREFIX=${PWD}/install -DCMAKE_VERBOSE_MAKEFILE=ON -DMORSE_ENABLE_WARNING=ON -DMORSE_ENABLE_COVERAGE=ON
-    - make -j2 | tee ../chameleon-build-starpu-simgrid.log
+    - make -j5 | tee ../chameleon-build-starpu-simgrid.log
     - make install | tee -a ../chameleon-build-starpu-simgrid.log && rm install/ -r
 
 build_quark:
@@ -54,7 +54,7 @@ build_quark:
     - mkdir -p build
     - cd build
     - cmake .. -DCMAKE_INSTALL_PREFIX=${PWD}/install -DCMAKE_VERBOSE_MAKEFILE=ON -DMORSE_ENABLE_WARNING=ON -DMORSE_ENABLE_COVERAGE=ON -DCHAMELEON_SCHED_QUARK=ON
-    - make -j2 | tee ../chameleon-build-quark.log
+    - make -j5 | tee ../chameleon-build-quark.log
     - make install | tee -a ../chameleon-build-quark.log && rm install/ -r
 
 test_starpu_mpi:
@@ -142,7 +142,6 @@ doc:
     - mkdir -p build
     - cd build
     - cmake .. -DCHAMELEON_ENABLE_DOC=ON
-    - make doc
+    - make doc -j5
   only:
     - master@solverstack/chameleon
-
diff --git a/compute/CMakeLists.txt b/compute/CMakeLists.txt
index 1d6e8899514fd39c5021e9accda539d56ed4b644..0034ceb13b1da10d440a280f07fd4b27bf55e401 100644
--- a/compute/CMakeLists.txt
+++ b/compute/CMakeLists.txt
@@ -311,6 +311,7 @@ list(INSERT CHAMELEON_DEP 0 -lchameleon)
 add_dependencies(chameleon
   chameleon_include
   control_include
+  chameleon_sources
 )
 
 set_property(TARGET chameleon PROPERTY LINKER_LANGUAGE Fortran)
diff --git a/coreblas/compute/CMakeLists.txt b/coreblas/compute/CMakeLists.txt
index 04dade8853b52978c899d63e3c5db52c046b7bd9..92ffcb4785b9c79617d2a408bd9665df105ea892 100644
--- a/coreblas/compute/CMakeLists.txt
+++ b/coreblas/compute/CMakeLists.txt
@@ -114,7 +114,7 @@ set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};coreblas_sources" CA
 # ------------
 add_library(coreblas ${COREBLAS_SRCS})
 list(INSERT CHAMELEON_DEP 0 -lcoreblas)
-add_dependencies(coreblas coreblas_include)
+add_dependencies(coreblas coreblas_include coreblas_sources)
 set_property(TARGET coreblas PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET coreblas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
diff --git a/cudablas/compute/CMakeLists.txt b/cudablas/compute/CMakeLists.txt
index cf86aa8759fdc9b27955a52300999511c9ad573d..d1815bb58c0edce9766c6be5257a0ac308f42be1 100644
--- a/cudablas/compute/CMakeLists.txt
+++ b/cudablas/compute/CMakeLists.txt
@@ -96,7 +96,7 @@ set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};cudablas_sources" CA
 # Compile step
 # ------------
 add_library(cudablas ${CUDABLAS_SRCS})
-add_dependencies(cudablas cudablas_include)
+add_dependencies(cudablas cudablas_include cudablas_sources)
 set_property(TARGET cudablas PROPERTY LINKER_LANGUAGE Fortran)
 set_property(TARGET cudablas PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
 
diff --git a/runtime/parsec/CMakeLists.txt b/runtime/parsec/CMakeLists.txt
index 03867a6ef40edc4df5507b4e4437f35486e08073..9ff06bd0b2a4c9d106b028bd3299bcad5c798197 100644
--- a/runtime/parsec/CMakeLists.txt
+++ b/runtime/parsec/CMakeLists.txt
@@ -131,6 +131,7 @@ add_dependencies(chameleon_parsec
   chameleon_include
   control_include
   runtime_parsec_include
+  parsec_sources
 )
 
 if (NOT CHAMELEON_SIMULATION)
diff --git a/runtime/quark/CMakeLists.txt b/runtime/quark/CMakeLists.txt
index ffb21c741da3735480228576b0eb5cde0c5d4c24..c6412acc493b121e49b3a4a329796b5411dad93d 100644
--- a/runtime/quark/CMakeLists.txt
+++ b/runtime/quark/CMakeLists.txt
@@ -126,6 +126,7 @@ add_dependencies(chameleon_quark
   chameleon_include
   control_include
   runtime_quark_include
+  quark_sources
 )
 if (NOT CHAMELEON_SIMULATION)
     add_dependencies(chameleon_quark coreblas_include)
diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt
index f5f3e44da525dcb94ec5cc6c73dae7d56f68576c..2bc2c94d14005fc9c0831f98920bac3b470c5e3e 100644
--- a/runtime/starpu/CMakeLists.txt
+++ b/runtime/starpu/CMakeLists.txt
@@ -148,6 +148,7 @@ add_dependencies(chameleon_starpu
   chameleon_include
   control_include
   runtime_starpu_include
+  starpu_sources
   )
 if (NOT CHAMELEON_SIMULATION)
   add_dependencies(chameleon_starpu coreblas_include)
diff --git a/timing/CMakeLists.txt b/timing/CMakeLists.txt
index 1a88529c23ca699d9d21f275151674a091a154a1..264bfeea30d06d0768fb2d69ee2221803c3cb99c 100644
--- a/timing/CMakeLists.txt
+++ b/timing/CMakeLists.txt
@@ -59,12 +59,16 @@ if (NOT CHAMELEON_SIMULATION)
                         PRECISIONS "${CHAMELEON_PRECISION}")
 
     set(TIMING_SRCS ${TIMING_AUX_SRCS_GENERATED})
+    # Force generation of sources
+    # ---------------------------
+    add_custom_target(timing_aux_sources ALL SOURCES ${TIMINGS_SRCS})
+    set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};timing_aux_sources" CACHE INTERNAL "List of targets of sources")
 
     # Create libchameleon_timing.a
     # -----------------------------
     add_library(chameleon_timing STATIC ${TIMING_SRCS})
     set_property(TARGET chameleon_timing PROPERTY LINKER_LANGUAGE Fortran)
-    add_dependencies(chameleon_timing timing_include)
+    add_dependencies(chameleon_timing timing_include timing_aux_sources)
 endif()
 
 # Generate the morse testing sources for all possible precisions