Building against OpenGL
Chris Barker via Pythonmac-SIG <[email protected]> Tue, 22 Mar 2022 12:47:31 -0700
| Newsgroups | gmane.comp.python.apple |
|---|---|
| Message-ID | <CALGmxEJ+Pfm7yBSWL63FJGf2OCGoV7iJLMOwnqp_Qgt-5-qFvQ@mail.gmail.com> |
--00000000000066720b05dad3e45d
Content-Type: multipart/alternative; boundary="00000000000066720a05dad3e45b"
--00000000000066720a05dad3e45b
Content-Type: text/plain; charset="UTF-8"
I have an app that uses a C (Cython) extension that needs to link against
the OpenGL libs (libGL and libGLU)
Here's the code that used to work:
gl_libraries = ["GL", "GLU"]
...
gl_include_dirs.append(
"/System/Library/Frameworks/OpenGL.framework/Headers",
)
gl_library_dirs.append("/System/Library/Frameworks/OpenGL.framework/Libraries",
)
And this resulted in this linking line that fails:
clang -bundle -undefined dynamic_lookup
-Wl,-rpath,/Users/chris.barker/miniconda3/envs/maproom39/lib
-L/Users/chris.barker/miniconda3/envs/maproom39/lib
-Wl,-rpath,/Users/chris.barker/miniconda3/envs/maproom39/lib
-L/Users/chris.barker/miniconda3/envs/maproom39/lib
build/temp.macosx-10.9-x86_64-3.9/libmaproom/Tessellator.o
-L/System/Library/Frameworks/OpenGL.framework/Libraries -lGL -lGLU -o
build/lib.macosx-10.9-x86_64-3.9/libmaproom/Tessellator.cpython-39-darwin.so
ld: library not found for -lGL
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
error: command '/usr/bin/clang' failed with exit code 1
Some of this makes sense -- as
System/Library/Frameworks/OpenGL.framework doesn't
have Libraries and Headers anymore. However, it also doesn't have the
headers or libraries (that I can tell) anywhere else in there.
Oddly, the compiler is finding the headers somewhere -- not sure where.
Google has failed me here -- but a few hints:
1) ctypes had to be updated to find the libs -- that was done, and ctypes
seems to be working. but what it does is:
In [1]: from ctypes.util import find_library
In [2]: find_library("OpenGL")
Out[2]: '/System/Library/Frameworks/OpenGL.framework/OpenGL'
but /System/Library/Frameworks/OpenGL.framework/OpenGL doesn't exist on my
system at all.
Reading a bit -- it seems that OS-X is doing some kind of cached libs
trickery -- but how do I tell distutils / clang how to find those libs??
Enclosed is the whole setup.py in case I've missed a detail.
Sometimes Apple Drives me crazy! Thanks for any hints --
-CHB
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
[email protected]
--00000000000066720a05dad3e45b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">I have an app that uses a C (Cython) extension that needs =
to link against the OpenGL libs (libGL and libGLU)<div><br></div><div>Here&=
#39;s the code that used to work:</div><div><br></div><div><font face=3D"mo=
nospace">=C2=A0 =C2=A0 gl_libraries =3D ["GL", "GLU"]<b=
r></font></div><div><font face=3D"monospace"><br></font></div><div><font fa=
ce=3D"monospace">=C2=A0 =C2=A0 ...</font></div><div><font face=3D"monospace=
"><br></font></div><font face=3D"monospace">=C2=A0 =C2=A0 gl_include_dirs.a=
ppend(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 "/System/Library/Frameworks/Open=
GL.framework/Headers",<br>=C2=A0 =C2=A0 )<br>=C2=A0 =C2=A0 gl_library_=
dirs.append("/System/Library/Frameworks/OpenGL.framework/Libraries&quo=
t;,<br>=C2=A0 =C2=A0 )</font><div><br></div><div>And this resulted in this =
linking line that fails:</div><div><font face=3D"monospace"><br></font></di=
v><div><font face=3D"monospace">clang -bundle -undefined dynamic_lookup -Wl=
,-rpath,/Users/chris.barker/miniconda3/envs/maproom39/lib -L/Users/chris.ba=
rker/miniconda3/envs/maproom39/lib -Wl,-rpath,/Users/chris.barker/miniconda=
3/envs/maproom39/lib -L/Users/chris.barker/miniconda3/envs/maproom39/lib bu=
ild/temp.macosx-10.9-x86_64-3.9/libmaproom/Tessellator.o -L/System/Library/=
Frameworks/OpenGL.framework/Libraries -lGL -lGLU -o build/lib.macosx-10.9-x=
86_64-3.9/libmaproom/<a href=3D"http://Tessellator.cpython-39-darwin.so">Te=
ssellator.cpython-39-darwin.so</a><br>ld: library not found for -lGL<br>cla=
ng: error: linker command failed with exit code 1 (use -v to see invocation=
)<br>error: command '/usr/bin/clang' failed with exit code 1</font>=
<br></div><div><font face=3D"monospace"><br></font></div>Some of this makes=
sense -- as <font face=3D"monospace">System/Library/Frameworks/OpenGL.fram=
ework=C2=A0</font>doesn't have Libraries and Headers anymore. However, =
it also doesn't have the headers or libraries (that I can tell) anywher=
e else in there.<br><br><div>Oddly, the compiler is finding the headers som=
ewhere -- not sure where.</div><div><br></div><div>Google has failed me her=
e -- but a few hints:</div><div><br></div><div>1) ctypes had to be updated =
to find the libs -- that was done, and ctypes seems to be working. but what=
it does is:</div><br><font face=3D"monospace">In [1]: from ctypes.util imp=
ort find_library<br>In [2]: find_library("OpenGL")<br>Out[2]: =
9;/System/Library/Frameworks/OpenGL.framework/OpenGL'</font><div><br></=
div><div>but <font face=3D"monospace">/System/Library/Frameworks/OpenGL.fra=
mework/OpenGL doesn't exist on my system at all.</font><br><br>Reading =
a bit -- it seems that OS-X is doing some kind of cached libs trickery -- b=
ut how do I tell distutils=C2=A0/ clang how to find those libs??</div><div>=
<br></div><div>Enclosed is the whole setup.py in case I've missed a det=
ail.</div><div><br></div><div>Sometimes Apple Drives me crazy! Thanks for a=
ny hints --=C2=A0</div><div><br></div><div>-CHB</div><div><br></div><div><b=
r><br><div><div><div>-- <br><div dir=3D"ltr" class=3D"gmail_signature" data=
-smartmail=3D"gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanograph=
er<br><br>Emergency Response Division<br>NOAA/NOS/OR&R =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0(206) 526-6959=C2=A0=C2=A0 voice<br>7600 Sand Po=
int Way NE =C2=A0=C2=A0(206) 526-6329=C2=A0=C2=A0 fax<br>Seattle, WA =C2=A0=
98115 =C2=A0 =C2=A0 =C2=A0=C2=A0(206) 526-6317=C2=A0=C2=A0 main reception<b=
r><br><a href=3D"mailto:[email protected]" target=3D"_blank">Chris.Bark=
[email protected]</a></div></div></div></div></div></div>
--00000000000066720a05dad3e45b--
--00000000000066720b05dad3e45d
Content-Type: text/x-python-script; charset="US-ASCII"; name="setup.py"
Content-Disposition: attachment; filename="setup.py"
Content-Transfer-Encoding: base64
Content-ID: <f_l12jqzji0>
X-Attachment-Id: f_l12jqzji0
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgoiIiIKc2V0dXAucHkgZm9yIGxpYm1hcHJvb20gdG8gYnVp
bGQgcHl0aG9uIGV4dGVuc2lvbnMKCnJpZ2h0IG5vdyAtIGl0IG1vc3RseSBpcyB0byBiZSB1c2Vk
IGFzIGZvbGxvd3M6CgpweXRob24gc2V0dXAucHkgYnVpbGRfZXh0IC0taW5wbGFjZQoKIiIiCmlt
cG9ydCBzeXMKCmZyb20gQ3l0aG9uLkRpc3R1dGlscyBpbXBvcnQgYnVpbGRfZXh0CmZyb20gc2V0
dXB0b29scyBpbXBvcnQgc2V0dXAsIEV4dGVuc2lvbgpmcm9tIGN0eXBlcy51dGlsIGltcG9ydCBm
aW5kX2xpYnJhcnkKCgp2ZXJzaW9uX3BhdGggPSAiLi4vbWFwcm9vbS9fdmVyc2lvbi5weSIKZXhl
Yyhjb21waWxlKG9wZW4odmVyc2lvbl9wYXRoKS5yZWFkKCksIHZlcnNpb25fcGF0aCwgJ2V4ZWMn
KSkKCiMgZmluZCB0aGUgdmFyaW91cyBoZWFkZXJzLCBsaWJzLCBldGMuCmltcG9ydCBudW1weQpn
bF9pbmNsdWRlX2RpcnMgPSBbbnVtcHkuZ2V0X2luY2x1ZGUoKV0KZ2xfbGlicmFyeV9kaXJzID0g
W10KZ2xfbGlicmFyaWVzID0gWyJHTCIsICJHTFUiXQoKaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoIndpbiIpOgogICAgZ2xfbGlicmFyaWVzID0gWyJvcGVuZ2wzMiIsICJnbHUzMiJdCmVsaWYg
c3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgogICAgZ2xfaW5jbHVkZV9kaXJzLmFwcGVuZCgKICAg
ICAgICAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9IZWFkZXJz
IiwKICAgICkKICAgIGdsX2xpYnJhcnlfZGlycy5hcHBlbmQoCiAgICAgICAgICNmaW5kX2xpYnJh
cnkoIk9wZW5HTCIpLAogICAgICAgICAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9MaWJyYXJpZXMiLAogICAgKQoKIyBEZWZpbml0aW9uIG9mIGNvbXBpbGVkIGV4
dGVuc2lvbiBjb2RlOgpiaXRtYXAgPSBFeHRlbnNpb24oImxpYm1hcHJvb20uQml0bWFwIiwKICAg
ICAgICAgICAgICAgICAgIHNvdXJjZXM9WyJsaWJtYXByb29tL0JpdG1hcC5weXgiXSwKICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bbnVtcHkuZ2V0X2luY2x1ZGUoKV0sCiAgICAgICAg
ICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbIi1PMyIgXSwKICAgICAgICAgICAgICAg
ICAgICkKCnNoYXBlID0gRXh0ZW5zaW9uKCJsaWJtYXByb29tLlNoYXBlIiwKICAgICAgICAgICAg
ICAgICAgc291cmNlcz1bImxpYm1hcHJvb20vU2hhcGUucHl4Il0sCiAgICAgICAgICAgICAgICAg
IGluY2x1ZGVfZGlycz1bbnVtcHkuZ2V0X2luY2x1ZGUoKV0sCiAgICAgICAgICAgICAgICAgIGV4
dHJhX2NvbXBpbGVfYXJncyA9IFsiLU8zIiBdLAogICAgICAgICAgICAgICAgICApCgp0ZXNzZWxs
YXRvciA9IEV4dGVuc2lvbigibGlibWFwcm9vbS5UZXNzZWxsYXRvciIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZXM9WyJsaWJtYXByb29tL1Rlc3NlbGxhdG9yLnB5eCJdLAogICAgICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9Z2xfaW5jbHVkZV9kaXJzLAogICAgICAgICAg
ICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9Z2xfbGlicmFyeV9kaXJzLAogICAgICAgICAgICAg
ICAgICAgICAgICBsaWJyYXJpZXM9Z2xfbGlicmFyaWVzLAogICAgICAgICAgICAgICAgICAgICAg
ICBleHRyYV9jb21waWxlX2FyZ3MgPSBbIi1PMyIgXSwKICAgICAgICAgICAgICAgICAgICAgICAg
KQoKcmVuZGVyID0gRXh0ZW5zaW9uKCJsaWJtYXByb29tLlJlbmRlciIsCiAgICAgICAgICAgICAg
ICAgICBzb3VyY2VzPVsibGlibWFwcm9vbS9SZW5kZXIucHl4Il0sCiAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlX2RpcnM9Z2xfaW5jbHVkZV9kaXJzLAogICAgICAgICAgICAgICAgICAgbGlicmFy
eV9kaXJzPWdsX2xpYnJhcnlfZGlycywKICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1nbF9s
aWJyYXJpZXMsCiAgICAgICAgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbIi1PMyIg
XSwKICAgICAgICAgICAgICAgICAgICkKCiMgcHl0cmlhbmdsZSBleHRlbnNpb24KCkRFRklORVMg
PSBbKCJUUklMSUJSQVJZIiwgTm9uZSksICMgdGhpcyBidWlsZHMgVHJpYW5nbGUgYXMgYSBsaWIs
IHJhdGhlciB0aGFuIGFzIGEgY29tbWFuZCBsaW5lIHByb2dyYW0uCiAgICAgICAgICAgKCJOT19U
SU1FUiIsIE5vbmUpLCAjIGRvbid0IG5lZWQgdGhlIHRpbWVyIGNvZGUgKCpuaXggc3BlY2lmaWMg
YW55d2F5KQogICAgICAgICAgICgiUkVEVUNFRCIsIE5vbmUpLAogICAgICAgICAgIF0KCiMgQWRk
IHRoZSBkZWZpbmVzIGZvciBkaXNhYmxpbmcgdGhlIEZQVSBleHRlbmRlZCBwcmVjaXNpb24gICAg
ICAgICAgIF0KIyMgZml4bWU6IHRoaXMgbmVlZHMgYSBsb3Qgb2Ygd29yayEKIyMgICAgICAgIGl0
J3MgcmVhbGx5IGNvbXBpbGVyIGRlcGVuZGVudCwgbm90IG1hY2hpbmUgZGVwZW5kZW50CmlmIHN5
cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgIHByaW50KCJhZGRpbmcgbm8gQ1BVIGZsYWdzIGZv
ciBtYWMiKQogICAgIyMgYWNjb3JkaW5nIHRvOgogICAgIyMgaHR0cDovL3d3dy5jaHJpc3RpYW4t
c2VpbGVyLmRlL3Byb2pla3RlL2ZwbWF0aC8KICAgICMjIG5vdGhpbmcgc3BlY2lhbCBpcyByZXF1
aXJlZCBvbiBPUy1YICEKICAgICMjCiAgICAjIyAiIiIKICAgICMjICAgICB0aGUgcHJlY2lzaW9u
IGlzIGFsd2F5cyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXJnZXN0IG9wZXJoYW5kIHR5cGUgaW4gQy4K
ICAgICMjCiAgICAjIyAgICAgQmVjYXVzZSBvZiB0aGlzLCBNYWMgT1MgWCBkb2VzIG5vdCBwcm92
aWRlIGFueSBDIHdyYXBwZXIgbWFjcm9zIHRvCiAgICAjIyAgICAgY2hhbmdlIHRoZSBpbnRlcm5h
bCBwcmVjaXNpb24gc2V0dGluZyBvZiB0aGUgeDg3IEZQVS4gSXQgaXMgc2ltcGx5CiAgICAjIyAg
ICAgbm90IG5lY2Vzc2FyeS4gU2hvdWxkIHRoaXMgcmVhbGx5IGJlIHdhbnRlZCwgaW5saW5lIGFz
c2VtYmxlciB3b3VsZAogICAgIyMgICAgIHByb2JhYmx5IGJlIHBvc3NpYmxlLCBJIGhhdmVuJ3Qg
dGVzdGVkIHRoaXMsIGhvd2V2ZXIuCgoKICAgICMjICAgICBTaW1wbHkgdXNlIHRoZSBjb3JyZWN0
IGRhdGF0eXBlIGFuZCB0aGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgd2lsbCBoYXZlIHRoZQogICAg
IyMgICAgIGNvcnJlY3Qgc2VtYW50aWNzCiAgICAjIyAiIiIKZWxpZiBzeXMucGxhdGZvcm0gPT0g
J3dpbjMyJzoKICAgIHByaW50KCJhZGRpbmcgZGVmaW5lIGZvciBXaW5kb3dzIGZvciBGUFUgbWFu
YWdlbWVudCIpCiAgICBERUZJTkVTLmFwcGVuZCgoJ0NQVTg2JywgTm9uZSkpCmVsaWYgJ2xpbnV4
JyBpbiBzeXMucGxhdGZvcm0gOiMgIHNvbWV0aGluZyBmb3IgbGludXggaGVyZS4uLgogICAgcHJp
bnQoImFkZGluZyBDUFUgZmxhZ3MgZm9yIEludGVsIExpbnV4IikKICAgIERFRklORVMuYXBwZW5k
KCgnTElOVVgnLCBOb25lKSkKZWxzZToKICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGhpcyBzeXN0
ZW0gaXNuJ3Qgc3VwcG9ydGVkIGZvciBidWlsZGluZyB5ZXQiKQoKcHl0cmlhbmdsZSA9IEV4dGVu
c2lvbigKICAgICJsaWJtYXByb29tLnB5dHJpYW5nbGUiLAogICAgc291cmNlcyA9IFsgImxpYm1h
cHJvb20vcHl0cmlhbmdsZS0xLjYuMS9zcmMvcHl0cmlhbmdsZS5weXgiLAogICAgICAgICAgICAg
ICAgImxpYm1hcHJvb20vcHl0cmlhbmdsZS0xLjYuMS90cmlhbmdsZS90cmlhbmdsZS5jIiBdLAog
ICAgaW5jbHVkZV9kaXJzID0gWyBudW1weS5nZXRfaW5jbHVkZSgpLAogICAgICAgICAgICAgICAg
ICAgICAibGlibWFwcm9vbS9weXRyaWFuZ2xlLTEuNi4xL3RyaWFuZ2xlIiwKICAgICAgICAgICAg
ICAgICAgICAgXSwKICAgIGRlZmluZV9tYWNyb3MgPSBERUZJTkVTLAopCgojIEV4dGVuc2lvbiBt
b2R1bGUgaXMgbmFtZWQgbGlibWFwcm9vbS5jb250b3VyIHJhdGhlciB0aGFuIGxpYm1hcHJvb20u
cHlfY29udG91cgojIGJlY2F1c2UgaW1wb3J0cyBnZXQgY29uZnVzZWQgd2l0aCB0aGUgcHlfY29u
dG91ciBzb3VyY2UgZGlyZWN0b3J5IHdpdGhpbiB0aGUgbGlibWFwcm9vbQojIGRpcmVjdG9yeSAo
ZXJyb3IgbWVzc2FnZSAiZHluYW1pYyBtb2R1bGUgZG9lc24ndCBkZWZpbmUgbW9kdWxlIGV4cG9y
dCBmdW5jdGlvbiIpLCBidXQKIyBtb3ZpbmcgdGhlIHB5X2NvbnRvdXIgZGlyZWN0b3J5IG91dHNp
ZGUgb2YgdGhlIGxpYm1hcHJvb20gZGlyZWN0b3J5IGRvZXNuJ3Qgc2VlbSB0byBoZWxwLgpweV9j
b250b3VyID0gRXh0ZW5zaW9uKAogICAgImxpYm1hcHJvb20uY29udG91ciIsCiAgICBzb3VyY2Vz
ID0gWwogICAgICAgICJsaWJtYXByb29tL3B5X2NvbnRvdXIvcHlfY29udG91ci9jb250b3VyLnB5
eCIsCiAgICAgICAgImxpYm1hcHJvb20vcHlfY29udG91ci9weV9jb250b3VyL2NvbnJlYy5jeHgi
LAogICAgXSwKICAgIGluY2x1ZGVfZGlycyA9IFsKICAgICAgICBudW1weS5nZXRfaW5jbHVkZSgp
LAogICAgXSwKKQoKCmV4dF9tb2R1bGVzID0gW2JpdG1hcCwgc2hhcGUsIHRlc3NlbGxhdG9yLCBy
ZW5kZXIsIHB5dHJpYW5nbGUsIHB5X2NvbnRvdXJdCiNleHRfbW9kdWxlcyA9IFt0ZXNzZWxsYXRv
cl0KCmRhdGFfZmlsZXMgPSBbXQpvcHRpb25zID0ge30KcGFja2FnZV9kYXRhID0ge30KCmluc3Rh
bGxfcmVxdWlyZXMgPSBbCiAgICAnbnVtcHknLAogICAgJ3B5b3BlbmdsJywKICAgICdjeXRob24n
LApdCgpzZXR1cCgKICAgIG5hbWU9ImxpYm1hcHJvb20iLAogICAgdmVyc2lvbj1fX3ZlcnNpb25f
XywKICAgIGRlc2NyaXB0aW9uPSJDb21waWxlZCBzdXBwb3J0IGxpYnJhcmllcyBmb3IgTWFwUm9v
bSIsCiAgICBhdXRob3I9Ik5PQUEiLAogICAgaW5zdGFsbF9yZXF1aXJlcz1pbnN0YWxsX3JlcXVp
cmVzLAogICAgc2V0dXBfcmVxdWlyZXM9WwogICAgICAgICdwYWNrYWdpbmcnLAogICAgXSwKICAg
IGRhdGFfZmlsZXM9ZGF0YV9maWxlcywKICAgIHBhY2thZ2VzPVsnbGlibWFwcm9vbSddLAogICAg
cGFja2FnZV9kYXRhPXBhY2thZ2VfZGF0YSwKICAgIGV4dF9tb2R1bGVzPWV4dF9tb2R1bGVzLAog
ICAgb3B0aW9ucz1vcHRpb25zLAogICAgemlwX3NhZmUgPSBGYWxzZSwKKQo=
--00000000000066720b05dad3e45d
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Pythonmac-SIG maillist - [email protected]
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG
--00000000000066720b05dad3e45d--