Commit Graph

53 Commits

Author SHA1 Message Date
grahamreeds
a4d8b2a2a3 Bump minimum cmake version to 3.16 matching the LTS release of Ubuntu 20.04 2023-09-22 07:03:54 +10:00
Jean-Christophe Fillion-Robin
281c2936f3 cmake: Update install rules to support component-based installation 2023-06-22 07:47:53 +10:00
NoamDev
ef7d12ecb7 Added to .gitignore auto-checkout out repos 2023-04-24 20:20:17 +10:00
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
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
Olli Kallioinen
f5f69b25eb Fix for issue #169 (glew cmake project requires a c++ compiler) 2017-12-30 09:25:54 +10: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
Marcel Metz
6bd1a26375 CMake: Use GNUInstallDirs variables for pkg-config 2016-04-02 10:37:12 +02:00
Marcel Metz
8042db9fa3 CMake: Use GNUInstallDirs to place the build artifacts properly
CMake 2.8.5 added the GNUInstallDirs module, which provides various
variables following the CMAKE_INSTALL_*DIR pattern to allow users a more
flexible installation setup and to provide sensible defaults while
respecting distribution specific install locations like lib64 for RPM
based linux distributions or debian multiarch tuples.
2016-04-02 10:57:37 +10:00
stopiccot
30df027756 CMake support for building OS X framework 2016-03-19 07:30:41 +03:00
Wes Tarro
9548431bd0 Moved DLL entry-point for GCC into glew.c rather than a standalone file
included using CMake.
2016-02-15 15:15:33 -05:00
Wes Tarro
02fc17f511 Fix warnings and CMake issue. 2016-02-06 13:35:13 -05:00
Wes Tarro
32b2ea5266 Fixed building with GCC - needed different options and had to create a dummy
DLL entry to avoid crashes.
2016-02-06 13:13:04 -05:00
Wes Tarro
31cee87b1c Finish taking C runtime out of GLEW on Windows and remove no longer supported MX configurations from Visual Studio projects. 2016-02-06 10:54:29 -05:00
Wes Tarro
5efdbaefc8 Makes GLEW truly independent of C runtime library on Windows to prevent
any issues with mixing compilers and library versions. The Visual Studio
Projects need some touching up to get all of the settings synced up for all
of the build variants.
2016-02-05 02:53:25 -05:00
Nigel Stewart
9297c604ca For cmake 3.4 - link X11 libs for glewinfo and visualinfo unless not available, or GLEW_OSMESA mode. 2016-01-08 23:25:46 +10:00
Nigel Stewart
a4aa9b2717 Remove MX support due to the complexity of supporting both MX and Core contexts 2015-12-06 12:49:24 +10:00
Gyusun Yeom
c5c60068f7 Add ".rc" files to each libraries and executables for Windows build 2015-10-10 11:40:47 +10:00
Nigel Stewart
fd49b2baff Touch-ups for GLEW_OSMESA build support 2015-10-10 11:33:40 +10:00
Nigel Stewart
4718d42dde Regal-mode support for cmake build 2015-10-10 11:22:12 +10:00
Tamas Kenez
d2e6823451 cmake: install config-module
Installs a config module if CMake verion >= 2.8.12.
The config-module creates the import library targets
built in the project (glew, glew_s, glewmx, glewmx_s)
but in accordance with the FindGLEW module shipped with
CMake, it also creates GLEW::GLEW and GLEW::GLEWMX.

GLEW::GLEW and GLEW::GLEWMX will be simply copies of
glew/glewmx or glew_s/glewmx_s. If both versions are
available they alias the shared versions.

The default behaviour can be changed either when installing
or when using the package:

- Set BUILD_SHARED_LIBS to OFF or ON when building and
  installing GLEW. This controls which libraries
  (shared or static) will be installed (and not which
  will be built).
- Set GLEW_USE_STATIC_LIBS to OFF or ON before calling
  `find_package(GLEW CONFIG REQUIRED)` to force
  the config-module to create GLEW::GLEW and GLEWMX
  as aliases to glew/glewmx or glew_s/glewmx_s

The script ./cmake-testbuild.sh is added to test the
CMake build and config-module. See instructions there.
2015-06-22 14:06:50 +02:00
Tamas Kenez
9b5d29be72 fix previous commit 2015-06-10 10:30:26 +02:00
Tamas Kenez
29a0ac0f47 cmake: install named headers instead of directory 2015-06-10 10:27:28 +02:00
Tamas Kenez
e618ce2efb cmake: install header files 2015-06-09 14:59:57 +02:00
xantares
b565769b01 fix compile definitions for glewmx too 2015-02-26 11:10:12 +00:00