#################################################################### # # 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) 36) CC = $(subst ++,cc,$(C++)) ifeq ($(C++),) $(error "Maya version $(mayaVersion) not supported.") endif OUTDIR = ../bin/linux_x64 TMPDIR = ./build/release/linux_x64/gcc-4.4/vray36 VRAY_LDIR = $(SHAVE_VRAY_SDKS)/$(VRAY_VERSION)/lib/linux VRAY_IDIR = $(SHAVE_VRAY_SDKS)/$(VRAY_VERSION)/include OBJS = \ $(TMPDIR)/shaveSDKCALLBACKS.obj \ $(TMPDIR)/hairAPIimp.obj \ $(TMPDIR)/pluginMain.obj \ $(TMPDIR)/shaveVrayDesc.obj \ $(TMPDIR)/shaveVrayInstance.obj \ $(TMPDIR)/shaveVrayMovingVoxelPrim.obj \ $(TMPDIR)/shaveVrayPlugin.obj \ $(TMPDIR)/shaveVrayShadeable.obj \ $(TMPDIR)/shaveVrayShadeData.obj \ $(TMPDIR)/shaveVraySharedFunctions.obj \ $(TMPDIR)/shaveVrayStaticVoxelPrim.obj \ $(TMPDIR)/shaveVrayVoxelPrim.obj \ $(TMPDIR)/shaveVrayInstanceBase.obj \ $(TMPDIR)/shaveVrayInstanceI.obj \ $(TMPDIR)/shaveVrayTriVoxelPrim.obj \ $(TMPDIR)/shaveVrayMovingTriVoxelPrim.obj \ $(TMPDIR)/shaveVrayStaticTriVoxelPrim.obj \ $(TMPDIR)/shaveVrayTriShadeable.obj \ $(TMPDIR)/shaveVrayTriShadeData.obj GCCFLAGS = -g -Wall -pthread -lrt -lc -lz -fPIC GCCFLAGS_OBJ = -O0 -g -ffunction-sections -fdata-sections -finline-functions -funswitch-loops -fgcse-after-reload -ffast-math -fPIC -DHAVE_EXR -DBits64_ -D_REENTRANT -DLINUX -fexceptions -DVRAY30 -DVRAY_DUAL -DVRAY_EXPORTS GCCLDFLAGS = -Bsymbolic # intrisics.h thinks that _mm_cvtss_f32() and some other funcs are # missing from the "gcc 4.1" headers and thus provides its own. However, those # funcs *are* present in our gcc 4.1.2 headers, so we want to avoid having # vray redefine them. # GCCFLAGS_OBJ += -D_GCC41_MM_CVTSS_F32_FIX__MATH_H__ # # shave related libs # SHAVELIB = "../../libexe/shavelibAW2-x64.a" # # std libs # LIBS = -lvutils_s -lplugman_s -lrayserver_s -lvray -ldl $(SHAVELIB) LIBDIRS = -L. -L$(VRAY_LDIR) -L"../libs/shave/linux64" INCDIRS = -I. -I$(VRAY_IDIR) -I"../../libexe/sample/include" all: ../bin/linux_x64/libvray_Shave36.so ../bin/linux_x64/libvray_Shave36.so: $(TMPDIR) $(OUTDIR) $(OBJS) $(C++) $(GCCFLAGS) $(GCCLDFLAGS) $(LIBDIRS) -shared -z defs -Wl,--export-dynamic -o "$(OUTDIR)/libvray_Shave36.so" "-Wl,-(" $(OBJS) $(LIBS) "-Wl,-)" $(TMPDIR): -@mkdir -p "$(TMPDIR)" $(OUTDIR): -@mkdir -p "$(OUTDIR)" $(TMPDIR)/shaveSDKCALLBACKS.obj: shaveSDKCALLBACKS.c $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveSDKCALLBACKS.obj" "shaveSDKCALLBACKS.c" $(TMPDIR)/hairAPIimp.obj: hairAPIimp.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/hairAPIimp.obj" "hairAPIimp.cpp" $(TMPDIR)/pluginMain.obj: pluginMain.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/pluginMain.obj" "pluginMain.cpp" #goes to LinuxSh_x64.mak #$(TMPDIR)/shaveVrayBaseBSDF.obj: shaveVrayBaseBSDF.cpp # $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayBaseBSDF.obj" "shaveVrayBaseBSDF.cpp" $(TMPDIR)/shaveVrayDesc.obj: shaveVrayDesc.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayDesc.obj" "shaveVrayDesc.cpp" $(TMPDIR)/shaveVrayInstance.obj: shaveVrayInstance.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayInstance.obj" "shaveVrayInstance.cpp" $(TMPDIR)/shaveVrayMovingVoxelPrim.obj: shaveVrayMovingVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayMovingVoxelPrim.obj" "shaveVrayMovingVoxelPrim.cpp" $(TMPDIR)/shaveVrayPlugin.obj: shaveVrayPlugin.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayPlugin.obj" "shaveVrayPlugin.cpp" $(TMPDIR)/shaveVrayShadeable.obj: shaveVrayShadeable.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayShadeable.obj" "shaveVrayShadeable.cpp" $(TMPDIR)/shaveVrayShadeData.obj: shaveVrayShadeData.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayShadeData.obj" "shaveVrayShadeData.cpp" $(TMPDIR)/shaveVraySharedFunctions.obj: shaveVraySharedFunctions.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVraySharedFunctions.obj" "shaveVraySharedFunctions.cpp" $(TMPDIR)/shaveVrayStaticVoxelPrim.obj: shaveVrayStaticVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayStaticVoxelPrim.obj" "shaveVrayStaticVoxelPrim.cpp" $(TMPDIR)/shaveVrayVoxelPrim.obj: shaveVrayVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayVoxelPrim.obj" "shaveVrayVoxelPrim.cpp" #instanced hair $(TMPDIR)/shaveVrayInstanceBase.obj: shaveVrayInstanceBase.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayInstanceBase.obj" "shaveVrayInstanceBase.cpp" $(TMPDIR)/shaveVrayInstanceI.obj: shaveVrayInstanceI.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayInstanceI.obj" "shaveVrayInstanceI.cpp" $(TMPDIR)/shaveVrayTriVoxelPrim.obj: shaveVrayTriVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayTriVoxelPrim.obj" "shaveVrayTriVoxelPrim.cpp" $(TMPDIR)/shaveVrayMovingTriVoxelPrim.obj: shaveVrayMovingTriVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayMovingTriVoxelPrim.obj" "shaveVrayMovingTriVoxelPrim.cpp" $(TMPDIR)/shaveVrayStaticTriVoxelPrim.obj: shaveVrayStaticTriVoxelPrim.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayStaticTriVoxelPrim.obj" "shaveVrayStaticTriVoxelPrim.cpp" $(TMPDIR)/shaveVrayTriShadeable.obj: shaveVrayTriShadeable.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayTriShadeable.obj" "shaveVrayTriShadeable.cpp" $(TMPDIR)/shaveVrayTriShadeData.obj: shaveVrayTriShadeData.cpp $(C++) $(GCCFLAGS_OBJ) $(INCDIRS) -D "NDEBUG" -c -o "$(TMPDIR)/shaveVrayTriShadeData.obj" "shaveVrayTriShadeData.cpp" clean: -@rm -f $(TMPDIR)/*.obj -@rm -f $(OUTDIR)/libvray_Shave36.so