diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9c35cd6416ff4d1b0b24b7dfd03fe92f5a30ea3a..343a6811393f77c68ebcf37228a0937908180faf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,17 +1,53 @@
-# include(RulesPrecisions)
-# # reset variables
-# set(generated_files "")
-# set(generated_headers "")
+include(RulesPrecisions)
 
-# set(HEADERS
-#   z_spm.h
-# )
+### reset variables
+set(generated_sources "")
+set(generated_headers "")
 
-# ### generate the dsparse_cores headers for all possible precisions
-# precisions_rules_py(generated_headers
-#                     "${HEADERS}"
-#                     PRECISIONS "p;s;d;c;z")
+set(HEADERS
+  z_spm.h
+)
 
-# add_custom_target(spm_headers
-#   DEPENDS ${generated_headers} )
+### Generate the headers in all precisions
+precisions_rules_py(generated_headers
+                    "${HEADERS}"
+                    PRECISIONS "p;s;d;c;z")
 
+set(SOURCES
+  z_spm.c
+  z_spm_convert_to_csc.c
+  z_spm_convert_to_csr.c
+  z_spm_convert_to_ijv.c
+  z_spm_genrhs.c
+  z_spm_matrixvector.c
+  z_spm_norm.c
+  )
+
+set(spm_headers
+  ${generated_headers}
+  csc.h
+  )
+
+### Generate the sources in all precisions
+precisions_rules_py(generated_sources
+                    "${SOURCES}"
+                    PRECISIONS "p;s;d;c;z")
+
+set(spm_sources
+  ${generated_sources}
+  csc.c
+  csc_io.c
+  )
+
+add_custom_target(spm_headers_tgt
+  DEPENDS ${spm_headers} )
+
+set_source_files_properties(
+  spm/csc.c
+  PROPERTIES DEPENDS spm_headers_tgt
+  )
+
+set(PASTIX_LIB_SRCS
+  ${PASTIX_LIB_SRCS}
+  ${spm_sources}
+  )
\ No newline at end of file