# makefile to build CSTA API libraries

include ../../platform.mk

ACROOTDIR = ..$(PS)..$(PS)..
ASN1C = $(ACROOTDIR)$(PS)bin$(PS)asn1c
RTSRCDIR  = $(ACROOTDIR)$(PS)rtsrc
RTXSRCDIR = $(ROOTDIR)$(PS)rtxsrc$(PS)
BERSRCDIR = $(ACROOTDIR)$(PS)rtbersrc
XERSRCDIR = $(ACROOTDIR)$(PS)rtxersrc


ROOTDIR  = ..
LIBPATH  = $(ROOTDIR)$(PS)lib$(PS)$(LIBPFX)
RTLIBDIR = $(ROOTDIR)$(PS)lib$(PS)
CSTA_SPECSDIR = $(ROOTDIR)$(PS)specs$(PS)csta$(PS)
ACSE_SPECSDIR = $(ROOTDIR)$(PS)specs$(PS)acse$(PS)
CSTA_SRCDIR   = $(ROOTDIR)$(PS)src$(PS)csta
ACSE_SRCDIR   = $(ROOTDIR)$(PS)src$(PS)acse

CFLAGS	= $(COPTIMIZE_) $(CVARS_) $(MCFLAGS) $(CFLAGS_)
CCFLAGS = $(CFLAGS) $(XMLDEFS)
IPATHS  = -I. -I$(ACROOTDIR) -I$(ACSE_SRCDIR) -I$(CSTA_SRCDIR) -I$(RTSRCDIR) -I$(RTXSRCDIR) -I$(BERSRCDIR) $(IPATHS_)

include csta_object.mk
include csta_sourcefiles.mk
include acse_object.mk
include acse_sourcefiles.mk

EXT_OBJECTS = \
CSTA-extend$(OBJ) \
CSTA-extendDec$(OBJ) \
CSTA-extendEnc$(OBJ) \
CSTA-extendPrint$(OBJ)

EXT_SOURCEFILES = \
$(CSTA_SRCDIR)/CSTA-extend.cpp \
$(CSTA_SRCDIR)/CSTA-extendDec.cpp \
$(CSTA_SRCDIR)/CSTA-extendEnc.cpp \
$(CSTA_SRCDIR)/CSTA-extendPrint.cpp

all :  $(ROOTDIR)$(PS)platform.mk $(LIBPATH)acse$(A) $(LIBPATH)cstap2$(A) 

$(ROOTDIR)$(PS)platform.mk :
   $(COPY) $(ACROOTDIR)$(PS)platform.mk $(ROOTDIR)

# create library
$(LIBPATH)cstap2$(A) : $(CSTA_OBJECTS) $(EXT_OBJECTS)
	$(LIBCMD) *$(OBJ)

$(LIBPATH)acse$(A) : $(ACSE_OBJECTS)
	$(LIBCMD) *$(OBJ)
	
# compile C++ source files
$(CSTA_OBJECTS): $(CSTA_SOURCEFILES) $(EXT_SOURCEFILES)
   $(RM) *$(OBJ)
   $(CCC) -c $(CCFLAGS) $(IPATHS) $(CSTA_SRCDIR)/*.cpp

$(ACSE_OBJECTS): $(ACSE_SOURCEFILES)
   $(RM) *$(OBJ)
   $(CCC) -c $(CCFLAGS) $(IPATHS) $(ACSE_SRCDIR)/*.cpp

CSTA_ASN1FILES = \
$(CSTA_SPECSDIR)AlcatelPrivate.asn \
$(CSTA_SPECSDIR)CSTAp2.asn \
$(CSTA_SPECSDIR)ROSE.asn 

$(CSTA_SOURCEFILES) $(EXT_SOURCEFILES) : $(CSTA_ASN1FILES) $(CSTA_SPECSDIR)csta.cfg
	$(ASN1C) $(CSTA_ASN1FILES) -c++ -ber -print -prttostrm -config $(CSTA_SPECSDIR)csta.cfg -o $(CSTA_SRCDIR)

ACSE_ASN1FILES = \
$(ACSE_SPECSDIR)ACSE-1.asn \
$(ACSE_SPECSDIR)InformationFramework.asn \
$(ACSE_SPECSDIR)UsefulDefinitions.asn 

$(ACSE_SOURCEFILES) : $(ACSE_ASN1FILES) 
	$(ASN1C) $(ACSE_ASN1FILES) -c++ -ber -print -prttostrm -o $(ACSE_SRCDIR)

clean :
	$(RM) *$(OBJ)
	$(RM) $(CSTA_SRCDIR)$(PS)*.cpp
	$(RM) $(CSTA_SRCDIR)$(PS)*.h
	$(RM) $(ACSE_SRCDIR)$(PS)*.cpp
	$(RM) $(ACSE_SRCDIR)$(PS)*.h
	$(RM) *.pdb 
	$(RM) $(LIBPATH)acse$(A)
	$(RM) $(LIBPATH)cstap2$(A)

