diff --git a/cudablas/compute/cuda_zgeadd.c b/cudablas/compute/cuda_zgeadd.c
index 4e728ad49c1955256ec7926e8fa3b219f61d7a58..abb1cef2233a50fb3939f9319582bd5fbbb60b90 100644
--- a/cudablas/compute/cuda_zgeadd.c
+++ b/cudablas/compute/cuda_zgeadd.c
@@ -20,8 +20,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if !defined(CHAMELEON_USE_CUBLAS_V2)
 #error "This file requires cublas api v2 support"
diff --git a/cudablas/compute/cuda_zgelqt.c b/cudablas/compute/cuda_zgelqt.c
index 411251c954b08e3daea146474c0a9ae13ad2d00c..28d5956a52a78828561d8e6bd2373e3b5fedf162 100644
--- a/cudablas/compute/cuda_zgelqt.c
+++ b/cudablas/compute/cuda_zgelqt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_zgelqt(
diff --git a/cudablas/compute/cuda_zgemerge.c b/cudablas/compute/cuda_zgemerge.c
index 6f574b3e0e8b8efd5ef0fc2e706aee2432f5a61c..a3a75f2a71a10fc4ebbae3a3d86159c530c095d2 100644
--- a/cudablas/compute/cuda_zgemerge.c
+++ b/cudablas/compute/cuda_zgemerge.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_zgemerge( MORSE_enum side, MORSE_enum diag,
diff --git a/cudablas/compute/cuda_zgemm.c b/cudablas/compute/cuda_zgemm.c
index c5d0503b531443ab37b7dbeb127b3af672ec0250..71d573118f8a513e308238b20187f0818010ac30 100644
--- a/cudablas/compute/cuda_zgemm.c
+++ b/cudablas/compute/cuda_zgemm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zgemm(MORSE_enum transa, MORSE_enum transb,
                int m, int n, int k,
diff --git a/cudablas/compute/cuda_zgeqrt.c b/cudablas/compute/cuda_zgeqrt.c
index f7cb69ab82eb188869c2d4cab03e8b0cb0920dce..bf6440fab9c7690c58f9c6410301dc4ceb81dca0 100644
--- a/cudablas/compute/cuda_zgeqrt.c
+++ b/cudablas/compute/cuda_zgeqrt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_zgeqrt(
diff --git a/cudablas/compute/cuda_zgessm.c b/cudablas/compute/cuda_zgessm.c
index 93b7065348fad1961b82fb0d33ea86257664d7ef..47cbfd990defe0aeb6dcc8b9f1b51188c7be9d75 100644
--- a/cudablas/compute/cuda_zgessm.c
+++ b/cudablas/compute/cuda_zgessm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 #if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
diff --git a/cudablas/compute/cuda_zgetrf.c b/cudablas/compute/cuda_zgetrf.c
index 8da4fe5e3333332b99890f9525c16fa6c040de54..c992a2d43d557a655266807d2ff9b380b68e8921 100644
--- a/cudablas/compute/cuda_zgetrf.c
+++ b/cudablas/compute/cuda_zgetrf.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 #if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
diff --git a/cudablas/compute/cuda_zhemm.c b/cudablas/compute/cuda_zhemm.c
index 5cb93159e26ddbe5ddc3fb2608f1436b7dcf9f79..7c3d636247e1672781deac33507e6e8e4556c90c 100644
--- a/cudablas/compute/cuda_zhemm.c
+++ b/cudablas/compute/cuda_zhemm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zhemm(MORSE_enum side, MORSE_enum uplo,
                int m, int n,
diff --git a/cudablas/compute/cuda_zher2k.c b/cudablas/compute/cuda_zher2k.c
index 206d0d50dc8e13dbf6aa55b528808088d057a11a..3850b32011cfa3103e054c12ed3a47514ac3132a 100644
--- a/cudablas/compute/cuda_zher2k.c
+++ b/cudablas/compute/cuda_zher2k.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zher2k(MORSE_enum uplo, MORSE_enum trans,
                 int n, int k,
diff --git a/cudablas/compute/cuda_zherfb.c b/cudablas/compute/cuda_zherfb.c
index 4563d938864b54b4ec0bec0fb9d7c07f0c806790..81e17b4ea76e5f86b74048db812a2ae3671840b3 100644
--- a/cudablas/compute/cuda_zherfb.c
+++ b/cudablas/compute/cuda_zherfb.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_zherfb( MORSE_enum uplo, int n,
diff --git a/cudablas/compute/cuda_zherk.c b/cudablas/compute/cuda_zherk.c
index f5eec6d1721efefdce0f5a8ce974887b00c9b1c6..8bd07e126987f452d267e96580e8fa98032d0b43 100644
--- a/cudablas/compute/cuda_zherk.c
+++ b/cudablas/compute/cuda_zherk.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zherk( MORSE_enum uplo, MORSE_enum trans,
                 int n, int k,
diff --git a/cudablas/compute/cuda_zlarfb.c b/cudablas/compute/cuda_zlarfb.c
index 0faee149e21d22aa9d4092da6aa5485997c5e0a1..de57f0a7eddde420c620f936ad55437d06a97dc5 100644
--- a/cudablas/compute/cuda_zlarfb.c
+++ b/cudablas/compute/cuda_zlarfb.c
@@ -24,8 +24,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_zlarfb(MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_zlauum.c b/cudablas/compute/cuda_zlauum.c
index dda1468b6166dc10eefca1a5085086472d65d7aa..29c0eea652484016313f874c70c5e707bca9b51d 100644
--- a/cudablas/compute/cuda_zlauum.c
+++ b/cudablas/compute/cuda_zlauum.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_zlauum(
diff --git a/cudablas/compute/cuda_zparfb.c b/cudablas/compute/cuda_zparfb.c
index e3e29f9569d37451b8741861a238315ed122115b..5ce6c0e29838f4e22b8bfa33ee5f61ccb3c81af2 100644
--- a/cudablas/compute/cuda_zparfb.c
+++ b/cudablas/compute/cuda_zparfb.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 /**
  *****************************************************************************
diff --git a/cudablas/compute/cuda_zpotrf.c b/cudablas/compute/cuda_zpotrf.c
index cdd6f4cf1ad9faa19d3fa79bedae62556a0703f2..730f4b1f7e6314b60cb7a9080d8ab62df23e5ac9 100644
--- a/cudablas/compute/cuda_zpotrf.c
+++ b/cudablas/compute/cuda_zpotrf.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_zpotrf(
diff --git a/cudablas/compute/cuda_zssssm.c b/cudablas/compute/cuda_zssssm.c
index 3503425397998a8922a686ccdcaa5ce82ecb03eb..bcd9e1797ebb7d72f4a62803c8b549c642fb9e67 100644
--- a/cudablas/compute/cuda_zssssm.c
+++ b/cudablas/compute/cuda_zssssm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 #if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
diff --git a/cudablas/compute/cuda_zsymm.c b/cudablas/compute/cuda_zsymm.c
index 5213565edb79207844345170f9de2cb8549a7d1b..226ad8f0b1022ff267aaf91d763218da6a1baf49 100644
--- a/cudablas/compute/cuda_zsymm.c
+++ b/cudablas/compute/cuda_zsymm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zsymm(MORSE_enum side, MORSE_enum uplo,
                int m, int n,
diff --git a/cudablas/compute/cuda_zsyr2k.c b/cudablas/compute/cuda_zsyr2k.c
index c80babbad1e968f721881b630a18515ce25de51a..7e4d21bd9e89d271fcd337098627f2db11370550 100644
--- a/cudablas/compute/cuda_zsyr2k.c
+++ b/cudablas/compute/cuda_zsyr2k.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zsyr2k(
         MORSE_enum uplo, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_zsyrk.c b/cudablas/compute/cuda_zsyrk.c
index 11d18ea1556b15b3511ad20b50451c5cd76c06d3..7426efc7254c0c28bc01150457e8d24aa2469e01 100644
--- a/cudablas/compute/cuda_zsyrk.c
+++ b/cudablas/compute/cuda_zsyrk.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zsyrk(MORSE_enum uplo, MORSE_enum trans,
                int n, int k,
diff --git a/cudablas/compute/cuda_ztpmqrt.c b/cudablas/compute/cuda_ztpmqrt.c
index 350dc3df8dd730314599cc023c9228066e8e58ec..6242fd190483579f24e7df90ebd98b3533d10a91 100644
--- a/cudablas/compute/cuda_ztpmqrt.c
+++ b/cudablas/compute/cuda_ztpmqrt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_ztpmqrt( MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_ztrmm.c b/cudablas/compute/cuda_ztrmm.c
index 349a6f98a02597c81b7dbec7cf395b3cd8498ffc..d1db27a694854bec57a7f607c932a4e2b8942754 100644
--- a/cudablas/compute/cuda_ztrmm.c
+++ b/cudablas/compute/cuda_ztrmm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_ztrmm(
         MORSE_enum side, MORSE_enum uplo,
diff --git a/cudablas/compute/cuda_ztrsm.c b/cudablas/compute/cuda_ztrsm.c
index ae485b751b79ea71b04fbe9ce34c3aab08d97b36..7a5106879c6fcb07a547da440910fd9b6b99a02d 100644
--- a/cudablas/compute/cuda_ztrsm.c
+++ b/cudablas/compute/cuda_ztrsm.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_ztrsm(MORSE_enum side, MORSE_enum uplo,
                MORSE_enum transa, MORSE_enum diag,
diff --git a/cudablas/compute/cuda_ztrtri.c b/cudablas/compute/cuda_ztrtri.c
index 02243a938e653b87cd81aea958c24f2f1d8d0d57..948f12c390c6c62161bc01e881522d0ed9d610d1 100644
--- a/cudablas/compute/cuda_ztrtri.c
+++ b/cudablas/compute/cuda_ztrtri.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_ztrtri(
diff --git a/cudablas/compute/cuda_ztslqt.c b/cudablas/compute/cuda_ztslqt.c
index 27c0228f006e732813820a2418f02b7db8945bbe..e9897a984afdee19fbe4d07f0568b3413db399ba 100644
--- a/cudablas/compute/cuda_ztslqt.c
+++ b/cudablas/compute/cuda_ztslqt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA) && 0
 int CUDA_ztslqt(
diff --git a/cudablas/compute/cuda_ztsmlq.c b/cudablas/compute/cuda_ztsmlq.c
index 1b2980a344c716afb04a63f07c51c903738cb7a0..801961817e3d0fdb5931c2ae1029cdfb04443362 100644
--- a/cudablas/compute/cuda_ztsmlq.c
+++ b/cudablas/compute/cuda_ztsmlq.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_ztsmlq(
         MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_ztsmqr.c b/cudablas/compute/cuda_ztsmqr.c
index 678586823674cda7e92cbde6c44977ceb07158e7..b7b1d6e7268b82f71fd6d57959a60b048d1faa48 100644
--- a/cudablas/compute/cuda_ztsmqr.c
+++ b/cudablas/compute/cuda_ztsmqr.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_ztsmqr(
         MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_ztsqrt.c b/cudablas/compute/cuda_ztsqrt.c
index 4f11d800fbe12b997f72c4ba85633ca301498419..063b951cc04f99b12a3ffd539078103e67477deb 100644
--- a/cudablas/compute/cuda_ztsqrt.c
+++ b/cudablas/compute/cuda_ztsqrt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA)
 int CUDA_ztsqrt(
diff --git a/cudablas/compute/cuda_ztstrf.c b/cudablas/compute/cuda_ztstrf.c
index 5780ff639af07fb1ddcfb1ddb09f889054e2c840..545b8c2b91c24b5715db70eab71cfbe91bdbe328 100644
--- a/cudablas/compute/cuda_ztstrf.c
+++ b/cudablas/compute/cuda_ztstrf.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 #if defined(CHAMELEON_USE_MAGMA) && 0
 int CUDA_ztstrf(
diff --git a/cudablas/compute/cuda_zttmqr.c b/cudablas/compute/cuda_zttmqr.c
index 04f59bf8140801312f635e3d801efd4ff23cbcaf..0517cfbd1f79ed3deac46669ff59239931ee6706 100644
--- a/cudablas/compute/cuda_zttmqr.c
+++ b/cudablas/compute/cuda_zttmqr.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int CUDA_zttmqr(
         MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_zunmlqt.c b/cudablas/compute/cuda_zunmlqt.c
index c7fc245a94e6b479e25211e81c90ad1b80b2c22a..91a3fb79e51e0d9bb774230ddad45f14aeb543e6 100644
--- a/cudablas/compute/cuda_zunmlqt.c
+++ b/cudablas/compute/cuda_zunmlqt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_zunmlqt(MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cuda_zunmqrt.c b/cudablas/compute/cuda_zunmqrt.c
index f61f7714c193e5e64b43902c665e9009f1361090..7abc0d9cf14826991d9841d0e5dde9116d59d446 100644
--- a/cudablas/compute/cuda_zunmqrt.c
+++ b/cudablas/compute/cuda_zunmqrt.c
@@ -22,8 +22,8 @@
  * @precisions normal z -> c d s
  *
  **/
-#include "cudablas/include/cudablas.h"
-#include "cudablas/include/cudablas_z.h"
+#include "cudablas.h"
+#include "cudablas/cudablas_z.h"
 
 int
 CUDA_zunmqrt(MORSE_enum side, MORSE_enum trans,
diff --git a/cudablas/compute/cudaglobal.c b/cudablas/compute/cudaglobal.c
index 597501e9e45318c282226525dc2367afece94873..955ae99067c4dac78462cbd3c38c005a2e4e8f77 100644
--- a/cudablas/compute/cudaglobal.c
+++ b/cudablas/compute/cudaglobal.c
@@ -19,7 +19,7 @@
  * @date 2017-04-06
  *
  **/
-#include "cudablas/include/cudablas.h"
+#include "cudablas.h"
 
 /*******************************************************************************
  *  LAPACK Constants
diff --git a/cudablas/include/CMakeLists.txt b/cudablas/include/CMakeLists.txt
index 9635e1f953ce9a4a86f51043b911a395d25147b6..a722e3444012b3759b80e405adabfecbfe1d9fb9 100644
--- a/cudablas/include/CMakeLists.txt
+++ b/cudablas/include/CMakeLists.txt
@@ -27,31 +27,36 @@
 # ---------------------
 set(CUDABLAS_HDRS_GENERATED "")
 set(ZHDR
-    cudablas_z.h
+    cudablas/cudablas_z.h
 )
-precisions_rules_py(CUDABLAS_HDRS_GENERATED "${ZHDR}"
-                    PRECISIONS "s;d;c;z;zc;ds" )
+precisions_rules_py(
+  CUDABLAS_HDRS_GENERATED "${ZHDR}"
+  TARGETDIR cudablas
+  PRECISIONS "s;d;c;z;zc;ds" )
 
 # Define the list of headers
 # --------------------------
 set(CUDABLAS_HDRS
     cudablas.h
-    ${CUDABLAS_HDRS_GENERATED}
     )
 
+# Add generated headers
+# ---------------------
+foreach( hdr_file ${CUDABLAS_HDRS_GENERATED} )
+  list(APPEND CUDABLAS_HDRS ${CMAKE_CURRENT_BINARY_DIR}/${hdr_file})
+endforeach()
+
 # Force generation of headers
 # ---------------------------
 add_custom_target(cudablas_include ALL SOURCES ${CUDABLAS_HDRS})
 
-set(HDR_INSTALL "cudablas.h")
-foreach( hdr_file ${CUDABLAS_HDRS_GENERATED} )
-    list(APPEND HDR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/${hdr_file})
-endforeach()
-
-# installation
+# Installation
 # ------------
-install(FILES ${HDR_INSTALL}
-        DESTINATION include/chameleon/cudablas/include)
+install( FILES cudablas.h
+         DESTINATION include )
+
+install( FILES ${CUDABLAS_HDRS}
+         DESTINATION include/cudablas )
 
 ###
 ### END CMakeLists.txt
diff --git a/cudablas/include/cudablas.h b/cudablas/include/cudablas.h
index 6732a0b5b9301f06ba422b32c7d855178693ac2d..04145ea21005e559a531116099f15810aa54733e 100644
--- a/cudablas/include/cudablas.h
+++ b/cudablas/include/cudablas.h
@@ -25,7 +25,7 @@
 #ifndef _CUDA_BLAS_H_
 #define _CUDA_BLAS_H_
 
-#include "include/chameleon_config.h"
+#include "chameleon/chameleon_config.h"
 
 #if !defined(CHAMELEON_USE_CUDA)
 #error "This file should not be included"
@@ -68,20 +68,21 @@
 /** ****************************************************************************
  * MORSE types and constants
  **/
-#include "morse_types.h"
-#include "morse_struct.h"
-#include "morse_constants.h"
-//#include "control/auxiliary.h"
-//#include "control/descriptor.h"
-//#include "control/tile.h"
+#include "chameleon/morse_types.h"
+#include "chameleon/morse_struct.h"
+#include "chameleon/morse_constants.h"
 
 /** ****************************************************************************
  * CUDA BLAS headers
  **/
-#include "cudablas/include/cudablas_z.h"
-#include "cudablas/include/cudablas_d.h"
-#include "cudablas/include/cudablas_c.h"
-#include "cudablas/include/cudablas_s.h"
+BEGIN_C_DECLS
+
+#include "cudablas/cudablas_z.h"
+#include "cudablas/cudablas_d.h"
+#include "cudablas/cudablas_c.h"
+#include "cudablas/cudablas_s.h"
+
+END_C_DECLS
 
 /** ****************************************************************************
  * Coreblas Error
@@ -91,6 +92,8 @@
 /** ****************************************************************************
  *  LAPACK Constants
  **/
+BEGIN_C_DECLS
+
 extern char *morse_lapack_constants[];
 #define morse_lapack_const(morse_const) morse_lapack_constants[morse_const][0]
 
@@ -102,4 +105,6 @@ extern int morse_cublas_constants[];
 #define morse_cublas_const(morse_const) morse_lapack_constants[morse_const][0]
 #endif
 
+END_C_DECLS
+
 #endif
diff --git a/cudablas/include/cudablas_z.h b/cudablas/include/cudablas/cudablas_z.h
similarity index 97%
rename from cudablas/include/cudablas_z.h
rename to cudablas/include/cudablas/cudablas_z.h
index 0413fd5417dc3a06962c9c7de968413277304705..1e88fbf65b54fb066e61c8f25b05052b3bc5dde7 100644
--- a/cudablas/include/cudablas_z.h
+++ b/cudablas/include/cudablas/cudablas_z.h
@@ -25,13 +25,6 @@
 #ifndef _MORSE_CUDA_ZBLAS_H_
 #define _MORSE_CUDA_ZBLAS_H_
 
-#include "include/chameleon_config.h"
-#include "morse_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /** ****************************************************************************
  *  Declarations of cuda kernels - alphabetical order
  **/
@@ -56,8 +49,4 @@ int CUDA_zttmqr( MORSE_enum side, MORSE_enum trans, int M1, int N1, int M2, int
 int CUDA_zunmlqt(MORSE_enum side, MORSE_enum trans, int M, int N, int K, int IB, const cuDoubleComplex *A,    int LDA, const cuDoubleComplex *T,    int LDT, cuDoubleComplex *C,    int LDC, cuDoubleComplex *WORK, int LDWORK, CUBLAS_STREAM_PARAM );
 int CUDA_zunmqrt(MORSE_enum side, MORSE_enum trans, int M, int N, int K, int IB, const cuDoubleComplex *A,    int LDA, const cuDoubleComplex *T,    int LDT, cuDoubleComplex *C,    int LDC, cuDoubleComplex *WORK, int LDWORK, CUBLAS_STREAM_PARAM );
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif