##
#  CSMan/uds/agent/Makefile
#
#  Makefile for CSMan Agent.
#

OSTYPE := $(shell uname --s)

# RDS/00008: OASIS Components Makefile Conventions

ifdef TARGET
	TARGET_PREFIX = $(TARGET)-
endif

ifndef CROSS_COMPILE
	CROSS_COMPILE = $(TARGET_PREFIX)
	AS      = $(CROSS_COMPILE)as
	LD      = $(CROSS_COMPILE)ld
	CC      = $(CROSS_COMPILE)gcc
	CPP     = $(CC) -E
	AR      = $(CROSS_COMPILE)ar
	NM      = $(CROSS_COMPILE)nm
	STRIP   = $(CROSS_COMPILE)strip
	OBJCOPY = $(CROSS_COMPILE)objcopy
	OBJDUMP = $(CROSS_COMPILE)objdump
endif

ifdef LOG_COLLECTOR
	CFLAGS += -DLOG_COLLECTOR=$(LOG_COLLECTOR)
endif

ifdef DEBUG_LEVEL
	CFLAGS += -DDEBUG_LEVEL=$(DEBUG_LEVEL)
endif

# General definitions

LIBNAME = csman
ifeq ($(OSTYPE), Linux)
	EXTNAME = .so
else
	EXTNAME = .a
endif
FULLNAME = lib$(LIBNAME)-uds$(EXTNAME)

# Flags for compiling and linking

CFLAGS += -Wall -Os -I../include -I../../include -I../../../include -I../../../../include
ifeq ($(OSTYPE), Linux)
	CFLAGS += -fPIC
endif

# Main Target

OBJECTS = csman.o csmsock.o
HFILES1 = csmsock.h csmprot.h csman.h

ifeq ($(OSTYPE), Linux)
	MAKE_TARGET = $(FULLNAME)
else
	MAKE_TARGET = $(FULLNAME)($(OBJECTS))
endif

all: build lib

build: $(MAKE_TARGET)

$(MAKE_TARGET): $(OBJECTS)
ifeq ($(OSTYPE), Linux)
	$(CC) -shared -fPIC -o $@ $(OBJECTS)
	$(STRIP) -s -R .note -R .comment $(FULLNAME)
endif

lib:
ifndef DONT_CP_LIB
	cp $(FULLNAME) ../../lib/libcsman$(EXTNAME)
endif

# Object files dependencies

csman.o: $(HFILES1)
cmsock.o: $(HFILES1)

.PHONY: clean

clean:
	-rm -f $(FULLNAME) $(OBJECTS)

# Extra Targets

.PHONY: distclean

distclean: clean
