diff --git a/framaCIRGen_src/CMakeLists.txt b/framaCIRGen_src/CMakeLists.txt
index 6ba2fd3c3389f6c0cb8a920e22e0872a0d4024a5..b4e9aa3216449236d63c66b00350d9d9127e7354 100644
--- a/framaCIRGen_src/CMakeLists.txt
+++ b/framaCIRGen_src/CMakeLists.txt
@@ -20,7 +20,7 @@
 #                                                                        #
 ##########################################################################
 
-cmake_minimum_required(VERSION 3.6)
+cmake_minimum_required(VERSION 3.20)
 
 project(FramaCIRGen C CXX)
 
@@ -28,6 +28,17 @@ set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
+find_program(LLVM_CONFIG
+  NAMES $ENV{OPAM_LLVM_CONFIG} llvm-config llvm-config-15 llvm-config-14
+        llvm-config-13 llvm-config-12 llvm-config-11
+  REQUIRED)
+
+execute_process(COMMAND ${LLVM_CONFIG} --cmakedir OUTPUT_VARIABLE CMAKE_LLVM_PREFIX)
+
+cmake_path(GET CMAKE_LLVM_PREFIX PARENT_PATH CMAKE_LLVM_CLANG_PREFIX)
+set(Clang_DIR ${CMAKE_LLVM_CLANG_PREFIX}/clang)
+set(LLVM_DIR ${CMAKE_LLVM_CLANG_PREFIX}/llvm)
+
 find_package(Clang REQUIRED)
 find_package(LLVM REQUIRED)
 
diff --git a/framaCIRGen_src/build.sh b/framaCIRGen_src/build.sh
index cdd9fcd01779d754f6c23613385ca07f2bc94dac..103d6f9cf50e3ae67870b562e065ec148a05bbcb 100755
--- a/framaCIRGen_src/build.sh
+++ b/framaCIRGen_src/build.sh
@@ -1,4 +1,4 @@
-#! /usr/bin/bash
+#! /bin/sh
 ##########################################################################
 #                                                                        #
 #  This file is part of Frama-Clang                                      #