diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a82be7e47c91aac7e4976820697ceec20a906f9..a7c90d043ac4f6ca2686f367b2bb56d90d5437ff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -999,6 +999,8 @@ list(REMOVE_DUPLICATES CHAMELEON_DEP) # WARNING: is it safe, respect order?
 # Check for the subdirectories
 # ----------------------------
 
+set(CHAMELEON_SOURCES_TARGETS "" CACHE INTERNAL "List of targets of sources")
+
 # include headers
 # ---------------
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
@@ -1073,6 +1075,9 @@ if(CHAMELEON_ENABLE_TIMING)
 endif(CHAMELEON_ENABLE_TIMING)
 #------------------------------------------------------------------------------
 
+# Define a target which gathers all targets of sources
+# useful for generating the doc without compiling the binaries (objects, libraries)
+add_custom_target(chameleon_all_sources ALL DEPENDS ${CHAMELEON_SOURCES_TARGETS})
 
 ###############################################################################
 # Documentation #
diff --git a/compute/CMakeLists.txt b/compute/CMakeLists.txt
index 1f6592d6923ba811c4c33dc8f1ec542b921f97f0..1d6e8899514fd39c5021e9accda539d56ed4b644 100644
--- a/compute/CMakeLists.txt
+++ b/compute/CMakeLists.txt
@@ -282,6 +282,11 @@ if(HAVE_ISO_C_BINDING)
        )
 endif(HAVE_ISO_C_BINDING)
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(chameleon_sources ALL SOURCES "${CHAMELEON_SRCS};${CHAMELEON_SRCSF}")
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};chameleon_sources" CACHE INTERNAL "List of targets of sources")
+
 # Compile step
 # ------------
 add_library(chameleon ${CHAMELEON_SRCS} ${CHAMELEON_SRCSF})
diff --git a/control/CMakeLists.txt b/control/CMakeLists.txt
index 6813bbf279912b93ec3dbd9c88d0de1a67d8c0fd..0fd19f58836468a32c90843685864374aa455d46 100644
--- a/control/CMakeLists.txt
+++ b/control/CMakeLists.txt
@@ -64,7 +64,7 @@ list(APPEND CHAMELEON_HDRS ${CHAMELEON_HDRS_GENERATED})
 # Force generation of headers
 # ---------------------------
 add_custom_target(control_include ALL SOURCES ${CHAMELEON_HDRS})
-
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};control_include" CACHE INTERNAL "List of targets of sources")
 
 # installation
 # ------------
diff --git a/coreblas/compute/CMakeLists.txt b/coreblas/compute/CMakeLists.txt
index f5f9ccc3b9f471466152f263bdf66855a3cd395d..04dade8853b52978c899d63e3c5db52c046b7bd9 100644
--- a/coreblas/compute/CMakeLists.txt
+++ b/coreblas/compute/CMakeLists.txt
@@ -28,6 +28,7 @@
 
 # Generate the morse sources for all possible precisions
 # ------------------------------------------------------
