Bump min CMake version to 3.12 and use FindPython

This also allows up to set the max version to current as we're not using
any removed features.
diff --git a/32blit-config.cmake b/32blit-config.cmake
index bf4db73..631f235 100644
--- a/32blit-config.cmake
+++ b/32blit-config.cmake
@@ -5,10 +5,10 @@
 	set(CMAKE_CXX_EXTENSIONS OFF)
 	set(BLIT_MINIMUM_TOOLS_VERSION "0.7.3")
 
-	find_package(PythonInterp 3.6 REQUIRED)
+	find_package(Python 3.6 REQUIRED)
 
 	# make sure that the tools are installed
-	execute_process(COMMAND ${PYTHON_EXECUTABLE} -m ttblit version RESULT_VARIABLE VERSION_STATUS OUTPUT_VARIABLE TOOLS_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+	execute_process(COMMAND ${Python_EXECUTABLE} -m ttblit version RESULT_VARIABLE VERSION_STATUS OUTPUT_VARIABLE TOOLS_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
 
 	if(${VERSION_STATUS})
 		# check for the executable if the module isn't found
@@ -18,11 +18,11 @@
 			execute_process(COMMAND ${32BLIT_TOOLS_EXECUTABLE} version RESULT_VARIABLE VERSION_STATUS OUTPUT_VARIABLE TOOLS_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
 		endif()
 	else()
-		set(32BLIT_TOOLS_EXECUTABLE ${PYTHON_EXECUTABLE} -m ttblit)
+		set(32BLIT_TOOLS_EXECUTABLE ${Python_EXECUTABLE} -m ttblit)
 	endif()
 
 	# get just the python command to output to the user
-	get_filename_component(PYTHON_USER_EXECUTABLE "${PYTHON_EXECUTABLE}" NAME)
+	get_filename_component(PYTHON_USER_EXECUTABLE "${Python_EXECUTABLE}" NAME)
 
 	if(${VERSION_STATUS})
 		message(FATAL_ERROR "32Blit tools not found!\nInstall with: ${PYTHON_USER_EXECUTABLE} -m pip install 32blit\n")
diff --git a/32blit-stm32/firmware/CMakeLists.txt b/32blit-stm32/firmware/CMakeLists.txt
index 4118f2e..a95fc9c 100644
--- a/32blit-stm32/firmware/CMakeLists.txt
+++ b/32blit-stm32/firmware/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 project (firmware)
 find_package (32BLIT CONFIG REQUIRED PATHS ..)
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 69c3037..d11a354 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 
 # has to be before project
 include(32blit-pico/sdk_import.cmake)
diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt
index 7f03872..079d55a 100644
--- a/launcher/CMakeLists.txt
+++ b/launcher/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 project (launcher)
 find_package (32BLIT CONFIG REQUIRED PATHS ..)
 
diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt
index 28badae..23a29aa 100644
--- a/utilities/CMakeLists.txt
+++ b/utilities/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 project (examples)
 find_package (32BLIT CONFIG REQUIRED PATHS ..)
 
diff --git a/utilities/hardware-test/CMakeLists.txt b/utilities/hardware-test/CMakeLists.txt
index ea3aea6..eeda9b0 100644
--- a/utilities/hardware-test/CMakeLists.txt
+++ b/utilities/hardware-test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 project (hardware-test)
 find_package (32BLIT CONFIG REQUIRED PATHS ../..)
 
diff --git a/utilities/picosystem-hardware-test/CMakeLists.txt b/utilities/picosystem-hardware-test/CMakeLists.txt
index 3f2d584..eb264f8 100644
--- a/utilities/picosystem-hardware-test/CMakeLists.txt
+++ b/utilities/picosystem-hardware-test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.9...3.26)
+cmake_minimum_required(VERSION 3.12...3.31)
 project (picosystem-hardware-test)
 find_package (32BLIT CONFIG REQUIRED PATHS ../..)