libclc: Use find_package to find Python 3 and require it

The script's shebang wants Python 3, so we use FindPython3. The
original code didn't work when an unversioned python was not available.
This is explicitly allowed in PEP 394. ("Distributors may choose to set
the behavior of the python command as follows: python2, python3, not
provide python command, allow python to be configurable by an end user
or a system administrator.")

Also I think it's actually required, so let the configuration fail if we
can't find it.

Lastly remove the shebang, since the script is only run via interpreter
and doesn't have the executable bit set anyway.

Reviewed By: jvesely

Differential Revision:

GitOrigin-RevId: 1c1a8105580784c96212db1afc097a844740bc69
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a77a37..b8b5cef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -184,11 +184,11 @@
-find_program( PYTHON python )
+find_package( Python3 REQUIRED COMPONENTS Interpreter )
 file( TO_CMAKE_PATH ${CMAKE_SOURCE_DIR}/generic/lib/ script_loc )
-	COMMAND ${PYTHON} ${script_loc} >
+	COMMAND ${Python3_EXECUTABLE} ${script_loc} >
 	DEPENDS ${script_loc} )
 add_custom_target( "" DEPENDS )
diff --git a/generic/lib/ b/generic/lib/
index 5c87fcb..7e649fa 100644
--- a/generic/lib/
+++ b/generic/lib/
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
 # OpenCL built-in library: type conversion functions
 # Copyright (c) 2013 Victor Oliveira <>