#+--------------------------------------------------------------+
#|                                                              |
#| *****  Makefile (making for .exe/.a ) *****                  |
#|	                                 takashi 20071012(lib)      |
#|                                                              |
#+--------------------------------------------------------------+

CLASSNAME = sharedMemory

TARGET  		= sample_$(CLASSNAME).exe	# Execute file name
TARGET2  		= sample_$(CLASSNAME)Client.exe	# Execute file name
TARGET3  		= sample_$(CLASSNAME)Client2.exe	# Execute file name
TARGETLIB 	= $(CLASSNAME).a		# Library file name(for RTM)

LIBS	=  -lX11 -Wall -g -O -lm -lcurses
#-lefence

CPATHS	=  -I/usr/include 
CFLAGS	= -o32 -B 2048

XINVS	= 
LPATHS = -L/usr/lib/
CFLAGS2 = #-DDEBUG -DIV_STRICT 

INC = ./
BIN = ./
SRC = ./
OBJ = ./obj/
CPP = ./
TARGETLIBDIR = ./

LIBOBJECTS =	$(OBJ)sharedMemoryManager.o \
							$(OBJ)sharedMemoryClient.o \

OBJECTS1 =	$(LIBOBJECTS) \
						$(OBJ)managerMain.o 

OBJECTS2 =	$(LIBOBJECTS) \
						$(OBJ)clientMain.o 

OBJECTS3 =	$(LIBOBJECTS) \
						$(OBJ)clientMain2.o 

OBJECTS = $(LIBOBJECTS) \
					$(OBJ)managerMain.o \
					$(OBJ)clientMain.o 


#COMPILING COMMANDS
all:	$(OBJECTS1) $(OBJECTS2) $(OBJECTS3)
	$(CXX) $(CPATHS) $(LPATHS) -o $(BIN)$(TARGET) $(OBJECTS1) $(LIBS) $(XINVS) $(DLD) 
	$(CXX) $(CPATHS) $(LPATHS) -o $(BIN)$(TARGET2) $(OBJECTS2) $(LIBS) $(XINVS) $(DLD) 
	$(CXX) $(CPATHS) $(LPATHS) -o $(BIN)$(TARGET3) $(OBJECTS3) $(LIBS) $(XINVS) $(DLD) 

# making Library (making for RT)
# ***.a : ( cd ***
lib:	$(LIBOBJECTS)
	$(AR) $(ARFLAGS) $(TARGETLIBDIR)$(TARGETLIB) $(LIBOBJECTS)

clean:
	/bin/rm -f core ./$(SRC)*~ ./$(SRC)core ./$(OBJ)*.o ./$(OBJ)*~
	/bin/rm -f *~ core server client
	/bin/rm -f ./data/*
	/bin/rm -f ./log/*
	/bin/rm -f $(BIN)$(TARGET)
	/bin/rm -f $(BIN)$(TARGET2)
	/bin/rm -f $(BIN)$(TARGET3)
	/bin/rm -f $(TARGETLIBDIR)$(TARGETLIB)

# INTER-DEPENDANCY LIST (contains both .h & .o files)

$(OBJ)managerMain.o:		$(SRC)managerMain.cpp $(INC)sharedMemoryManager.h
			$(CXX) $(CFLAGS) $(CFLAGS2) $(CPATHS) -o $(OBJ)managerMain.o -c \
			$(SRC)managerMain.cpp

$(OBJ)clientMain.o:		$(SRC)clientMain.cpp $(INC)sharedMemoryClient.h
			$(CXX) $(CFLAGS) $(CFLAGS2) $(CPATHS) -o $(OBJ)clientMain.o -c \
			$(SRC)clientMain.cpp

$(OBJ)clientMain2.o:		$(SRC)clientMain2.cpp $(INC)sharedMemoryClient.h
			$(CXX) $(CFLAGS) $(CFLAGS2) $(CPATHS) -o $(OBJ)clientMain2.o -c \
			$(SRC)clientMain2.cpp

$(OBJ)sharedMemoryManager.o:	$(SRC)sharedMemoryManager.cpp $(INC)sharedMemoryManager.h
			$(CXX) $(CFLAGS) $(CFLAGS2) $(CPATHS) -o $(OBJ)sharedMemoryManager.o -c \
			$(SRC)sharedMemoryManager.cpp

$(OBJ)sharedMemoryClient.o:	$(SRC)sharedMemoryClient.cpp $(INC)sharedMemoryClient.h
			$(CXX) $(CFLAGS) $(CFLAGS2) $(CPATHS) -o $(OBJ)sharedMemoryClient.o -c \
			$(SRC)sharedMemoryClient.cpp

