Added RegalConfigure Regal API Refresh VC and XCode projects Regal builds need jsonsl library now
711 lines
20 KiB
Makefile
711 lines
20 KiB
Makefile
# To build in debug mode:
|
|
# - use MODE=debug on gmake command-line
|
|
#
|
|
# To build using ccache (http://ccache.samba.org/)
|
|
# - use CCACHE=ccache on gmake command-line
|
|
#
|
|
# To disable stripping of binaries either:
|
|
# - use MODE=debug on gmake command-line
|
|
# - use STRIP= on gmake command-line
|
|
# - edit this makefile to set STRIP to the empty string
|
|
#
|
|
# To disable symlinks:
|
|
# - use LN= on gmake command-line
|
|
#
|
|
# To specify additional compiler flags:
|
|
# - use CFLAGS= on gmake command-line
|
|
#
|
|
# To see verbose output
|
|
# - use V=1 on gmake command-line
|
|
|
|
include config/version
|
|
|
|
SHELL = /bin/sh
|
|
ifndef SYSTEM
|
|
SYSTEM := $(shell config/config.guess | cut -d - -f 3 | sed -e 's/[0-9\.]//g;')
|
|
endif
|
|
SYSTEM.SUPPORTED = $(shell test -f config/Makefile.$(SYSTEM) && echo 1)
|
|
|
|
ifeq ($(SYSTEM.SUPPORTED), 1)
|
|
include config/Makefile.$(SYSTEM)
|
|
else
|
|
$(error "Platform '$(SYSTEM)' not supported")
|
|
endif
|
|
|
|
include build/regal.inc
|
|
include build/regaltest.inc
|
|
include build/zlib.inc
|
|
include build/libpng.inc
|
|
include build/glu.inc
|
|
include build/glut.inc
|
|
|
|
REGAL_DEST ?= /usr
|
|
BINDIR ?= $(REGAL_DEST)/bin
|
|
LIBDIR ?= $(REGAL_DEST)/lib
|
|
|
|
AR ?= ar
|
|
INSTALL ?= install
|
|
RANLIB ?= ranlib
|
|
STRIP ?= strip
|
|
RM ?= rm -f
|
|
LN ?= ln -sf
|
|
|
|
# Release mode is the default
|
|
|
|
ifeq ($(MODE),)
|
|
MODE := release
|
|
endif
|
|
|
|
ifeq ($(MODE),debug)
|
|
OPT = $(CFLAGS.DEBUG)
|
|
STRIP :=
|
|
endif
|
|
|
|
ifeq ($(MODE),release)
|
|
OPT = $(CFLAGS.RELEASE)
|
|
endif
|
|
|
|
ifndef V
|
|
LOG_CXX = @echo " [CXX] $@";
|
|
LOG_CC = @echo " [CC] $@";
|
|
LOG_LD = @echo " [LD] $@";
|
|
LOG_AR = @echo " [AR] $@";
|
|
LOG_RANLIB = @echo " [RANLIB] $@";
|
|
LOG_STRIP = @echo " [STRIP] $@";
|
|
endif
|
|
|
|
INCLUDE = -Iinclude
|
|
|
|
override CFLAGS := $(OPT) $(CFLAGS) $(WARN) $(INCLUDE) $(CFLAGS.EXTRA)
|
|
|
|
#
|
|
# Default target: all
|
|
#
|
|
|
|
all: regal.lib glew.lib regal.bin
|
|
|
|
# GLU and GLUT for platforms other than NaCl and Mac
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
all: glu.lib glut.lib
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# Regenerate Regal sources
|
|
#
|
|
|
|
export:
|
|
scripts/Export.py --api gl 4.2 --api wgl 4.0 --api glx 4.0 --api cgl 1.4 --api egl 1.0 --outdir .
|
|
|
|
#
|
|
# zlib
|
|
#
|
|
|
|
ZLIB.SRCS := $(ZLIB.C)
|
|
ZLIB.SRCS.NAMES := $(notdir $(ZLIB.SRCS))
|
|
ZLIB.OBJS := $(addprefix tmp/$(SYSTEM)/zlib/static/,$(ZLIB.SRCS.NAMES))
|
|
ZLIB.OBJS := $(ZLIB.OBJS:.c=.o)
|
|
ZLIB.DEPS := $(ZLIB.OBJS:.o=.d)
|
|
ZLIB.CFLAGS := -Isrc/zlib/include
|
|
ZLIB.STATIC := libz.a
|
|
|
|
-include $(ZLIB.DEPS)
|
|
|
|
ifneq ($(filter linux%,$(SYSTEM)),)
|
|
ZLIB.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
ZLIB.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
ZLIB.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
zlib.lib: lib/$(SYSTEM)/$(ZLIB.STATIC)
|
|
|
|
tmp/$(SYSTEM)/zlib/static/%.o: src/zlib/src/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(ZLIB.CFLAGS) $(CFLAGS) $(PICFLAG) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(ZLIB.STATIC): $(ZLIB.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(ZLIB.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
# libpng
|
|
#
|
|
|
|
LIBPNG.SRCS := $(LIBPNG.C)
|
|
LIBPNG.SRCS.NAMES := $(notdir $(LIBPNG.SRCS))
|
|
LIBPNG.OBJS := $(addprefix tmp/$(SYSTEM)/libpng/static/,$(LIBPNG.SRCS.NAMES))
|
|
LIBPNG.OBJS := $(LIBPNG.OBJS:.c=.o)
|
|
LIBPNG.DEPS := $(LIBPNG.DEPS:.o=.d)
|
|
LIBPNG.CFLAGS := -Isrc/zlib/include -Isrc/libpng/include
|
|
LIBPNG.STATIC := libpng.a
|
|
|
|
-include $(LIBPNG.DEPS)
|
|
|
|
ifneq ($(filter linux%,$(SYSTEM)),)
|
|
LIBPNG.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
LIBPNG.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
LIBPNG.CFLAGS += -DHAVE_UNISTD_H
|
|
endif
|
|
|
|
libpng.lib: zlib.lib lib/$(SYSTEM)/$(LIBPNG.STATIC)
|
|
|
|
tmp/$(SYSTEM)/libpng/static/%.o: src/libpng/src/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIBPNG.CFLAGS) $(CFLAGS) $(PICFLAG) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(LIBPNG.STATIC): $(LIBPNG.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(LIBPNG.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
|
|
LIB.LDFLAGS := -lstdc++ -pthread -lm
|
|
LIB.LIBS :=
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
LIB.LDFLAGS += -ldl
|
|
endif
|
|
|
|
LIB.SRCS := $(REGAL.CXX)
|
|
|
|
# Disable mongoose and Regal HTTP for NaCl build
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
LIB.SRCS += src/mongoose/mongoose.c
|
|
endif
|
|
|
|
ifeq ($(filter -DREGAL_NO_MD5%,$(CFLAGS)),)
|
|
LIB.SRCS += src/md5/src/md5.c
|
|
endif
|
|
|
|
LIB.SRCS += src/jsonsl/jsonsl.c
|
|
|
|
LIB.INCLUDE += -Isrc/zlib/include
|
|
LIB.INCLUDE += -Isrc/libpng/include
|
|
LIB.INCLUDE += -Isrc/mongoose
|
|
LIB.INCLUDE += -Isrc/md5/include
|
|
LIB.INCLUDE += -Isrc/lookup3
|
|
LIB.INCLUDE += -Isrc/jsonsl
|
|
|
|
# Optional flags
|
|
|
|
# REGAL_SYS_ES1 for ES1 back-end support, disabled by default
|
|
# LIB.CFLAGS += -DREGAL_SYS_ES1=1
|
|
|
|
#
|
|
# Add debug-specific flags
|
|
#
|
|
|
|
ifeq ($(MODE),debug)
|
|
endif
|
|
|
|
#
|
|
# In release mode we're agressive about leaving out functionality
|
|
# in order to minimize the footprint of libRegal.so.1
|
|
#
|
|
|
|
ifeq ($(MODE),release)
|
|
LIB.CFLAGS += -DNDEBUG
|
|
LIB.CFLAGS += -DREGAL_DECL_EXPORT=1
|
|
LIB.CFLAGS += -DREGAL_LOG=0
|
|
LIB.CFLAGS += -DREGAL_LOG_ALL=0
|
|
LIB.CFLAGS += -DREGAL_LOG_ONCE=0
|
|
LIB.CFLAGS += -DREGAL_LOG_JSON=0
|
|
LIB.CFLAGS += -DREGAL_NO_HTTP=1
|
|
LIB.CFLAGS += -DREGAL_NO_ASSERT=1
|
|
LIB.CFLAGS += -DREGAL_NO_PNG=1
|
|
LIB.CFLAGS += -fomit-frame-pointer
|
|
LIB.CFLAGS += -DREGAL_ERROR=0
|
|
LIB.CFLAGS += -DREGAL_DEBUG=0
|
|
LIB.CFLAGS += -DREGAL_CACHE=0
|
|
LIB.CFLAGS += -DREGAL_EMULATION=1 # 0 for "loader only"
|
|
LIB.CFLAGS += -DREGAL_NO_TLS=0 # 1 for single threaded
|
|
endif
|
|
|
|
#
|
|
# Flags for custom mode
|
|
#
|
|
|
|
ifeq ($(MODE),custom)
|
|
endif
|
|
|
|
LIB.INCLUDE += -Isrc/boost
|
|
|
|
LIB.SRCS.NAMES := $(notdir $(LIB.SRCS))
|
|
|
|
LIB.HEADERS :=
|
|
LIB.HEADERS += include/GL/Regal.h
|
|
LIB.HEADERS += src/regal/RegalPrivate.h
|
|
|
|
LIB.OBJS := $(addprefix tmp/$(SYSTEM)/regal/static/,$(LIB.SRCS.NAMES))
|
|
LIB.OBJS := $(LIB.OBJS:.c=.o)
|
|
LIB.OBJS := $(LIB.OBJS:.cpp=.o)
|
|
LIB.DEPS := $(LIB.OBJS:.o=.d)
|
|
LIB.SOBJS := $(addprefix tmp/$(SYSTEM)/regal/shared/,$(LIB.SRCS.NAMES))
|
|
LIB.SOBJS := $(LIB.SOBJS:.c=.o)
|
|
LIB.SOBJS := $(LIB.SOBJS:.cpp=.o)
|
|
LIB.SDEPS := $(LIBS.SOBJS:.o=.d)
|
|
|
|
-include $(LIB.DEPS) $(LIB.SDEPS)
|
|
|
|
LIB.LIBS += -Llib/$(SYSTEM) -lpng -lz
|
|
|
|
ifneq ($(filter darwin%,$(SYSTEM)),)
|
|
LIB.LDFLAGS += -Wl,-reexport-lGLU -L/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries
|
|
endif
|
|
|
|
regal.lib: lib/$(SYSTEM)/$(LIB.STATIC)
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
regal.lib: lib/$(SYSTEM)/$(LIB.SHARED)
|
|
endif
|
|
|
|
lib/$(SYSTEM)/$(LIB.STATIC): lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(LIB.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(LIB.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
lib/$(SYSTEM)/$(LIB.SHARED): lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(LIB.SOBJS)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.SO) -o $@ $(LIB.SOBJS) $(LIB.LIBS) $(LIB.LDFLAGS)
|
|
ifneq ($(LN),)
|
|
$(LN) $(LIB.SHARED) lib/$(SYSTEM)/$(LIB.SONAME)
|
|
$(LN) $(LIB.SHARED) lib/$(SYSTEM)/$(LIB.DEVLNK)
|
|
ifneq ($(LIB.FRAMEWORK),)
|
|
$(LN) $(LIB.SHARED) lib/$(SYSTEM)/$(LIB.FRAMEWORK)
|
|
endif
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/regal/%.cpp $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/regal/%.cpp $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/mongoose/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/mongoose/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/md5/src/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/md5/src/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/static/%.o: src/jsonsl/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/regal/shared/%.o: src/jsonsl/%.c $(LIB.HEADERS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(LIB.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(LIB.INCLUDE) -o $@ -c $<
|
|
|
|
#
|
|
# RegalGLEW
|
|
#
|
|
|
|
GLEW.SRCS += src/glew/src/glew.c
|
|
GLEW.SRCS.NAMES := $(notdir $(GLEW.SRCS))
|
|
GLEW.OBJS := $(addprefix tmp/$(SYSTEM)/glew/shared/,$(GLEW.SRCS.NAMES))
|
|
GLEW.OBJS := $(GLEW.OBJS:.c=.o)
|
|
GLEW.DEPS := $(GLEW.OBJS:.o=.d)
|
|
GLEW.CFLAGS := -Isrc/glew/include -Isrc/glu/include -DGLEW_EXPORTS -DGLEW_BUILD -DGLEW_REGAL
|
|
GLEW.LIBS := -Llib/$(SYSTEM) -lRegal
|
|
GLEW.SHARED := libRegalGLEW.$(EXT.DYNAMIC)
|
|
GLEW.STATIC := libRegalGLEW.a
|
|
|
|
-include $(GLEW.DEPS)
|
|
|
|
glew.lib: lib/$(SYSTEM)/$(GLEW.STATIC)
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
glew.lib: lib/$(SYSTEM)/$(GLEW.SHARED)
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/glew/shared/%.o: src/glew/src/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(PICFLAG) $(GLEW.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(GLEW.STATIC): $(GLEW.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(GLEW.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
lib/$(SYSTEM)/$(GLEW.SHARED): $(GLEW.OBJS) lib/$(SYSTEM)/$(LIB.SHARED)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.DYNAMIC) -o $@ $(GLEW.OBJS) $(GLEW.LIBS) $(LIB.LDFLAGS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
# RegalGLU
|
|
#
|
|
|
|
GLU.SRCS := $(GLU.C) $(GLU.CXX)
|
|
GLU.SRCS.NAMES := $(notdir $(GLU.SRCS))
|
|
GLU.OBJS := $(addprefix tmp/$(SYSTEM)/glu/shared/,$(GLU.SRCS.NAMES))
|
|
GLU.OBJS := $(GLU.OBJS:.c=.o) $(GLU.OBJS:.cc=.o)
|
|
GLU.OBJS := $(filter %.o,$(GLU.OBJS))
|
|
GLU.DEPS := $(GLU.OBJS:.o=.d)
|
|
GLU.CFLAGS := -Isrc/glu/include -Isrc/glu/libnurbs/interface -Isrc/glu/libnurbs/internals -Isrc/glu/libnurbs/nurbtess
|
|
GLU.CFLAGS += -DLIBRARYBUILD
|
|
GLU.LIBS := -Llib/$(SYSTEM) -lRegal
|
|
GLU.LIBS += -pthread -lm
|
|
GLU.SHARED := libRegalGLU.$(EXT.DYNAMIC)
|
|
GLU.STATIC := libRegalGLU.a
|
|
|
|
-include $(GLU.DEPS)
|
|
|
|
glu.lib: lib/$(SYSTEM)/$(GLU.STATIC)
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
glu.lib: lib/$(SYSTEM)/$(GLU.SHARED)
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libtess/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(PICFLAG) $(GLU.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libutil/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(PICFLAG) $(GLU.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libnurbs/interface/%.cc
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(PICFLAG) $(GLU.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libnurbs/internals/%.cc
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(PICFLAG) $(GLU.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libnurbs/nurbtess/%.cc
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(PICFLAG) $(GLU.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(GLU.SHARED): $(GLU.OBJS) lib/$(SYSTEM)/$(LIB.SHARED)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.DYNAMIC) $(GLU.LIBS) $(LIB.LDFLAGS) -o $@ $(GLU.OBJS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
lib/$(SYSTEM)/$(GLU.STATIC): $(GLU.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(GLU.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
# RegalGLUT
|
|
#
|
|
|
|
GLUT.SRCS := $(GLUT.C)
|
|
GLUT.SRCS.NAMES := $(notdir $(GLUT.SRCS))
|
|
GLUT.OBJS := $(addprefix tmp/$(SYSTEM)/glut/shared/,$(GLUT.SRCS.NAMES))
|
|
GLUT.OBJS := $(GLUT.OBJS:.c=.o)
|
|
GLUT.DEPS := $(GLUT.OBJS:.o=.d)
|
|
GLUT.CFLAGS := -Isrc/glut/include -Isrc/glu/include -DBUILD_GLUT32 -DGLUT_BUILDING_LIB -DGLUT_STATIC
|
|
#GLUT.CFLAGS += -DCDECL=
|
|
GLUT.LIBS := -Llib/$(SYSTEM) -lRegal -lRegalGLU
|
|
GLUT.LIBS += -lX11 -lXmu -lXi
|
|
GLUT.LIBS += -pthread -lm
|
|
GLUT.SHARED := libRegalGLUT.$(EXT.DYNAMIC)
|
|
GLUT.STATIC := libRegalGLUT.a
|
|
|
|
-include $(GLUT.DEPS)
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
glut.lib: lib/$(SYSTEM)/$(GLUT.SHARED)
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/glut/shared/%.o: src/glut/src/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(GLUT.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(GLUT.SHARED): $(GLUT.OBJS) lib/$(SYSTEM)/$(GLU.SHARED) lib/$(SYSTEM)/$(LIB.SHARED)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.DYNAMIC) -o $@ $(GLUT.OBJS) $(GLUT.LIBS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
# RegalGLEW glewinfo
|
|
#
|
|
|
|
GLEWINFO.SRCS += src/glew/src/glewinfo.c
|
|
GLEWINFO.SRCS.NAMES := $(notdir $(GLEWINFO.SRCS))
|
|
GLEWINFO.OBJS := $(addprefix tmp/$(SYSTEM)/glewinfo/static/,$(GLEWINFO.SRCS.NAMES))
|
|
GLEWINFO.OBJS := $(GLEWINFO.OBJS:.c=.o)
|
|
GLEWINFO.DEPS := $(GLEWINFO.OBJS:.o=.d)
|
|
GLEWINFO.CFLAGS := -Iinclude -Isrc/glew/include -DGLEW_REGAL -DGLEW_NO_GLU
|
|
GLEWINFO.LIBS += -Llib/$(SYSTEM) -lRegal $(LDFLAGS.X11) -lRegalGLEW $(LDFLAGS.GLUT) $(LDFLAGS.GLU) $(LDFLAGS.AGL)
|
|
|
|
-include $(GLEWINFO.DEPS)
|
|
|
|
ifneq ($(filter linux%,$(SYSTEM)),)
|
|
GLEWINFO.LIBS += -lX11
|
|
endif
|
|
|
|
tmp/$(SYSTEM)/glewinfo/static/%.o: src/glew/src/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(GLEWINFO.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
bin/$(SYSTEM)/glewinfo: $(GLEWINFO.OBJS) lib/$(SYSTEM)/$(LIB.SHARED) lib/$(SYSTEM)/$(GLEW.SHARED)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(GLEWINFO.OBJS) $(GLEWINFO.LIBS) $(LIB.LDFLAGS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
# GLUT and GLU dependency for non-Nacl, non-Mac
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
ifeq ($(filter darwin%,$(SYSTEM)),)
|
|
bin/$(SYSTEM)/glewinfo: lib/$(SYSTEM)/$(GLUT.SHARED) lib/$(SYSTEM)/$(GLU.SHARED)
|
|
endif
|
|
endif
|
|
|
|
# Examples
|
|
|
|
ifneq ($(filter nacl%,$(SYSTEM)),)
|
|
regal.bin: bin/$(SYSTEM)/nacl$(BIN_EXTENSION) examples/nacl/nacl.nmf
|
|
else
|
|
regal.bin: bin/$(SYSTEM)/glewinfo bin/$(SYSTEM)/dreamtorus bin/$(SYSTEM)/tiger bin/$(SYSTEM)/regaltest$(BIN_EXTENSION)
|
|
endif
|
|
|
|
#
|
|
# dreamtorus
|
|
#
|
|
|
|
DREAMTORUS.SRCS += examples/dreamtorus/src/render.cpp
|
|
DREAMTORUS.SRCS += examples/dreamtorus/glut/code/main.cpp
|
|
DREAMTORUS.SRCS.NAMES := $(notdir $(DREAMTORUS.SRCS))
|
|
DREAMTORUS.OBJS := $(addprefix tmp/$(SYSTEM)/dreamtorus/static/,$(DREAMTORUS.SRCS.NAMES))
|
|
DREAMTORUS.OBJS := $(DREAMTORUS.OBJS:.cpp=.o)
|
|
DREAMTORUS.DEPS := $(DREAMTORUS.DEPS:.o=.d)
|
|
DREAMTORUS.CFLAGS := -Iinclude -Iexamples/dreamtorus/src
|
|
DREAMTORUS.LIBS += -Llib/$(SYSTEM) $(LDFLAGS.GLUT) $(LDFLAGS.GLU) -lRegal $(LDFLAGS.X11)
|
|
DREAMTORUS.LIBS += -lm -pthread
|
|
|
|
-include $(DREAMTORUS.DEPS)
|
|
|
|
tmp/$(SYSTEM)/dreamtorus/static/%.o: examples/dreamtorus/src/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(DREAMTORUS.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/dreamtorus/static/%.o: examples/dreamtorus/glut/code/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(DREAMTORUS.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
bin/$(SYSTEM)/dreamtorus: $(DREAMTORUS.OBJS) lib/$(SYSTEM)/$(LIB.SHARED)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(DREAMTORUS.OBJS) $(DREAMTORUS.LIBS) $(LIB.LDFLAGS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
# dreamtorus GLUT and GLU dependency for non-Mac, non-Nacl builds
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
ifeq ($(filter darwin%,$(SYSTEM)),)
|
|
bin/$(SYSTEM)/dreamtorus: lib/$(SYSTEM)/$(GLUT.SHARED) lib/$(SYSTEM)/$(GLU.SHARED)
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# NaCl example
|
|
#
|
|
|
|
NACL.SRCS += examples/nacl/main.c
|
|
NACL.SRCS.NAMES := $(notdir $(NACL.SRCS))
|
|
NACL.OBJS := $(addprefix tmp/$(SYSTEM)/nacl/static/,$(NACL.SRCS.NAMES))
|
|
NACL.OBJS := $(NACL.OBJS:.c=.o)
|
|
NACL.CFLAGS := -Iinclude
|
|
NACL.LIBS += -Llib/$(SYSTEM) -lRegal
|
|
NACL.LIBS += -lpng -lz -lm -pthread -lppapi -lppapi_gles2 -lstdc++
|
|
|
|
tmp/$(SYSTEM)/nacl/static/%.o: examples/nacl/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CC) $(CFLAGS) -std=gnu99 $(NACL.CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
bin/$(SYSTEM)/nacl$(BIN_EXTENSION): lib/$(SYSTEM)/$(LIB.STATIC) $(NACL.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(LD) $(LDFLAGS.EXTRA) -o $@ $(NACL.OBJS) $(NACL.LIBS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
examples/nacl/nacl.nmf: bin/$(SYSTEM)/nacl$(BIN_EXTENSION)
|
|
$(NACL_SDK_ROOT)/tools/create_nmf.py -o $@ bin/$(SYSTEM)/nacl*.nexe -s examples/nacl
|
|
|
|
|
|
#
|
|
# tiger
|
|
#
|
|
|
|
TIGER.SRCS += examples/tiger/nvpr_tiger.c
|
|
TIGER.SRCS += examples/tiger/tiger.c
|
|
TIGER.SRCS += examples/tiger/xform.c
|
|
TIGER.SRCS.NAMES := $(notdir $(TIGER.SRCS))
|
|
TIGER.OBJS := $(addprefix tmp/$(SYSTEM)/tiger/static/,$(TIGER.SRCS.NAMES))
|
|
TIGER.OBJS := $(TIGER.OBJS:.c=.o)
|
|
TIGER.DEPS := $(TIGER.DEPS:.o=.d)
|
|
TIGER.CFLAGS := -Iinclude -DGLEW_NO_GLU
|
|
TIGER.LIBS += -Llib/$(SYSTEM) -lRegalGLEW $(LDFLAGS.GLUT) $(LDFLAGS.GLU) -lRegal $(LDFLAGS.X11)
|
|
TIGER.LIBS += -lm -pthread
|
|
|
|
-include $(TIGER.DEPS)
|
|
|
|
tmp/$(SYSTEM)/tiger/static/%.o: examples/tiger/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CC)$(CCACHE) $(CC) $(TIGER.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
bin/$(SYSTEM)/tiger: $(TIGER.OBJS) lib/$(SYSTEM)/$(GLEW.SHARED) lib/$(SYSTEM)/$(LIB.SHARED) lib/$(SYSTEM)/$(GLEW.SHARED)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(TIGER.OBJS) $(TIGER.LIBS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
# GLUT and GLU dependency for non-Nacl, non-Mac
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
ifeq ($(filter darwin%,$(SYSTEM)),)
|
|
bin/$(SYSTEM)/tiger: lib/$(SYSTEM)/$(GLUT.SHARED) lib/$(SYSTEM)/$(GLU.SHARED)
|
|
endif
|
|
endif
|
|
|
|
######################################
|
|
|
|
#
|
|
# googletest + googlemock
|
|
#
|
|
|
|
GTEST.SRCS += src/googletest/src/gtest-all.cc
|
|
GTEST.SRCS += src/googlemock/src/gmock-all.cc
|
|
GTEST.SRCS.NAMES := $(notdir $(GTEST.SRCS))
|
|
GTEST.OBJS := $(addprefix tmp/$(SYSTEM)/gtest/static/,$(GTEST.SRCS.NAMES))
|
|
GTEST.OBJS := $(GTEST.OBJS:.cc=.o)
|
|
GTEST.DEPS := $(GTEST.OBJS:.o=.d)
|
|
GTEST.CFLAGS := -Isrc/googletest/include -Isrc/googletest -Isrc/googlemock/include -Isrc/googlemock
|
|
GTEST.STATIC := libgtest.a
|
|
|
|
-include $(GTEST.DEPS)
|
|
|
|
tmp/$(SYSTEM)/gtest/static/gtest-all.o: src/googletest/src/gtest-all.cc
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(GTEST.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
tmp/$(SYSTEM)/gtest/static/gmock-all.o: src/googlemock/src/gmock-all.cc
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(GTEST.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
lib/$(SYSTEM)/$(GTEST.STATIC): $(GTEST.OBJS)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(GTEST.OBJS)
|
|
ifneq ($(RANLIB),)
|
|
$(LOG_RANLIB)$(RANLIB) $@
|
|
endif
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
#
|
|
# regaltest
|
|
#
|
|
|
|
REGALTEST.SRCS += $(REGALTEST.CXX)
|
|
REGALTEST.SRCS.NAMES := $(notdir $(REGALTEST.SRCS))
|
|
REGALTEST.OBJS := $(addprefix tmp/$(SYSTEM)/regal_tests/static/,$(REGALTEST.SRCS.NAMES))
|
|
REGALTEST.OBJS := $(REGALTEST.OBJS:.cpp=.o)
|
|
REGALTEST.DEPS := $(REGALTEST.DEPS:.o=.d)
|
|
REGALTEST.CFLAGS := -Isrc/googletest/include -Isrc/googlemock/include -Isrc/regal -Isrc/boost
|
|
REGALTEST.LIBS := -Llib/$(SYSTEM) -lgtest lib/$(SYSTEM)/$(LIB.STATIC) $(LDFLAGS.X11) -lm
|
|
|
|
ifeq ($(filter nacl%,$(SYSTEM)),)
|
|
REGALTEST.LIBS += -ldl
|
|
endif
|
|
|
|
-include $(REGALTEST.DEPS)
|
|
|
|
tmp/$(SYSTEM)/regal_tests/static/%.o: tests/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_CXX)$(CCACHE) $(CC) $(LIB.CFLAGS) $(REGALTEST.CFLAGS) $(CFLAGS) $(CFLAGS.SO) -o $@ -c $<
|
|
|
|
bin/$(SYSTEM)/regaltest$(BIN_EXTENSION): $(REGALTEST.OBJS) lib/$(SYSTEM)/$(GTEST.STATIC) lib/$(SYSTEM)/$(LIB.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC)
|
|
@mkdir -p $(dir $@)
|
|
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(REGALTEST.OBJS) $(REGALTEST.LIBS) $(LIB.LIBS) $(LIB.LDFLAGS)
|
|
ifneq ($(STRIP),)
|
|
$(LOG_STRIP)$(STRIP) -x $@
|
|
endif
|
|
|
|
test: bin/$(SYSTEM)/regaltest$(BIN_EXTENSION)
|
|
$^
|
|
|
|
######################################
|
|
|
|
clean:
|
|
$(RM) -r tmp/$(SYSTEM)
|
|
$(RM) -r lib/$(SYSTEM)
|
|
$(RM) -r bin/$(SYSTEM)
|
|
|
|
clobber:
|
|
$(RM) -r tmp
|
|
$(RM) -r lib
|
|
$(RM) -r bin
|
|
|
|
.PHONY: export test all
|
|
.PHONY: regal.lib regal.bin
|
|
.PHONY: zlib.lib libpng.lib glew.lib glu.lib glut.lib
|
|
.PHONY: clean clobber
|