#################################################################### # # Maya Location & Version # #################################################################### ifndef MAYA_LOCATION $(error "MAYA_LOCATION is not defined") endif ifeq ($(wildcard $(MAYA_LOCATION)),) $(error "MAYA_LOCATION contains '$(MAYA_LOCATION)', which does not exist.") endif ifndef SHAVE_VRAY_SDKS $(error "SHAVE_VRAY_SDKS is not defined.") endif ifndef VRAY_VERSION $(error "VRAY_VERSION is not defined.") endif versionInfo := $(shell ../../utils/getMayaAPIVersion.sh) mayaAPI := $(word 1,$(versionInfo)) mayaVersion := $(word 2,$(versionInfo)) mayaMajorVersion := $(word 3, $(versionInfo)) mayaMinorVersion := $(word 4, $(versionInfo)) ifeq ($(findstring -x64,$(MAYA_LOCATION)),-x64) mayaVersion := $(mayaVersion)-x64 endif #################################################################### # # Compiler & Linker # #################################################################### C++ = $(shell ../../utils/getg++vray.sh $(mayaVersion) 40) CC = $(subst ++,cc,$(C++)) ifeq ($(C++),) $(error "Maya version $(mayaVersion) not supported.") endif # sanity check ifeq (,$(findstring 4.8,$(shell $(C++) --version))) $(error "V-Ray 4.0 must be built with gcc-4.8!") endif # # vray include/lib path # # you should replace it with own paths VRAY_LDIR = $(SHAVE_VRAY_SDKS)/$(VRAY_VERSION)/lib/linux VRAY_IDIR = $(SHAVE_VRAY_SDKS)/$(VRAY_VERSION)/include # # output and temp dirs # OUTDIR = ../bin/linux_x64 TMPDIR = ./build/release/linux_x64/clang-gcc-4.8/vray40 OBJS = \ $(TMPDIR)/shaderMain.obj \ $(TMPDIR)/shaveVrayBaseBSDF.obj \ $(TMPDIR)/shaveVrayBaseBSDFPool.obj \ $(VRAY_LDIR)/libvutils_s.a \ $(VRAY_LDIR)/libplugman_s.a \ $(VRAY_LDIR)/librayserver_s.a GCCFLAGS = -v -Wall -lpthread -lrt -lc -lz -fPIC GCCFLAGS_OBJ = -std=c++11 -O2 -ffunction-sections -fdata-sections -finline-functions -funswitch-loops -fgcse-after-reload -ffast-math -fPIC -DHAVE_EXR -DBits64_ -D_REENTRANT -fexceptions -DVRAY40 GCCLDFLAGS = -Bsymbolic # # vray libs # LIBS = -ldl -lvray LIBDIRS = -L. -L$(VRAY_LDIR) INCDIRS = -I. -I$(VRAY_IDIR) all: ../bin/linux_x64/ShaveSh40.so ../bin/linux_x64/ShaveSh40.so: $(TMPDIR) $(OUTDIR) $(OBJS) $(C++) $(GCCFLAGS) $(GCCLDFLAGS) $(LIBDIRS) -shared -Wl,--export-dynamic -o "$(OUTDIR)/ShaveSh40.so" "-Wl,-(" $(OBJS) $(LIBS) "-Wl,-)" $(TMPDIR): -@mkdir -p "$(TMPDIR)" $(OUTDIR): -@mkdir -p "$(OUTDIR)" $(TMPDIR)/shaderMain.obj: shaderMain.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaderMain.obj" "shaderMain.cpp" $(TMPDIR)/shaveVrayBaseBSDF.obj: shaveVrayBaseBSDF.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayBaseBSDF.obj" "shaveVrayBaseBSDF.cpp" $(TMPDIR)/shaveVrayBaseBSDFPool.obj: shaveVrayBaseBSDFPool.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayBaseBSDFPool.obj" "shaveVrayBaseBSDFPool.cpp" clean: -@rm -f $(TMPDIR)/*.obj -@rm -f $(OUTDIR)/ShaveSh40.so