diff --git a/runtime/starpu/interface/cham_tile_interface.c b/runtime/starpu/interface/cham_tile_interface.c
index 89904548b70ed8ecced9b07fe76c9d0c541e66fb..ff25fde78dd7a49816f13813b1994920f822113e 100644
--- a/runtime/starpu/interface/cham_tile_interface.c
+++ b/runtime/starpu/interface/cham_tile_interface.c
@@ -26,18 +26,26 @@ static inline void
 cti_hmat_destroy( starpu_cham_tile_interface_t *cham_tile_interface )
 {
     switch( cham_tile_interface->flttype ) {
+#if defined(CHAMELEON_PREC_Z)
     case ChamComplexDouble:
         hmat_zdestroy( cham_tile_interface->tile.mat );
         break;
+#endif
+#if defined(CHAMELEON_PREC_C)
     case ChamComplexFloat:
         hmat_cdestroy( cham_tile_interface->tile.mat );
         break;
+#endif
+#if defined(CHAMELEON_PREC_D)
     case ChamRealDouble:
         hmat_ddestroy( cham_tile_interface->tile.mat );
         break;
+#endif
+#if defined(CHAMELEON_PREC_S)
     case ChamRealFloat:
         hmat_sdestroy( cham_tile_interface->tile.mat );
         break;
+#endif
     default:
         STARPU_ASSERT_MSG( 0, "cti_hmat_destroy(): unknown flttype\n" );
     }
@@ -53,18 +61,26 @@ cti_get_hmat_required_size( starpu_cham_tile_interface_t *cham_tile_interface )
          (cham_tile_interface->tile.mat != NULL ) )
     {
         switch( cham_tile_interface->flttype ) {
+#if defined(CHAMELEON_PREC_Z)
         case ChamComplexDouble:
             size = hmat_zsize( cham_tile_interface->tile.mat );
             break;
+#endif
+#if defined(CHAMELEON_PREC_C)
         case ChamComplexFloat:
             size = hmat_csize( cham_tile_interface->tile.mat );
             break;
+#endif
+#if defined(CHAMELEON_PREC_D)
         case ChamRealDouble:
             size = hmat_dsize( cham_tile_interface->tile.mat );
             break;
+#endif
+#if defined(CHAMELEON_PREC_S)
         case ChamRealFloat:
             size = hmat_ssize( cham_tile_interface->tile.mat );
             break;
+#endif
         default:
             STARPU_ASSERT_MSG( 0, "cti_get_hmat_required_size(cham_tile_interface): unknown flttype\n" );
         }
@@ -327,18 +343,26 @@ cti_pack_data_hmat( starpu_cham_tile_interface_t *cham_tile_interface,
     hmat_matrix_t *mat = cham_tile_interface->tile.mat;
     STARPU_ASSERT_MSG( mat != NULL, "cti_pack_data_hmat: Try to pack a NULL pointer\n" );
     switch( cham_tile_interface->flttype ) {
+#if defined(CHAMELEON_PREC_Z)
     case ChamComplexDouble:
         hmat_zwrite( mat, ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_C)
     case ChamComplexFloat:
         hmat_cwrite( mat, ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_D)
     case ChamRealDouble:
         hmat_dwrite( mat, ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_S)
     case ChamRealFloat:
         hmat_swrite( mat, ptr );
         break;
+#endif
     default:
         STARPU_ASSERT_MSG( 0, "cti_pack_data_hmat: unknown flttype\n" );
     }
@@ -427,18 +451,26 @@ cti_unpack_data_hmat( starpu_cham_tile_interface_t *cham_tile_interface,
 #else
     hmat_matrix_t *mat = NULL;
     switch( cham_tile_interface->flttype ) {
+#if defined(CHAMELEON_PREC_Z)
     case ChamComplexDouble:
         mat = hmat_zread( ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_C)
     case ChamComplexFloat:
         mat = hmat_cread( ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_D)
     case ChamRealDouble:
         mat = hmat_dread( ptr );
         break;
+#endif
+#if defined(CHAMELEON_PREC_S)
     case ChamRealFloat:
         mat = hmat_sread( ptr );
         break;
+#endif
     default:
         STARPU_ASSERT_MSG( 0, "cti_unpack_data_hmat: unknown flttype\n" );
     }
diff --git a/testing/test_fembem b/testing/test_fembem
index 372c7972b7d8ed9568baf615ca7dff3c1b7aa4a6..b057dbc6638e176d42c66949aa1e9b0915753a8f 160000
--- a/testing/test_fembem
+++ b/testing/test_fembem
@@ -1 +1 @@
-Subproject commit 372c7972b7d8ed9568baf615ca7dff3c1b7aa4a6
+Subproject commit b057dbc6638e176d42c66949aa1e9b0915753a8f