diff --git a/src/chameleon.c b/src/chameleon.c
index 935c4ed96cbbc9ac9744b94689bb3da8ece7f4e6..0f3a184039269033ed1b3e4817abfb72492c4e71 100644
--- a/src/chameleon.c
+++ b/src/chameleon.c
@@ -1,5 +1,6 @@
 #include "main.h"
 #ifdef HAVE_CHAMELEON
+#include "chameleon.h"
 cham_flttype_t chameleonType;
 int (*CHAMELEON_sytrf_Tile)( cham_uplo_t, CHAM_desc_t * )                = NULL; // LLt facto
 int (*CHAMELEON_sytrs_Tile)( cham_uplo_t, CHAM_desc_t *, CHAM_desc_t * ) = NULL; // LLt solve
@@ -14,6 +15,7 @@ testFEMBEM_initChameleon( ScalarType stype ) {
 
   /* Set the scalar type and the functions used by CHAMELEON */
   switch(stype) {
+#if defined(CHAMELEON_PREC_S)
     case (SIMPLE_PRECISION) :
       chameleonType = ChamRealFloat;
       CHAMELEON_sytrf_Tile = CHAMELEON_spotrf_Tile;
@@ -22,6 +24,8 @@ testFEMBEM_initChameleon( ScalarType stype ) {
       CHAMELEON_getrf_nopiv_Tile = CHAMELEON_sgetrf_nopiv_Tile;
       CHAMELEON_getrs_nopiv_Tile = CHAMELEON_sgetrs_nopiv_Tile;
       break ;
+#endif
+#if defined(CHAMELEON_PREC_D)
     case (DOUBLE_PRECISION) :
       chameleonType = ChamRealDouble;
       CHAMELEON_sytrf_Tile = CHAMELEON_dpotrf_Tile;
@@ -30,6 +34,8 @@ testFEMBEM_initChameleon( ScalarType stype ) {
       CHAMELEON_getrf_nopiv_Tile = CHAMELEON_dgetrf_nopiv_Tile;
       CHAMELEON_getrs_nopiv_Tile = CHAMELEON_dgetrs_nopiv_Tile;
       break ;
+#endif
+#if defined(CHAMELEON_PREC_C)
     case (SIMPLE_COMPLEX) :
       chameleonType = ChamComplexFloat;
       CHAMELEON_sytrf_Tile = CHAMELEON_csytrf_Tile;
@@ -38,6 +44,8 @@ testFEMBEM_initChameleon( ScalarType stype ) {
       CHAMELEON_getrf_nopiv_Tile = CHAMELEON_cgetrf_nopiv_Tile;
       CHAMELEON_getrs_nopiv_Tile = CHAMELEON_cgetrs_nopiv_Tile;
       break ;
+#endif
+#if defined(CHAMELEON_PREC_Z)
     case (DOUBLE_COMPLEX) :
       chameleonType = ChamComplexDouble;
       CHAMELEON_sytrf_Tile = CHAMELEON_zsytrf_Tile;
@@ -46,6 +54,7 @@ testFEMBEM_initChameleon( ScalarType stype ) {
       CHAMELEON_getrf_nopiv_Tile = CHAMELEON_zgetrf_nopiv_Tile;
       CHAMELEON_getrs_nopiv_Tile = CHAMELEON_zgetrs_nopiv_Tile;
       break ;
+#endif
     default :
       SETERRQ(1, "testHCHAMELEON : unknown scalar type\n") ;
       break ;
@@ -60,30 +69,38 @@ int CHAMELEON_gemm_Tile( CHAM_desc_t *descA,
   int ierr = 0;
 
   switch(stype) {
+#if defined(CHAMELEON_PREC_S)
     case (SIMPLE_PRECISION) :
       ierr = CHAMELEON_sgemm_Tile( ChamNoTrans, ChamNoTrans,
                                    (float)1., descA, descX,
                                    (float)0., descY );
       CHKERRQ(ierr);
       break ;
+#endif
+#if defined(CHAMELEON_PREC_D)
     case (DOUBLE_PRECISION) :
       ierr = CHAMELEON_dgemm_Tile( ChamNoTrans, ChamNoTrans,
                                    (double)1., descA, descX,
                                    (double)0., descY);
       CHKERRQ(ierr);
       break ;
+#endif
+#if defined(CHAMELEON_PREC_C)
     case (SIMPLE_COMPLEX) :
       ierr = CHAMELEON_cgemm_Tile( ChamNoTrans, ChamNoTrans,
                                    (CHAMELEON_Complex32_t)1., descA, descX,
                                    (CHAMELEON_Complex32_t)0., descY);
       CHKERRQ(ierr);
       break ;
+#endif
+#if defined(CHAMELEON_PREC_Z)
     case (DOUBLE_COMPLEX) :
       ierr = CHAMELEON_zgemm_Tile( ChamNoTrans, ChamNoTrans,
                                    (CHAMELEON_Complex64_t)1., descA, descX,
                                    (CHAMELEON_Complex64_t)0., descY);
       CHKERRQ(ierr);
       break ;
+#endif
     default :
       SETERRQ(1, "CHAMELEON_gemm_Tile: unknown scalar type\n") ;
       break ;
diff --git a/src/hchameleon.c b/src/hchameleon.c
index f2ee0335ff1c57d6424db5ff4827ca7013a1c827..d475a013b1663996b1ef325157ea9ca8729ebf3e 100644
--- a/src/hchameleon.c
+++ b/src/hchameleon.c
@@ -313,20 +313,28 @@ TCORE_uncompress( HCHAM_desc_t *hdescA,
     int (*CORE_lacpy)( cham_uplo_t, int, int,
                        const void *, int, void *, int ) = NULL;
     switch( hdescA->super->dtyp ) {
+#if defined(CHAMELEON_PREC_S)
       case ChamRealFloat:
         CORE_lacpy = (core_lacpy_fct_t)CORE_slacpy;
         break ;
+#endif
+#if defined(CHAMELEON_PREC_D)
       case ChamRealDouble:
         CORE_lacpy = (core_lacpy_fct_t)CORE_dlacpy;
         break ;
+#endif
+#if defined(CHAMELEON_PREC_C)
       case ChamComplexFloat:
         CORE_lacpy = (core_lacpy_fct_t)CORE_clacpy;
         break ;
+#endif
+#if defined(CHAMELEON_PREC_Z)
       case ChamComplexDouble:
         CORE_lacpy = (core_lacpy_fct_t)CORE_zlacpy;
         break ;
+#endif
       default :
-        //SETERRQ(1, "HCHAMELEON_uncompress_matrix: unknown scalar type\n") ;
+        SETERRQ(1, "HCHAMELEON_uncompress_matrix: unknown scalar type\n") ;
         break ;
     }
     CORE_lacpy( ChamUpperLower, tileA->m, tileA->n,