ANSWER: several of the FreeBSD 14.0 include files have an OpenGL function signature for the "glShaderSource" function that includes an extra "const" for the 3rd argument. Kivy's source has:
void glShaderSource(GLuint shader, GLsizei count, const GLchar ** string, const GLint *length)
FreeBSD 14.0 has:
void glShaderSource(GLuint shader, GLsizei count, const GLchar * const * string, const GLint *length)
There are multiple include files on FreeBSD, some with one form, some with the other, and I didn't bother to track down which one the Kivy build actually uses. What I did was a bit of a hack, I changed line 251 in cgl_gl.pyx to:
cgl.glShaderSource = <GLSHADERSOURCEPTR>glShaderSource
(adding the "<GLSHADERSOURCEPTR>") which generates a cast in the C source that eliminates the error in the build. (Clang 16.0.6 considers the extra const to be a type conflict and generates an error without the cast.)
This was all in FreeBSD 14.0, Clang 16.0.6, Kivy v3.0.0.dev0, Python v3.9.18, Cython 3.0.0.