# Non - official Makefile to compile Houdini plugins and 
# standalone applications
# Author: Sebastian H. Schmidt
# Web: sebastian.h.schmidt <at> gmail.com
# WWW: subsites.org
# 
#  Use at your own risk !! 
# 
CC = g++
LINK = g++

# Find out which version of gcc we're using.  We need at least gcc 3.
GCCVER := $(shell $(CXX) -dumpversion)
GCCVER_W_SPACES := $(subst ., ,$(GCCVER))
GCCMAJORVER := $(word 1,$(GCCVER_W_SPACES))
GCCMINORVER := $(word 2,$(GCCVER_W_SPACES))

GCC3 = 1
ifeq ($(GCCMAJORVER), 4)
    GCC4 = 1
endif

# Check if this is a 64-bit platform.
#PLATFORM := $(shell uname -m)
#ifeq ($(PLATFORM), x86_64)
#    AMD64 = 1
#endif


ifndef PLATFORM
    PLATFORM := $(shell uname -m)
endif

ifeq ($(PLATFORM),i386) 
	MACHTYPE = x86_64
	AMD64 = 1
endif
ifeq ($(PLATFORM),x86_64) 
	MACHTYPE = x86_64
	AMD64 = 1
endif

ifeq ($(PLATFORM),ppc) 
	MACHTYPE = ppc64
	PPC64 = 1
endif
ifeq ($(PLATFORM),ppc64) 
	MACHTYPE = ppc64
	PPC64 = 1
endif


SYSTEMDEFS = -arch $(MACHTYPE)
ifdef AMD64
    SYSTEMDEFS +=  -DAMD64 -fPIC
endif

SIZEOF_VOID_P = 4
ifdef AMD64
    SIZEOF_VOID_P = 8
endif

ifdef PPC64 
    SIZEOF_VOID_P = 8
endif


ARCHDEFS = $(SYSTEMDEFS)

SIZEOF_DEFS = -DSIZEOF_VOID_P=$(SIZEOF_VOID_P)

INCINC = $(INCDIRS) -I$(HFS)/toolkit/include -I$(HFS)/toolkit/include/htools
WFLAGS = -Wall -W -Wno-parentheses -Wno-sign-compare -Wno-reorder -Wno-uninitialized -Wunused -Wno-unused-parameter
ifndef OPTIMIZER
  OPTIMIZER = -O2
endif


HDEFINES = -DVERSION=\"$(HOUDINI_VERSION)\" -DDLLEXPORT="" -DMAKING_DSO -D_GNU_SOURCE -DMBSD -DMBSD_COCOA -DMBSD_INTEL $(ARCHDEFS) $(SIZEOF_DEFS) -DSESI_LITTLE_ENDIAN -DENABLE_THREADS -DUSE_PTHREADS -D_REENTRANT -D_FILE_OFFSET_BITS=64 -fobjc-gc-only -c -DGCC3
ifdef GCC4
   HDEFINES += -DGCC4 -DGCC3 -Wno-deprecated
else 
   HDEFINES += -fno-exceptions
endif

HLIBINC 	= -L$(HFS)/dsolib
HLIBDIR		= /Library/Frameworks/Houdini.framework/Versions/$(HOUDINI_VERSION)/Libraries
PLIBPATH 	= -L$HFS/python/lib
PYTHONLIB 	= "-lpython2.5"
HLIBS 		= -Wl,-rpath,${HLIBDIR} -L${HLIBDIR} -L$HFS/Frameworks/Houdini.framework/Versions/$(HOUDINI_VERSION)/Libraries -F$HFS/Frameworks -framework Houdini
SYSLIBS 	= -arch ${MACHTYPE} -fobjc-gc-only -framework OpenGL -framework Cocoa 

SHAREDFLAG = -bundle
OBJOUTPUT = -o 
DSOOUTPUT = -o 
SAOUTPUT = -o 
OBJFLAGS = -c $(HDEFINES) $(INCINC) $(WFLAGS) $(OPTIMIZER)

DSOFLAGS = $(SYSLIBINC) $(LIBDIRS) $(LIBS) $(HLIBS) $(SYSLIBS)
SAFLAGS = $(HLIBINC) $(PLIBPATH) $(HLIBS) $(PYTHONLIB) $(DSOFLAGS)

