# proxy Makefile.am
#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

include $(top_srcdir)/build/tidy.mk

include private/Makefile.inc

SUBDIRS = hdrs shared http http2 logging
if ENABLE_QUIC
SUBDIRS += http3
endif

noinst_LIBRARIES = libproxy.a

AM_CPPFLAGS += \
	$(iocore_include_dirs) \
	-I$(abs_top_srcdir)/include \
	-I$(abs_top_srcdir)/lib \
	-I$(abs_srcdir)/http \
	-I$(abs_srcdir)/http2 \
	-I$(abs_srcdir)/http3 \
	-I$(abs_srcdir)/logging \
	-I$(abs_srcdir)/http/remap \
	-I$(abs_srcdir)/hdrs \
	-I$(abs_top_srcdir)/mgmt \
	-I$(abs_top_srcdir)/mgmt/utils \
	@YAMLCPP_INCLUDES@ \
	$(TS_INCLUDES)

noinst_HEADERS = \
	Show.h

libproxy_a_SOURCES = \
	$(PRIVATE_SOURCES_) \
	CacheControl.cc \
	CacheControl.h \
	ControlBase.cc \
	ControlBase.h \
	ControlMatcher.cc \
	ControlMatcher.h \
	IPAllow.cc \
	IPAllow.h \
	ParentConsistentHash.cc \
	ParentConsistentHash.h \
	ParentRoundRobin.cc \
	ParentRoundRobin.h \
	ParentSelectionStrategy.cc \
	ParentSelection.cc \
	ParentSelection.h \
	Plugin.cc \
	Plugin.h \
	PluginVC.cc \
	PluginVC.h \
	ProtocolProbeSessionAccept.cc \
	ProtocolProbeSessionAccept.h \
	ProxySession.cc \
	ProxySession.h \
	PoolableSession.h \
	ProxyTransaction.cc \
	ProxyTransaction.h \
	ReverseProxy.cc \
	ReverseProxy.h \
	StatPages.cc \
	StatPages.h \
	Transform.cc \
	Transform.h

if BUILD_TESTS
libproxy_a_SOURCES += \
	RegressionSM.h \
	RegressionSM.cc
endif


# These are currently built separate, as part of building the lib/ tree, using
# the normal LuaJIT build system. We are using the .o's directly, instead of the
# luajit.a to avoid the linker from optimizing symbols away. We could maybe
# switch to using the luajit.so, but that involves making sure it installs safely
# and cleanly.
LUAJIT = \
	lib_aux.o \
	lib_base.o \
	lib_bit.o \
	lib_debug.o \
	lib_ffi.o \
	lib_init.o \
	lib_io.o \
	lib_jit.o \
	lib_math.o \
	lib_os.o \
	lib_package.o \
	lib_string.o \
	lib_table.o \
	lj_alloc.o \
	lj_api.o \
	lj_asm.o \
	lj_bc.o \
	lj_bcread.o \
	lj_bcwrite.o \
	lj_carith.o \
	lj_ccall.o \
	lj_ccallback.o \
	lj_cconv.o \
	lj_cdata.o \
	lj_char.o \
	lj_clib.o \
	lj_cparse.o \
	lj_crecord.o \
	lj_ctype.o \
	lj_debug.o \
	lj_dispatch.o \
	lj_err.o \
	lj_ffrecord.o \
	lj_func.o \
	lj_gc.o \
	lj_gdbjit.o \
	lj_ir.o \
	lj_lex.o \
	lj_lib.o \
	lj_load.o \
	lj_mcode.o \
	lj_meta.o \
	lj_obj.o \
	lj_opt_dce.o \
	lj_opt_fold.o \
	lj_opt_loop.o \
	lj_opt_mem.o \
	lj_opt_narrow.o \
	lj_opt_sink.o \
	lj_opt_split.o \
	lj_parse.o \
	lj_record.o \
	lj_snap.o \
	lj_state.o \
	lj_str.o \
	lj_strscan.o \
	lj_tab.o \
	lj_trace.o \
	lj_udata.o \
	lj_vm.o \
	lj_vmevent.o \
	lj_vmmath.o

EXTRA_DIST = example_alarm_bin.sh example_prep.sh

install-data-local:
	if [ `id -un` != "root" ]; then \
		$(INSTALL) -d $(DESTDIR)$(pkglocalstatedir) $(DESTDIR)$(pkglogdir) $(DESTDIR)$(pkgruntimedir) \
				$(DESTDIR)$(pkgsysconfdir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(pkgcachedir); \
	else \
		 $(INSTALL) -d $(DESTDIR)$(pkglocalstatedir); \
		 $(INSTALL) -d -o $(pkgsysuser) -g $(pkgsysgroup) $(DESTDIR)$(pkglogdir) \
				$(DESTDIR)$(pkgruntimedir) $(DESTDIR)$(pkgsysconfdir) \
				$(DESTDIR)$(pkgdatadir) $(DESTDIR)$(pkgcachedir); \
	fi

install-data-hook:
	if [ `id -un` == "root" ]; then \
		chown -R $(pkgsysuser):$(pkgsysgroup) $(DESTDIR)$(pkgsysconfdir) $(DESTDIR)$(pkgdatadir);\
	fi
	-echo "<TS_VERSION> $(PACKAGE_VERSION)" > $(DESTDIR)$(pkgsysconfdir)/trafficserver-release

clang-tidy-local: $(DIST_SOURCES)
	$(CXX_Clang_Tidy)
