SYST=Solaris

CC=gcc
CCC=g++
.SUFFIXES: .cpp .c

CC_FLAGS=-g
CCC_FLAGS=-O3 -ffast-math -fstrength-reduce -fdelayed-branch \
	-fexpensive-optimizations -fomit-frame-pointer -fexternal-templates

DEFINES= -DUNIX  -DCOLOR_ABGR -DHAS_IMAGE_MAGICK


LIB_NAME=Photon4D
FULL_LIB_NAME=Bin_$(SYST)/lib$(LIB_NAME).a
GFX_LIBS_PATH=..
LIB_MAGICK_PATH=../ImageMagick/magick
SPEC_INCLUDES_PATH= -I../DMsg++ -I. -I../ImageMagick/magick/ -I/usr/openwin/include -I../include -I/usr/openwin/include -I/usr/dt/include -I/usr/local/X11R5/include
SPEC_LIBS_PATH= -L. -LBin_$(SYST) -L../jpeg -L$(GFX_LIBS_PATH)/DMsg++/Bin_$(SYST) -L$(LIB_MAGICK_PATH) -L/usr/X11R6/lib -L/usr/openwin/lib

SPEC_LIBS= -l$(LIB_NAME)  -lDMsg -lMagick -ljpeg -lX11 -lXext
STD_LIBS= -lm
AR=ar
AR_OPTIONS= -r
LNFLAGS=

.c.o:
	$(CC) -c -o Bin_$(SYST)/$*.o (CC_FLAGS) $(DEFINES) $(SPEC_INCLUDES_PATH) $<

.cpp.o:
	$(CCC) -c $(CCC_FLAGS) $(DEFINES) $(SPEC_INCLUDES_PATH) $<

.c.a:
	$(CC) -c -o Bin_$(SYST)/$*.o $(CC_FLAGS) $(DEFINES) $(SPEC_INCLUDES_PATH) $(?:.o=.c)
	ar r $@ Bin_$(SYST)/$*.o
	rm -f Bin_$(SYST)/$*.o
.cpp.a:
	$(CCC) -c -o Bin_$(SYST)/$*.o $(CCC_FLAGS) $(DEFINES) $(SPEC_INCLUDES_PATH) $(?:.o=.cpp)
	$(AR) $(AR_OPTIONS) $@ Bin_$(SYST)/$*.o
	rm -f Bin_$(SYST)/$*.o

Bin_$(SYST)/main: $(FULL_LIB_NAME) Bin_$(SYST)/main.o
	$(CCC) $(LNFLAGS) -o Bin_$(SYST)/main Bin_$(SYST)/main.o $(SPEC_LIBS_PATH) $(SPEC_LIBS) $(STD_LIBS)

Bin_$(SYST)/main.o : main.cpp
	$(CCC) -c -o $@ $(CCC_FLAGS) $(DEFINES) $(SPEC_INCLUDES_PATH) $(?:.o=.cpp)

$(FULL_LIB_NAME): $(FULL_LIB_NAME)(Image.o) \
$(FULL_LIB_NAME)(System.o) \
$(FULL_LIB_NAME)(ImageIo.o) \
$(FULL_LIB_NAME)(ColorMap.o) \
$(FULL_LIB_NAME)(Polygs.o) \
$(FULL_LIB_NAME)(AnalogicImageSource.o) \
$(FULL_LIB_NAME)(Bbox.o) \
$(FULL_LIB_NAME)(Bunch.o) \
$(FULL_LIB_NAME)(BunchManager.o) \
$(FULL_LIB_NAME)(Camera.o) \
$(FULL_LIB_NAME)(Color.o) \
$(FULL_LIB_NAME)(Flat.o) \
$(FULL_LIB_NAME)(Gouraud.o) \
$(FULL_LIB_NAME)(Phong.o) \
$(FULL_LIB_NAME)(Frame.o) \
$(FULL_LIB_NAME)(Grids.o) \
$(FULL_LIB_NAME)(InterStack.o) \
$(FULL_LIB_NAME)(Light.o) \
$(FULL_LIB_NAME)(Mappers.o) \
$(FULL_LIB_NAME)(Math.o) \
$(FULL_LIB_NAME)(Matrix.o) \
$(FULL_LIB_NAME)(Ray.o) \
$(FULL_LIB_NAME)(Methods_Cone.o) \
$(FULL_LIB_NAME)(Methods_Cube.o) \
$(FULL_LIB_NAME)(Methods_DensVox.o) \
$(FULL_LIB_NAME)(Methods_Facets.o) \
$(FULL_LIB_NAME)(Methods_Metaform.o) \
$(FULL_LIB_NAME)(Methods_MetaGrid.o) \
$(FULL_LIB_NAME)(ComputeBBox.o) \
$(FULL_LIB_NAME)(Distance_Function.o) \
$(FULL_LIB_NAME)(Bench.o) \
$(FULL_LIB_NAME)(MCubeMetaform.o) \
$(FULL_LIB_NAME)(MCA_Polygs.o) \
$(FULL_LIB_NAME)(MCube_Adaptatif.o) \
$(FULL_LIB_NAME)(Methods_MetaGrid_Adaptative.o) \
$(FULL_LIB_NAME)(Raytracing_MF.o) \
$(FULL_LIB_NAME)(P4D_Recencement.o) \
$(FULL_LIB_NAME)(Serialize_Metaform.o) \
$(FULL_LIB_NAME)(Methods_Ovoid.o) \
$(FULL_LIB_NAME)(Methods_Plane.o) \
$(FULL_LIB_NAME)(Methods_Quartic.o) \
$(FULL_LIB_NAME)(Methods_Sphere.o) \
$(FULL_LIB_NAME)(Methods_SuperQuadric.o) \
$(FULL_LIB_NAME)(Methods_Tore.o) \
$(FULL_LIB_NAME)(Methods_Tube.o) \
$(FULL_LIB_NAME)(Methods_HeightField.o) \
$(FULL_LIB_NAME)(Noise.o) \
$(FULL_LIB_NAME)(NumericImageSource.o) \
$(FULL_LIB_NAME)(Pigment.o) \
$(FULL_LIB_NAME)(Progressive.o) \
$(FULL_LIB_NAME)(RangeColorMap.o) \
$(FULL_LIB_NAME)(Shape.o) \
$(FULL_LIB_NAME)(Skin.o) \
$(FULL_LIB_NAME)(SolidFunction.o) \
$(FULL_LIB_NAME)(Studio.o) \
$(FULL_LIB_NAME)(Surface.o) \
$(FULL_LIB_NAME)(Transform.o) \
$(FULL_LIB_NAME)(Vector.o) \
$(FULL_LIB_NAME)(ZBuffer.o) \
$(FULL_LIB_NAME)(Parser.o)\
$(FULL_LIB_NAME)(PdbFormat.o) \
$(FULL_LIB_NAME)(MCubesVoxel.o)\
$(FULL_LIB_NAME)(TemplImpl.o)




clean:
	-rm Bin_$(SYST)/*.o Bin_$(SYST)/*.a core Bin_$(SYST)/main
backup:
	../Procs/ProcBackup $(LIB_NAME) 
beautiful:
	../Procs/ProcBeaut 


# DO NOT DELETE
