Fix bundled vs. external GLEW build configuration options

The normal system include path (on Linux) for GLEW is
/usr/include/GL/glew.h (and the other headers). Previously the code here
has included glew/glew.h, which is incompatible with using the system
GLEW library.
Instead, we need to include GL/glew.h as expected and change the include
path in the build commands as needed depending on whether the system
directory or the bundled GLEW is being used.

It's a little tricky to ensure that we actually get the header from the
correct place for both build configurations, because when we're using
the bundled GLEW configuration /usr/include/ (or the standard include
path) will still be on the include path, so *both* the system glew.h
and the bundled glew.h will be available in the search path. We
just have to rely on the include flag order being right and the compiler
preferring include paths from flags to system include paths.

It should be fine... but it's a pain to actually test that it's correct.
master
John Bartholomew 2018-08-19 23:33:45 +01:00
parent 69bbb9488c
commit 5af8061ee8
13 changed files with 41 additions and 30 deletions

View File

@ -123,7 +123,7 @@ include_directories(
if (NOT USE_SYSTEM_LIBGLEW)
add_subdirectory(contrib/glew)
set(GLEW_LIBRARIES glew)
add_library(GLEW::GLEW ALIAS glew)
endif (NOT USE_SYSTEM_LIBGLEW)
add_subdirectory(contrib/imgui)
add_subdirectory(contrib/jenkins)
@ -147,7 +147,7 @@ target_link_libraries(${PROJECT_NAME} LINK_PRIVATE
${SIGCPP_LIBRARIES}
${VORBISFILE_LIBRARIES}
${LUA_LIBRARIES}
${GLEW_LIBRARIES}
GLEW::GLEW
imgui
jenkins
json

View File

@ -1,10 +1,14 @@
AM_CPPFLAGS = $(EXTRA_CPPFLAGS)
AM_CFLAGS = $(GL_CFLAGS) $(EXTRA_CFLAGS)
AM_CFLAGS = $(GL_CFLAGS) $(EXTRA_CFLAGS) $(GLEW_CFLAGS)
AM_CXXFLAGS = $(FREETYPE_CFLAGS) $(GL_CFLAGS) \
$(LUA_CFLAGS) $(SDL2_CFLAGS) $(SIGC_CFLAGS) $(EXTRA_CXXFLAGS) \
$(LIBPNG_CFLAGS) $(ASSIMP_CFLAGS) $(CURL_CFLAGS)
$(LIBPNG_CFLAGS) $(ASSIMP_CFLAGS) $(CURL_CFLAGS) $(GLEW_CFLAGS)
CFLAGS += $(OPTIMISE)
CXXFLAGS += $(OPTIMISE)
if !HAVE_GLEW
AM_CPPFLAGS += -I @top_srcdir@/contrib/glew
endif
GNU_VERBOSITY := $(if $(findstring GNU,$(shell $(MAKE) -v)),0,1)
V ?= $(GNU_VERBOSITY)

View File

@ -180,7 +180,7 @@ EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -DPIONEER_VERSION=\\\"$PIONEER_VERSION\\\" -DPIO
dnl __STDC_LIMIT_MACROS is defined so that GCC 4.7 will provide limit macros (eg, INT64_MAX) as part of cstdint
dnl (note, __STDC_LIMIT_MACROS is not needed in GCC 4.8 or later; those macros are part of the C++11 standard)
dnl __STDC_FORMAT_MACROS is the same deal for the (PRI|SCN)[ud](32|64) macros
EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -DGLEW_STATIC -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS"
EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS"
dnl Compiler warning options
@ -348,6 +348,10 @@ if test "$with_external_libglew" = yes; then
fi
AM_CONDITIONAL([HAVE_GLEW], [test "$HAVE_GLEW" = yes])
AM_COND_IF([HAVE_GLEW],
[],
[GLEW_CFLAGS="-DGLEW_STATIC"])
LUA_CFLAGS="$LUA_CFLAGS -DLUA_USE_APICHECK"
case "$host" in
i686-w64-mingw32.static)

View File

@ -1,6 +1,7 @@
project(glew LANGUAGES C)
set(BUILD_SHARED_LIBS OFF)
add_definitions(-DGLEW_STATIC)
add_library(${PROJECT_NAME} glew.c)
add_library(${PROJECT_NAME} STATIC glew.c)
target_compile_definitions(${PROJECT_NAME} PUBLIC -DGLEW_STATIC)
target_include_directories(${PROJECT_NAME}
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/GL"
INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")

View File

@ -4,8 +4,10 @@ if !HAVE_GLEW
include $(top_srcdir)/Makefile.common
AM_CPPFLAGS += -I @top_srcdir@/contrib/glew/GL
noinst_LIBRARIES = libglew.a
libglew_a_SOURCES = glew.c
noinst_HEADERS = glew.h glxew.h wglew.h eglew.h
noinst_HEADERS = GL/glew.h GL/glxew.h GL/wglew.h GL/eglew.h
endif

View File

@ -6,6 +6,6 @@
#ifndef _GL2_OPENGLIBS_H
#define _GL2_OPENGLIBS_H
#include "glew/glew.h"
#include <GL/glew.h>
#endif

View File

@ -6,6 +6,6 @@
#ifndef _OGL_OPENGLIBS_H
#define _OGL_OPENGLIBS_H
#include "glew/glew.h"
#include <GL/glew.h>
#endif

View File

@ -130,7 +130,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -140,7 +140,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -150,7 +150,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -162,7 +162,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -174,7 +174,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -186,7 +186,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -198,7 +198,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='PreRelease|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
@ -214,7 +214,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='PreRelease|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
@ -231,4 +231,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -130,7 +130,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -140,7 +140,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -150,7 +150,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -162,7 +162,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -174,7 +174,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -186,7 +186,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>GLEW_NO_GLU;GLEW_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
@ -198,7 +198,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='PreRelease|Win32'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
@ -214,7 +214,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='PreRelease|x64'">
<ClCompile>
<WarningLevel>Level2</WarningLevel>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>../../../src;../../src;../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/win32/include;../../../../pioneer-thirdparty/source/libsigc++-2.3.1;../../win32/include;../../include;../../../contrib;../../contrib/glew/GL</AdditionalIncludeDirectories>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
@ -231,4 +231,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>