
####################################################################################
#        MAKEFILE CONFIGURATION
####################################################################################
.EXPORT_ALL_VARIABLES:

CROSS_COMPILE = /opt/hardhat/devkit/ppc/8xx/bin/ppc_8xx-

# use '-Os' optimization if available, else use -O2
OPTIMIZATION = $(shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
    then echo "-Os"; else echo "-O2" ; fi)

INCLUDES = -I../include -I $(RAS_DIR)/src
CFLAGS  = -Wall $(OPTIMIZATION) -fomit-frame-pointer $(INCLUDES) -D_GNU_SOURCE
#CFLAGS  = -g $(INCLUDES) 
LDFLAGS  = -s -L$(RAS_DIR)/src 
#-lcycl

CC      = $(CROSS_COMPILE)gcc
AS      =$(CROSS_COMPILE)as
LD      =$(CROSS_COMPILE)ld
CPP     =$(CC) -E
AR      =$(CROSS_COMPILE)ar
NM      =$(CROSS_COMPILE)nm
STRIP   =$(CROSS_COMPILE)strip --remove-section=.note --remove-section=.comment
OBJCOPY =$(CROSS_COMPILE)objcopy
OBJDUMP =$(CROSS_COMPILE)objdump
RANLIB  =$(CROSS_COMPILE)ranlib
MAKE    =make
INSTALL =install

CFLAGS += -D$(DEFTARG)

OPT=-O2 -fomit-frame-pointer
PCILIB_VERSION=2.0
SUFFIX=

export

####################################################################################
#        VARIABLES
####################################################################################
PROGRAMS=pmd pm pmfwupgrade pmCommand
#TARGETS=$(PROGRAMS) $(OBJECTS)
TARGETS=$(PROGRAMS)
PMD_OBJ=pmd.o serial.o ipdu.o
PM_OBJ=pm.o

RAS_STUFF=$(RAS_DIR)/src/rot_nports.o $(RAS_DIR)/src/rwconf.o 
INC_STUFF=-I$(RAS_DIR)/src/ -I$(RAS_DIR) -I. -I../linux/include/

####################################################################################
#        RULES
####################################################################################
all: $(TARGETS)

pmd: $(PMD_OBJ)
	$(CC) $(LDFLAGS) -o pmd $(PMD_OBJ) $(RAS_STUFF) -lcycl

pmd.o: pmd.c pmd.h ipdu.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c pmd.c -o pmd.o

serial.o: serial.c pmd.h ipdu.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c serial.c -o serial.o

ipdu.o: ipdu.c ipdu.h pmd.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c ipdu.c -o ipdu.o

pmCommand: pmCommand.o $(RAS_DIR)/src/cy_shm.h
	$(CC) $(LDFLAGS) -o pmCommand pmCommand.o $(RAS_STUFF) -lcycl

pmCommand.o: pmCommand.c ipdu.h pmd.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c pmCommand.c -o pmCommand.o

pm: pm.o $(RAS_DIR)/src/cy_shm.h
	$(CC) $(LDFLAGS) -o pm pm.o $(RAS_STUFF) -lcycl

pm.o: pm.c ipdu.h pmd.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c pm.c -o pm.o

pmfwupgrade: pmfwupgrade.o $(RAS_DIR)/src/cy_shm.h
	$(CC) $(LDFLAGS) -o pmfwupgrade pmfwupgrade.o $(RAS_STUFF) -lcycl

pmfwupgrade.o: pmfwupgrade.c ipdu.h pmd.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c pmfwupgrade.c -o pmfwupgrade.o

pmdteste: pmdteste.o $(RAS_DIR)/src/cy_shm.h
	$(CC) $(LDFLAGS) -o pmdteste pmdteste.o $(RAS_STUFF) -lcycl

pmdteste.o: pmdteste.c ipdu.h pmd.h $(RAS_DIR)/src/cy_shm.h
	$(CC) $(INC_STUFF) $(CFLAGS) -c pmdteste.c -o pmdteste.o

install:
	$(STRIP) $(PROGRAMS)
	${INSTALL} -m 700 pmd $(TARGET_DIR)/bin
	${INSTALL} -m 755 pm $(TARGET_DIR)/bin
	${INSTALL} -m 755 pmCommand $(TARGET_DIR)/bin
	${INSTALL} -m 700 pmfwupgrade $(TARGET_DIR)/bin
	${INSTALL} -m 700 config/pm.cyclades $(TARGET_DIR)/etc
#	${INSTALL} -m 700 config/pm.rpc22 $(TARGET_DIR)/etc
#	${INSTALL} -m 700 config/pm.sentry $(TARGET_DIR)/etc

	#cd $(TARGET_DIR)/bin; ln -s pm pmCommand; cd -

clean:
	rm -f *.o *~ $(TARGETS)
