Update Regal GLEW to 1.11.0, including OpenGL 4.5 Refresh apitrace from upstream Can now "make framework" under Mac OS Merged pull requests 134, 135, and 136
342 lines
9.9 KiB
Text
342 lines
9.9 KiB
Text
ifndef MAKEFILE_REGAL_INCLUDED
|
|
MAKEFILE_REGAL_INCLUDED := 1
|
|
|
|
.PHONY: regal.lib regal.clean
|
|
|
|
include build/common.inc
|
|
|
|
include build/regal.inc
|
|
|
|
#
|
|
# regal
|
|
#
|
|
|
|
#
|
|
# Regenerate Regal sources
|
|
#
|
|
|
|
export:
|
|
python scripts/Export.py --api gl 4.4 --api wgl 4.4 --api glx 4.4 --api cgl 1.4 --api egl 1.0 --outdir .
|
|
|
|
# Shared library target not currently supported for NaCL or emscripten
|
|
|
|
ifneq ($(filter nacl% emscripten%,$(SYSTEM)),)
|
|
REGAL.SHARED :=
|
|
endif
|
|
|
|
ifdef REGAL.STATIC
|
|
|
|
include Makefile.apitrace
|
|
include Makefile.libpng
|
|
include Makefile.glsloptlib
|
|
include Makefile.pcrelib
|
|
|
|
all:: regal.lib
|
|
|
|
clean:: regal.clean
|
|
|
|
framework:: regal.framework
|
|
|
|
REGAL.LDFLAGS :=
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
REGAL.LDFLAGS += -lstdc++
|
|
endif
|
|
|
|
REGAL.LDFLAGS += -pthread -lm
|
|
REGAL.LIBS :=
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
REGAL.LDFLAGS += -ldl
|
|
endif
|
|
|
|
REGAL.SRCS := $(REGAL.CXX)
|
|
|
|
# Disable civetweb and Regal HTTP for NaCl build
|
|
|
|
ifeq ($(filter nacl% emscripten%,$(SYSTEM)),)
|
|
REGAL.SRCS += src/civetweb/civetweb.c
|
|
endif
|
|
|
|
ifeq ($(filter -DREGAL_NO_MD5%,$(CFLAGS)),)
|
|
REGAL.SRCS += src/md5/src/md5.c
|
|
endif
|
|
|
|
REGAL.SRCS += src/jsonsl/jsonsl.c
|
|
|
|
|
|
# Optional flags
|
|
|
|
# REGAL_SYS_ES1 for ES1 back-end support, disabled by default
|
|
# REGAL.CFLAGS += -DREGAL_SYS_ES1=1
|
|
|
|
#
|
|
# Add debug-specific flags
|
|
#
|
|
|
|
ifeq ($(MODE),debug)
|
|
#REGAL.CFLAGS += -DREGAL_ASSERT_VERBOSE=1
|
|
#REGAL.CFLAGS += -DREGAL_NO_ASSERT=1
|
|
endif
|
|
|
|
#
|
|
# In release mode we're aggressive about leaving out functionality
|
|
# in order to minimize the footprint of libRegal.so.1
|
|
#
|
|
|
|
ifeq ($(MODE),release)
|
|
REGAL.CFLAGS += -DNDEBUG
|
|
REGAL.CFLAGS += -DREGAL_DECL_EXPORT=1
|
|
REGAL.CFLAGS += -DREGAL_LOG_ALL=0
|
|
REGAL.CFLAGS += -DREGAL_LOG_ONCE=0
|
|
REGAL.CFLAGS += -DREGAL_LOG_JSON=0
|
|
REGAL.CFLAGS += -DREGAL_HTTP=0
|
|
REGAL.CFLAGS += -DREGAL_NO_ASSERT=1
|
|
REGAL.CFLAGS += -DREGAL_NO_PNG=1
|
|
REGAL.CFLAGS += -DREGAL_STATISTICS=0
|
|
REGAL.CFLAGS += -DREGAL_CODE=0
|
|
REGAL.CFLAGS += -fomit-frame-pointer
|
|
REGAL_LOG ?= 0
|
|
REGAL_ERROR ?= 0
|
|
REGAL_CACHE ?= 0
|
|
REGAL_DEBUG ?= 0
|
|
#REGAL_EMULATION ?= 1 # 0 for "loader only"
|
|
#REGAL.CFLAGS += -DREGAL_NO_TLS=0 # 1 for single threaded
|
|
endif
|
|
|
|
#
|
|
# Flags for custom mode
|
|
#
|
|
|
|
ifeq ($(MODE),custom)
|
|
endif
|
|
|
|
# NaCL options
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
REGAL.CFLAGS += -DREGAL_SYS_ES2=1
|
|
REGAL.CFLAGS += -DREGAL_HTTP=0
|
|
REGAL.CFLAGS += -DREGAL_STATISTICS=0
|
|
REGAL.CFLAGS += -Wno-constant-logical-operand
|
|
REGAL.CFLAGS += -DREGAL_PLUGIN=0
|
|
REGAL.CFLAGS += -DREGAL_TRACE=0
|
|
REGAL.CFLAGS += -DREGAL_NAMESPACE=1 -DREGAL_STATIC_ES2
|
|
REGAL_LOG = 0
|
|
REGAL_NO_TLS = 1
|
|
|
|
# Enabling this requires the library to be built with it, as well as all code
|
|
# that uses it. Defining this means that Regal will link statically to GL
|
|
# and EGL, and code will have to #include <GL/Regal.h> before any GL
|
|
# includes to pull in a bunch of #defines (e.g. #define glGetError rglGetError)
|
|
#LIB.CFLAGS += -DREGAL_SYS_EMSCRIPTEN_STATIC=1
|
|
|
|
endif
|
|
|
|
#
|
|
# Emscripten-specific
|
|
#
|
|
|
|
ifneq ($(filter emscripten%,$(SYSTEM)),)
|
|
REGAL.CFLAGS += -DREGAL_SYS_EMSCRIPTEN=1 -DREGAL_SYS_EGL=1 -DREGAL_SYS_ES2=1
|
|
REGAL.CFLAGS += -DREGAL_HTTP=0
|
|
REGAL.CFLAGS += -Wno-constant-logical-operand
|
|
REGAL.CFLAGS += -DREGAL_PLUGIN=0
|
|
REGAL.CFLAGS += -DREGAL_TRACE=0
|
|
REGAL.CFLAGS += -s LEGACY_GL_EMULATION=1
|
|
REGAL.CFLAGS += -s OUTLINING_LIMIT=50000
|
|
REGAL.CFLAGS += --js-opts 0
|
|
REGAL_LOG := 0
|
|
REGAL_ERROR := 0
|
|
REGAL_CACHE := 0
|
|
REGAL_DEBUG := 0
|
|
REGAL_NO_TLS := 1
|
|
endif
|
|
|
|
#
|
|
|
|
ifneq ($(REGAL_LOG),)
|
|
REGAL.CFLAGS += -DREGAL_LOG=$(REGAL_LOG)
|
|
endif
|
|
|
|
ifneq ($(REGAL_ERROR),)
|
|
REGAL.CFLAGS += -DREGAL_ERROR=$(REGAL_ERROR)
|
|
endif
|
|
|
|
ifneq ($(REGAL_CACHE),)
|
|
REGAL.CFLAGS += -DREGAL_CACHE=$(REGAL_CACHE)
|
|
endif
|
|
|
|
ifneq ($(REGAL_DEBUG),)
|
|
REGAL.CFLAGS += -DREGAL_DEBUG=$(REGAL_DEBUG)
|
|
endif
|
|
|
|
ifneq ($(REGAL_EMULATION),)
|
|
REGAL.CFLAGS += -DREGAL_EMULATION=$(REGAL_EMULATION)
|
|
endif
|
|
|
|
ifneq ($(REGAL_WRANGLER),)
|
|
REGAL.CFLAGS += -DREGAL_WRANGLER=$(REGAL_WRANGLER)
|
|
endif
|
|
|
|
ifneq ($(REGAL_NO_TLS),)
|
|
REGAL.CFLAGS += -DREGAL_NO_TLS=$(REGAL_NO_TLS)
|
|
endif
|
|
|
|
REGAL.CFLAGS += -fvisibility=hidden
|
|
|
|
REGAL.SRCS.NAMES := $(notdir $(REGAL.SRCS))
|
|
|
|
REGAL.HEADERS :=
|
|
REGAL.HEADERS += include/GL/Regal.h
|
|
REGAL.HEADERS += src/regal/RegalPrivate.h
|
|
|
|
REGAL.OBJS := $(addprefix tmp/$(SYSTEM)/regal/static/,$(REGAL.SRCS.NAMES))
|
|
REGAL.OBJS := $(REGAL.OBJS:.c=.o)
|
|
REGAL.OBJS := $(REGAL.OBJS:.cpp=.o)
|
|
REGAL.DEPS := $(REGAL.OBJS:.o=.d)
|
|
|
|
REGAL.SOBJS := $(addprefix tmp/$(SYSTEM)/regal/shared/,$(REGAL.SRCS.NAMES))
|
|
REGAL.SOBJS := $(REGAL.SOBJS:.c=.o)
|
|
REGAL.SOBJS := $(REGAL.SOBJS:.cpp=.o)
|
|
REGAL.SDEPS := $(LIBS.SOBJS:.o=.d)
|
|
|
|
-include $(REGAL.DEPS) $(REGAL.SDEPS)
|
|
|
|
REGAL.LIBS += $(LDFLAGS.X11)
|
|
|
|
ifneq ($(filter linux%,$(SYSTEM)),)
|
|
REGAL.SONAME := lib$(NAME).so.$(SO_MAJOR)
|
|
REGAL.DEVLNK := lib$(NAME).so
|
|
REGAL.SHARED := lib$(NAME).so.$(SO_VERSION)
|
|
REGAL.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -Wl,-soname=$(REGAL.SONAME)
|
|
endif
|
|
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
OPENGL_NAME := OpenGL
|
|
OPENGL_FRAMEWORK := $(OPENGL_NAME).framework
|
|
OPENGL := $(OPENGL_FRAMEWORK)/Versions/A/$(OPENGL_NAME)
|
|
REGAL.SONAME := lib$(NAME).$(SO_MAJOR).dylib
|
|
REGAL.DEVLNK := lib$(NAME).dylib
|
|
REGAL.SHARED := lib$(NAME).$(SO_VERSION).dylib
|
|
REGAL.FRAMEWORK := $(NAME)
|
|
REGAL.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -current_version $(SO_VERSION) -compatibility_version $(SO_MAJOR)
|
|
#LDFLAGS.SO += -install_name $(REGAL_DEST)/lib/$(REGAL.SHARED)
|
|
REGAL.LDFLAGS += -Wl,-reexport-lGLU -L/System/Library/Frameworks/$(OPENGL_FRAMEWORK)/Versions/A/Libraries
|
|
INFO_PLIST := build/mac/Info.plist
|
|
endif
|
|
|
|
ifdef REGAL.STATIC
|
|
regal.lib: lib/$(SYSTEM)/$(REGAL.STATIC)
|
|
endif
|
|
|
|
ifdef REGAL.SHARED
|
|
regal.lib: lib/$(SYSTEM)/$(REGAL.SHARED)
|
|
endif
|
|
|
|
regal.clean:
|
|
$(RM) -r tmp/$(SYSTEM)/regal/static
|
|
$(RM) -r tmp/$(SYSTEM)/regal/shared
|
|
ifdef REGAL.STATIC
|
|
$(RM) -r lib/$(SYSTEM)/$(REGAL.STATIC)
|
|
endif
|
|
ifdef REGAL.SHARED
|
|
$(RM) -r bin/$(SYSTEM)/$(REGAL.SHARED)
|
|
endif
|
|
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
regal.framework:
|
|
$(RM) -r $(OPENGL_FRAMEWORK)
|
|
$(MKDIR) $(OPENGL_FRAMEWORK)/Versions/A/Resources
|
|
$(MKDIR) $(OPENGL_FRAMEWORK)/Versions/A/Libraries
|
|
$(LN) A $(OPENGL_FRAMEWORK)/Versions/Current
|
|
$(LN) Versions/Current/Resources $(OPENGL_FRAMEWORK)/Resources
|
|
$(LN) Versions/Current/Headers $(OPENGL_FRAMEWORK)/Headers
|
|
$(LN) Versions/Current/Libraries $(OPENGL_FRAMEWORK)/Libraries
|
|
$(LN) Versions/Current/$(OPENGL_NAME) $(OPENGL_FRAMEWORK)/$(OPENGL_NAME)
|
|
$(CP) $(INFO_PLIST) $(OPENGL_FRAMEWORK)/Resources
|
|
ifdef REGAL.SHARED
|
|
$(CP) lib/$(SYSTEM)/$(REGAL.SHARED) $(OPENGL_FRAMEWORK)/Versions/A/Libraries/$(OPENGL_NAME)
|
|
endif
|
|
$(LN) Libraries/$(OPENGL_NAME) $(OPENGL_FRAMEWORK)/Versions/A/$(OPENGL_NAME)
|
|
endif
|
|
|
|
ifdef APITRACE.STATIC
|
|
lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(APITRACE.STATIC) lib/$(SYSTEM)/$(SNAPPY.STATIC)
|
|
endif
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
ifeq ($(NACL_LIBC),glibc)
|
|
regal.lib: lib/$(SYSTEM)/$(REGAL.SHARED)
|
|
endif
|
|
endif
|
|
|
|
lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(GLSLOPT.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(REGAL.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(REGAL.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
REGAL.SHARED.DEPEND :=
|
|
REGAL.SHARED.DEPEND += lib/$(SYSTEM)/$(GLSLOPT.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC)
|
|
|
|
ifdef APITRACE.STATIC
|
|
REGAL.SHARED.DEPEND += lib/$(SYSTEM)/$(APITRACE.STATIC) lib/$(SYSTEM)/$(SNAPPY.STATIC)
|
|
endif
|
|
|
|
ifdef REGAL.SHARED
|
|
lib/$(SYSTEM)/$(REGAL.SHARED): $(REGAL.SHARED.DEPEND) $(REGAL.SOBJS)
|
|
ifdef APITRACE.STATIC
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(REGAL.LDFLAGS.SO) -o $@ $(LDFLAGS.STARTGROUP) $(REGAL.SOBJS) lib/$(SYSTEM)/$(APITRACE.STATIC) $(LDFLAGS.ENDGROUP) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) $(REGAL.LDFLAGS)
|
|
else
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(REGAL.LDFLAGS.SO) -o $@ $(REGAL.SOBJS) $(REGAL.SHARED.DEPEND) $(REGAL.LIBS) $(REGAL.LDFLAGS)
|
|
endif
|
|
ifneq ($(LN),)
|
|
$(LN) $(REGAL.SHARED) lib/$(SYSTEM)/$(REGAL.SONAME)
|
|
$(LN) $(REGAL.SHARED) lib/$(SYSTEM)/$(REGAL.DEVLNK)
|
|
ifneq ($(REGAL.FRAMEWORK),)
|
|
$(LN) $(REGAL.SHARED) lib/$(SYSTEM)/$(REGAL.FRAMEWORK)
|
|
endif
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/regal/%.cpp $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(GLSLOPT.INCLUDE) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/regal/%.cpp $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CXX) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(GLSLOPT.INCLUDE) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/civetweb/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/civetweb/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/md5/src/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/md5/src/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/jsonsl/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/jsonsl/%.c $(REGAL.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(REGAL.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGAL.INCLUDE) -o $@ -c $<
|
|
|
|
endif
|
|
endif
|