Commit Graph

103 Commits

Author SHA1 Message Date
Marvin Schmidt
c8a2ddfbe1 cmake: Link libGLX when X11 support is requested
Using cmake (version 3.23.0) the build fails to link the utils
```
[...]
[ 87%] Linking C executable bin/visualinfo                                                                                                                      [113/5249]
/usr/x86_64-pc-linux-gnu/bin/cmake -E cmake_link_script CMakeFiles/visualinfo.dir/link.txt --verbose=1
/usr/host/bin/x86_64-pc-linux-gnu-cc -Wall -g -ggdb3 -O0 -rdynamic CMakeFiles/visualinfo.dir/home/marv/scm/github/glew/src/visualinfo.c.o -o bin/visualinfo  -Wl,-rpath,/h
ome/marv/scm/github/glew/build-obj/lib: lib/libGLEW.so.2.2.0 -lSM -lICE -lX11 -lXext -lOpenGL -lSM -lICE -lX11 -lXext
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: CMakeFiles/visualinfo.dir/home/marv/scm/github/glew/src/visualinfo.c.o: in function `main':
/home/marv/scm/github/glew/src/visualinfo.c:198: undefined reference to `glXQueryExtensionsString'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: CMakeFiles/visualinfo.dir/home/marv/scm/github/glew/src/visualinfo.c.o: in function `CreateContext':
/home/marv/scm/github/glew/src/visualinfo.c:1204: undefined reference to `glXQueryExtension'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: /home/marv/scm/github/glew/src/visualinfo.c:1206: undefined reference to `glXChooseVisual'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: /home/marv/scm/github/glew/src/visualinfo.c:1209: undefined reference to `glXCreateContext'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: /home/marv/scm/github/glew/src/visualinfo.c:1221: undefined reference to `glXMakeCurrent'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: CMakeFiles/visualinfo.dir/home/marv/scm/github/glew/src/visualinfo.c.o: in function `DestroyContext':
/home/marv/scm/github/glew/src/visualinfo.c:1227: undefined reference to `glXDestroyContext'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: lib/libGLEW.so.2.2.0: undefined reference to `glXGetProcAddressARB'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: lib/libGLEW.so.2.2.0: undefined reference to `glXQueryVersion'
/usr/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld: lib/libGLEW.so.2.2.0: undefined reference to `glXGetClientString'
collect2: error: ld returned 1 exit status
```

Commit 2b50f4a ("CMake: Prefer GLVND if available") changed the cmake
policy CMP0072 to `NEW` in order to make the FindOpenGL module prefer the
GLVND libraries (libOpenGL and libGLX) over the legacy GL library (libGL).

The help of the CMP0072 policy states:

