diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 16dd503814c444247fd84d5928dacffd0d138910..2d3ddf07aca884e617fa88b2fd77a0707fd2557b 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -1,3 +1,3 @@
 add_subdirectory(gradsdes)
 add_subdirectory(healpix)
-add_subdirectory(yac/src)
+add_subdirectory(yac)
diff --git a/src/lib/yac/CMakeLists.txt b/src/lib/yac/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f9e89a8f0d44807e8aeca24a760fb742cf3de4a
--- /dev/null
+++ b/src/lib/yac/CMakeLists.txt
@@ -0,0 +1,3 @@
+add_subdirectory(clapack)
+add_subdirectory(src)
+target_link_libraries(yac libyac_clapack)
diff --git a/src/lib/yac/clapack/CMakeLists.txt b/src/lib/yac/clapack/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4f6cf4e8afb91fbe7de29fd9dc7187eba7eee731
--- /dev/null
+++ b/src/lib/yac/clapack/CMakeLists.txt
@@ -0,0 +1,104 @@
+configure_file (
+  "${CMAKE_CURRENT_SOURCE_DIR}/F2CLIBS/libf2c/sysdep1.h0"
+  "${CMAKE_CURRENT_BINARY_DIR}/sysdep1.h"
+)
+
+#AM_CFLAGS = $(PIC_CFLAGS)
+
+list(APPEND libyac_clapack_src_files
+  BLAS/SRC/dcopy.c
+  BLAS/SRC/ddot.c
+  BLAS/SRC/dgemm.c
+  BLAS/SRC/dgemv.c
+  BLAS/SRC/dger.c
+  BLAS/SRC/dnrm2.c
+  BLAS/SRC/dscal.c
+  BLAS/SRC/dswap.c
+  BLAS/SRC/dsymv.c
+  BLAS/SRC/dsyr.c
+  BLAS/SRC/dtrmm.c
+  BLAS/SRC/dtrmv.c
+  BLAS/SRC/dtrsm.c
+  BLAS/SRC/idamax.c
+  F2CLIBS/libf2c/close.c
+  F2CLIBS/libf2c/d_lg10.c
+  F2CLIBS/libf2c/d_sign.c
+  F2CLIBS/libf2c/endfile.c
+  F2CLIBS/libf2c/err.c
+  F2CLIBS/libf2c/exit_.c
+  F2CLIBS/libf2c/f77_aloc.c
+  F2CLIBS/libf2c/fio.h
+  F2CLIBS/libf2c/fmt.c
+  F2CLIBS/libf2c/fmt.h
+  F2CLIBS/libf2c/fmtlib.c
+  F2CLIBS/libf2c/fp.h
+  F2CLIBS/libf2c/i_nint.c
+  F2CLIBS/libf2c/open.c
+  F2CLIBS/libf2c/pow_di.c
+  F2CLIBS/libf2c/s_cat.c
+  F2CLIBS/libf2c/s_cmp.c
+  F2CLIBS/libf2c/s_copy.c
+  F2CLIBS/libf2c/sfe.c
+  F2CLIBS/libf2c/sig_die.c
+  F2CLIBS/libf2c/util.c
+  F2CLIBS/libf2c/wref.c
+  F2CLIBS/libf2c/wrtfmt.c
+  F2CLIBS/libf2c/wsfe.c
+  INCLUDE/blaswrap.h
+  INCLUDE/clapack.h
+  INCLUDE/f2c.h
+  INSTALL/dlamch.c
+  INSTALL/lsame.c
+  SRC/dgelq2.c
+  SRC/dgelqf.c
+  SRC/dgels.c
+  SRC/dgeqr2.c
+  SRC/dgeqrf.c
+  SRC/dgesv.c
+  SRC/dgetf2.c
+  SRC/dgetrf.c
+  SRC/dgetri.c
+  SRC/dgetrs.c
+  SRC/disnan.c
+  SRC/dlabad.c
+  SRC/dlaisnan.c
+  SRC/dlange.c
+  SRC/dlapy2.c
+  SRC/dlarfb.c
+  SRC/dlarf.c
+  SRC/dlarfp.c
+  SRC/dlarft.c
+  SRC/dlascl.c
+  SRC/dlaset.c
+  SRC/dlassq.c
+  SRC/dlaswp.c
+  SRC/dlasyf.c
+  SRC/dorm2r.c
+  SRC/dorml2.c
+  SRC/dormlq.c
+  SRC/dormqr.c
+  SRC/dsytf2.c
+  SRC/dsytrf.c
+  SRC/dsytri.c
+  SRC/dtrti2.c
+  SRC/dtrtri.c
+  SRC/dtrtrs.c
+  SRC/ieeeck.c
+  SRC/iladlc.c
+  SRC/iladlr.c
+  SRC/ilaenv.c
+  SRC/iparmq.c
+  SRC/xerbla.c)
+
+add_library(libyac_clapack ${libyac_clapack_src_files})
+target_include_directories(libyac_clapack PRIVATE
+  PRIVATE
+  # where the library itself will look for its internal headers
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/src
+  ${CMAKE_CURRENT_SOURCE_DIR}/INCLUDE
+
+  # where top-level project will look for the library's public headers
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/INCLUDE>
+
+)
diff --git a/src/lib/yac/src/CMakeLists.txt b/src/lib/yac/src/CMakeLists.txt
index 21ca118b6c6bced2780514e9eab54fe31548f13d..e48df7a530398f17ce176ddf551a87885bf38094 100644
--- a/src/lib/yac/src/CMakeLists.txt
+++ b/src/lib/yac/src/CMakeLists.txt
@@ -21,9 +21,9 @@ list( APPEND yac_src_files
                location.h
                sphere_part.c
                sphere_part.h
+               utils_common.h
                utils_core.c
                utils_core.h
-               utils_common.h
                yac_lapack_interface.c
                yac_lapack_interface.h
                yac_types.h