# makefile to build CSTA API libraries

include ../../platform.mk

ACROOTDIR = ..$(PS)..$(PS)..
ASN1C = $(ACROOTDIR)$(PS)bin$(PS)asn1c
RTSRCDIR  = $(ACROOTDIR)$(PS)rtsrc
RTXSRCDIR  = $(ACROOTDIR)$(PS)rtxsrc
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  = $(CVARS_) $(MCFLAGS) $(CFLAGS_) $(COPTIMIZE_)
CCFLAGS = $(CVARS_) $(MCFLAGS) $(CCFLAGS_) $(COPTIMIZE_)
IPATHS  = -I. -I$(ACSE_SRCDIR) -I$(CSTA_SRCDIR) -I$(ACROOTDIR) -I$(RTSRCDIR) \
-I$(RTXSRCDIR) -I$(BERSRCDIR) $(IPATHS_)

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

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

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

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

$(LIBPATH)acse$(A) : $(ACSE_OBJECTS)
	$(LIBCMD) *$(OBJ)

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

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

# compile ASN.1 source files
CSTA_ASN1FILES = \
$(CSTA_SPECSDIR)CSTAp1.asn \
$(CSTA_SPECSDIR)ROSE.asn 

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

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)cstap1$(A)

