ASN1MESSAGESDIR=$(X2AP_DIR)/MESSAGES
ASN1DIR=$(ASN1MESSAGESDIR)/ASN1

#//ifeq ($(USE_MME), R10)
#//	ASN1RELDIR=R10.7
#//else
#//ASN1RELDIR=R11.2
#//endif

# TEMP
ASN1RELDIR=R11.2


include $(ASN1DIR)/$(ASN1RELDIR)/Makefile.inc

libx2ap_OBJECTS = \
	x2ap.o        \
	x2ap_common.o \
	$(addprefix MESSAGES/ASN1/$(ASN1RELDIR)/, $(X2AP_ASN_MODULE_SOURCES))



# pull in dependency info for *existing* .o files
-include $(OUTDIR)/*.d

CFLAGS =            \
	-Wall           \
	-DENB_MODE      \
	-DENABLE_USE_MME    \
	-I.        \
	-I$(ASN1MESSAGESDIR)/ASN1/$(ASN1RELDIR) \
	-I$(ASN1MESSAGESDIR) \
	-I$(OUTDIR)     \
	-I../UTILS      \
	$(ADD_CFLAGS)       \
	$(X2AP_CFLAGS)      \
	-Wuninitialized     \
	-Werror=implicit-function-declaration

X2AP_GENERATED =    \
	$(OUTDIR)/x2ap_encoder.o    \
	$(OUTDIR)/x2ap_decoder.o    \
	$(OUTDIR)/x2ap_xer_print.o

$(OUTDIR)/%.o : %.c
	@echo "Compiling $<"
	@echo "Compiling $<  with CFLAGS= $(CFLAGS)"
	@if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi;
	@$(CC) -c $(CFLAGS) -o $@ $<
	@$(CC) -MM $(CFLAGS) $< > $(basename $@).d
	@mv -f $(basename $@).d $(basename $@).d.tmp
	@sed -e 's|.*:|$@:|' < $(basename $@).d.tmp > $(basename $@).d
	@sed -e 's/.*://' -e 's/\\$$//' < $(basename $@).d.tmp | fmt -1 | \
	sed -e 's/^ *//' -e 's/$$/:/' >> $(basename $@).d
	@rm -f $(basename $@).d.tmp

$(X2AP_GENERATED): %.o : %.c
	@echo "Compiling $<"
	@echo "Compiling $<  with CFLAGS= $(CFLAGS)"
	@if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi;
	@$(CC) -c $(CFLAGS) -o $@ $<
	@$(CC) -MM $(CFLAGS) $< > $(basename $@).d
	@mv -f $(basename $@).d $(basename $@).d.tmp
	@sed -e 's|.*:|$@:|' < $(basename $@).d.tmp > $(basename $@).d
	@sed -e 's/.*://' -e 's/\\$$//' < $(basename $@).d.tmp | fmt -1 | \
	sed -e 's/^ *//' -e 's/$$/:/' >> $(basename $@).d
	@rm -f $(basename $@).d.tmp


$(OUTDIR)/x2ap_ieregen.stamp: $(ASN1DIR)/$(ASN1RELDIR)/X2AP-PDU-Contents.asn $(ASN1DIR)/asn1tostruct.py
	@if [ ! -d $(OUTDIR) ]; then mkdir -p $(OUTDIR); fi;
	@python $(ASN1DIR)/asn1tostruct.py -f$< -o$(OUTDIR) 
	@echo Timestamp > $@

#ProtocolExtensionContainer
#$(ASN1DIR)/$(ASN1RELDIR)/X2AP-PDU.asn 

$(OUTDIR)/x2ap_asn1regen.stamp:  $(ASN1DIR)/$(ASN1RELDIR)/X2AP-CommonDataTypes.asn  $(ASN1DIR)/$(ASN1RELDIR)/X2AP-Constants.asn $(ASN1DIR)/$(ASN1RELDIR)/X2AP-IEs.asn  $(ASN1DIR)/$(ASN1RELDIR)/X2AP-PDU.asn   
	@echo "Timestamp DIR " $(ASN1DIR) " DIRREL " $(ASN1RELDIR)
#	(cd $(ASN1DIR)/$(ASN1RELDIR) && asn1c -fhave_native64 -gen-PER -fcompound-names $^)
	(cd $(ASN1MESSAGESDIR) && asn1c -fhave_native64 -gen-PER -fcompound-names -fskeletons-copy $^)
	@echo "Timestamp X2AP_CFLAGS: " $(X2AP_CFLAGS)
	@echo Timestamp > $@	

$(OUTDIR)/libx2ap.a: $(OUTDIR)/x2ap_ieregen.stamp $(OUTDIR)/x2ap_asn1regen.stamp $(X2AP_GENERATED) $(addprefix $(OUTDIR)/,$(libx2ap_OBJECTS))
	@echo Creating X2AP archive
	@echo libx2ap_OBJECTS $(libx2ap_OBJECTS)
	@$(AR) rcs $@ $(X2AP_GENERATED) $(addprefix $(OUTDIR)/,$(libx2ap_OBJECTS))

clean:
	@$(RM_F_V) $(OUTDIR)/*.o
	@$(RM_F_V) $(OUTDIR)/*.d
	@$(RM_F_V) $(addprefix $(OUTDIR)/MESSAGES/ASN1/$(ASN1RELDIR), $(X2AP_ASN_MODULE_SOURCES))
	@$(RM_F_V) $(addprefix $(OUTDIR)/MESSAGES/ASN1/$(ASN1RELDIR), $(X2AP_ASN_MODULE_SOURCES:.o=.d))
	@$(RM_F_V) $(OUTDIR)/libx2ap.a
	@$(RM_F_V) $(OUTDIR)/x2ap_asn1regen.stamp
	@$(RM_F_V) $(OUTDIR)/x2ap_ieregen.stamp
	@$(RM_F_V) $(OUTDIR)/x2ap_decoder.c $(OUTDIR)/x2ap_encoder.c
	@$(RM_F_V) $(OUTDIR)/x2ap_xer_print.c $(OUTDIR)/x2ap_ies_defs.h

cleanall: clean
	@$(RM_F_V) $(addprefix $(OUTDIR)/MESSAGES/ASN1/$(ASN1RELDIR), $(X2AP_ASN_MODULE_SOURCES:.o=.c))
	@$(RM_F_V) $(addprefix $(OUTDIR)/MESSAGES/ASN1/$(ASN1RELDIR), $(X2AP_ASN_MODULE_SOURCES:.o=.h))

showcflags:
	@echo x2ap cflags: $(CFLAGS)