+
 set(COREBLAS_SRCS_GENERATED "")
 set(ZSRC
     core_dzasum.c
@@ -104,6 +105,11 @@ set(COREBLAS_SRCS
     ${COREBLAS_SRCS_GENERATED}
     )
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(coreblas_sources ALL SOURCES ${COREBLAS_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};coreblas_sources" CACHE INTERNAL "List of targets of sources")
+
 # Compile step
 # ------------
 add_library(coreblas ${COREBLAS_SRCS})
diff --git a/coreblas/include/CMakeLists.txt b/coreblas/include/CMakeLists.txt
index 7717097135debd395a24b6f7308944e327296f7e..038581e80c82b4151b434b4f0e6b9a34c059adbe 100644
--- a/coreblas/include/CMakeLists.txt
+++ b/coreblas/include/CMakeLists.txt
@@ -57,6 +57,7 @@ endforeach()
 # Force generation of headers
 # ---------------------------
 add_custom_target(coreblas_include ALL SOURCES ${COREBLAS_HDRS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};coreblas_include" CACHE INTERNAL "List of targets of sources")
 
 # Installation
 # ------------
diff --git a/cudablas/compute/CMakeLists.txt b/cudablas/compute/CMakeLists.txt
index b5c69b13410bf92b5da82766d49618ef89c7112d..cf86aa8759fdc9b27955a52300999511c9ad573d 100644
--- a/cudablas/compute/CMakeLists.txt
+++ b/cudablas/compute/CMakeLists.txt
@@ -88,6 +88,11 @@ if (CHAMELEON_USE_CUBLAS_V2)
     )
 endif (CHAMELEON_USE_CUBLAS_V2)
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(cudablas_sources ALL SOURCES ${CUDABLAS_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};cudablas_sources" CACHE INTERNAL "List of targets of sources")
+
 # Compile step
 # ------------
 add_library(cudablas ${CUDABLAS_SRCS})
diff --git a/cudablas/include/CMakeLists.txt b/cudablas/include/CMakeLists.txt
index a722e3444012b3759b80e405adabfecbfe1d9fb9..e6229966e73d70f48bb7643d0a34765c2bf6305e 100644
--- a/cudablas/include/CMakeLists.txt
+++ b/cudablas/include/CMakeLists.txt
@@ -49,6 +49,7 @@ endforeach()
 # Force generation of headers
 # ---------------------------
 add_custom_target(cudablas_include ALL SOURCES ${CUDABLAS_HDRS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};cudablas_include" CACHE INTERNAL "List of targets of sources")
 
 # Installation
 # ------------
diff --git a/doc/doxygen/CMakeLists.txt b/doc/doxygen/CMakeLists.txt
index ec81c77bf53ac48a10d3558b7a973b0938668006..f66dcdfcc1e6e729b7a6fb8e1008126da70e416c 100644
--- a/doc/doxygen/CMakeLists.txt
+++ b/doc/doxygen/CMakeLists.txt
@@ -77,7 +77,7 @@ if(DOXYGEN_EXECUTABLE)
     add_custom_target(doxygen-out ALL
                       DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/out-dev
                               #${CMAKE_CURRENT_BINARY_DIR}/out-usr
-                              chameleon
+                              chameleon_all_sources
                               )
 
     # Installation for html version
diff --git a/doc/orgmode/CMakeLists.txt b/doc/orgmode/CMakeLists.txt
index bdcd7910e8ed8faee3e75d4ab8d3e7c7b1e737a9..d189a3a493de0009f4162519d2705540919a29b3 100644
--- a/doc/orgmode/CMakeLists.txt
+++ b/doc/orgmode/CMakeLists.txt
@@ -83,8 +83,8 @@ if(EMACS_COMPILER)
                        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/users_guide.org
                                ${CMAKE_CURRENT_BINARY_DIR}/version.org
                       )
-    add_custom_target(doc-html-users_guide ALL DEPENDS users_guide.html chameleon)
-    add_custom_target(doc-pdf-users_guide ALL DEPENDS users_guide.pdf chameleon)
+    add_custom_target(doc-html-users_guide ALL DEPENDS users_guide.html)
+    add_custom_target(doc-pdf-users_guide ALL DEPENDS users_guide.pdf)
 
     # Installation
     # ------------
diff --git a/hqr b/hqr
index 1e7bad3a5e56c28514f8121195ffefdda70335bb..2bc36789f26039bc6eefe03f6825a383847724f5 160000
--- a/hqr
+++ b/hqr
@@ -1 +1 @@
-Subproject commit 1e7bad3a5e56c28514f8121195ffefdda70335bb
+Subproject commit 2bc36789f26039bc6eefe03f6825a383847724f5
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index bcbfb84fa211854503d5b547f120691f1ea96852..4991492a9536acd5c4c7db189556addc005b0708 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -69,6 +69,7 @@ endforeach()
 # ---------------------------
 add_custom_target(chameleon_include
   ALL SOURCES morse.h ${CHAMELEON_HDRS} )
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};chameleon_include" CACHE INTERNAL "List of targets of sources")
 
 # Installation
 # ------------
diff --git a/runtime/parsec/CMakeLists.txt b/runtime/parsec/CMakeLists.txt
index 714235ae976c1b3c1fd94635ae7e80a51cf5bfd7..03867a6ef40edc4df5507b4e4437f35486e08073 100644
--- a/runtime/parsec/CMakeLists.txt
+++ b/runtime/parsec/CMakeLists.txt
@@ -105,6 +105,11 @@ set(RUNTIME_SRCS
   ${RUNTIME_SRCS_GENERATED}
   )
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(parsec_sources ALL SOURCES ${RUNTIME_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};runtime_parsec_include;parsec_sources" CACHE INTERNAL "List of targets of sources")
+
 # Add library
 # -----------
 add_library(chameleon_parsec ${RUNTIME_SRCS})
diff --git a/runtime/quark/CMakeLists.txt b/runtime/quark/CMakeLists.txt
index eeee4ac10fd6cf8cb6c9375f50d1f5c09c61c317..ffb21c741da3735480228576b0eb5cde0c5d4c24 100644
--- a/runtime/quark/CMakeLists.txt
+++ b/runtime/quark/CMakeLists.txt
@@ -106,6 +106,11 @@ set(RUNTIME_SRCS
   ${RUNTIME_SRCS_GENERATED}
   )
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(quark_sources ALL SOURCES ${RUNTIME_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};runtime_quark_include;quark_sources" CACHE INTERNAL "List of targets of sources")
+
 # Add library
 # -----------
 add_library(chameleon_quark ${RUNTIME_SRCS})
diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt
index ba66f9a325c195bd1c33ecf19bcd514aa296f323..f5f3e44da525dcb94ec5cc6c73dae7d56f68576c 100644
--- a/runtime/starpu/CMakeLists.txt
+++ b/runtime/starpu/CMakeLists.txt
@@ -122,6 +122,11 @@ set(RUNTIME_SRCS
   ${RUNTIME_SRCS_GENERATED}
   )
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(starpu_sources ALL SOURCES ${RUNTIME_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};runtime_starpu_include;starpu_sources" CACHE INTERNAL "List of targets of sources")
+
 # Add library
 # -----------
 add_library(chameleon_starpu ${RUNTIME_SRCS})
diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
index 1b2e5d9e4e691a3defb71b82eed0d75946650f8b..c90f3f3bd465b79d643d1e15c5a8bf164c2df423 100644
--- a/testing/CMakeLists.txt
+++ b/testing/CMakeLists.txt
@@ -44,6 +44,7 @@ precisions_rules_py(TESTING_HDRS_GENERATED "${ZHDR}"
     PRECISIONS "s;d;c;z;ds;zc" )
 
 add_custom_target(testing_include ALL SOURCES ${TESTING_HDRS_GENERATED})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};testing_include" CACHE INTERNAL "List of targets of sources")
 
 # Generate morse testing sources for all possible precisions
 # ----------------------------------------------------------
@@ -168,6 +169,15 @@ foreach(_precision ${CHAMELEON_PRECISION} )
 
 endforeach()
 
+# Force generation of sources
+# ---------------------------
+set(TESTING_SRCS)
+foreach(_precision ${CHAMELEON_PRECISION})
+    list(APPEND TESTING_SRCS ${${_precision}SRC_GENERATED})
+endforeach()
+add_custom_target(testing_sources ALL SOURCES ${TESTING_SRCS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};testing_sources" CACHE INTERNAL "List of targets of sources")
+
 # Copy python scripts to use test drivers
 # ---------------------------------------
 # Copy launcher
diff --git a/timing/CMakeLists.txt b/timing/CMakeLists.txt
index 8f03c60b9aa2fbe4957648bae5b1d23300d4de93..1a88529c23ca699d9d21f275151674a091a154a1 100644
--- a/timing/CMakeLists.txt
+++ b/timing/CMakeLists.txt
@@ -45,6 +45,7 @@ set(TIMING_AUX_HDRS
 # Force generation of headers
 # ---------------------------
 add_custom_target(timing_include ALL SOURCES ${TIMING_AUX_HDRS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};timing_include" CACHE INTERNAL "List of targets of sources")
 
 if (NOT CHAMELEON_SIMULATION)
     # Generate the morse auxiliary sources for all possible precisions
@@ -57,9 +58,7 @@ if (NOT CHAMELEON_SIMULATION)
     precisions_rules_py(TIMING_AUX_SRCS_GENERATED "${ZSRC}"
                         PRECISIONS "${CHAMELEON_PRECISION}")
 
-    set(TIMING_SRCS
-        ${TIMING_AUX_SRCS_GENERATED}
-       )
+    set(TIMING_SRCS ${TIMING_AUX_SRCS_GENERATED})
 
     # Create libchameleon_timing.a
     # -----------------------------
@@ -150,6 +149,11 @@ endif(NOT CHAMELEON_SIMULATION)
 precisions_rules_py(TIMINGS "${ZSRC}"
                     PRECISIONS "${CHAMELEON_PRECISION}")
 
+# Force generation of sources
+# ---------------------------
+add_custom_target(timing_sources ALL SOURCES ${TIMINGS})
+set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};timing_sources" CACHE INTERNAL "List of targets of sources")
+
 # Add include and link directories
 # --------------------------------
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})