+AC_ARG_ENABLE(test-python-agent-all,
+ AS_HELP_STRING([--enable-test-python-agent-all],
+ [enable test for all python{2/3} agent.]
+ ),
+)
+
+AS_IF([test ! -z "$enable_test_python_agent_all"], [
+ unset test_python2_agent_autodetect
+ unset test_python3_agent_autodetect
+])
+
+AS_IF([test "x$enable_test_python_agent_all" = "xyes"], [
+ enable_test_python2_agent=yes
+ enable_test_python3_agent=yes
+])
+
+AS_IF([test "x$enable_test_python_agent_all" = "xno"], [
+ enable_test_python2_agent=no
+ enable_test_python3_agent=no
+])
+
+
+AS_IF([test "x$enable_test_python2_agent" = "xyes" -o "x$test_python2_agent_autodetect" = "xyes" ], [
+ AS_IF([test -z "$PYTHON2"], [
+ PYTHON2=python2
+ ], [
+ AC_MSG_WARN([Using user-defined PYTHON2 ($PYTHON2) for lttng-ust python2 agent check])
+ ])
+
+ AC_PATH_PROG([PYTHON2_BIN],[$PYTHON2])
+ AS_IF([test -z "$PYTHON2_BIN"], [
+ AS_IF([test -z "$test_python2_agent_autodetect"],[
+ AC_MSG_ERROR([No python2 interpreter found. PYTHON2 can be set to override default interpreter path])
+ ])
+ ], [
+ AC_MSG_CHECKING([for python2 lttng-ust agent])
+ AS_IF([$PYTHON2_BIN -c "import $UST_PYTHON_AGENT" 2>/dev/null], [
+ PYTHON2_AGENT=$PYTHON2_BIN
+ AC_MSG_RESULT([yes])
+ RUN_PYTHON_AGENT_TEST=yes
+ ], [
+ AC_MSG_RESULT([no])
+ AS_IF([test -z "$test_python2_agent_autodetect"],[
+ AC_MSG_ERROR([No python2 agent found. The path to the agent can be specified by setting the PYTHONPATH environment variable.])
+ ])
+ ])
+
+ ])
+
+])
+
+AS_IF([test "x$enable_test_python3_agent" = "xyes" -o "x$test_python3_agent_autodetect" = "xyes" ], [
+ AS_IF([test -z "$PYTHON3"], [
+ PYTHON3=python3
+ ], [
+ AC_MSG_WARN([Using user-defined PYTHON3 ($PYTHON3) for lttng-ust python3 agent check])
+ ])
+
+ AC_PATH_PROG([PYTHON3_BIN],[$PYTHON3])
+ AS_IF([test -z "$PYTHON3_BIN"], [
+ AS_IF([test -z "$test_python3_agent_autodetect"],[
+ AC_MSG_ERROR([No python3 interpreter found. PYTHON3 can be set to override default interpreter path])
+ ])
+ ], [
+ AC_MSG_CHECKING([for python3 lttng-ust agent])
+ AS_IF([$PYTHON3_BIN -c "import $UST_PYTHON_AGENT" 2>/dev/null], [
+ PYTHON3_AGENT=$PYTHON3_BIN
+ AC_MSG_RESULT([yes])
+ RUN_PYTHON_AGENT_TEST=yes
+ ], [
+ AC_MSG_RESULT([no])
+ AS_IF([test -z "$test_python3_agent_autodetect"],[
+ AC_MSG_ERROR([No python3 agent found. The path to the agent can be specified by setting the PYTHONPATH environment variable.])
+ ])
+ ])
+
+ ])
+])
+AC_SUBST([RUN_PYTHON_AGENT_TEST])
+AC_SUBST([PYTHON2_AGENT])
+AC_SUBST([PYTHON3_AGENT])
+
+AC_ARG_ENABLE([test-sdt-uprobe],
+ [AS_HELP_STRING([--enable-test-sdt-uprobe], [enable the LTTng UST SDT uprobe tests [default=autodetect]])],
+ [test_sdt_uprobe="$enableval"],
+ [test_sdt_uprobe=autodetect]
+)
+
+AS_IF([test "$test_sdt_uprobe" != "no"], [
+ LTTNG_CHECK_SDT_WORKS
+ AC_PATH_PROG([DTRACE], [dtrace])
+])
+
+AS_IF([test "$test_sdt_uprobe" = "yes"], [
+ AS_IF([test "$lttng_cv_sdt_works" = "no"], [
+ AC_MSG_ERROR([Cannot find 'sys/sdt.h'.])
+ ])
+ AS_IF([test "x$DTRACE" = "x"], [
+ AC_MSG_ERROR([Cannot find SystemTap dtrace. You can set the DTRACE variable to override automatic detection.])
+ ])
+])
+
+AS_IF([test "$test_sdt_uprobe" = "autodetect"], [
+ AS_IF([test "$lttng_cv_sdt_works" = "yes"], [
+ AS_IF([test "x$DTRACE" != "x"], [
+ test_sdt_uprobe=yes
+ ])
+ ])
+])
+
+AM_CONDITIONAL([TEST_SDT_UPROBE], [test "$test_sdt_uprobe" = "yes"])
+
+# Arguments for binaries build exclusion
+AC_ARG_ENABLE([bin-lttng], AS_HELP_STRING([--disable-bin-lttng],[Disable the build of lttng binaries]))
+AC_ARG_ENABLE([bin-lttng-consumerd], AS_HELP_STRING([--disable-bin-lttng-consumerd],
+ [Disable the build of lttng-consumerd binaries]))
+AC_ARG_ENABLE([bin-lttng-crash], AS_HELP_STRING([--disable-bin-lttng-crash],[Disable the build of lttng-crash binaries]))
+AC_ARG_ENABLE([bin-lttng-relayd], AS_HELP_STRING([--disable-bin-lttng-relayd],
+ [Disable the build of lttng-relayd binaries]))
+AC_ARG_ENABLE([bin-lttng-sessiond], AS_HELP_STRING([--disable-bin-lttng-sessiond],
+ [Disable the build of lttng-sessiond binaries]))
+AC_ARG_ENABLE([extras], AS_HELP_STRING([--disable-extras],
+ [Disable the build of the extra components]))
+
+
+# Always build libconfig since it a dependency of libcommon
+build_lib_config=yes
+
+build_lib_compat=no
+build_lib_consumer=no
+build_lib_hashtable=no
+build_lib_health=no
+build_lib_index=no
+build_lib_kernel_consumer=no
+build_lib_kernel_ctl=no
+build_lib_lttng_ctl=no
+build_lib_relayd=no
+build_lib_fd_tracker=no
+build_lib_sessiond_comm=no
+build_lib_testpoint=no
+build_lib_ust_consumer=no
+
+# There is an overlap for enabled dependencies, but this makes everything
+# simpler. libcommon and libconfig are always compiled so they are not repeated
+# here.
+
+# Enable binary dependencies.
+AS_IF([test x$enable_bin_lttng != xno],
+ [
+ build_lib_lttng_ctl=yes
+ ]
+)
+
+AS_IF([test x$enable_bin_lttng_consumerd != xno],
+ [
+ build_lib_consumer=yes
+ build_lib_sessiond_comm=yes
+ build_lib_index=yes
+ build_lib_health=yes
+ build_lib_testpoint=yes
+ ]
+)
+
+AS_IF([test x$enable_bin_lttng_crash != xno],
+ # Do nothing since libconfig and libcommon are built by default.
+ []
+)
+
+AS_IF([test x$enable_bin_lttng_relayd != xno],
+ [
+ build_lib_lttng_ctl=yes
+ build_lib_sessiond_comm=yes
+ build_lib_hashtable=yes
+ build_lib_compat=yes
+ build_lib_index=yes
+ build_lib_health=yes
+ build_lib_testpoint=yes
+ build_lib_fd_tracker=yes
+ ]
+)
+AS_IF([test x$enable_bin_lttng_sessiond != xno],
+ [
+ build_lib_lttng_ctl=yes
+ build_lib_sessiond_comm=yes
+ build_lib_kernel_ctl=yes
+ build_lib_hashtable=yes
+ build_lib_compat=yes
+ build_lib_relayd=yes
+ build_lib_testpoint=yes
+ build_lib_health=yes
+ ]
+)
+
+# Libraries dependencies enabling
+AS_IF([test x$build_lib_lttng_ctl = xyes],
+ [
+ build_lib_sessiond_comm=yes
+ build_lib_hashtable=yes
+ ]
+)
+
+AS_IF([test x$build_lib_consumer = xyes],
+ [
+ build_lib_sessiond_comm=yes
+ build_lib_kernel_consumer=yes
+ build_lib_hashtable=yes
+ build_lib_compat=yes
+ build_lib_relayd=yes
+ AS_IF([test "x$with_lttng_ust" = "xyes"], [build_lib_ust_consumer=yes])
+ ]
+)
+
+AS_IF([test x$build_lib_kernel_consumer = xyes],
+ [
+ build_lib_kernel_ctl=yes
+ build_lib_relayd=yes
+ ]
+)
+
+AS_IF([test x$build_lib_relayd = xyes],
+ [
+ build_lib_sessiond_comm=yes
+ ]
+)
+
+# Find arch type
+AS_CASE([$host_cpu],
+ [k1om], [ARCHTYPE="x86"],
+ [i386], [ARCHTYPE="x86"],
+ [i486], [ARCHTYPE="x86"],
+ [i586], [ARCHTYPE="x86"],
+ [i686], [ARCHTYPE="x86"],
+ [amd64], [ARCHTYPE="x86"],
+ [x86_64], [ARCHTYPE="x86"],
+ [powerpc], [ARCHTYPE="ppc"],
+ [ppc64], [ARCHTYPE="ppc"],
+ [powerpc64], [ARCHTYPE="ppc"],
+ [powerpc64le], [ARCHTYPE="ppc"],
+ [ppc], [ARCHTYPE="ppc"],
+ [s390], [ARCHTYPE="s390"],
+ [s390x], [ARCHTYPE="s390"],
+ [sparc], [ARCHTYPE="sparc64"],
+ [sparc64], [ARCHTYPE="sparc64"],
+ [alpha*], [ARCHTYPE="alpha"],
+ [ia64], [ARCHTYPE="ia64"],
+ [arm*], [ARCHTYPE="arm"],
+ [aarch64*], [ARCHTYPE="aarch64"],
+ [mips*], [ARCHTYPE="mips"],
+ [nios2*], [ARCHTYPE="nios2"],
+ [tile*], [ARCHTYPE="tile"],
+ [hppa*], [ARCHTYPE="hppa"],
+ [m68k], [ARCHTYPE="m68k"],
+ [riscv*], [ARCHTYPE="riscv"],
+ [ARCHTYPE="unknown"]
+)
+
+AC_SUBST(ARCHTYPE)
+
+AS_CASE([$host_os],
+ [linux*], [OSTYPE="linux"],
+ [freebsd*], [OSTYPE="freebsd"],
+ [solaris*], [OSTYPE="solaris"],
+ [cygwin*], [OSTYPE="cygwin"],
+ [mingw*], [OSTYPE="mingw"],
+ [OSTYPE="unknown"]
+)
+AC_SUBST(OSTYPE)
+AM_CONDITIONAL([IS_LINUX], [test $OSTYPE = "linux"])