diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6163d1371e4fc7f101174adf94ec0f897f10e07a..bdb9697574b66eda4f50253d36ac8fe5a1aa3a7d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,8 @@
 find_package(LLVM REQUIRED CONFIG)
 
+list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
+include(AddLLVM)
+
 add_definitions(${LLVM_DEFINITIONS})
 include_directories(${LLVM_INCLUDE_DIRS})
 
diff --git a/skeleton/CMakeLists.txt b/skeleton/CMakeLists.txt
index e146d4dcf009efcc5a377f4ad7a44e538bcc012b..c3f8afd11cac78c8eb5f0f96a7062215d5b0a8bb 100644
--- a/skeleton/CMakeLists.txt
+++ b/skeleton/CMakeLists.txt
@@ -1 +1,4 @@
-add_library(SkeletonPass MODULE Skeleton.cpp)
+add_llvm_loadable_module(SkeletonPass
+    # List your source files here.
+    Skeleton.cpp
+)