blob: 35777699b44a26b9f6bdd196eb768b143fc949de [file] [log] [blame]
ifndef MAKEFILE_REGALW_INCLUDED
MAKEFILE_REGALW_INCLUDED := 1
.PHONY: regalw.lib regalw.clean
include build/common.inc
include build/regal.inc
#
# Regal Wrangler
#
REGALW.STATIC ?= libRegalW.a
REGALW.SHARED ?= libRegal.so
# Static library target not yet supported
REGALW.STATIC :=
# Shared library target not currently supported for NaCL or emscripten
ifneq ($(filter nacl% emscripten%,$(SYSTEM)),)
REGALW.SHARED :=
endif
ifdef REGALW.SHARED
all:: regalw.lib
clean:: regalw.clean
REGALW.LDFLAGS := -lstdc++ -pthread -lm
REGALW.LIBS :=
REGALW.SRCS := $(REGAL.CXX)
REGALW.SRCS += src/md5/src/md5.c
REGALW.SRCS += src/jsonsl/jsonsl.c
REGALW.CFLAGS += -DREGAL_WRANGLER=1
REGALW.INCLUDE := $(REGAL.INCLUDE)
# Optional flags
ifeq ($(MODE),release)
REGALW.CFLAGS += -DNDEBUG
#REGALW.CFLAGS += -DREGAL_NO_TLS=0 # 1 for single threaded
endif
#
# Flags for custom mode
#
ifeq ($(MODE),custom)
endif
REGALW.CFLAGS += -fvisibility=hidden
REGALW.SRCS.NAMES := $(notdir $(REGALW.SRCS))
REGALW.HEADERS :=
REGALW.HEADERS += include/GL/Regal.h
REGALW.HEADERS += src/regal/RegalPrivate.h
REGALW.OBJS := $(addprefix tmp/$(SYSTEM)/regalw/static/,$(REGALW.SRCS.NAMES))
REGALW.OBJS := $(REGALW.OBJS:.c=.o)
REGALW.OBJS := $(REGALW.OBJS:.cpp=.o)
REGALW.DEPS := $(REGALW.OBJS:.o=.d)
REGALW.SOBJS := $(addprefix tmp/$(SYSTEM)/regalw/shared/,$(REGALW.SRCS.NAMES))
REGALW.SOBJS := $(REGALW.SOBJS:.c=.o)
REGALW.SOBJS := $(REGALW.SOBJS:.cpp=.o)
REGALW.SDEPS := $(LIBS.SOBJS:.o=.d)
-include $(REGALW.DEPS) $(REGALW.SDEPS)
REGALW.LIBS += $(LDFLAGS.X11)
ifneq ($(filter linux%,$(SYSTEM)),)
REGALW.SONAME := libRegalW.so.$(SO_MAJOR)
REGALW.DEVLNK := libRegalW.so
REGALW.SHARED := libRegalW.so.$(SO_VERSION)
REGALW.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -Wl,-soname=$(REGALW.SONAME)
endif
ifneq ($(filter darwin%,$(SYSTEM)),)
REGALW.SONAME := libRegalW.$(SO_MAJOR).dylib
REGALW.DEVLNK := libRegalW.dylib
REGALW.SHARED := libRegalW.$(SO_VERSION).dylib
REGALW.FRAMEWORK := RegalWrangler
REGALW.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -current_version $(SO_VERSION) -compatibility_version $(SO_MAJOR)
REGALW.LDFLAGS += -Wl,-reexport-lGLU -L/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries
endif
ifdef REGALW.STATIC
regalw.lib: lib/$(SYSTEM)/$(REGALW.STATIC)
endif
ifdef REGALW.SHARED
regalw.lib: lib/$(SYSTEM)/$(REGALW.SHARED)
endif
regalw.clean:
$(RM) -r tmp/$(SYSTEM)/regalw/static
$(RM) -r tmp/$(SYSTEM)/regalw/shared
ifdef REGALW.STATIC
$(RM) -r lib/$(SYSTEM)/$(REGALW.STATIC)
endif
ifdef REGALW.SHARED
$(RM) -r bin/$(SYSTEM)/$(REGALW.SHARED)
endif
lib/$(SYSTEM)/$(REGALW.STATIC): $(REGALW.OBJS)
@mkdir -p $(dir $@)
$(LOG_AR)$(CCACHE) $(AR) cr $@ $(REGALW.OBJS)
ifneq ($(RANLIB),)
$(LOG_RANLIB)$(RANLIB) $@
endif
ifneq ($(STRIP),)
$(LOG_STRIP)$(STRIP) -x $@
endif
REGALW.SHARED.DEPEND :=
ifdef REGALW.SHARED
lib/$(SYSTEM)/$(REGALW.SHARED): $(REGALW.SHARED.DEPEND) $(REGALW.SOBJS)
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(REGALW.LDFLAGS.SO) -o $@ $(REGALW.SOBJS) $(REGALW.SHARED.DEPEND) $(REGALW.LIBS) $(REGALW.LDFLAGS)
ifneq ($(LN),)
$(LN) $(REGALW.SHARED) lib/$(SYSTEM)/$(REGALW.SONAME)
$(LN) $(REGALW.SHARED) lib/$(SYSTEM)/$(REGALW.DEVLNK)
ifneq ($(REGALW.FRAMEWORK),)
$(LN) $(REGALW.SHARED) lib/$(SYSTEM)/$(REGALW.FRAMEWORK)
endif
endif
ifneq ($(STRIP),)
$(LOG_STRIP)$(STRIP) -x $@
endif
endif
tmp/$(SYSTEM)/regalw/static/%.o: src/regal/%.cpp $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CXX)$(CCACHE) $(CXX) $(REGALW.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
tmp/$(SYSTEM)/regalw/shared/%.o: src/regal/%.cpp $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CXX)$(CCACHE) $(CXX) $(REGALW.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
tmp/$(SYSTEM)/regalw/static/%.o: src/md5/src/%.c $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CC)$(CCACHE) $(CC) $(REGALW.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
tmp/$(SYSTEM)/regalw/shared/%.o: src/md5/src/%.c $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CC)$(CCACHE) $(CC) $(REGALW.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
tmp/$(SYSTEM)/regalw/static/%.o: src/jsonsl/%.c $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CC)$(CCACHE) $(CC) $(REGALW.CFLAGS) $(CFLAGS) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
tmp/$(SYSTEM)/regalw/shared/%.o: src/jsonsl/%.c $(REGALW.HEADERS)
@mkdir -p $(dir $@)
$(LOG_CC)$(CCACHE) $(CC) $(REGALW.CFLAGS) $(CFLAGS) $(PICFLAG) $(CFLAGS.SO) $(REGALW.INCLUDE) -o $@ -c $<
endif
endif