> CMP0072
> -------
>
> .. versionadded:: 3.11
>
> ``FindOpenGL`` prefers GLVND by default when available.
>
> The ``FindOpenGL`` module provides an ``OpenGL::GL`` target and an
> ``OPENGL_LIBRARIES`` variable for projects to use for legacy GL interfaces.
> When both a legacy GL library (e.g. ``libGL.so``) and GLVND libraries
> for OpenGL and GLX (e.g. ``libOpenGL.so`` and ``libGLX.so``) are available,
> the module must choose between them.  It documents an ``OpenGL_GL_PREFERENCE``
> variable that can be used to specify an explicit preference.  When no such
> preference is set, the module must choose a default preference.
>
> CMake 3.11 and above prefer to choose GLVND libraries.  This policy provides
> compatibility with projects that expect the legacy GL library to be used.
>
> The ``OLD`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to
> ``LEGACY``.  The ``NEW`` behavior for this policy is to set
> ``OpenGL_GL_PREFERENCE`` to ``GLVND``.
>
> This policy was introduced in CMake version 3.11.  CMake version
> 3.23.0 warns when the policy is not set and uses ``OLD`` behavior.
> Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW``
> explicitly.
>
> .. note::
>   The ``OLD`` behavior of a policy is
>   ``deprecated by definition``
>   and may be removed in a future version of CMake.

The changes from the mentioned commit combined with the new behaviour of
the FindOpenGL module resulted in the glew library being linked against
`libOpenGL` instead of `libGL`, but not `libGLX`. Since `libOpenGL`
doesn't link against GLX compared to `libGL` the linker errors above
surfaced. Fix this by explicitly linking against libGLX if GLEW_X11 is
enabled
2022-06-13 12:22:14 +10:00
Marvin Schmidt
5f57b09c04 cmake: Install eglew.h
The eglew.h header was never installed using the CMake build. Fix this
by adding it to the list of public headers
2022-02-09 08:15:29 +10:00
Dmitry Kalinkin
966e53fa15 CMake: don't hardcode "<prefix>/include" in target_include_directories 2022-01-07 12:54:49 +10:00
luz paz
4a757ac7c0 Fix various typos
Found via `codespell -q 3 -L ake,extrem,lod,parms`
2021-12-20 07:31:49 +10:00
Daniel Bernar
80e061f85d Add ability to change output dirs
https://github.com/nigels-com/glew/issues/264
2021-03-21 12:41:32 +10:00
Julien Schueller
2b50f4acd2 CMake: Prefer GLVND if available 2021-03-21 12:41:04 +10:00
Julien Schueller
2b16160853 CMake: Add BUILD_SHARED_LIBS option 2021-03-21 12:41:04 +10:00
Julien Schueller
e34bb212f6 CMake: Add X11/EGL options 2021-03-21 12:41:04 +10:00
Danilo Spinella
95329dc4a6 GLEW_EGL: Fix EGL library check 2021-01-10 12:07:23 +10:00
Jose Santiago
5ea705737a Link the UTILS to the static library if BUILD_SHARED_LIBS is disabled. 2020-03-06 07:54:09 +10:00
Jose Santiago
882aef9761 Do not put build artifacts in the source directory. 2020-03-06 07:53:49 +10:00
Nigel Stewart
4bbe8aa2ab Visual Studio 16 release-mode cmake fixup: libvcruntime.lib, msvcrt.lib 2019-09-28 12:27:53 +10:00
Nigel Stewart
68135131a9 Resolve visualinfo and glewinfo link warnings for vc15 build 2019-09-28 11:54:27 +10:00
Nigel Stewart
b374d9ad93 Fix vc15 release build memset link problem for v142 toolchains 2019-09-28 11:45:01 +10:00
Nigel Stewart
44049b7de2 FreeBSD cmake fixup for locating X11 include and lib 2019-02-02 09:23:01 +10:00
Danilo Spinella
c63cdf976d Add GLEW_EGL in cmake build 2018-12-29 20:21:23 +10:00
Nigel Stewart
8b2d34956c Conditional cmake policy CMP0003 and CMP0042 2018-10-13 14:07:01 +10:00
dimitri
b7c40325c7 Removed conan configuration. 2018-10-10 11:01:48 +10:00
dimitri
e544f8c12d Correction for conan v1.0.0 2018-01-13 11:50:10 +10:00
dimitri
ef0e1c4d3a Still avoiding 32-bit builds online, even though they work locally. 2018-01-13 11:50:10 +10:00
dimitri
1cdf352217 Building 32-bit binaries on 64-bit linux machines now supported. 2018-01-13 11:50:10 +10:00
Olli Kallioinen
f5f69b25eb Fix for issue #169 (glew cmake project requires a c++ compiler) 2017-12-30 09:25:54 +10:00
dimitri
871bb6601b Still avoiding 32-bit builds online, even though they work locally. 2017-11-19 09:17:22 +10:00
dimitri
0b396919e6 Building 32-bit binaries on 64-bit linux machines now supported. 2017-11-19 09:17:22 +10:00
wiranoid
ee3026486f Add Visual Studio 2015 and 2017 project files 2017-11-19 09:16:38 +10:00
dimitri
1579119716 Removed replace_in_file from imports. 2017-11-05 21:52:42 +10:00
dimitri
a30e00892a No longer need conanfile string replacement for win gcc. 2017-11-05 21:52:42 +10:00
Steve Robinson
07b759b784 The install_manifest.txt is actually in the top-level binary directory, not the project-specific binary directory. I get the CMake error 'Cannot find install manifest' if I've added the glew library as a subdirectory in my existing CMake project. 2017-10-09 21:10:58 +10:00
dimitri
1b1371ddcb Conan package test cmakelists cleanup. 2017-07-26 05:35:34 +02:00
dimitri
f8c6f9bffd Using standard args in FindGLEW. 2017-07-26 05:23:03 +02:00
dimitri
b194494aef No version and no username in test_package/conanfile.py 2017-07-25 05:50:18 +02:00
dimitri
58b23c29a7 Using exports_sources. 2017-07-24 23:01:06 +02:00
dimitri
fc5659148d Correction for conan mingw debug builds. 2017-07-21 17:40:11 +03:00
dimitri
fd281347f4 Copying .pdb files for Windows debug static builds. 2017-06-30 07:23:23 +02:00
dimitri
b7fbaec9b3 Support for building released versions added. 2017-06-27 06:01:39 +02:00
dimitri
cf469ab200 Added conan packaging support. 2017-06-27 05:59:43 +02:00
dimitri
25bc79f2b9 Added basic conan files. 2017-06-25 20:15:34 +02:00
jasjuang
0b5461935f add sudo make uninstall for cmake build 2017-06-20 16:06:47 -07:00
Claudio
298528cd87
Remove trailing space 2017-04-23 19:24:39 +02:00
Claudio
e7bf0f70b3
Add VERSION and SOVERSION number to shared libraries
With this commit, when building or installing `glew`, VERSION and
SOVERSION symlinks to the `glew` shared library are created in the
library installation folder if the platform supports them and the linker
supports so-names.
VERSION and SOVERSION specify, respectively, the build version and API
version of the shared library.

As an example, under macOS, the following symlinks will be created:
libGLEW.2.0.0.dylib                      (the shared library)
libGLEW.2.0.dylib -> libGLEW.2.0.0.dylib (VERSION symlink)
libGLEW.dylib -> libGLEW.2.0.dylib       (SOVERSION symlink)

Fixes #141
2017-04-23 19:24:12 +02:00
Nigel Stewart
925722f910 OSX cmake refinement - no Requires: glu in glew.pc 2017-04-23 11:23:12 +10:00
Nigel Stewart
a9e50908a1 For cmake build, skip X11 check for Windows and Apple OSX 2017-04-23 09:34:57 +10:00
Nigel Stewart
d77479401d For cmake build, opt into Mac OS X rpath mode, bump version to 2.8.12 2017-04-23 09:20:49 +10:00
Abdo Roig-Maranges
cedd84f839 cmake: only install PDB files with msvc
Otherwise cmake windows builds with the mingw compiler are broken.
2016-12-27 20:48:09 +01:00
Nigel Stewart
62ac9ddfa4 Merge pull request #117 from undisputed-seraphim/Windows_Build_Fixes
Resolve issue #99: Removed /RTC1 flag in glew…
2016-12-23 21:05:39 +10:00
Rashad Kanavath
c690766fc2 CMake: call find_package only if build_utils is enabled 2016-12-23 05:50:13 +01:00
Tan Li Boon
6a38eb3fc5 Resolve issue #99:
- Used cmake regex to strip out the /RTC1 flag used by MSVC debug builds, which conflicts with the -nodefaultlib and -noentry flags.
2016-11-21 20:03:23 +08:00
Nigel Stewart
180db268c0 cmake fixup for non-Windows 2016-05-21 08:07:56 +10:00
Marcel Metz
f3831806e7 Install pdb file for Debug and RelWithDebInfo 2016-04-03 13:12:29 +02:00
Marcel Metz
24bcf04c19 CMake: Use GNUInstallDirs variables for MacOSX framework destination 2016-04-02 10:40:42 +02:00