#
# Makefile 
##

include .cflags

CFLAG+= -g -I. -fPIC -Laprlib/apr-util-1/ -Laprlib/lib -lapr-1 -lwebsockets -lcrypto -lssl  -Iaprlib/apr-1/ -I./bt/ -I./mm/ -I../../base/libnscore/ -I../../base/libnscore/tdigest/ -I ./lwslib/include -I ./lwslib/include/libwebsockets -Wall -lm -Wall  -lpthread -lc -lz -ldl
# sanitizer changes. add at the end of CFLAG
# -fsanitize=address -fno-omit-frame-pointer -lasan
CXXFLAGS = -Wall -O3 -fPIC
CXX = g++
#CFLAG+= -g -I. -Laprlib/apr-util-1/ -Laprlib/lib -lapr-1 -L/usr/local/ssl/lib -lssl -L/usr/local/lib -lwebsockets -fPIC -Iaprlib/apr-1/ -I./bt/ -I./mm/ -I../../base/libnscore/ -I/usr/local/ssl/lib -I../../base/libnscore/tdigest/ -I../../../../cavisson/work/lws/libwebsockets-master/include/ -I../../../../cavisson/work/lws/libwebsockets-master/build/lib -Wall -lm -Wall

FLOWPATH=flowpath
BT=bt
MM=mm
NDBT=ndbt
BACKEND=backend
EXCEPTION=exception
TOOL=tool
HTTP=http
FILES=files
DYNAMICDIAGNOSTIC=dynamicDiagnostic
COMMON_HEADER=NDMain.h NDCommonHeader.h ndlb_utiles.h 
#AWSLIBS=-laws-cpp-sdk-resourcegroupstaggingapi -laws-cpp-sdk-core -lstdc++
$(shell mkdir -p $(LIB_ND_CORE_OBJ_DIR))
$(shell mkdir -p $(LIB_ND_CORE_OBJ_PROXY_DIR))
all: clean lib_nd_sdk lib_nd_core proxy_bin
sdk: clean sdk_lib sdk_test
sdk_go: clean sdk_lib_go
sdk_python: clean sdk_lib_python
clean:
	rm -f $(LIB_ND_CORE_OBJ_PROXY_DIR)/* $(LIB_ND_CORE_OBJ_DIR)/*

#LIB_ND_AWS_OBJS=$(LIB_ND_CORE_OBJ_DIR)/NdAwsTags.o

LIB_ND_PROXY_OBJS=$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mt_log.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_utiles.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_agent.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDataDispatcher.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFlowpathGenerator.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_bt_object.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_span.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTierCallOut.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFileBasedKeywords.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRunTimeChangeHandle.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTIdToTLocal.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpCapture.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDEnableResourceUrl.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_proxy_server.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCServerConfig.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDException.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDLogDispatcher.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_thread_handle.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_encode.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_decode.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_sock.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mem_pool.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_hashMapMethod.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/lws_handler.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/proxy_lws_handler.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSocketManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDProxySocketManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/control_thread.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/agent_thread.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSys.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpReqRespCaptureSettings.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBCISettings.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NIODataDispatcher.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDPerThreadData.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorCommon.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataModel.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDigest.o \
        $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDTDigest.o \
        $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCDigest.o \
        $(LIB_ND_CORE_OBJ_PROXY_DIR)/rudp.o\
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMessageHandling.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorDataModel.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDynamicSettings.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDThreadMonitor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDASSettings.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoSensorUsingStackTrace.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ASGraphData.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/Server.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionCaptureSettings.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoDiscoveryHandler.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_execute.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_parser.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_httpBody_rule_parser.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRespHeaderDataBT.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDReqHeaderDataBT.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_method_based_bt.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_utils.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_bt_custom_rule.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_keyword_lexicon.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHash.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_queue.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_sdk.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/tdigest.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/tslb_cdigest.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSQLProcessor.o \
    $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDParsingFiles.o \
    $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoInstrumentation.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDClientManager.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHandleUploadDownload.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/nslb_t_digest_quantile.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDInterfaceProcessor.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_state_machine.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_stack.o \
	$(LIB_ND_CORE_OBJ_PROXY_DIR)/parson.o

LIB_ND_NON_PROXY_OBJS=$(LIB_ND_CORE_OBJ_DIR)/ndlb_mt_log.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_utiles.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_agent.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDDataDispatcher.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDFlowpathGenerator.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndbt_bt_object.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_span.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDManageTierCallOut.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDFileBasedKeywords.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDRunTimeChangeHandle.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDManageTIdToTLocal.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDHttpCapture.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDEnableResourceUrl.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_proxy_server.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDCServerConfig.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDException.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDLogDispatcher.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_thread_handle.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_encode.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_decode.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_sock.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_mem_pool.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_hashMapMethod.o \
	$(LIB_ND_CORE_OBJ_DIR)/lws_handler.o \
	$(LIB_ND_CORE_OBJ_DIR)/proxy_lws_handler.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDSocketManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDProxySocketManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/control_thread.o \
	$(LIB_ND_CORE_OBJ_DIR)/agent_thread.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDSys.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDHttpReqRespCaptureSettings.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBCISettings.o \
	$(LIB_ND_CORE_OBJ_DIR)/NIODataDispatcher.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDPerThreadData.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMonitorCommon.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBTManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitor.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBackendManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataModel.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBTMonitor.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMessageHandling.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMonitorDataModel.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDBTMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDDigest.o \
        $(LIB_ND_CORE_OBJ_DIR)/NDTDigest.o \
        $(LIB_ND_CORE_OBJ_DIR)/NDCDigest.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitor.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDDynamicSettings.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitorDataCounters.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDMethodManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDThreadMonitor.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDASSettings.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDAutoSensorUsingStackTrace.o \
	$(LIB_ND_CORE_OBJ_DIR)/ASGraphData.o \
	$(LIB_ND_CORE_OBJ_DIR)/Server.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDExceptionCaptureSettings.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitor.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDAutoDiscoveryHandler.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_execute.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_parser.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndbt_httpBody_rule_parser.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDRespHeaderDataBT.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDReqHeaderDataBT.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_method_based_bt.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndbt_utils.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_bt_custom_rule.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_keyword_lexicon.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDHash.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_queue.o \
	$(LIB_ND_CORE_OBJ_DIR)/nd_sdk.o \
	$(LIB_ND_CORE_OBJ_DIR)/tdigest.o \
	$(LIB_ND_CORE_OBJ_DIR)/tslb_cdigest.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDSQLProcessor.o \
    $(LIB_ND_CORE_OBJ_DIR)/NDParsingFiles.o \
    $(LIB_ND_CORE_OBJ_DIR)/NDAutoInstrumentation.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDClientManager.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDHandleUploadDownload.o \
	$(LIB_ND_CORE_OBJ_DIR)/nslb_t_digest_quantile.o \
	$(LIB_ND_CORE_OBJ_DIR)/NDInterfaceProcessor.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_state_machine.o \
	$(LIB_ND_CORE_OBJ_DIR)/ndlb_stack.o \
	$(LIB_ND_CORE_OBJ_DIR)/parson.o

#aws_lib: $(LIB_ND_AWS_OBJS)
	#ar r $(LIB_ND_CORE_OBJ_DIR)/${LIB_AWS} $(LIB_ND_AWS_OBJS)

lib_nd_core: $(LIB_ND_PROXY_OBJS)
	ar r $(LIB_ND_CORE_OBJ_DIR)/${LIB_ARC} $(LIB_ND_PROXY_OBJS)

lib_nd_sdk:$(LIB_ND_NON_PROXY_OBJS)
	        cc -shared -o $(LIB_ND_CORE_OBJ_DIR)/${LIB_SO} $(LIB_ND_NON_PROXY_OBJS)

sdk_lib:$(LIB_ND_NON_PROXY_OBJS) 
	cc -shared -o $(LIB_ND_CORE_OBJ_DIR)/${LIB_SO} $(LIB_ND_NON_PROXY_OBJS) 

sdk_lib_go:$(LIB_ND_NON_PROXY_OBJS)
	cc -g -shared -o $(LIB_ND_CORE_OBJ_DIR)/${LIB_SO_GO} $(LIB_ND_NON_PROXY_OBJS)
# sanitizer changes. add in for adk_go_lib and sdk_lib_python at th end
# -fsanitize=address -fno-omit-frame-pointer -lasan
sdk_lib_python:$(LIB_ND_NON_PROXY_OBJS) 
	cc -shared -o $(LIB_ND_CORE_OBJ_DIR)/${LIB_SO_PYTHON} $(LIB_ND_NON_PROXY_OBJS) 

$(LIB_ND_CORE_OBJ_DIR)/test_main.o: test_main.c 
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/test_main.o test_main.c

#$(LIB_ND_CORE_OBJ_DIR)/nd_sdk_test.o: nd_sdk_test.c 
#	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_sdk_test.o nd_sdk_test.c
#

$(LIB_ND_CORE_OBJ_DIR)/ndlb_thread_handle.o: ndlb_thread_handle.c ndlb_thread_handle.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_thread_handle.o ndlb_thread_handle.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_mt_log.o: ndlb_mt_log.c ndlb_mt_log.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_mt_log.o ndlb_mt_log.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_utiles.o: ndlb_utiles.c ndlb_utiles.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_utiles.o ndlb_utiles.c

$(LIB_ND_CORE_OBJ_DIR)/NDMessageHandling.o: NDMessageHandling.c NDMessageHandling.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMessageHandling.o NDMessageHandling.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_encode.o: ndlb_encode.c ndlb_encode.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_encode.o ndlb_encode.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_decode.o: ndlb_decode.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_decode.o ndlb_decode.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_sock.o: ndlb_sock.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_sock.o ndlb_sock.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_mem_pool.o: ndlb_mem_pool.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_mem_pool.o ndlb_mem_pool.c

$(LIB_ND_CORE_OBJ_DIR)/lws_handler.o: lws_handler.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/lws_handler.o lws_handler.c

$(LIB_ND_CORE_OBJ_DIR)/proxy_lws_handler.o: proxy_lws_handler.c proxy_lws_callbacks.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/proxy_lws_handler.o proxy_lws_handler.c

$(LIB_ND_CORE_OBJ_DIR)/NDSocketManager.o: NDSocketManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDSocketManager.o NDSocketManager.c

$(LIB_ND_CORE_OBJ_DIR)/NDProxySocketManager.o: NDProxySocketManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDProxySocketManager.o NDProxySocketManager.c

$(LIB_ND_CORE_OBJ_DIR)/control_thread.o: control_thread.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/control_thread.o control_thread.c

$(LIB_ND_CORE_OBJ_DIR)/agent_thread.o: agent_thread.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/agent_thread.o agent_thread.c

$(LIB_ND_CORE_OBJ_DIR)/NDSys.o: NDSys.c NDSys.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDSys.o NDSys.c

$(LIB_ND_CORE_OBJ_DIR)/NDEnableResourceUrl.o: NDEnableResourceUrl.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDEnableResourceUrl.o NDEnableResourceUrl.c

$(LIB_ND_CORE_OBJ_DIR)/NDHash.o: NDHash.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDHash.o NDHash.c

$(LIB_ND_CORE_OBJ_DIR)/NDCServerConfig.o: NDCServerConfig.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDCServerConfig.o NDCServerConfig.c

$(LIB_ND_CORE_OBJ_DIR)/rudp.o: proxyServer/rudp.c proxyServer/rudp.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/rudp.o proxyServer/rudp.c

$(LIB_ND_CORE_OBJ_DIR)/nd_proxy_server.o: proxyServer/nd_proxy_server.c proxyServer/nd_proxy_server.h proxyServer/rudp.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_proxy_server.o proxyServer/nd_proxy_server.c  

$(LIB_ND_CORE_OBJ_DIR)/NDBCISettings.o: NDBCISettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBCISettings.o NDBCISettings.c

$(LIB_ND_CORE_OBJ_DIR)/nd_agent.o: nd_agent.c nd_agent.h NdAwsTags.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_agent.o nd_agent.c

$(LIB_ND_CORE_OBJ_DIR)/nd_span.o: nd_span.c nd_span.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_span.o nd_span.c

$(LIB_ND_CORE_OBJ_DIR)/NDManageTierCallOut.o: NDManageTierCallOut.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDManageTierCallOut.o NDManageTierCallOut.c

$(LIB_ND_CORE_OBJ_DIR)/NDFileBasedKeywords.o: NDFileBasedKeywords.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDFileBasedKeywords.o NDFileBasedKeywords.c

$(LIB_ND_CORE_OBJ_DIR)/NDRunTimeChangeHandle.o: NDRunTimeChangeHandle.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDRunTimeChangeHandle.o NDRunTimeChangeHandle.c

$(LIB_ND_CORE_OBJ_DIR)/NDManageTIdToTLocal.o: NDManageTIdToTLocal.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDManageTIdToTLocal.o NDManageTIdToTLocal.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_state_machine.o: ndlb_state_machine.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_state_machine.o ndlb_state_machine.c

$(LIB_ND_CORE_OBJ_DIR)/Server.o: Server.c Server.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/Server.o Server.c

$(LIB_ND_CORE_OBJ_DIR)/NDDataDispatcher.o: NDDataDispatcher.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDDataDispatcher.o NDDataDispatcher.c

$(LIB_ND_CORE_OBJ_DIR)/NIODataDispatcher.o: NIODataDispatcher.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NIODataDispatcher.o NIODataDispatcher.c

$(LIB_ND_CORE_OBJ_DIR)/parson.o: parson.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/parson.o parson.c

#$(LIB_ND_CORE_OBJ_DIR)/NDLogDispatcher.o: NDLogDispatcher.c NDLogDispatcher.h 
#	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDLogDispatcher.o NDLogDispatcher.c

$(LIB_ND_CORE_OBJ_DIR)/NDInterfaceProcessor.o: NDInterfaceProcessor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDInterfaceProcessor.o NDInterfaceProcessor.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_hashMapMethod.o: ndlb_hashMapMethod.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_hashMapMethod.o ndlb_hashMapMethod.c

$(LIB_ND_CORE_OBJ_DIR)/NDMethodManager.o: NDMethodManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMethodManager.o NDMethodManager.c

$(LIB_ND_CORE_OBJ_DIR)/NDASSettings.o: NDASSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDASSettings.o NDASSettings.c

$(LIB_ND_CORE_OBJ_DIR)/ASGraphData.o: ASGraphData.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ASGraphData.o ASGraphData.c

$(LIB_ND_CORE_OBJ_DIR)/NDAutoSensorUsingStackTrace.o: NDAutoSensorUsingStackTrace.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDAutoSensorUsingStackTrace.o NDAutoSensorUsingStackTrace.c

$(LIB_ND_CORE_OBJ_DIR)/NDPerThreadData.o: $(FLOWPATH)/NDPerThreadData.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDPerThreadData.o $(FLOWPATH)/NDPerThreadData.c

$(LIB_ND_CORE_OBJ_DIR)/NDFlowpathGenerator.o: $(FLOWPATH)/NDFlowpathGenerator.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDFlowpathGenerator.o $(FLOWPATH)/NDFlowpathGenerator.c

$(LIB_ND_CORE_OBJ_DIR)/NDMonitorCommon.o: NDMonitorCommon.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMonitorCommon.o NDMonitorCommon.c

$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitor.o: $(BACKEND)/NDBackendMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitor.o $(BACKEND)/NDBackendMonitor.c

$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataModel.o: $(BACKEND)/NDBackendMonitorDataModel.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataModel.o $(BACKEND)/NDBackendMonitorDataModel.c

$(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataCounters.o: $(BACKEND)/NDBackendMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBackendMonitorDataCounters.o $(BACKEND)/NDBackendMonitorDataCounters.c

$(LIB_ND_CORE_OBJ_DIR)/NDBackendManager.o: $(BACKEND)/NDBackendManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBackendManager.o $(BACKEND)/NDBackendManager.c

$(LIB_ND_CORE_OBJ_DIR)/NDThreadMonitor.o: NDThreadMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDThreadMonitor.o NDThreadMonitor.c

$(LIB_ND_CORE_OBJ_DIR)/NDBTMonitor.o: $(BT)/NDBTMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBTMonitor.o $(BT)/NDBTMonitor.c

$(LIB_ND_CORE_OBJ_DIR)/NDMonitorDataModel.o:  $(BT)/NDMonitorDataModel.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMonitorDataModel.o  $(BT)/NDMonitorDataModel.c

$(LIB_ND_CORE_OBJ_DIR)/NDDynamicSettings.o:  $(DYNAMICDIAGNOSTIC)/NDDynamicSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDDynamicSettings.o  $(DYNAMICDIAGNOSTIC)/NDDynamicSettings.c

$(LIB_ND_CORE_OBJ_DIR)/NDBTMonitorDataCounters.o: $(BT)/NDBTMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBTMonitorDataCounters.o $(BT)/NDBTMonitorDataCounters.c 

$(LIB_ND_CORE_OBJ_DIR)/NDBTManager.o: $(BT)/NDBTManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDBTManager.o $(BT)/NDBTManager.c

$(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitor.o: $(MM)/NDMethodMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitor.o $(MM)/NDMethodMonitor.c

$(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitorDataCounters.o: $(MM)/NDMethodMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDMethodMonitorDataCounters.o $(MM)/NDMethodMonitorDataCounters.c 

$(LIB_ND_CORE_OBJ_DIR)/NDException.o: $(EXCEPTION)/NDException.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDException.o $(EXCEPTION)/NDException.c

$(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitor.o: $(EXCEPTION)/NDExceptionMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitor.o $(EXCEPTION)/NDExceptionMonitor.c

$(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitorDataCounters.o: $(EXCEPTION)/NDExceptionMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDExceptionMonitorDataCounters.o $(EXCEPTION)/NDExceptionMonitorDataCounters.c

$(LIB_ND_CORE_OBJ_DIR)/NDExceptionCaptureSettings.o: NDExceptionCaptureSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDExceptionCaptureSettings.o NDExceptionCaptureSettings.c

$(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_execute.o: $(NDBT)/ndbt_rule_execute.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_execute.o $(NDBT)/ndbt_rule_execute.c

$(LIB_ND_CORE_OBJ_DIR)/ndbt_bt_object.o: $(NDBT)/ndbt_bt_object.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndbt_bt_object.o $(NDBT)/ndbt_bt_object.c

$(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_parser.o: $(NDBT)/ndbt_rule_parser.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndbt_rule_parser.o $(NDBT)/ndbt_rule_parser.c

$(LIB_ND_CORE_OBJ_DIR)/ndbt_httpBody_rule_parser.o: $(NDBT)/ndbt_httpBody_rule_parser.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndbt_httpBody_rule_parser.o $(NDBT)/ndbt_httpBody_rule_parser.c

$(LIB_ND_CORE_OBJ_DIR)/NDRespHeaderDataBT.o: $(NDBT)/NDRespHeaderDataBT.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDRespHeaderDataBT.o $(NDBT)/NDRespHeaderDataBT.c

$(LIB_ND_CORE_OBJ_DIR)/NDReqHeaderDataBT.o: $(NDBT)/NDReqHeaderDataBT.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDReqHeaderDataBT.o $(NDBT)/NDReqHeaderDataBT.c

$(LIB_ND_CORE_OBJ_DIR)/nd_method_based_bt.o: $(NDBT)/nd_method_based_bt.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_method_based_bt.o $(NDBT)/nd_method_based_bt.c

$(LIB_ND_CORE_OBJ_DIR)/ndbt_utils.o: $(NDBT)/ndbt_utils.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndbt_utils.o $(NDBT)/ndbt_utils.c

$(LIB_ND_CORE_OBJ_DIR)/NDHttpCapture.o: $(HTTP)/NDHttpCapture.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDHttpCapture.o $(HTTP)/NDHttpCapture.c

$(LIB_ND_CORE_OBJ_DIR)/NDAutoDiscoveryHandler.o: NDAutoDiscoveryHandler.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDAutoDiscoveryHandler.o NDAutoDiscoveryHandler.c

$(LIB_ND_CORE_OBJ_DIR)/NDHttpReqRespCaptureSettings.o: $(HTTP)/NDHttpReqRespCaptureSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDHttpReqRespCaptureSettings.o $(HTTP)/NDHttpReqRespCaptureSettings.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_stack.o: ndlb_stack.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_stack.o ndlb_stack.c

$(LIB_ND_CORE_OBJ_DIR)/NDSQLProcessor.o: NDSQLProcessor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDSQLProcessor.o NDSQLProcessor.c

$(LIB_ND_CORE_OBJ_DIR)/NDParsingFiles.o: NDParsingFiles.c $(COMMON_HEADER) 
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDParsingFiles.o NDParsingFiles.c

$(LIB_ND_CORE_OBJ_DIR)/NDAutoInstrumentation.o: NDAutoInstrumentation.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDAutoInstrumentation.o NDAutoInstrumentation.c

$(LIB_ND_CORE_OBJ_DIR)/NDClientManager.o: $(TOOL)/NDClientManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDClientManager.o $(TOOL)/NDClientManager.c

$(LIB_ND_CORE_OBJ_DIR)/NDHandleUploadDownload.o: $(TOOL)/NDHandleUploadDownload.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDHandleUploadDownload.o $(TOOL)/NDHandleUploadDownload.c

$(LIB_ND_CORE_OBJ_DIR)/nd_bt_custom_rule.o: $(NDBT)/nd_bt_custom_rule.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_bt_custom_rule.o $(NDBT)/nd_bt_custom_rule.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_keyword_lexicon.o: $(NDBT)/ndlb_keyword_lexicon.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_keyword_lexicon.o $(NDBT)/ndlb_keyword_lexicon.c

$(LIB_ND_CORE_OBJ_DIR)/ndlb_queue.o: $(NDBT)/ndlb_queue.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/ndlb_queue.o $(NDBT)/ndlb_queue.c

$(LIB_ND_CORE_OBJ_DIR)/nd_sdk.o: nd_sdk.c nd_sdk.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nd_sdk.o nd_sdk.c

$(LIB_ND_CORE_OBJ_DIR)/tslb_cdigest.o: cdigest/tslb_cdigest.c cdigest/tslb_cdigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/tslb_cdigest.o cdigest/tslb_cdigest.c

$(LIB_ND_CORE_OBJ_DIR)/nslb_t_digest_quantile.o: ../../base/libnscore/nslb_t_digest_quantile.c ../../base/libnscore/nslb_t_digest_quantile.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/nslb_t_digest_quantile.o ../../base/libnscore/nslb_t_digest_quantile.c

$(LIB_ND_CORE_OBJ_DIR)/NDLogDispatcher.o: NDLogDispatcher.c NDLogDispatcher.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDLogDispatcher.o NDLogDispatcher.c

$(LIB_ND_CORE_OBJ_DIR)/tdigest.o: ../../base/libnscore/tdigest/tdigest.c ../../base/libnscore/tdigest/tdigest.h ../../base/libnscore/tdigest/tree.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/tdigest.o ../../base/libnscore/tdigest/tdigest.c

$(LIB_ND_CORE_OBJ_DIR)/NDDigest.o: NDDigest.c NDDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDDigest.o NDDigest.c

$(LIB_ND_CORE_OBJ_DIR)/NDTDigest.o: NDTDigest.c NDTDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDTDigest.o NDTDigest.c

$(LIB_ND_CORE_OBJ_DIR)/NDCDigest.o: NDCDigest.c NDCDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_DIR)/NDCDigest.o NDCDigest.c

$(LIB_ND_CORE_OBJ_DIR)/NdAwsTags.o: NdAwsTags.cpp NdAwsTags.h
	$(CXX) $(CXXFLAGS) -c -o $(LIB_ND_CORE_OBJ_DIR)/NdAwsTags.o NdAwsTags.cpp


$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_thread_handle.o: ndlb_thread_handle.c ndlb_thread_handle.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_thread_handle.o ndlb_thread_handle.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mt_log.o: ndlb_mt_log.c ndlb_mt_log.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mt_log.o ndlb_mt_log.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDLogDispatcher.o: NDLogDispatcher.c NDLogDispatcher.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDLogDispatcher.o NDLogDispatcher.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/tslb_cdigest.o: cdigest/tslb_cdigest.c cdigest/tslb_cdigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/tslb_cdigest.o cdigest/tslb_cdigest.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nslb_t_digest_quantile.o: ../../base/libnscore/nslb_t_digest_quantile.c ../../base/libnscore/nslb_t_digest_quantile.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nslb_t_digest_quantile.o ../../base/libnscore/nslb_t_digest_quantile.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_sdk.o: nd_sdk.c nd_sdk.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_sdk.o nd_sdk.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_queue.o: $(NDBT)/ndlb_queue.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_queue.o $(NDBT)/ndlb_queue.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_keyword_lexicon.o: $(NDBT)/ndlb_keyword_lexicon.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_keyword_lexicon.o $(NDBT)/ndlb_keyword_lexicon.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_bt_custom_rule.o: $(NDBT)/nd_bt_custom_rule.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_bt_custom_rule.o $(NDBT)/nd_bt_custom_rule.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHandleUploadDownload.o: $(TOOL)/NDHandleUploadDownload.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHandleUploadDownload.o $(TOOL)/NDHandleUploadDownload.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDClientManager.o: $(TOOL)/NDClientManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDClientManager.o $(TOOL)/NDClientManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_stack.o: ndlb_stack.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_stack.o ndlb_stack.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSQLProcessor.o: NDSQLProcessor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSQLProcessor.o NDSQLProcessor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDParsingFiles.o: NDParsingFiles.c $(COMMON_HEADER) 
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDParsingFiles.o NDParsingFiles.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoInstrumentation.o: NDAutoInstrumentation.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoInstrumentation.o NDAutoInstrumentation.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpReqRespCaptureSettings.o: $(HTTP)/NDHttpReqRespCaptureSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpReqRespCaptureSettings.o $(HTTP)/NDHttpReqRespCaptureSettings.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoDiscoveryHandler.o: NDAutoDiscoveryHandler.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoDiscoveryHandler.o NDAutoDiscoveryHandler.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpCapture.o: $(HTTP)/NDHttpCapture.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHttpCapture.o $(HTTP)/NDHttpCapture.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRespHeaderDataBT.o: $(NDBT)/NDRespHeaderDataBT.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRespHeaderDataBT.o $(NDBT)/NDRespHeaderDataBT.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDReqHeaderDataBT.o: $(NDBT)/NDReqHeaderDataBT.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDReqHeaderDataBT.o $(NDBT)/NDReqHeaderDataBT.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_method_based_bt.o: $(NDBT)/nd_method_based_bt.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_method_based_bt.o $(NDBT)/nd_method_based_bt.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_utils.o: $(NDBT)/ndbt_utils.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_utils.o $(NDBT)/ndbt_utils.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_httpBody_rule_parser.o: $(NDBT)/ndbt_httpBody_rule_parser.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_httpBody_rule_parser.o $(NDBT)/ndbt_httpBody_rule_parser.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_parser.o: $(NDBT)/ndbt_rule_parser.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_parser.o $(NDBT)/ndbt_rule_parser.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_execute.o: $(NDBT)/ndbt_rule_execute.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_rule_execute.o $(NDBT)/ndbt_rule_execute.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_bt_object.o: $(NDBT)/ndbt_bt_object.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndbt_bt_object.o $(NDBT)/ndbt_bt_object.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDException.o: $(EXCEPTION)/NDException.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDException.o $(EXCEPTION)/NDException.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitor.o: $(EXCEPTION)/NDExceptionMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitor.o $(EXCEPTION)/NDExceptionMonitor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitorDataCounters.o: $(EXCEPTION)/NDExceptionMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionMonitorDataCounters.o $(EXCEPTION)/NDExceptionMonitorDataCounters.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionCaptureSettings.o: NDExceptionCaptureSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDExceptionCaptureSettings.o NDExceptionCaptureSettings.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitorDataCounters.o: $(MM)/NDMethodMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitorDataCounters.o $(MM)/NDMethodMonitorDataCounters.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitor.o: $(MM)/NDMethodMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodMonitor.o $(MM)/NDMethodMonitor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTManager.o: $(BT)/NDBTManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTManager.o $(BT)/NDBTManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitorDataCounters.o: $(BT)/NDBTMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitorDataCounters.o $(BT)/NDBTMonitorDataCounters.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDynamicSettings.o:  $(DYNAMICDIAGNOSTIC)/NDDynamicSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDynamicSettings.o  $(DYNAMICDIAGNOSTIC)/NDDynamicSettings.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorDataModel.o:  $(BT)/NDMonitorDataModel.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorDataModel.o  $(BT)/NDMonitorDataModel.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitor.o: $(BT)/NDBTMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBTMonitor.o $(BT)/NDBTMonitor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDThreadMonitor.o: NDThreadMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDThreadMonitor.o NDThreadMonitor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendManager.o: $(BACKEND)/NDBackendManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendManager.o $(BACKEND)/NDBackendManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataModel.o: $(BACKEND)/NDBackendMonitorDataModel.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataModel.o $(BACKEND)/NDBackendMonitorDataModel.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataCounters.o: $(BACKEND)/NDBackendMonitorDataCounters.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitorDataCounters.o $(BACKEND)/NDBackendMonitorDataCounters.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorCommon.o: NDMonitorCommon.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMonitorCommon.o NDMonitorCommon.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitor.o: $(BACKEND)/NDBackendMonitor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBackendMonitor.o $(BACKEND)/NDBackendMonitor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFlowpathGenerator.o: $(FLOWPATH)/NDFlowpathGenerator.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFlowpathGenerator.o $(FLOWPATH)/NDFlowpathGenerator.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDPerThreadData.o: $(FLOWPATH)/NDPerThreadData.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDPerThreadData.o $(FLOWPATH)/NDPerThreadData.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoSensorUsingStackTrace.o: NDAutoSensorUsingStackTrace.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDAutoSensorUsingStackTrace.o NDAutoSensorUsingStackTrace.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ASGraphData.o: ASGraphData.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ASGraphData.o ASGraphData.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDASSettings.o: NDASSettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDASSettings.o NDASSettings.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodManager.o: NDMethodManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMethodManager.o NDMethodManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/parson.o: parson.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/parson.o parson.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDInterfaceProcessor.o: NDInterfaceProcessor.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDInterfaceProcessor.o NDInterfaceProcessor.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_hashMapMethod.o: ndlb_hashMapMethod.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_hashMapMethod.o ndlb_hashMapMethod.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NIODataDispatcher.o: NIODataDispatcher.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NIODataDispatcher.o NIODataDispatcher.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDataDispatcher.o: NDDataDispatcher.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDataDispatcher.o NDDataDispatcher.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_state_machine.o: ndlb_state_machine.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_state_machine.o ndlb_state_machine.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/Server.o: Server.c Server.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/Server.o Server.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTIdToTLocal.o: NDManageTIdToTLocal.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTIdToTLocal.o NDManageTIdToTLocal.c  -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRunTimeChangeHandle.o: NDRunTimeChangeHandle.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDRunTimeChangeHandle.o NDRunTimeChangeHandle.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFileBasedKeywords.o: NDFileBasedKeywords.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDFileBasedKeywords.o NDFileBasedKeywords.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTierCallOut.o: NDManageTierCallOut.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDManageTierCallOut.o NDManageTierCallOut.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_span.o: nd_span.c nd_span.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_span.o nd_span.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_agent.o: nd_agent.c nd_agent.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_agent.o nd_agent.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBCISettings.o: NDBCISettings.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDBCISettings.o NDBCISettings.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/rudp.o: proxyServer/rudp.c proxyServer/rudp.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/rudp.o proxyServer/rudp.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_proxy_server.o: proxyServer/nd_proxy_server.c proxyServer/nd_proxy_server.h proxyServer/rudp.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/nd_proxy_server.o proxyServer/nd_proxy_server.c  -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCServerConfig.o: NDCServerConfig.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCServerConfig.o NDCServerConfig.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDEnableResourceUrl.o: NDEnableResourceUrl.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDEnableResourceUrl.o NDEnableResourceUrl.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSys.o: NDSys.c NDSys.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSys.o NDSys.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/control_thread.o: control_thread.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/control_thread.o control_thread.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDProxySocketManager.o: NDProxySocketManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDProxySocketManager.o NDProxySocketManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSocketManager.o: NDSocketManager.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDSocketManager.o NDSocketManager.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/proxy_lws_handler.o: proxy_lws_handler.c proxy_lws_callbacks.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/proxy_lws_handler.o proxy_lws_handler.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/lws_handler.o: lws_handler.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/lws_handler.o lws_handler.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mem_pool.o: ndlb_mem_pool.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_mem_pool.o ndlb_mem_pool.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_sock.o: ndlb_sock.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_sock.o ndlb_sock.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_decode.o: ndlb_decode.c  $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_decode.o ndlb_decode.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_encode.o: ndlb_encode.c ndlb_encode.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_encode.o ndlb_encode.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMessageHandling.o: NDMessageHandling.c NDMessageHandling.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDMessageHandling.o NDMessageHandling.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_utiles.o: ndlb_utiles.c ndlb_utiles.h $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/ndlb_utiles.o ndlb_utiles.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/agent_thread.o: agent_thread.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/agent_thread.o agent_thread.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHash.o: NDHash.c $(COMMON_HEADER)
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDHash.o NDHash.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/tdigest.o: ../../base/libnscore/tdigest/tdigest.c ../../base/libnscore/tdigest/tdigest.h ../../base/libnscore/tdigest/tree.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/tdigest.o ../../base/libnscore/tdigest/tdigest.c -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDigest.o: NDDigest.c NDDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDDigest.o NDDigest.c  -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDTDigest.o: NDTDigest.c NDTDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDTDigest.o NDTDigest.c  -D ND_PROXY_CONTROL

$(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCDigest.o: NDCDigest.c NDCDigest.h
	cc $(CFLAG) -c -o $(LIB_ND_CORE_OBJ_PROXY_DIR)/NDCDigest.o NDCDigest.c  -D ND_PROXY_CONTROL

proxy_bin: $(LIB_ND_CORE_OBJ_DIR)/control
$(LIB_ND_CORE_OBJ_DIR)/control: test_main.c
	cc test_main.c -o $(LIB_ND_CORE_OBJ_DIR)/control $(CFLAG) $(LIB_ND_CORE_OBJ_DIR)/${LIB_ARC} -Llwslib/lib/ -lwebsockets -D ND_PROXY_CONTROL
#	cc test_main.c -o $(LIB_ND_CORE_OBJ_DIR)/control $(CFLAG) $(LIB_ND_CORE_OBJ_DIR)/${LIB_ARC} lwslib/lib/libwebsockets.a ssllib/ssl/lib/libssl.a ssllib/ssl/lib/libcrypto.a -D ND_PROXY_CONTROL
	sh versionUpdate
# sanitizer changes. add for proxy before -lwebsockets
# -fsanitize=address -fno-omit-frame-pointer -lasan

sdk_test: $(LIB_ND_CORE_OBJ_DIR)/sdk_test
$(LIB_ND_CORE_OBJ_DIR)/sdk_test: nd_sdk_test.c
	cc nd_sdk_test.c  -o $(LIB_ND_CORE_OBJ_DIR)/sdk_test $(LIB_ND_CORE_OBJ_DIR)/${LIB_SO} -lapr-1
sdk_bin:
	DISTRO = $(shell ../../tools/nsi_get_linux_release_ex -d)
	RELEASE = $(shell ../../tools/nsi_get_linux_release_ex -r)
	ARCH_BITS = $(shell ../../tools/nsi_get_linux_release_ex -b)
	NS_RELEASE = ${DISTRO}${RELEASE}_${ARCH_BITS}
	EXPORT_BUILDS = ../../../export/netdiagnostics/
	EXPORT_BUILDS_MK = $(EXPORT_RPM_BUILDS)/mk
	mkdir -p $(EXPORT_BUILDS)
	mkdir -p $(EXPORT_BUILDS_MK)
	rm -f $(EXPORT_BUILDS)/*.tar.gz
	rm -f $(EXPORT_RPM_BUILDS)/*.bin
	cp ndsdk_install.sh $(EXPORT_BUILDS_MK)/
	cd $(EXPORT_BUILDS)
	tar cvzf cav_ndsdk.$(NS_RELEASE).tar.gz mk
	../../../tools/makeself.sh --current $(EXPORT_RPM_BUILDS_MK) $(EXPORT_RPM_BUILDS)/cav_ndsdk.$(NS_RELEASE).bin ./ndsdk_install.sh
