dnl dnl This is an autoconf script. dnl To rebuild the `configure' script from this, use the bootstrap dnl script in the directory containing this script. dnl You must have autoconf version 2.53 or later. dnl dnl dnl Configuration and build system for PBS written dnl by Lonhyn T. Jasinskyj (lonhyn@nas.nasa.gov) dnl dnl (credit for the inspiration for some of this is due to the work of dnl Martin Buchholz who autoconf'ed XEmacs) dnl dnl Partly rewritten and ported to Autoconf-2.53 and Automake dnl by Karsten Petersen (kapet@hrz.tu-chemnitz.de) dnl dnl Expanded to support 'make distcheck', shared libs, dnl bi-arches, pbs-config script, and updated to TORQUE 2.x dnl by Garrick Staples (garrick@usc.edu) dnl dnl Added --enable-libcpuset to use the cpuset API from libcpuset when --enable-cpuset dnl Added --enable-memacct to enable pbs_mom to get rss values that are more reliable dnl Added requirement for libhwloc when --enable-cpuset or --enable-numa-support dnl Bernd Kallies (kallies@zib.de) dnl dnl Added --enable-cgroups. If cgroups are enabled cpusets will be disabled. dnl Ken Nielson (knielson@adaptivecomputing.com) dnl dnl Expanded to allow unit testing via Check dnl Updated to use m4 dnl added library functionality to testing dnl by John Rosenquist (jrosenquist@adaptivecomputing.com) AC_PREREQ(2.53) AC_INIT([torque], [6.1.3], [torqueusers@supercluster.org]) AC_REVISION($Revision$) AC_CONFIG_SRCDIR([src/cmds/qrun.c]) AC_CONFIG_AUX_DIR([buildutils]) AC_CANONICAL_HOST AC_CONFIG_MACRO_DIR([buildutils]) AC_PROG_CXX m4_ifdef([AM_PROG_AR], [ AM_PROG_AR ]) LT_INIT LT_LANG([C++]) AC_SUBST([LIBTOOL_DEPS]) AC_CHECK_PROGS(MAKE,$MAKE make gmake,error) if test "x$MAKE" = "xerror" ;then AC_MSG_ERROR([cannot find a make command]) fi m4_ifdef([HAVE_CHECK], [AM_INIT_AUTOMAKE([-Wall -Werror -Wno-unsupported foreign 1.9.6 color-tests])], [AM_INIT_AUTOMAKE([-Wall -Werror -Wno-unsupported foreign 1.9.6])]) AM_PROG_CC_C_O CC="$CXX" CCLD="$CXX" AC_SUBST([CCLD]) LIBTOOLFLAGS="--tag=CXX" AC_SUBST([LIBTOOLFLAGS]) AM_MAINTAINER_MODE if test "$program_prefix" = "NONE";then program_prefix="" fi if test "$program_suffix" = "NONE";then program_suffix="" fi AC_SUBST(program_prefix) AC_SUBST(program_suffix) m4_pattern_allow([RPM_AC_OPTS]) RPM_AC_OPTS="" gccwarnings=yes dnl Instead of putting a long list of defines on the command line dnl for each compile, use a file called "pbs_config.h" that will dnl be created in the include directory. AM_CONFIG_HEADER([src/include/pbs_config.h]) dnl dnl Find our git revision hash for program outputs dnl git_installed=`which git` success=$? if test "X$success" == "X0" ; then githash="`git rev-parse HEAD`" success=$? fi if test "X$success" == "X0" ; then success=`echo $githash > current_hash` AC_DEFINE_UNQUOTED(GIT_HASH, ["$githash"], [repository git version]) else dnl current hash is a file checked in to the git repo in the base directory dnl containing the most recent hash AC_DEFINE_UNQUOTED(GIT_HASH, ["`cat current_hash`"], [repository git version]) fi PKG_PROG_PKG_CONFIG dnl dnl ###################################################################### dnl figure out what PBS "machine type" we are on dnl AC_CACHE_CHECK([PBS machine type], pbs_cv_type_mach, [pbs_cv_type_mach=`$ac_aux_dir/pbs_mach_type`]) PBS_MACH=$pbs_cv_type_mach if test "x$PBS_MACH" = "xunknown"; then AC_MSG_WARN([MOM Machine type "$host_os" is not supported.]) AC_DEFINE(UNSUPPORTED_MACH,1,[Define if building on unsupported OS]) fi AC_SUBST(PBS_MACH) AC_DEFINE_UNQUOTED(PBS_MACH, "${PBS_MACH}", [the PBS style machine type name]) # this defines the name of a .c file which is then included in # another resc_def_all.c AC_DEFINE_UNQUOTED(MACH_RESC_DEFS, "resc_def_${PBS_MACH}.c", [the machine specific resc_def_* file name]) dnl dnl ########################################################################## dnl Do not install load library path in /etc/ld.so.conf.d AC_ARG_WITH(loadlibfile, [AS_HELP_STRING([--with-loadlibfile], [ (Enable automatic install of libtorqueue.conf entry to ld.so.conf.d (default=no)])], [have_loadlibfile=yes], [have_loadlibfile=no]) AC_SUBST(have_loadlibfile) dnl dnl ###################################################################### dnl add unit testing if check is installed AC_ARG_WITH(check, [AS_HELP_STRING([--with-check], [Enable unit testing (check package default=no)])], [have_check=yes], [have_check=no]) AS_IF([test x"$have_check" = "xyes"], [ PKG_CHECK_MODULES([CHECK], [check >= 0.9.4], [check_installed="yes"], [check_installed="no"]) AS_IF([test x"$check_installed" = "xno"], [ AC_MSG_ERROR([Check not found; cannot run unit tests!!]) ]) ]) AM_CONDITIONAL(HAVE_CHECK, test x"$have_check" = "xyes") m4_ifdef([AM_SILENT_RULES],[ if test "x$have_check" = "xyes"; then AM_SILENT_RULES(no) AC_CONFIG_FILES(src/test/scaffold_fail/Makefile src/test/torque_test_lib/Makefile src/test/accounting/Makefile src/test/acl_special/Makefile src/test/array_func/Makefile src/test/array_upgrade/Makefile src/test/attr_recov/Makefile src/test/batch_request/Makefile src/test/completed_jobs_map/Makefile src/test/delete_all_tracker/Makefile src/test/dis_read/Makefile src/test/display_alps_status/Makefile src/test/execution_slot_tracker/Makefile src/test/exiting_jobs/Makefile src/test/geteusernam/Makefile src/test/get_path_jobdata/Makefile src/test/id_map/Makefile src/test/incoming_request/Makefile src/test/issue_request/Makefile src/test/job_attr_def/Makefile src/test/job/Makefile src/test/job_array/Makefile src/test/job_container/Makefile src/test/job_func/Makefile src/test/job_qs_upgrade/Makefile src/test/job_recov/Makefile src/test/job_recycler/Makefile src/test/job_route/Makefile src/test/job_usage_info/Makefile src/test/login_nodes/Makefile src/test/mom_hierarchy_handler/Makefile src/test/mail_throttler/Makefile src/test/node_func/Makefile src/test/node_manager/Makefile src/test/pbsnode/Makefile src/test/pbsd_init/Makefile src/test/pbsd_main/Makefile src/test/process_alps_status/Makefile src/test/process_mom_update/Makefile src/test/process_request/Makefile src/test/queue_func/Makefile src/test/queue_recov/Makefile src/test/queue_recycler/Makefile src/test/reply_send/Makefile src/test/receive_mom_communication/Makefile src/test/req_delete/Makefile src/test/req_deletearray/Makefile src/test/req_getcred/Makefile src/test/req_gpuctrl/Makefile src/test/req_holdarray/Makefile src/test/req_holdjob/Makefile src/test/req_jobobit/Makefile src/test/req_locate/Makefile src/test/req_manager/Makefile src/test/req_message/Makefile src/test/req_modify/Makefile src/test/req_movejob/Makefile src/test/req_quejob/Makefile src/test/req_register/Makefile src/test/req_rerun/Makefile src/test/req_rescq/Makefile src/test/req_runjob/Makefile src/test/req_select/Makefile src/test/req_shutdown/Makefile src/test/req_signal/Makefile src/test/req_stat/Makefile src/test/req_tokens/Makefile src/test/req_track/Makefile src/test/resc_def_all/Makefile src/test/restricted_host/Makefile src/test/run_sched/Makefile src/test/stat_job/Makefile src/test/svr_chk_owner/Makefile src/test/svr_connect/Makefile src/test/svr_format_job/Makefile src/test/svr_func/Makefile src/test/svr_jobfunc/Makefile src/test/svr_mail/Makefile src/test/svr_movejob/Makefile src/test/svr_recov/Makefile src/test/svr_resccost/Makefile src/test/svr_task/Makefile src/test/track_alps_reservations/Makefile src/test/user_info/Makefile src/test/req/Makefile src/test/complete_req/Makefile src/test/attr_fn_complete_req/Makefile src/test/attr_atomic/Makefile src/test/attr_fn_acl/Makefile src/test/attr_fn_arst/Makefile src/test/attr_fn_b/Makefile src/test/attr_fn_c/Makefile src/test/attr_fn_freq/Makefile src/test/attr_fn_hold/Makefile src/test/attr_fn_intr/Makefile src/test/attr_fn_l/Makefile src/test/attr_fn_ll/Makefile src/test/attr_fn_nppcu/Makefile src/test/attr_fn_resc/Makefile src/test/attr_fn_size/Makefile src/test/attr_fn_str/Makefile src/test/attr_fn_time/Makefile src/test/attr_fn_tokens/Makefile src/test/attr_fn_tv/Makefile src/test/attr_fn_unkn/Makefile src/test/attr_func/Makefile src/test/attr_node_func/Makefile src/test/attr_str_conversion/Makefile src/test/add_verify_resources/Makefile src/test/ck_job_name/Makefile src/test/cnt2server/Makefile src/test/cvtdate/Makefile src/test/get_server/Makefile src/test/locate_job/Makefile src/test/parse_at/Makefile src/test/parse_depend/Makefile src/test/parse_destid/Makefile src/test/parse_equal/Makefile src/test/parse_jobid/Makefile src/test/parse_stage/Makefile src/test/prepare_path/Makefile src/test/prt_job_err/Makefile src/test/set_attr/Makefile src/test/set_resource/Makefile src/test/csv/Makefile src/test/discui_/Makefile src/test/discul_/Makefile src/test/disi10d_/Makefile src/test/disi10l_/Makefile src/test/disiui_/Makefile src/test/disp10d_/Makefile src/test/disp10l_/Makefile src/test/disrcs/Makefile src/test/disrd/Makefile src/test/disrf/Makefile src/test/disrfcs/Makefile src/test/disrfst/Makefile src/test/disrl/Makefile src/test/disrl_/Makefile src/test/disrsc/Makefile src/test/disrsi/Makefile src/test/disrsi_/Makefile src/test/disrsl/Makefile src/test/disrsl_/Makefile src/test/disrss/Makefile src/test/disrst/Makefile src/test/disruc/Makefile src/test/disrui/Makefile src/test/disrul/Makefile src/test/disrus/Makefile src/test/diswcs/Makefile src/test/diswf/Makefile src/test/diswl_/Makefile src/test/diswsi/Makefile src/test/diswsl/Makefile src/test/diswui/Makefile src/test/diswui_/Makefile src/test/diswul/Makefile src/test/PBSD_gpuctrl2/Makefile src/test/PBSD_manage2/Makefile src/test/PBSD_manager_caps/Makefile src/test/PBSD_msg2/Makefile src/test/PBSD_rdrpy/Makefile src/test/PBSD_sig2/Makefile src/test/PBSD_status/Makefile src/test/PBSD_status2/Makefile src/test/PBSD_submit_caps/Makefile src/test/PBS_attr/Makefile src/test/dec_Authen/Makefile src/test/dec_CpyFil/Makefile src/test/dec_Gpu/Makefile src/test/dec_JobCred/Makefile src/test/dec_JobFile/Makefile src/test/dec_JobId/Makefile src/test/dec_JobObit/Makefile src/test/dec_Manage/Makefile src/test/dec_MoveJob/Makefile src/test/dec_MsgJob/Makefile src/test/dec_QueueJob/Makefile src/test/dec_Reg/Makefile src/test/dec_ReqExt/Makefile src/test/dec_ReqHdr/Makefile src/test/dec_Resc/Makefile src/test/dec_ReturnFile/Makefile src/test/dec_RunJob/Makefile src/test/dec_Shut/Makefile src/test/dec_Sig/Makefile src/test/dec_Status/Makefile src/test/dec_Track/Makefile src/test/dec_attrl/Makefile src/test/dec_attropl/Makefile src/test/dec_rpyc/Makefile src/test/dec_rpys/Makefile src/test/dec_svrattrl/Makefile src/test/enc_CpyFil/Makefile src/test/enc_Gpu/Makefile src/test/enc_JobCred/Makefile src/test/enc_JobFile/Makefile src/test/enc_JobId/Makefile src/test/enc_JobObit/Makefile src/test/enc_Manage/Makefile src/test/enc_MoveJob/Makefile src/test/enc_MsgJob/Makefile src/test/enc_QueueJob/Makefile src/test/enc_QueueJob_hash/Makefile src/test/enc_Reg/Makefile src/test/enc_ReqExt/Makefile src/test/enc_ReqHdr/Makefile src/test/enc_ReturnFile/Makefile src/test/enc_RunJob/Makefile src/test/enc_Shut/Makefile src/test/enc_Sig/Makefile src/test/enc_Status/Makefile src/test/enc_Track/Makefile src/test/enc_attrl/Makefile src/test/enc_attropl/Makefile src/test/enc_attropl_hash/Makefile src/test/enc_reply/Makefile src/test/enc_svrattrl/Makefile src/test/get_svrport/Makefile src/test/list_link/Makefile src/test/nonblock/Makefile src/test/pbsD_alterjo/Makefile src/test/pbsD_asyrun/Makefile src/test/pbsD_chkptjob/Makefile src/test/pbsD_connect/Makefile src/test/pbsD_deljob/Makefile src/test/pbsD_gpuctrl/Makefile src/test/pbsD_holdjob/Makefile src/test/pbsD_locjob/Makefile src/test/pbsD_manager/Makefile src/test/pbsD_movejob/Makefile src/test/pbsD_msgjob/Makefile src/test/pbsD_orderjo/Makefile src/test/pbsD_rerunjo/Makefile src/test/pbsD_resc/Makefile src/test/pbsD_rlsjob/Makefile src/test/pbsD_runjob/Makefile src/test/pbsD_selectj/Makefile src/test/pbsD_sigjob/Makefile src/test/pbsD_stagein/Makefile src/test/pbsD_statjob/Makefile src/test/pbsD_statnode/Makefile src/test/pbsD_statque/Makefile src/test/pbsD_statsrv/Makefile src/test/pbsD_submit/Makefile src/test/pbsD_submit_hash/Makefile src/test/pbsD_termin/Makefile src/test/pbs_geterrmg/Makefile src/test/pbs_statfree/Makefile src/test/tcp_dis/Makefile src/test/tm/Makefile src/test/torquecfg/Makefile src/test/trq_auth/Makefile src/test/trq_auth_daemon/Makefile src/test/chk_file_sec/Makefile src/test/log_event/Makefile src/test/pbs_log/Makefile src/test/pbs_messages/Makefile src/test/setup_env/Makefile src/test/conn_table/Makefile src/test/get_hostaddr/Makefile src/test/get_hostname/Makefile src/test/md5/Makefile src/test/net_client/Makefile src/test/net_common/Makefile src/test/net_server/Makefile src/test/net_cache/Makefile src/test/net_set_clse/Makefile src/test/port_forwarding/Makefile src/test/rm/Makefile src/test/server_core/Makefile src/test/site_allow_u/Makefile src/test/site_alt_rte/Makefile src/test/site_check_u/Makefile src/test/site_map_usr/Makefile src/test/site_mom_chu/Makefile src/test/site_mom_ckp/Makefile src/test/site_mom_jst/Makefile src/test/authorized_hosts/Makefile src/test/u_MXML/Makefile src/test/u_groups/Makefile src/test/u_hash_map_structs/Makefile src/test/u_lock_ctl/Makefile src/test/u_misc/Makefile src/test/u_mom_hierarchy/Makefile src/test/u_mu/Makefile src/test/u_mutex_mgr/Makefile src/test/u_putenv/Makefile src/test/u_threadpool/Makefile src/test/u_tree/Makefile src/test/u_users/Makefile src/test/u_xml/Makefile src/test/MXML/Makefile src/test/common_cmds/Makefile src/test/pbs_track/Makefile src/test/pbsdsh/Makefile src/test/pbsnodes/Makefile src/test/pbspd/Makefile src/test/pbspoe/Makefile src/test/qalter/Makefile src/test/qchkpt/Makefile src/test/qdel/Makefile src/test/qdisable/Makefile src/test/qenable/Makefile src/test/qgpumode/Makefile src/test/qgpureset/Makefile src/test/qhold/Makefile src/test/qmgr/Makefile src/test/qmove/Makefile src/test/qmsg/Makefile src/test/qorder/Makefile src/test/qrerun/Makefile src/test/qrls/Makefile src/test/qrun/Makefile src/test/qselect/Makefile src/test/qsig/Makefile src/test/qstart/Makefile src/test/qstat/Makefile src/test/qstop/Makefile src/test/qsub_functions/Makefile src/test/qterm/Makefile src/test/momctl/Makefile src/drmaa/test/Makefile src/test/allocation/Makefile src/test/machine/Makefile src/test/numa_core/Makefile src/test/numa_chip/Makefile src/test/numa_socket/Makefile src/test/numa_pci_device/Makefile src/test/pam_pbssimpleauth/Makefile src/test/alps_reservations/Makefile src/test/catch_child/Makefile src/test/checkpoint/Makefile src/test/cray_cpa/Makefile src/test/cray_energy/Makefile src/test/cray_taskstats/Makefile src/test/generate_alps_status/Makefile src/test/mom_job_func/Makefile src/test/mom_comm/Makefile src/test/mom_inter/Makefile src/test/mom_main/Makefile src/test/mom_server/Makefile src/test/mom_process_request/Makefile src/test/mom_req_quejob/Makefile src/test/nvidia/Makefile src/test/parse_config/Makefile src/test/pbs_demux/Makefile src/test/pmix_interface/Makefile src/test/pmix_operation/Makefile src/test/pmix_tracker/Makefile src/test/prolog/Makefile src/test/release_reservation/Makefile src/test/requests/Makefile src/test/start_exec/Makefile src/test/tmsock_recov/Makefile src/test/mom_mach/Makefile src/test/mom_start/Makefile src/test/trq_cgroups/Makefile src/resmom/linux/test/Makefile src/resmom/linux/test/cpuset/Makefile src/resmom/linux/test/sys_file/Makefile src/resmom/linux/test/numa_node/Makefile src/resmom/linux/test/node_internals/Makefile src/test/pe_input/Makefile src/test/Makefile src/tools/test/Makefile src/tools/test/chk_tree/Makefile src/tools/test/hostn/Makefile src/tools/test/pbsTclInit/Makefile src/tools/test/pbsTkInit/Makefile src/tools/test/printjob/Makefile src/tools/test/printserverdb/Makefile src/tools/test/printtracking/Makefile src/tools/test/tracejob/Makefile) else AM_SILENT_RULES(no) fi ]) if test "x$have_check" = "xyes"; then AC_DEFINE(UNIT_TEST, 1, [turns on unit test conditionals in code]) fi dnl dnl ###################################################################### dnl Autorun mode? dnl AC_MSG_CHECKING([whether to turn on the AUTORUN_JOBS flag]) AC_ARG_ENABLE(autorun, [ --enable-autorun turn on the AUTORUN_JOBS flag], enable_autorun=$enableval, enable_autorun=no) AC_MSG_RESULT($enable_autorun) if test "x$enable_autorun" = "xyes" ; then AC_DEFINE(AUTORUN_JOBS, 1, [turns on the compilation of AUTORUN_JOBS code]) fi dnl dnl ###################################################################### dnl Resource max not default mode? dnl dnl NOTE: due to confusion we are changing MAX to not be default by default dnl AC_MSG_CHECKING([whether to turn on the RESOURCEMAXDEFAULT flag]) AC_ARG_ENABLE(maxdefault, [ --enable-maxdefault turn on the RESOURCEMAXDEFAULT flag], enable_maxdefault=$enableval, enable_maxdefault=no) AC_MSG_RESULT($enable_maxdefault) if test "x$enable_maxdefault" = "xyes" ; then AC_DEFINE(RESOURCEMAXDEFAULT, 1, [turns on the compilation of RESOURCEMAXDEFAULT code]) fi dnl dnl ###################################################################### dnl Quick commit mode? dnl AC_MSG_CHECKING([whether to turn on the QUICKCOMMIT flag]) AC_ARG_ENABLE(quickcommit, [ --enable-quickcommit turn on the QUICKCOMMIT flag], enable_quickcommit=$enableval, enable_quickcommit=no) AC_MSG_RESULT($enable_quickcommit) if test "x$enable_quickcommit" = "xyes" ; then AC_DEFINE(QUICKCOMMIT, 1, [turns on the compilation of QUICKCOMMIT code]) fi dnl dnl ###################################################################### dnl Disable qsub keep(-k) override? dnl AC_ARG_ENABLE(qsub-keep-override, [ --disable-qsub-keep-override do not allow the qsub -k flag to override -o -e.], [case "${enableval}" in yes) ;; no) QSUB_KEEP_NO_OVERRIDE=1; AC_DEFINE(QSUB_KEEP_NO_OVERRIDE, 1, [turns on the QSUB_KEEP_NO_OVERRIDE flag]) ;; *) AC_MSG_ERROR(--enable-qsub-keep-override cannot take a value) ;; esac])dnl dnl dnl ###################################################################### dnl Let the user choose, what parts of PBS he wants to compile and install dnl partdefault=yes if test "x$PBS_MACH" = "xunknown"; then partdefault=no fi AC_MSG_CHECKING([whether to include server and scheduler]) AC_ARG_ENABLE(server, [ --disable-server do not include server and scheduler], build_server=$enableval, build_server=$partdefault) AC_MSG_RESULT($build_server) AM_CONDITIONAL(INCLUDE_SERVER, [test "x$build_server" = "xyes"]) AC_SUBST(build_server) AC_MSG_CHECKING([whether to include the mom daemon]) AC_ARG_ENABLE(mom, [ --disable-mom do not include the mom daemon], build_mom=$enableval, build_mom=$partdefault) AC_MSG_RESULT($build_mom) AM_CONDITIONAL(INCLUDE_MOM, [test "x$build_mom" = "xyes"]) AC_SUBST(build_mom) AC_MSG_CHECKING([whether to include the clients]) AC_ARG_ENABLE(clients, [ --disable-clients do not include the clients], build_clients=$enableval, build_clients=yes) AC_MSG_RESULT($build_clients) AM_CONDITIONAL(INCLUDE_CLIENTS, [test "x$build_clients" = "xyes"]) AC_SUBST(build_clients) AC_MSG_CHECKING([whether to build DRMAA lib]) AC_ARG_ENABLE(drmaa, [ --enable-drmaa build the DRMAA 1.0 library (default is off)], build_drmaa=$enableval, build_drmaa=no) AC_MSG_RESULT($build_drmaa) AM_CONDITIONAL(INCLUDE_DRMAA, [test "x$build_drmaa" = "xyes"]) AC_SUBST(build_drmaa) dnl dnl ####################################################################### dnl Starting in version 5.1.3 we are not using the gperf tool to create the dnl drmaa source files. However, we want to keep the information around in dnl case we ever need to update the perfect hash for drmaa version 2 or later. dnl dnl if test "x$build_drmaa" = "xyes";then dnl AC_PATH_PROG(GPERF, gperf) dnl if test -z "$GPERF";then dnl AC_MSG_ERROR([When building with drmaa, gperf must be installed. Please install gperf and then continue.]) dnl fi dnl fi dnl dnl ###################################################################### dnl Check for the C compiler (some tests rely on it) dnl this needs to be before AC_ARG_ENABLE(debug) dnl dnl did the user provide CC and CFLAGS variables? store for later dnl user_choosed_cc_set=${CC+set} dnl user_choosed_cflags_set=${CFLAGS+set} dnl SPECIFIED_CFLAGS=$CFLAGS dnl look for the C-Compiler #AC_PROG_CC #AC_PROG_GCC_TRADITIONAL dnl dnl ###################################################################### dnl Check for programs dnl AC_CHECK_PROGS(AR,ar,exit) dnl wrapped libtool macro to remove annoying warning message AC_PROG_LIBTOOL TAC_PROG_LIBTOOL_PATCH AC_PROG_LN_S dnl needed for scheduler.basl AM_PROG_LEX AC_PROG_YACC dnl Check for troff and its family. Prefer groff because we know dnl its fonts whereas various troffs name their fonts differently. dnl (e.g. CO vs C) AC_CHECK_PROGS(TBL, gtbl tbl, exit) AC_CHECK_PROGS(PIC, gpic pic, exit) AC_CHECK_PROGS(ROFF, groff troff, exit) dnl dnl ###################################################################### dnl Check how to compile dnl dnl dnl add _GNU_SOURCE dnl AC_DEFINE([_GNU_SOURCE], 1, [Define _GNU_SOURCE for portability]) dnl dnl ###################################################################### dnl compile in debug code? dnl AC_MSG_CHECKING([whether to turn on the compilation of DEBUG code]) AC_ARG_ENABLE(debug, [ --enable-debug turn on the compilation of DEBUG code (for debugging symbols, use --with-debug)], enable_debug=$enableval, enable_debug=no) AC_MSG_RESULT($enable_debug) if test "x$enable_debug" = "xyes" ; then AC_DEFINE(DEBUG, 1, [turns on the compilation of DEBUG code]) fi dnl dnl ###################################################################### dnl compile with debugging symbols dnl this needs to be after AC_PROG_CC and before AX_CFLAGS_GCC_OPTION dnl and TAC_SYS_LARGEFILE dnl AC_MSG_CHECKING([whether to compile with debugging symbols]) AC_ARG_WITH([debug], AC_HELP_STRING([--with-debug], [compile with debugging symbols]), DEBUG_SYMBOLS=$withval, DEBUG_SYMBOLS="yes") AC_MSG_RESULT([DEBUG_SYMBOLS=$DEBUG_SYMBOLS]) dnl remove -O* and add -g if test "$DEBUG_SYMBOLS" = 'yes'; then AC_MSG_RESULT([before tweak CFLAGS=$CFLAGS]) CFLAGS=`echo $CFLAGS | sed 's/ \?-O[[^ ]]*//g'` AC_MSG_RESULT([mid tweak CFLAGS=$CFLAGS]) case $CFLAGS in *-g*) ;; *) if test "$CFLAGS" = ''; then CFLAGS="-g" else CFLAGS="-g $CFLAGS" fi if test "$CXXFLAGS" = ''; then CXXFLAGS="-g" else CXXFLAGS="-g $CXXFLAGS" fi ;; esac AC_MSG_RESULT([after tweak CFLAGS=$CFLAGS]) AC_MSG_RESULT([before tweak CXXFLAGS=$CXXFLAGS]) CXXFLAGS=`echo $CXXFLAGS | sed 's/ \?-O[[^ ]]*//g'` AC_MSG_RESULT([mid tweak CXXFLAGS=$CXXFLAGS]) case $CXXFLAGS in *-g*) ;; *) if test "$CXXFLAGS" = ''; then CXXFLAGS="-g" else CXXFLAGS="-g $CXXFLAGS" fi ;; esac AC_MSG_RESULT([after tweak CXXFLAGS=$CXXFLAGS]) fi dnl if using gcc, we can be very strict AC_ARG_ENABLE(gcc_warnings, [ --disable-gcc-warnings Disable gcc strictness and warnings. If using gcc, default is to error on all warnings]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether to disable strict gcc warnings]) if test "${enable_gcc_warnings}" = "no" ; then AC_MSG_RESULT([yes]) gccwarnings=no else AC_MSG_RESULT([no]) fi fi dnl Torque's own largefile support TAC_SYS_LARGEFILE dnl We need pthreads AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIBS="$PTHREAD_LIBS -lpthread -lrt", [AC_MSG_ERROR([TORQUE needs pthreads in order to build]) ]) LIBS="$LIBS $PTHREAD_LIBS" dnl dnl we need libxml2 dnl xmlLib=`xml2-config --libs | sed 's/-L@<:@^@<:@:space:@:>@@:>@* //g;s/-l//'` dnl skip the first two chars because its -l AC_CHECK_LIB(${xmlLib}, xmlGetProp, [], [AC_MSG_ERROR([TORQUE needs libxml2-devel in order to build]) ]) dnl find zlib AC_CHECK_LIB(z, gzopen, [], [AC_MSG_ERROR([TORQUE needs zlib-devel in order to build]) ]) dnl ########################################### dnl Make only top dir mode? dnl AC_ARG_ENABLE(top_tempdir_only, [ --enable-top-tempdir-only Creates only the top directory when creating the temporary dir for the job]) if test "x$GCC" = "xyes" ; then AC_MSG_CHECKING([whether to create only the top temporary job directory]) if test "${enable_top_tempdir_only}" == "yes" ; then AC_MSG_RESULT([yes]) CFLAGS="$CFLAGS -DTOP_TEMPDIR_ONLY" else AC_MSG_RESULT([no]) fi fi dnl dnl If hpux and gcc, force the XOPEN interface. AC_MSG_CHECKING([whether to force XOPEN networking stack]) AC_ARG_ENABLE(xopen_networking, [ --disable-xopen-networking With HPUX and GCC, don't force usage of XOPEN and libxnet]) if test "${enable_xopen_networking}" != "no" ; then case $GCC,$PBS_MACH in yes,hpux*) AC_MSG_RESULT([yes]) AC_MSG_WARN([On HPUX and gcc, forcing XOPEN network stack.]) AC_MSG_WARN([Use --disable-xopen-networking to prevent it]) AC_CHECK_LIB([xnet], [getpeername], [LIBS="-lxnet $LIBS" CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"], [AC_MSG_WARN([This build will likely fail in mysterious ways at run-time]) sleep 10]) ;; *) AC_MSG_RESULT([no... phew!]) esac else AC_MSG_RESULT([disabled]) fi dnl dnl ###################################################################### dnl Check for headers dnl AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h limits.h malloc.h netdb.h \ netinet/in.h stddef.h sys/file.h sys/param.h sys/tty.h \ sys/socket.h sys/time.h sys/ioctl.h sys/mount.h \ sys/vfs.h sys/statfs.h sys/statvfs.h sys/ucred.h sys/un.h sys/uio.h \ syslog.h readline/readline.h \ termios.h err.h sys/poll.h pam/pam_modules.h security/pam_appl.h \ mach/shared_region.h]) # On Solaris, pam_modules.h requires pam_appl.h AC_CHECK_HEADERS([security/pam_modules.h], [], [], [#if HAVE_SECURITY_PAM_APPL_H # include # endif ]) dnl dnl ###################################################################### dnl System specific settings dnl AC_ARG_ENABLE(nodemask, [ --enable-nodemask enable nodemask-based scheduling on the Origin 2000]) if test "${enable_nodemask}" = "yes" ; then case "${PBS_MACH}" in irix6*) AC_DEFINE(NODEMASK, 1, [use nodemask-based scheduling on O2k]) ;; *) AC_MSG_ERROR([Cannot --enable-nodemask on a machine not running IRIX6]);; esac fi AC_ARG_ENABLE(pemask, [ --enable-pemask enable pemask-based scheduling on the Cray T3e]) if test "${enable_pemask}" = "yes" ; then case "${PBS_MACH}" in unicosmk*) AC_DEFINE(PE_MASK, 1, [use pemask-based scheduling on Cray T3e]) ;; *) AC_MSG_ERROR([Cannot --enable-pemask on a machine not running UNICOS/mk]);; esac fi MOMLIBS="" PBSPOE="" PBSPOEO="" AC_ARG_ENABLE(sp2, [ --enable-sp2 build PBS for an IBM SP2]) IBM_SP2=0 if test "x$enable_sp2" = "xyes" ; then MOMLIBS="-ljm_client -lSDR" case "$PBS_MACH" in aix*) AC_CHECK_LIB(switchtbl, swtbl_load_table, [ IBM_SP2=2 LIBS="-lswitchtbl $LIBS" PBSPOE="pbspd pbspoe" PBSPOEO="pbspoe.o pbspd.o" ], [ IBM_SP2=1 ]) ;; *) AC_MSG_ERROR([Cannot --enable-sp2 on a machine not running AIX]) ;; esac fi AC_DEFINE_UNQUOTED(IBM_SP2, ${IBM_SP2}, [defined if this is an SP2]) AC_SUBST(PBSPOE) AC_SUBST(PBSPOEO) AC_ARG_ENABLE(maxint-jobids, [ --enable-maxint-jobids enables job ids to go up to maxint]) maxint_ids=0 AC_MSG_CHECKING([whether to enable maxint job ids]) if test "x$enable_maxint_jobids" = "xyes" ; then AC_MSG_RESULT([yes]) maxint_ids=1 CFLAGS="$CFLAGS -DUSE_MAXINT_JOBIDS" else AC_MSG_RESULT([no]) fi dnl dnl Specify whether or not to use the resource plugin library dnl AC_ARG_WITH(resource-plugin, [ --with-resource-plugin=PATH Specifies the path to the resource plugin library to link against. For example: ./configure --with-resource-plugin=/opt/torque-plugin tells Torque that libresource_plugin.so is in /opt/torque-plugin/], [PLUGIN_PATH="${withval}"], [PLUGIN_PATH=""]) AC_MSG_CHECKING([Whether to use the resource plugin libary]) if test "x$PLUGIN_PATH" != "x"; then dnl A plugin library has been specified AC_MSG_RESULT([yes]) AC_DEFINE(USE_RESOURCE_PLUGIN, 1, [Define to use the resource plugin]) MOMLIBS="$MOMLIBS -L$PLUGIN_PATH -lresource_plugin" else AC_MSG_RESULT([no]) fi AC_ARG_ENABLE(cgroups, [ --enable-cgroups enable Linux control groups]) build_linux_cgroups=no AC_MSG_CHECKING([whether to enable cgroups]) if test "x$enable_cgroups" = "xyes"; then AC_MSG_RESULT([yes]) build_linux_cgroups=yes AC_DEFINE(PENABLE_LINUX_CGROUPS, 1, [Define to enable Linux cgroups]) RPM_AC_OPTS="$RPM_AC_OPTS --with cgroups" else AC_MSG_RESULT([no]) RPM_AC_OPTS="$RPM_AC_OPTS --without cgroups" fi AM_CONDITIONAL([BUILD_LINUX_CGROUPS], test "$build_linux_cgroups" = yes) AC_ARG_ENABLE(cpuset,[ --enable-cpuset enable Linux 2.6 kernel cpusets]) build_l26_cpuset=no cpuset=0 AC_MSG_CHECKING([whether to enable cpusets]) if test "x$enable_cpuset" = "xyes" ; then if test "${build_linux_cgroups}" = "yes" ; then AC_MSG_ERROR([cpuset and cgroups are mutually exclusive options]) fi AC_MSG_RESULT([yes]) build_l26_cpuset=yes cpuset=1 AC_DEFINE(PENABLE_LINUX26_CPUSETS, 1, [Define to enable Linux 2.6 cpusets]) dnl define geometry requests to allow these to be requested here dnl CFLAGS="$CFLAGS -DGEOMETRY_REQUESTS" RPM_AC_OPTS="$RPM_AC_OPTS --with cpuset" else AC_MSG_RESULT([no]) RPM_AC_OPTS="$RPM_AC_OPTS --without cpuset" fi AM_CONDITIONAL([BUILD_L26_CPUSETS], test "$build_l26_cpuset" = yes) dnl turn on the new feature to request a specific geometry for a process dnl this uses cpusets to bind the job to that geometry dnl --enable-geometry-requests AC_ARG_ENABLE(geometry_requests, [ --enable-geometry-requests Enables the user to request a specific geometry using a cpuset implementation]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether to allow geometry requests]) if test "${enable_geometry_requests}" = "yes" ; then if test "${build_linux_cgroups}" = "yes" ; then AC_MSG_ERROR([geometry-requests and cgroups are mutually exclusive options]) fi AC_MSG_RESULT([yes]) build_l26_cpuset=yes AC_DEFINE(PENABLE_LINUX26_CPUSETS, 1, [Define to enable Linux 2.6 cpusets]) dnl AC_DEFINE(GEOMETRY_REQUESTS, 1, [Define to allow job specific geometry requests]) if test "${cpuset}" = "1" ; then CFLAGS="$CFLAGS -DGEOMETRY_REQUESTS -DALWAYS_USE_CPUSETS" else CFLAGS="$CFLAGS -DGEOMETRY_REQUESTS" fi else AC_MSG_RESULT([no]) fi fi dnl Don't allow the specification of --disable-cpuset and --enable-geometry-requests case "${ac_configure_args}" in *disable-cpuset*) case "${ac_configure_args}" in *enable-geometry-requests*) AC_MSG_ERROR([--enable-geometry-requests requires the use of cpusets. You may not specify both --disable-cpuset and --enable-geometry-requests]) esac esac dnl compile for NUMA systems - allows the site to configure: dnl 1. cpusets and multi-moms dnl 2. memory fences to only access close memory dnl dnl --enable-numa-support AC_ARG_ENABLE(numa_support, [ --enable-numa-support Specifies that the mom report itself as several numa nodes instead of one node, while adding numa reporting and numa cpusets, which include memory fencing]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether to support NUMA systems]) if test "${enable_numa_support}" = "yes" ; then AC_MSG_RESULT([yes]) build_l26_cpuset=yes AC_DEFINE(PENABLE_LINUX26_CPUSETS, 1, [Define to enable Linux 2.6 cpusets]) CFLAGS="$CFLAGS -DNUMA_SUPPORT" else AC_MSG_RESULT([no]) fi fi dnl dnl add the option to view coverage when executing TORQUE dnl AC_ARG_ENABLE(coverage, [ --enable-coverage Builds TORQUE with --coverage in order to allow evaluation of what parts of the code are being exercised. This is mainly useful for quality assurance.]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether to compile with coverage]) if test "${enable_coverage}" = "yes" ; then AC_MSG_RESULT([yes]) CFLAGS="$CFLAGS --coverage -lgcov" else AC_MSG_RESULT([no]) fi fi dnl dnl tell TORQUE where to find the MIC libs dnl AC_ARG_WITH(mic-path, [ --with-mic-path=PATH Specifies the path to the mic COI libraries and include files. Example: ./configure --with-mic-path=/opt/intel/mic/coi will specify that the include files are in /opt/intel/mic/coi/include and the libraries are in /opt/intel/mic/coi/host-linux-release/lib], [MICLIBS="-L${withval}/host-linux-release/lib"; MICCFLAGS="-I${withval}/include"], [MICLIBS="-L/usr/lib64 -L/opt/intel/mic/coi/host-linux-release/lib"; MICCFLAGS="-I/usr/include/intel-coi -I/opt/intel/mic/coi/include"]) dnl dnl enable mic support dnl AC_MSG_CHECKING([whether to compile with MIC support]) AC_ARG_ENABLE(mic, [ --enable-mic Builds TORQUE with mic support so that pbs_mom will auto-detect the mics and report a status for each mic on that host. If no mic exists, the pbs_mom will behave normally], MIC=$enableval,MIC=no) AC_MSG_RESULT($MIC) case "$MIC" in yes) AC_DEFINE([MIC], 1, [Define to enable MIC support]) ;; no) : ;; *) AC_MSG_ERROR([--enable-mic should be yes or no]) ;; esac AM_CONDITIONAL([MIC], test "$MIC" = yes) if test "$MIC" = "yes" ; then MOMLIBS="$MOMLIBS $MICLIBS -lcoi_host" CPPFLAGS="$CPPFLAGS $MICCFLAGS" gccwarnings=no AC_CHECK_HEADERS([source/COIPipeline_source.h], [], [AC_MSG_ERROR(MIC COI LLAPI headers not found)], []) fi dnl add an option to specify a path where TORQUE should look for boost dnl include files dnl AC_ARG_WITH(boost-path, [ --with-boost-path=PATH Specifies the path to the boost include files. Example: ./configure --with-boost-path=/usr/local/packages/boost_1_36_0 Will specify that the include files are in /usr/local/packages/boost_1_36_0], [CPPFLAGS="$CPPFLAGS -I${withval}"]) AC_MSG_CHECKING([whether boost is installed]) AC_PREPROC_IFELSE([AC_LANG_PROGRAM([#include ])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([Torque needs Boost, but it was not found on your system This can be solved by one of the two following methods: 1) Install the boost-devel package for your OS distribution. Note that it must be at least version 1.36.0. 2) Run configure with --with-boost-path=. This path should be the path to the directory containing the boost/ directory for your version of boost. ])]) if test "$build_linux_cgroups" = "yes"; then AC_MSG_CHECKING([for minimum boost version (>=1.41.0)]) AC_RUN_IFELSE([AC_LANG_PROGRAM( [[#include #ifdef BOOST_VERSION #if (BOOST_VERSION < 103600) error: incorrect boost version #endif #else error: no boost found #endif ]])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([Torque requires at least version 1.41.0 of Boost to build with cgroups enabled. This can be solved by configuring with --with-boost-path=. This path should be the path to the directory containing the boost/ directory for your version of boost. ])]) else AC_MSG_CHECKING([for minimum boost version (>=1.36.0)]) AC_RUN_IFELSE([AC_LANG_PROGRAM( [[#include #ifdef BOOST_VERSION #if (BOOST_VERSION < 103600) error: incorrect boost version #endif #else error: no boost found #endif ]])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([Torque requires at least version 1.36.0 of Boost This can be solved by configuring with --with-boost-path=. This path should be the path to the directory containing the boost/ directory for your version of boost. ])]) fi dnl add an option to specify a different path where TORQUE should look for HWLOC dnl lib and include files dnl AC_ARG_WITH(hwloc-path, [ --with-hwloc-path=PATH Specifies the path to the hwloc libraries and include files. Example: ./configure --with-hwloc-path=/usr/local/hwloc-1.9 Will specify that the include files are in /usr/local/hwloc-1.9/include and the libraries are in /usr/local/hwloc-1.9/lib], [HWLOC_LIBS="-L${withval}/lib -lhwloc"; HWLOC_CFLAGS="-I${withval}/include"], [TOM="BOB"]) dnl dnl enable Nvidia gpu support dnl AC_MSG_CHECKING([whether to build Nvidia gpu support]) AC_ARG_ENABLE(nvidia-gpus, [ --enable-nvidia-gpus enable Nvidia gpu support Nvidia gpu support requires the use of the Nvidia Management Library (NVML) When using --enable-nvidia-gpus, you must also specify --with-nvml-lib=DIR and --with-nvml-include=DIR. hwloc 1.9 or later is also required if implementing cgroups along with GPU support. See --with-hwloc-path. ], enable_nvidia=$enableval,enable_nvidia=no) AC_MSG_RESULT($enable_nvidia) case "$enable_nvidia" in yes) AC_DEFINE([NVIDIA_GPUS], 1, [Define to enable Nvidia gpu support]) ;; no) : ;; *) AC_MSG_ERROR([--enable-nvidia-gpus should be yes or no]) ;; esac AM_CONDITIONAL([NVIDIA], test "$enable_nvidia" = yes) dnl dnl check for nvml include and lib dir only if Nvidia gpu support has been enabled dnl if test "${enable_nvidia}" = "yes"; then AC_ARG_WITH(nvml_include, [ --with-nvml-include=DIR include path for nvml.h], nvmlinclude=$withval,nvmlinclude=none) AC_ARG_WITH(nvml_lib, [ --with-nvml-lib=DIR lib path for libnvidia-ml], nvmllib=$withval,nvmllib=none) if test "x$nvmlinclude" = "xnone" && test "x$nvmllib" == "xnone"; then AC_MSG_ERROR([--with-nvml-lib and --with-nvml-include need to be specified]) elif test "x$nvmllib" == "xnone"; then AC_MSG_ERROR([--with-nvml-lib needs to be specified]) elif test "x$nvmlinclude" == "xnone"; then AC_MSG_ERROR([--with-nvml-include needs to be specified]) fi if test "x$nvmlinclude" != "xnone" && test "x$nvmllib" != "xnone"; then CPPFLAGS="$CPPFLAGS -I$nvmlinclude" MOMLIBS="$MOMLIBS -L$nvmllib -lnvidia-ml" gccwarnings=no AC_DEFINE([NVML_API], 1, [Define to enable Nvidia NVML api support]) fi fi dnl For Linux 2.6 cpusets, libhwloc 1.2 or later is needed for pbs_mom. dnl For GPU detection, libhwloc 1.7 or later is needed for pbs_mom. dnl For cgroup support, libhwloc 1.7 or later is needed for pbs_mom. dnl hwloc 1.7 is newer than the versions distributed with supported operating systems. dnl hwloc 1.9 is stable. Therefore, 1.9 or later will be required. dnl We are using pkg-config to figure out libs and cflags. dnl The used m4 macro is found in buildutils/pkg.m4. dnl In addition, we check libhwloc for hwloc_linux_get_tid_last_cpu_location (present since v1.9). if test "${build_l26_cpuset}" = "yes" || test "${enable_nvidia}" = "yes" || test "${build_linux_cgroups}" = "yes"; then if test "${build_l26_cpuset}" = "yes"; then # The carriage return is siginifican. Do not delete it CPUSET_DEPENDS_ON_HWLOC="cpuset support requires the hwloc development package " fi if test "${enable_nvidia}" = "yes"; then # The carriage return is siginificant. Do not delete it GPU_DETECTION_DEPENDS_ON_HWLOC="GPU detection requires the hwloc development package " # In order to get AC_CHECK_LIB to pick up the nvml library # if it is not in the default location we need to add # the value of nvmllib set in --with-nvml-lib to LDFLAGS LDFLAGS="$LDFLAGS -L$nvmllib" AC_CHECK_LIB([nvidia-ml], [nvmlDeviceGetHandleByIndex],, [AC_MSG_ERROR([libnvidia does not look like >= 4.1])]) fi if test "${build_linux_cgroups}" = "yes"; then # The carriage return is siginifican. Do not delete it CGROUP_DEPENDS_ON_HWLOC="cgroup support requires the hwloc development package " fi if test "${build_mom}" = "yes"; then # Do not look for package hwloc using PKG_CHECK_MODULES if the user uses --with-hwloc-dir # --with-hwloc-dir sets HWLOC_LIBS and HWLOC_CFLAGS. Therefore, if HWLOC_LIBS is not empty # do not look for an installed hwloc. if test -z "${HWLOC_LIBS}" ; then # pkg_check_modules takes the first parameter "HWLOC" and provides an "HWLOC_LIBS" and "HWLOC_CFLAGS" # variable when the second parameter (the package and version we are looking for) resolves to true. PKG_CHECK_MODULES([HWLOC], [hwloc >= 1.9], [ MOMLIBS="$MOMLIBS $HWLOC_LIBS"; CFLAGS="$CFLAGS $HWLOC_CFLAGS"; CPPFLAGS="$CPPFLAGS $HWLOC_CFLAGS"; ], [ AC_MSG_ERROR([${CPUSET_DEPENDS_ON_HWLOC}${GPU_DETECTION_DEPENDS_ON_HWLOC}${CGROUP_DEPENDS_ON_HWLOC} $HWLOC_PKG_ERRORS This can be solved by configuring with --with-hwloc-path=. This path should be the path to the directory containing the lib/ and include/ directories for your version of hwloc. hwloc can be loaded by running the hwloc_install.sh script in the contrib directory within this Torque distribution. Another option is adding the directory containing 'hwloc.pc' to the PKG_CONFIG_PATH environment variable. If you have done these and still get this error, try running ./autogen.sh and then configuring again. ])]) fi LIBS="$LIBS $HWLOC_LIBS"; fi fi if test "x$HWLOC_CFLAGS" != "xnone"; then CFLAGS="$CFLAGS $HWLOC_CFLAGS" CPPFLAGS="$CPPFLAGS $HWLOC_CFLAGS" fi dnl enable pbs_mom to use the cpuset API from libcpuset dnl only makes sense with cpusets enabled AC_ARG_ENABLE(libcpuset, [ --enable-libcpuset Allows pbs_mom to use the cpuset API from libcpuset]) if test "${build_mom}" = "yes" ; then if test "x$GCC" = "xyes" ; then if test "${build_l26_cpuset}" = "yes" ; then AC_MSG_CHECKING([whether to build libcpuset support]) if test "${enable_libcpuset}" = "yes" ; then AC_MSG_RESULT([yes]) AC_CHECK_HEADERS([cpuset.h bitmask.h], , [AC_MSG_ERROR([header files missing to --enable-libcpuset]) ]) AC_CHECK_LIB([cpuset],[cpuset_version], , [AC_MSG_ERROR([--enable-libcpuset requires libcpuset to be installed]) ]) AC_DEFINE([USELIBCPUSET], 1, [Define to enable libcpuset support]) MOMLIBS="$MOMLIBS -lcpuset -lbitmask" else AC_MSG_RESULT([no]) fi fi fi fi dnl enable pbs_mom to query the SGI memory accounting utility to get rss values that are more reliable dnl dnl --enable-memacct AC_ARG_ENABLE(memacct, [ --enable-memacct Allows pbs_mom to query the SGI memory accounting utility]) if test "${build_mom}" = "yes" ; then if test "x$GCC" = "xyes"; then AC_MSG_CHECKING([whether to build libmemacct support]) if test "${enable_memacct}" = "yes" ; then AC_MSG_RESULT([yes]) AC_CHECK_LIB([memacct],[get_weighted_memory_size], , [AC_MSG_ERROR([--enable-memacct requires libmemacct to be installed]) ]) AC_DEFINE([USELIBMEMACCT], 1, [Define to enable libmemacct support]) MOMLIBS="$MOMLIBS -lmemacct" else AC_MSG_RESULT([no]) fi fi fi dnl dnl Add the ability to link against the pmix library dnl dnl --with-pmix AC_ARG_WITH([pmix], [AC_HELP_STRING([--with-pmix(=DIR)], [Build PMIx support. DIR can either be left off, or be a valid directory name. Supplying a valid directory name adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) AC_MSG_CHECKING([if user requested PMIx support($with_pmix)]) AS_IF([test -z "$with_pmix" || test "$with_pmix" = "no"], [AC_MSG_RESULT([no]) pmix_happy=no], [AC_MSG_RESULT([yes]) # check for pmix lib location */ AS_IF([test "x$with_pmix" = "x"], [pmix_ext_install_dir=/usr], [pmix_ext_install_dir=$with_pmix]) # Make sure we have the headers in the correct location AC_MSG_CHECKING([PMIx include directory]) AS_IF([test ! -d $pmix_ext_install_dir/include], [AC_MSG_RESULT([not found]) AC_MSG_ERROR([Cannot continue])], [AC_MSG_RESULT([found]) AC_MSG_CHECKING([presence of pmix.h]) AS_IF([test "x`ls $pmix_ext_install_dir/include/pmix.h`" = "x"], [AC_MSG_RESULT([not found]) AC_MSG_ERROR([Cannot continue])], [AC_MSG_RESULT([found])])]) # Now check the lib AC_MSG_CHECKING([PMIx lib directory]) AS_IF([test ! -d $pmix_ext_install_dir/lib], [AC_MSG_RESULT([not found]) AC_MSG_ERROR([Cannot continue])], [AC_MSG_RESULT([found]) AC_MSG_CHECKING([presence of libpmix]) AS_IF([test "x`ls $pmix_ext_install_dir/lib/libpmix.*`" = "x"], [AC_MSG_RESULT([not found]) AC_MSG_ERROR([Cannot continue])], [AC_MSG_RESULT([found])])]) # check the version pmix_save_CPPFLAGS=$CPPFLAGS pmix_save_LDFLAGS=$LDFLAGS pmix_save_LIBS=$LIBS # if the pmix_version.h file does not exist, then # this must be from a pre-1.1.5 version AC_MSG_CHECKING([PMIx version]) CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS" AS_IF([test "x`ls $pmix_ext_install_dir/include/pmix_version.h 2> /dev/null`" = "x"], [AC_MSG_RESULT([version file not found - assuming v1.1.4]) pmix_version_found=1 pmix_version=114], [AC_MSG_RESULT([version file found]) pmix_version_found=0]) # if it does exist, then we need to parse it to find # the actual release series AS_IF([test "$pmix_version_found" = "0"], [AC_MSG_CHECKING([version 3x]) AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ #include #if (PMIX_VERSION_MAJOR != 3L) #error "not version 3" #endif ], [])], [AC_MSG_RESULT([found]) pmix_version=3 pmix_version_found=1], [AC_MSG_RESULT([not found])])]) AS_IF([test "$pmix_version_found" = "0"], [AC_MSG_CHECKING([version 2x]) AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ #include #if (PMIX_VERSION_MAJOR != 2L) #error "not version 2" #endif ], [])], [AC_MSG_RESULT([found]) pmix_version=2 pmix_version_found=1], [AC_MSG_RESULT([not found])])]) AS_IF([test "$pmix_version_found" = "0"], [AC_MSG_CHECKING([version 1x]) AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ #include #if (PMIX_VERSION_MAJOR != 1L) #error "not version 1" #endif ], [])], [AC_MSG_RESULT([found]) pmix_version=1 pmix_version_found=1], [AC_MSG_RESULT([not found])])]) AS_IF([test "x$pmix_version" = "x" || test "$pmix_version" != "1"], [AC_MSG_WARN([PMIx support requested, but version]) AC_MSG_WARN([information of the external lib could not]) AC_MSG_WARN([be detected]) AC_MSG_ERROR([cannot continue])]) CPPFLAGS=$pmix_save_CPPFLAGS LDFLAGS=$pmix_save_LDFLAGS LIBS=$pmix_save_LIBS pmix_happy=yes]) if test "${build_mom}" = "yes" ; then if test "x$GCC" = "xyes"; then AC_MSG_CHECKING([building PMIx support]) if test "${pmix_happy}" = "yes"; then AC_MSG_RESULT([yes - version: $pmix_version]) AC_DEFINE([ENABLE_PMIX], 1, [Define to enable pmix support]) AC_DEFINE([PMIX_VERSION], [$pmix_version], [The PMIx version we are building against]) CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS" LDFLAGS="-L$pmix_ext_install_dir/lib $LDFLAGS" MOMLIBS="$MOMLIBS -lpmix" else AC_MSG_RESULT([no]) fi fi fi AM_CONDITIONAL([BUILDPMIX], test "${pmix_happy}" = yes) dnl fixes errors relating to unaligned memory accesses dnl some systems experience these errors dnl dnl --enable-align-memory AC_ARG_ENABLE(align_memory, [ --enable-align-memory Change compile flags to get rid of unaligned memory access errors]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether add memory alignment flags]) if test "$x{enable_align_memory}" = "xno" ; then AC_MSG_RESULT([no]) else AC_MSG_RESULT([default yes]) CFLAGS="$CFLAGS -fstack-protector -Wformat -Wformat-security -DFORTIFY_SOURCE=2" CXXFLAGS="$CXXFLAGS -fstack-protector -Wformat -Wformat-security -DFORTIFY_SOURCE=2" fi fi AM_CONDITIONAL([BUILD_L26_CPUSETS], test "$build_l26_cpuset" = yes) dnl irix6 can be changed to irix6array explicitly with an dnl --enable-array and irix6array can be made into irix6 with a dnl --disable-array. AC_ARG_ENABLE(array, [ --enable-array setting this under IRIX enables the SGI Origin 2000 parallel support. Normally autodetected from the /etc/config/array file.], [ if test "$PBS_MACH" = irix6; then if test "$enableval" = yes; then AC_MSG_WARN([No array daemon detected but enable-array overrides.]) PBS_MACH=irix6array fi elif test "$PBS_MACH" = irix6array; then if test "$enableval" = no; then AC_MSG_WARN([Array daemon detected but disable-array overrides.]) PBS_MACH=irix6 fi else AC_MSG_ERROR([Cannot use --en/disable-array unless configuring for IRIX 6.x or above]) fi ]) dnl dnl enable BLCR support dnl AC_ARG_ENABLE(blcr, [ --enable-blcr enable BLCR support], BLCR=$enableval,BLCR=no) AC_ARG_WITH(blcr, [ --with-blcr=DIR BLCR installation prefix], [ blcrprefix=$withval BLCR=yes blcrlib="${blcrprefix}/lib" blcrbin="${blcrprefix}/bin" blcrinclude="${blcrprefix}/include" ],[ blcrprefix=none blcrlib=none blcrbin=none blcrinclude=none ]) AC_ARG_WITH(blcr_include, [ --with-blcr-include=DIR include path for libcr.h], blcrinclude=$withval) AC_ARG_WITH(blcr_lib, [ --with-blcr-lib=DIR lib path for libcr], blcrlib=$withval) AC_ARG_WITH(blcr_bin, [ --with-blcr-bin=DIR bin path for BLCR utilities], blcrbin=$withval) AC_MSG_CHECKING([whether to build BLCR support]) AC_MSG_RESULT($BLCR) case "$BLCR" in yes) AC_DEFINE([ENABLE_BLCR], 1, [Define to enable BLCR support]) AS_IF([test "x$blcrlib" != xnone], [ BLCR_LDFLAGS="-L$blcrlib -lcr" ],[ BLCR_LDFLAGS="-lcr" ]) SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$BLCR_LDFLAGS $LDFLAGS" AC_CHECK_LIB([cr], [cr_init], [ :], AC_MSG_ERROR([pass the path to libcr.so to --with-blcr-lib])) LDFLAGS="$SAVE_LDFLAGS" AC_SUBST([BLCR_LDFLAGS]) AS_IF([test "x$blcrinclude" != xnone], [ BLCR_CPPFLAGS="-I$blcrinclude" ],[ BLCR_CPPFLAGS="" ]) SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$BLCR_CPPFLAGS $CPPFLAGS" AC_CHECK_HEADER([libcr.h], [ :], AC_MSG_ERROR([pass the path to libcr.so to --with-blcr-include])) CPPFLAGS="$SAVE_CPPFLAGS" AC_SUBST([BLCR_CPPFLAGS]) AS_IF([test "x$blcrbin" != xnone], [ BLCR_BINDIR="$blcrbin" BLCR_PATH="$PATH_SEPARATOR$BLCR_BINDIR" ],[ BLCR_BINDIR="" BLCR_PATH="" ]) AC_CHECK_PROGS([HAVE_CR_RESTART], [cr_restart], [no], [PATH=$PATH$BLCR_PATH]) AC_SUBST([BLCR_BINDIR]) gccwarnings=no ;; no) : ;; *) AC_MSG_ERROR([--enable-blcr should be yes or no]) ;; esac dnl dnl if we're running from a tarball (not checked out) automatically turn off dnl the warnings dnl AC_CHECK_FILE(src/test/req_jobobit/scaffolding.c, TOM=bob,gccwarnings=no) dnl dnl enable logging of x attributes for accounting dnl AC_MSG_CHECKING([whether to add x attributes to accounting]) AC_ARG_ENABLE(acct-x, [ --enable-acct-x enable adding x attributes to accounting log], ACCTX=$enableval,ACCTX=no) AC_MSG_RESULT($ACCTX) case "$ACCTX" in yes) AC_DEFINE([ATTR_X_ACCT], 1, [Define to add x attributes to accounting log]) ;; no) : ;; *) AC_MSG_ERROR([--enable-acct-x should be yes or no]) ;; esac dnl dnl enable Cray's CPA support dnl AC_MSG_CHECKING([whether to build Cray's CPA support]) AC_ARG_ENABLE(cpa, [ --enable-cpa enable Cray's CPA support], CPA=$enableval,CPA=no) AC_MSG_RESULT($CPA) AC_ARG_WITH(cpa_include, [ --with-cpa-include=DIR include path for cpalib.h], cpainclude=$withval,cpainclude=none) AC_ARG_WITH(cpa_lib, [ --with-cpa-lib=DIR lib path for libcpalib], cpalib=$withval,cpalib=none) if test "x$cpainclude" != "xnone" ;then CPPFLAGS="$CPPFLAGS -I$cpainclude" fi LDFLAGS_cpasave="$LDFLAGS" if test "x$cpalib" != "xnone" ;then LDFLAGS="$LDFLAGS -L$cpalib" fi buildcpa="no" case "$CPA" in yes) AC_DEFINE([ENABLE_CPA], 1, [Define to enable Cray's CPA support]) AC_CHECK_HEADERS([cpalib.h], [ :], AC_MSG_ERROR([pass the path to cpalib.h to --with-cpa-include])) AC_CHECK_LIB(cpalib, cpa_new_node_req, [ :], AC_MSG_ERROR([pass the path to libcpalib to --with-cpa-lib])) if test "x$cpalib" != "xnone" ;then MOMLIBS="$MOMLIBS -L$cpalib -lcpalib" else MOMLIBS="$MOMLIBS -lcpalib" fi buildcpa="yes" ;; no) : ;; *) AC_MSG_ERROR([--enable-cpa should be yes or no]) ;; esac AM_CONDITIONAL([BUILDCPA], test "$buildcpa" = yes) LDFLAGS="$LDFLAGS_cpasave" dnl dnl enable Cray's CSA support dnl AC_MSG_CHECKING([whether to build Cray's CSA support]) AC_ARG_ENABLE(csa, [ --enable-csa enable Cray's CSA support], CSA=$enableval,CSA=no) AC_MSG_RESULT($CSA) case "$CSA" in yes) AC_DEFINE([ENABLE_CSA], 1, [Define to enable Cray's CSA support]) LDFLAGS_csasave="$LDFLAGS" LDFLAGS="$LDFLAGS -L/opt/cray/job/default/lib64" AC_CHECK_LIB([csa], [csa_check], [MOMLIBS="$MOMLIBS -L/opt/cray/job/default/lib64 -lcsa"], [AC_MSG_ERROR([--enable-csa requires libcsa])]) LDFLAGS=$LDFLAGS_csasave ;; no) : ;; *) AC_MSG_ERROR([--enable-csa should be yes or no]) ;; esac dnl dnl enable libjob job_create support dnl attempt to find a location to install job_create support for CRAY dnl AC_MSG_CHECKING([whether to enable libjob job_create support]) jobcreatedir=disabled AC_ARG_WITH(job_create, [ --with-job-create=DIR Directory that holds the job create modules. On Linux, 'yes' uses the default /opt/cray.], [jobcreatedir=$withval]) case "$jobcreatedir" in disabled) ;; no) jobcreatedir=disabled ;; yes) case "${PBS_MACH}" in linux) AC_DEFINE([USEJOBCREATE], 1, [Define to enable libjob job_create support]) AC_CHECK_LIB([job],[job_create], [MOMLIBS="-L/opt/cray/job/default/lib64 -ljob $MOMLIBS" CFLAGS="$CFLAGS -I/opt/cray/job/default/include"], [AC_MSG_ERROR([--enable-job-create requires libjob support]) ]);; *) AC_MSG_ERROR([--with-job-create takes a full path to a directory]);; esac ;; *) case "${PBS_MACH}" in linux) AC_DEFINE([USEJOBCREATE], 1, [Define to enable libjob job_create support]) MOMLIBS="$jobcreatedir $MOMLIBS" CFLAGS="$CFLAGS $jobcreatedir" ;; *) AC_MSG_ERROR([--with-job-create takes a full path to a directory]);; esac ;; esac AC_MSG_RESULT([$jobcreatedir]) AUTH_TYPE="trqauthd" dnl compile for munge authorization - allows sites to use munge dnl as a means to validate user identity from remote hosts. (executable based implementation) dnl AC_ARG_ENABLE(munge_auth_exec, [ --enable-munge-exec (LEGACY) Allows users to be authorized using munge instead of ruserok ]) if test "x$GCC" = "xyes" ;then AC_MSG_CHECKING([whether to support exec based munge authorization]) if test "${enable_munge_exec}" = "yes" ; then AC_MSG_RESULT([yes]) CFLAGS="$CFLAGS -DMUNGE_AUTH -DMUNGE_AUTH_EXEC" AUTH_TYPE="munge exec (LEGACY)" RPM_AC_OPTS="$RPM_AC_OPTS --with munge" else AC_MSG_RESULT([no]) RPM_AC_OPTS="$RPM_AC_OPTS --without munge" fi fi dnl compile for munge library based authorization - link with munge library dnl instead of using expensive popen() calls. This option requires munge dnl libraries to be installed during compilation. AC_ARG_ENABLE(munge_auth, [ --enable-munge-auth Use MUNGE authentication instead ruserok method. Munge library is required. This method is much faster than former exec-based implementation ] ) AC_MSG_CHECKING([whether to support MUNGE library based authentication]) if test "x$GCC" = "xyes" ; then if test "${enable_munge_auth}" = "yes"; then if test x"${enable_munge_exec}" = x"yes"; then echo AC_MSG_ERROR([ --enable-munge-auth and --enable-munge-exec options are mutually exclusive]) fi AC_MSG_RESULT([yes]) AC_CHECK_LIB(munge,munge_ctx_create,LDFLAGS="$LDFLAGS -lmunge") AC_CHECK_HEADERS([munge.h]) if test "$ac_cv_header_munge_h" = "yes" && test "$ac_cv_lib_munge_munge_ctx_create" = "yes"; then CFLAGS="$CFLAGS -DMUNGE_AUTH -DMUNGE_AUTH_LIB" AUTH_TYPE="munge library (NEW)" else echo AC_MSG_ERROR([requested munge library API support is disabled - cannot find library or headers]) fi else AC_MSG_RESULT([no]) fi AM_CONDITIONAL([WITH_MUNGE_LIBRARY], [ test "${enable_munge_library}" = "yes" ]) fi dnl dnl arch-specific libs dnl case $PBS_MACH in aix4|aix5) MOMLIBS="$MOMLIBS -lodm -lcfg" ;; irix6array) MOMLIBS="$MOMLIBS -larray" ;; cygwin) MOMLIBS="$MOMLIBS -liphlpapi" ;; linux) AC_CHECK_FUNC(openpty, , AC_CHECK_LIB(util, openpty, MOMLIBS="$MOMLIBS -lutil"), AC_MSG_WARN([This is an ancient distro... will open ptys directly]) AC_DEFINE([USEOLDTTY], 1, [Define on ancient linux distros])) ;; darwin*) AC_DEFINE(SETCONTROLLINGTTY, 1, [Define to set the controlling tty]) ;; digitalunix*) AC_DEFINE(SETCONTROLLINGTTY, 1, [Define to set the controlling tty]) ;; unicosmk*) AC_DEFINE(SETCONTROLLINGTTY, 1, [Define to set the controlling tty]) ;; esac case $PBS_MACH in aix4|aix5|sunos4|solaris5|freebsd|freebsd5|darwin|fujitsu) AC_CHECK_FUNC(nlist, , AC_CHECK_LIB(elf, nlist)) ;; esac case $PBS_MACH in sunos4|solaris5|netbsd|freebsd|freebsd5) AC_CHECK_LIB(kvm, kvm_open) ;; esac dnl Support for checkpointing, note that under IRIX at this time dnl it seems that you must be compiling with the -64 flag to dnl get the cpr libraries on O2000s MOM_CHECKPOINT=0 case "$PBS_MACH" in unicos*) MOM_CHECKPOINT=1 ;; irix6*) AC_CHECK_LIB(cpr, atcheckpoint, [MOM_CHECKPOINT=1]) if test "$MOM_CHECKPOINT" = 1 ; then MOMLIBS="$MOMLIBS -lcpr" # # if we are using plain cc then under irix6array # make it cc -64 unless the user has explicitly asked for cc # if test "$CC" = cc -a "x$user_choosed_cc_set" != xset ; then AC_MSG_WARN([Automatically setting CC='cc -64' under irix6.]) CC='cc -64' fi fi ;; linux) if test "$BLCR" = "yes" ;then MOM_CHECKPOINT=1;fi ;; esac AC_DEFINE_UNQUOTED(MOM_CHECKPOINT, ${MOM_CHECKPOINT}, [whether checkpointing is supported]) AC_SUBST(MOMLIBS) dnl Streams on Solaris case "$build" in *-*-solaris*) AC_DEFINE(PUSH_STREAM, 1, [Define if you are on a solaris box]) ;; *) ;; esac dnl Make a bind() call before making a connect() call AC_MSG_CHECKING([whether to build with bind() calls before connect() calls]) AC_ARG_ENABLE(bind-outbound-sockets, [ --enable-bind-outbound-sockets enable build with bind() calls before connect() calls], BIND_OUTBOUND_SOCKETS=$enableval,BIND_OUTBOUND_SOCKETS=no) AC_MSG_RESULT($BIND_OUTBOUND_SOCKETS) if test "$BIND_OUTBOUND_SOCKETS" = "yes" ; then AC_DEFINE(BIND_OUTBOUND_SOCKETS, 1, [turns on the compilation of BIND_OUTBOUND_SOCKETS code]) fi dnl dnl ###################################################################### dnl Scheduler settings dnl AC_ARG_WITH(sched, [ --with-sched=TYPE sets the scheduler type. If TYPE is "c" the scheduler will be written in C "tcl" the server will use a Tcl based scheduler "basl" will use the rule based scheduler "no" then their will be no scheduling done (the "c" scheduler is the default)], [case "${withval}" in c*|C*) SCHD_TYPE=cc ;; tcl|Tcl) SCHD_TYPE=tcl ;; basl|BASL) SCHD_TYPE=basl ;; *) SCHD_TYPE=none ;; esac],[SCHD_TYPE=cc]) if test "x$build_server" != "xyes" ;then SCHD_TYPE=none fi AC_DEFINE_UNQUOTED(SCHD_TYPE, "${SCHD_TYPE}", [set the type of scheduler to use]) SCHD_TYPE_SUBDIR="" if test "$SCHD_TYPE" != none; then SCHD_TYPE_SUBDIR=scheduler.$SCHD_TYPE fi AC_SUBST(SCHD_TYPE_SUBDIR) AC_SUBST(SCHD_TYPE) AM_CONDITIONAL(SCHD_BASL, test "x$SCHD_TYPE" = "xbasl") if test "$SCHD_TYPE" = basl ;then AC_CHECK_FUNC(sqrt, , AC_CHECK_LIB(m, sqrt, SCHD_LIBS="$SCHD_LIBS -lm")) fi AC_SUBST(SCHD_LIBS) AC_ARG_WITH(sched_code, [ --with-sched-code=PATH sets the name of the scheduler to use. This only applies to BASL schedulers and those written in the C language. For C schedulers this should be a directory name and for BASL schedulers a filename ending in ".basl". It will be interpreted relative to srctree/src/schedulers.SCHD_TYPE/samples. As an example, an appropriate BASL scheduler realtive path would be "nas.basl". The default scheduler code for "C" schedulers is "fifo".], [if test "${SCHD_TYPE}" = "cc" -o "${SCHD_TYPE}" = "basl"; then SCHD_CODE="${withval}" else AC_MSG_ERROR([--with-sched-code was used but sched-type was not "c" or "basl".]) fi],[SCHD_CODE=none]) dnl if the scheduler is the C scheduler then the default code is samples/fifo if test "$SCHD_CODE" = none -a "$SCHD_TYPE" = cc; then SCHD_CODE=fifo fi if test "$SCHD_TYPE" = cc -o "$SCHD_TYPE" = basl; then if test "$SCHD_CODE" = none; then AC_MSG_ERROR([Must specify --with-sched-code for C and BASL schedulers.]) fi fi AC_SUBST(SCHD_CODE) AC_ARG_ENABLE(filesync, [ --enable-filesync open files with sync on each write operation. Don't bother enabling this, all it does is slow down TORQUE. This is disabled by default.], [case "${enableval}" in yes) TDISABLEFILESYNC=0; AC_MSG_WARN([--enable-filesync does not actually make for safer writes.]) ;; no) TDISABLEFILESYNC=1 ;; *) AC_MSG_ERROR(--enable-filesync cannot take a value) ;; esac],[TDISABLEFILESYNC=1])dnl AC_DEFINE_UNQUOTED(TDISABLEFILESYNC, ${TDISABLEFILESYNC}, [Define to prevent sync writes]) AC_ARG_ENABLE(plock_daemons, [ --enable-plock-daemons[[=ARG]] enable daemons to lock themselves into memory: logical-or of 1 for pbs_server, 2 for pbs_scheduler, 4 for pbs_mom (no argument means 7 for all three)], [case "${enableval}" in yes) PLOCK_DAEMONS=7 ;; no) PLOCK_DAEMONS=0 ;; *) PLOCK_DAEMONS="${enableval}" ;; esac],[PLOCK_DAEMONS=0]) AC_DEFINE_UNQUOTED(PLOCK_DAEMONS, ${PLOCK_DAEMONS}, [Select which daemons plock themselves, a bit pattern]) AC_ARG_ENABLE(syslog, [ --enable-syslog enable (default) the use of syslog for error reporting], [case "${enableval}" in yes) SYSLOG=1 ; RPM_AC_OPTS="$RPM_AC_OPTS --with syslog" ;; no) SYSLOG=0 ; RPM_AC_OPTS="$RPM_AC_OPTS --without syslog" ;; *) AC_MSG_ERROR(--enable-syslog cannot take a value.) ;; esac],[SYSLOG=1 ; RPM_AC_OPTS="$RPM_AC_OPTS --with syslog"])dnl AC_DEFINE_UNQUOTED(SYSLOG, ${SYSLOG}, [Define to enable syslog]) AM_CONDITIONAL(USING_SYSLOG, [test "$SYSLOG" = "1"]) AC_ARG_ENABLE(shell_pipe, [ --disable-shell-pipe give the job script file as standard input to the shell instead of passing its name via a pipe], [case "${enableval}" in yes) SHELL_INVOKE=1 ;; no) SHELL_INVOKE=0 ;; *) SHELL_INVOKE=0 ;; esac],[SHELL_INVOKE=1]) AC_DEFINE_UNQUOTED(SHELL_INVOKE, ${SHELL_INVOKE}, [set whether job scripts use a pipe]) AC_ARG_WITH(maildomain, [ --with-maildomain=MAILDOMAIN override the default domain for outgoing mail messages, i.e. "user@maildomain". The default maildomain is the hostname where the job was submitted from.], [MAILDOMAIN="${withval}" AC_MSG_WARN([--with-maildomain is depricated. Set mail_domain in qmgr.]) AC_DEFINE_UNQUOTED(TMAILDOMAIN, "${MAILDOMAIN}", [override the default domain for outgoing mail messages])]) AC_ARG_ENABLE(spool, [ --disable-spool if disabled, TORQUE will create output and error files directly in $HOME/.pbs_spool if it exists or in $HOME otherwise. By default, TORQUE will spool files in $TORQUEHOME/spool and copy them to the users home directory when the job completes.], [case "${enableval}" in yes) NO_SPOOL_OUTPUT=0 ; RPM_AC_OPTS="$RPM_AC_OPTS --with spool" ;; no) NO_SPOOL_OUTPUT=1 ; RPM_AC_OPTS="$RPM_AC_OPTS --without spool" ;; *) AC_MSG_ERROR(--enable-spool cannot take a value) ;; esac],[NO_SPOOL_OUTPUT=0 ; RPM_AC_OPTS="$RPM_AC_OPTS --with spool"])dnl AC_DEFINE_UNQUOTED(NO_SPOOL_OUTPUT, ${NO_SPOOL_OUTPUT}, [directly use homedirs instead of $TORQUEHOME/spool]) AC_ARG_ENABLE(shell-use-argv, [ --enable-shell-use-argv enable this to put the job script name on the command line that invokes the shell. Not on by default. Ignores --enable-shell-pipe setting.], [case "${enableval}" in yes) SHELL_USE_ARGV=1 ;; no) SHELL_USE_ARGV=0 ;; *) AC_MSG_ERROR(--enable-shell-use-argv cannot take a value) ;; esac],[SHELL_USE_ARGV=0])dnl AC_DEFINE_UNQUOTED(SHELL_USE_ARGV, ${SHELL_USE_ARGV}, [job script name passed as the shell's arg]) AC_ARG_ENABLE(posixmemlock, [ --disable-posixmemlock disable the moms use of mlockall. Some versions of OSs seem to have buggy POSIX MEMLOCK.], [case "${enableval}" in yes) ;; no) NOPOSIXMEMLOCK=1; AC_DEFINE(NOPOSIXMEMLOCK, 1, [Define to disable mlockall]) ;; *) AC_MSG_ERROR(--enable-posixmemlock cannot take a value) ;; esac])dnl AC_ARG_ENABLE(privports, [ --disable-privports disable the use of privileged ports for authentication. Some versions of OSX have a buggy bind() and cannot bind to privileged ports.], [case "${enableval}" in yes) ;; no) NOPRIVPORTS=1; AC_DEFINE(NOPRIVPORTS, 1, [Define to disable privileged ports]) ;; *) AC_MSG_ERROR(--enable-privports cannot take a value) ;; esac])dnl AC_ARG_ENABLE(daemons, [ --disable-daemons disable the use of background daemons. For Cygwin, disable daemons to run as Windows services], [case "${enableval}" in yes) ;; no) DISABLE_DAEMONS=1; AC_DEFINE(DISABLE_DAEMONS, 1, [Define to disable daemons]) ;; *) AC_MSG_ERROR(--enable-daemons cannot take a value) ;; esac])dnl AC_ARG_ENABLE(mom-checkspool, [ --disable-mom-checkspool Don't check free space on spool directory and set an error], [case "${enableval}" in yes) MOMCHECKLOCALSPOOL=1 ;; no) MOMCHECKLOCALSPOOL=0;; *) AC_MSG_ERROR(--enable-mom-checkspool cannot take a value) ;; esac],[MOMCHECKLOCALSPOOL=1])dnl AC_DEFINE_UNQUOTED(MOMCHECKLOCALSPOOL, ${MOMCHECKLOCALSPOOL}, [Define to error if spool is full on MOM]) AC_ARG_WITH(tmpdir, [ --with-tmpdir=DIR set the tmp directory that pbs_mom will use defaults to "/tmp". This is a Cray-specific feature.], [TMP_DIR="${withval}"], [TMP_DIR="/tmp"]) test "$TMP_DIR" = yes && TMP_DIR="/tmp" AC_DEFINE_UNQUOTED(TMP_DIR, "${TMP_DIR}", [The pathname of the Cray temporary directory for mom]) AC_ARG_ENABLE(force-nodefile, [ --enable-force-nodefile forces creation of nodefile regardless of job submission parameters. Not on by default.], [case "${enableval}" in yes) MOM_FORCENODEFILE=1 ;; no) MOM_FORCENODEFILE=0 ;; *) AC_MSG_ERROR(--enable-force-nodefile cannot take a value) ;; esac],[MOM_FORCENODEFILE=0])dnl AC_DEFINE_UNQUOTED(MOM_FORCENODEFILE, ${MOM_FORCENODEFILE}, [force creation of nodefile]) AC_MSG_CHECKING([if enabling Unix Domain socket support]) AC_ARG_ENABLE(unixsockets, [ --enable-unixsockets enable the use of Unix Domain sockets for authentication.], [case "${enableval}" in yes) ENABLE_UNIX_SOCKETS=yes ;; no) ENABLE_UNIX_SOCKETS=no;; *) AC_MSG_ERROR(--enable-unixsockets cannot take a value) ;; esac])dnl if test "x$ENABLE_UNIX_SOCKETS" = "xyes" ;then AC_DEFINE(ENABLE_UNIX_SOCKETS, 1, [Define to enable unix domain sockets]) fi AC_MSG_RESULT([$ENABLE_UNIX_SOCKETS]) AC_ARG_WITH(trqauthd_sock_dir, [ --with-trqauthd-sock-dir=DIR set trqauthd directory for unix domain socket file defaults to /tmp], [TRQAUTHD_SOCK_DIR="${withval}" ; RPM_AC_OPTS="$RPM_AC_OPTS --define \"torque_auth_sock_dir ${withval}\"" ], [TRQAUTHD_SOCK_DIR="/tmp"]) AC_DEFINE_UNQUOTED(TRQAUTHD_SOCK_DIR, "${TRQAUTHD_SOCK_DIR}", "trqauthd unix domain file") AC_ARG_WITH(server_home, [ --with-server-home=DIR set the server home/spool directory for PBS use defaults to /var/spool/torque], [PBS_SERVER_HOME="${withval}" ; RPM_AC_OPTS="$RPM_AC_OPTS --define \"torque_home ${withval}\"" ], [PBS_SERVER_HOME="/var/spool/torque"]) AC_SUBST(PBS_SERVER_HOME) dnl [PBS_SERVER_HOME="${withval}"], [PBS_SERVER_HOME="$localstatedir/spool/torque"]) AC_ARG_WITH(server_name_file, [ --with-server-name-file=FILE set the file that will contain the name of the default server for clients to use. If this is not an absolute pathname, it will be evaluated relative to the server home directory that either defaults to /usr/spool/torque or is set using the --with-server-home option to configure. If this option is not specified, the default name for this file will be set to "server_name".], [pbs_default_file="${withval}"], [pbs_default_file="server_name"]) case "${pbs_default_file}" in /*) PBS_DEFAULT_FILE="${pbs_default_file}" ;; *) PBS_DEFAULT_FILE="\${PBS_SERVER_HOME}/${pbs_default_file}" ;; esac AC_SUBST(PBS_DEFAULT_FILE) AC_ARG_WITH(tcp_retry_limit, [ --with-tcp-retry-limit=NUMBER set the number of tcp retries. This avoids a rare but potential server hang. When a tcp connection between a mom and the server dies unexpectedly, such as the machine crashing, pbs_server can hang for long periods of time while retrying all possible sockets. This limits those retries.], [TCP_RETRY_LIMIT=${withval}],[TCP_RETRY_LIMIT=0]) AC_DEFINE_UNQUOTED(TCP_RETRY_LIMIT,${TCP_RETRY_LIMIT},[Define to set a max retry limit]) AC_ARG_WITH(reserved_port_start, [ --with-reserved-port-start=NUMBER Set the starting reserved port number to be used. Must be a number greater than 143 and less than 824. Please be careful when setting this, as restricting the number too much may not leave enough privileged ports available to pbs_server, which can potential slow down the server immensely], [RESERVED_PORT_START=${withval}],[RESERVED_PORT_START=144]) dnl Make sure it's a completely numeric string if [[ $(expr "x${RESERVED_PORT_START}" : "x[0-9]*$") -gt 0 ]]; then echo "Setting reserved port to get ports from ${RESERVED_PORT_START} to 1023 inclusive." else echo "Value ${RESERVER_PORT_START} is not permitted for --with-reserved-port-start because it contains non-numeric characters." exit -1 fi dnl Make sure it isn't less than 144 if [[ $RESERVED_PORT_START -lt 144 ]]; then echo "Value ${RESERVED_PORT_START} is not permitted for --with-reserved-port-start because it is less than 144" exit -1 fi dnl Make sure it's less than 824 so that there are at least 200 reserved ports available for the daemons. if [[ $RESERVED_PORT_START -gt 823 ]]; then echo "Value ${RESERVED_PORT_START} is not permitted for --with-reserved-port-start because it is greater than 823 and we need a range of at least 200 possible privileged ports." exit -1 fi AC_DEFINE_UNQUOTED(RESERVED_PORT_START, ${RESERVED_PORT_START},[Define to specify a different reserved port starting point]) AC_ARG_WITH(default_server, [ --with-default-server=HOSTNAME set the name of the computer that clients will access when no machine name is specified as part of the queue name. It defaults to the hostname of the machine on which PBS is being compiled.], [PBS_DEFAULT_SERVER="${withval}" ; RPM_AC_OPTS="$RPM_AC_OPTS --define \"torque_server ${withval}\"" ], [PBS_DEFAULT_SERVER="`uname -n`"]) AC_DEFINE_UNQUOTED(PBS_DEFAULT_SERVER, "${PBS_DEFAULT_SERVER}", [Define to the name of the default PBS server]) AC_SUBST(PBS_DEFAULT_SERVER) AC_ARG_WITH(environ, [ --with-environ=PATH set the path containing the environment variables for the daemons. For SP2 and AIX systems, suggested setting is to /etc/environment. Defaults to the file "pbs_environment" in the server-home. Relative paths are interpreted within the context of the server-home.], [pbs_environ="${withval}"], [pbs_environ="no"]) case "${pbs_environ}" in yes) AC_MSG_ERROR([--with-environ must be given a path]) ;; no) PBS_ENVIRON="\${PBS_SERVER_HOME}/pbs_environment" ;; /*) PBS_ENVIRON="${pbs_environ}" ;; *) PBS_ENVIRON="\${PBS_SERVER_HOME}/${pbs_environ}" ;; esac AC_SUBST(PBS_ENVIRON) AC_ARG_WITH(qstatrc-file, [ --with-qstatrc-file=FILE set the name of the file that qstat will use if there is no ".qstatrc" file in the directory where it is being invoked. Relative path names will be evaluated relative to the server home directory (see above). If this option is not specified, the default name for this file will be set to "qstatrc" (no dot) in the server home directory.], [case "${withval}" in /*) QSTATRC_PATH="${withval}" ;; *) QSTATRC_PATH="${PBS_SERVER_HOME}/${withval}" ;; esac],[QSTATRC_PATH="${PBS_SERVER_HOME}/qstatrc"]) AC_DEFINE_UNQUOTED(QSTATRC_PATH, "${QSTATRC_PATH}", [Define to the path of the qstat init file]) dnl Possibly define default MOM logdir and file suffix AC_ARG_WITH(momlogdir, [ --with-momlogdir use this directory for MOM logs.], AC_DEFINE_UNQUOTED(DEFAULT_MOMLOGDIR,"$with_momlogdir",[Alternate directory for MOM logs]) ) AC_ARG_WITH(momlogsuffix, [ --with-momlogsuffix use this suffix for MOM logs.], AC_DEFINE_UNQUOTED(DEFAULT_MOMLOGSUFFIX,"$with_momlogsuffix",[Alternate suffix for MOM logs]) ) dnl Possibly define server checkpoint directory AC_ARG_WITH(servchkptdir, [ --with-servchkptdir use this directory for Server checkpoint files.], AC_DEFINE_UNQUOTED(SERVER_CHKPTDIR,"$with_servchkptdir",[Directory for Server checkpoint files]) ) dnl Declare which of scp, rcp, or mom_rcp is to be used for file delivery dnl As of TORQUE 2.1.0, default to scp if found, otherwise use the internal mom_rcp AC_ARG_WITH(scp, [ --with-scp use scp instead of mom_rcp (deprecated, use --with-rcp=scp).], [ AC_MSG_WARN([--with-scp is deprecated, use --with-rcp=scp]) AC_PATH_PROG(RCP_PATH, "scp", "error") case "${RCP_PATH}" in error) AC_MSG_ERROR([--with-scp scp not found in path]) ;; *) RCP_PATH="${RCP_PATH}" ;; esac]) AC_ARG_WITH(rcp, [ --with-rcp one of "scp", "rcp", "mom_rcp", or the fullpath of a remote file copy program. scp is the default if found, otherwise mom_rcp is used. Some rcp programs don't always exit with valid error codes in case of failure. mom_rcp is a copy of BSD rcp included with this source that has correct error codes, but it is also old, unmaintained, and doesn't have largefile support. ], [case "$with_rcp" in yes|no) AC_MSG_ERROR([--with-rcp takes an argument]) ;; *) RCP_PATH="$with_rcp" ;; esac]) # if noone requested an rcp prog, use scp if found, or use mom_rcp if test "x$RCP_PATH" = "x" ;then AC_PATH_PROG(RCP_PATH, scp, error) if test "x$RCP_PATH" = "xerror" ;then RCP_PATH=mom_rcp RPM_AC_OPTS="$RPM_AC_OPTS --without scp" else RPM_AC_OPTS="$RPM_AC_OPTS --with scp" fi fi # figure out what was requested and turn that into a full path if necessary build_pbs_rcp=no case "$RCP_PATH" in mom_rcp|pbs_rcp) RCP_PATH="${sbindir}/pbs_rcp"; build_pbs_rcp=yes ;; /*) ;; *) AC_PATH_PROG(RCP_PATH, "$RCP_PATH", error) if test "x$RCP_PATH" = "xerror" ;then AC_MSG_ERROR([requested copy program not found in path]) fi ;; esac # figure out the required args if test "x$RCP_ARGS" = "x" ;then case "$RCP_PATH" in *rcp) RCP_ARGS="-rp"; RSH_PATH=rsh ;; *scp) RCP_ARGS="-rpB"; RSH_PATH=ssh ;; *) RCP_ARGS="-rp"; RSH_PATH=rsh; AC_MSG_WARN([not using rcp or scp, assuming -r]) ;; esac fi AC_MSG_NOTICE([remote file copy program... $RCP_PATH $RCP_ARGS]) AC_SUBST(RCP_PATH) AC_SUBST(RCP_ARGS) AC_SUBST(RSH_PATH) AC_SUBST(build_pbs_rcp) AM_CONDITIONAL(INCLUDE_MOM_RCP, [test "x$build_pbs_rcp" = "xyes"]) dnl find sendmail and add it to defs AC_ARG_WITH(sendmail, [ --with-sendmail[[=FILE]] sendmail executable to use], [SENDMAIL_CMD=$withval], [sendmail_maybe_in="/usr/lib:/usr/sbin:/usr/bin:/etc:/usr/etc:$PATH" AC_PATH_PROGS(SENDMAIL_CMD, sendmail, sendmail, ${sendmail_maybe_in}) ]) case "${SENDMAIL_CMD}" in /*) ;; *) AC_MSG_WARN([emails might not be sent unless ${SENDMAIL_CMD} is found at run-time]) ;; esac AC_DEFINE_UNQUOTED(SENDMAIL_CMD, "${SENDMAIL_CMD}", [full pathname of sendmail]) dnl attempt to find a location to install PAM modules AC_MSG_CHECKING([for PAM install directory]) uname -p | grep 64 > /dev/null if test "X$?" == "X0"; then libsuff=64 fi pammoddir=disabled AC_ARG_WITH(pam, [ --with-pam=DIR Directory that holds the system PAM modules. On Linux, 'yes' uses the default /lib(64)/security.], [pammoddir=$withval]) case "$pammoddir" in disabled) ;; no) pammoddir=disabled ;; yes) case "${PBS_MACH}" in linux) pammoddir=/lib$libsuff/security;; *) AC_MSG_ERROR([--with-pam takes a full path to a directory]);; esac ;; /*) ;; *) AC_MSG_ERROR([--with-pam takes a full path to a directory $pammoddir]);; esac if test "x$pammoddir" = "xdisabled" ; then RPM_AC_OPTS="$RPM_AC_OPTS --without pam" else RPM_AC_OPTS="$RPM_AC_OPTS --with pam" fi AC_MSG_RESULT([$pammoddir]) AC_SUBST(pammoddir) AM_CONDITIONAL(INCLUDE_PAM, [test "x$pammoddir" != "xdisabled"]) dnl find default xauth run-time path AC_ARG_WITH(xauth, [ --with-xauth=PATH Specify path to xauth program ], [ if test "x$withval" != "xno" ; then xauth_path=$withval RPM_AC_OPTS="$RPM_AC_OPTS --define \"xauth_path ${withval}\"" fi ], [ TestPath="$PATH" TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin" TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin" TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin/X11" TestPath="${TestPath}${PATH_SEPARATOR}/usr/X11R6/bin" TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin" AC_PATH_PROG(xauth_path, xauth, , $TestPath) if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then xauth_path="/usr/openwin/bin/xauth" fi ] ) if test -z "$xauth_path" ; then xauth_path="/usr/X11R6/bin/xauth" fi AC_DEFINE_UNQUOTED(XAUTH_PATH, "${xauth_path}", [Define to the path of xauth]) dnl Readline AC_ARG_WITH(readline, [ --without-readline do not include readline support (default: included if found)], [HAVE_READLINE="${withval}"], [HAVE_READLINE="default"]) case "$HAVE_READLINE" in yes|no) ;; default) case $PBS_MACH in aix5|darwin) HAVE_READLINE="no";; *) HAVE_READLINE="yes";; esac ;; *) AC_MSG_ERROR([--with-readline only takes "yes" or "no" as arguments]) ;; esac dnl modulefiles AC_MSG_CHECKING([whether to install modulefiles]) AC_ARG_WITH(modulefiles, AC_HELP_STRING([--with-modulefiles@<:@=DIR@:>@], [use modulefiles in specified directory [[/etc/modulefiles]]]), [], [with_modulefiles="no"]) if test "$with_modulefiles" != 'no'; then if test "$with_modulefiles" = 'yes'; then MODULEFILES_DIR="/etc/modulefiles" else MODULEFILES_DIR="$with_modulefiles" fi else MODULEFILES_DIR=no fi AM_CONDITIONAL(INSTALL_MODULEFILES, [test "x$MODULEFILES_DIR" != "xno"]) AC_SUBST(MODULEFILES_DIR) AC_MSG_RESULT($MODULEFILES_DIR) dnl dnl ###################################################################### dnl Check for libraries dnl dnl nsl is needed on some systems but duplicates libc.a on others (O2000s) AC_CHECK_FUNC(xdr_int, , AC_CHECK_LIB(nsl, xdr_int)) AC_CHECK_FUNC(ruserok, , AC_CHECK_LIB(socket, ruserok)) AC_CHECK_FUNC(hstrerror, , AC_CHECK_LIB(resolv, hstrerror)) dnl Readline if test "$HAVE_READLINE" = "yes" ; then AC_CHECK_LIB(ncurses, initscr, READLINE_LIBS="-lncurses") AC_CHECK_LIB(readline, rl_callback_handler_install, [READLINE_LIBS="$READLINE_LIBS -lreadline"], [HAVE_READLINE="no"], [$READLINE_LIBS]) fi AC_SUBST(READLINE_LIBS) if test "$ac_cv_header_readline_readline_h" = "no" ; then HAVE_READLINE="no" fi if test "$HAVE_READLINE" = "yes" ; then AC_DEFINE(HAVE_READLINE, 1, [include readline support]) else AC_MSG_WARN([readline support is disabled]) fi dnl dnl ###################################################################### dnl Check for typedefs, structures and such dnl dnl under some OSs h_errno is not visible AC_DECL_H_ERRNO dnl see if we need to include sys/select.h to get FD_SET and friends AC_DECL_FD_SET_SYS_SELECT_H dnl Check the sizes of various types for DIS dnl The cross-compiling sizes are there to shut autoconf up dnl and are chosen to all be different so that dis.h uses dnl specific routines for each type instead of substituting in the dnl unlikely (and unsupported) event of cross-compilation. AC_CHECK_SIZEOF(int, 20) AC_CHECK_SIZEOF(long, 21) AC_CHECK_SIZEOF(float, 22) AC_CHECK_SIZEOF(double, 23) AC_CHECK_SIZEOF(long double, 24) AC_CHECK_SIZEOF(short, 25) AC_CHECK_SIZEOF(unsigned, 26) AC_CHECK_SIZEOF(unsigned int, 27) AC_CHECK_SIZEOF(unsigned short, 28) AC_CHECK_SIZEOF(unsigned char, 29) AC_CHECK_SIZEOF(unsigned long, 30) AC_CHECK_SIZEOF(signed char, 31) AC_C_CHAR_UNSIGNED AC_CHECK_TYPE([socklen_t], [AC_DEFINE_UNQUOTED([torque_socklen_t],[socklen_t],[type to use in place of socklen_t])], [TAC_SOCKLEN_EQUIV([torque_socklen_t])]) TAC_PAM_GET_USER_2ND_ARG if test "$tac_pam_get_user_2nd_arg" = "none" && test "$pammoddir" != "disabled" ;then AC_MSG_ERROR([Unable to compile PAM bits, missing pam-devel?]) fi dnl dnl ###################################################################### dnl Check for functions dnl dnl under HP-UX seteuid does not exist, look for setresuid instead AC_CHECK_FUNCS(seteuid setresuid,break) AC_CHECK_FUNCS(setegid setresgid,break) AC_CHECK_FUNCS([gettimeofday rresvport bindresvport wordexp poll getaddrinfo]) AC_FUNC_GETGROUPS dnl see if atexit() exists, if not check for on_exit(), if that fails, panic AC_CHECK_FUNCS(atexit on_exit, [ { found_an_exit=yes; break; } ]) if test "$found_an_exit" != yes; then AC_MSG_ERROR([Must have atexit() or on_exit()]) fi AC_CHECK_FUNC(ntohl, [ :], AC_MSG_CHECKING([for ntohl in arpa/inet.h]) torque_cv_ntohl_needs_arpa_inet_h="no" AC_TRY_COMPILE([ #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif ],[exit(ntohl(0));], [torque_cv_ntohl_needs_arpa_inet_h="yes" AC_DEFINE_UNQUOTED([NTOHL_NEEDS_ARPA_INET_H],1,[Define if ntohl() is declared in arpa/inet.h])]) AC_MSG_RESULT($torque_cv_ntohl_needs_arpa_inet_h) ) TAC_TCLTK dnl dnl ###################################################################### dnl Checks needed to build DRMAA dnl if test "$build_drmaa" = "yes" ;then gccwarnings=no AC_MSG_NOTICE([Configuring DRMAA ...]) #AC_PATH_PROG(GPERF, "gperf") AX_PROG_DOT AC_PATH_PROG(DOXYGEN, "doxygen", "none") AC_C_BIGENDIAN_CROSS ACX_PTHREAD(,[AC_MSG_ERROR([POSIX threads library is required by DRMAA.])]) AC_CHECK_HEADERS([stddef.h limits.h stdint.h inttypes.h]) AC_HEADER_STDBOOL #AC_FUNC_MALLOC #AC_FUNC_REALLOC AC_FUNC_STRERROR_R AC_FUNC_STRFTIME AC_CHECK_FUNCS([getcwd strchr strdup strerror mkstemp fstat strlcpy asprintf vasprintf]) AH_TEMPLATE([HAVE_VA_COPY], [Define to 1 if you have the va_copy function.]) AC_MSG_CHECKING([for va_copy]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[va_list a, b; va_copy(a, b);]])],[ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_VA_COPY]) ],[ AC_MSG_RESULT([no]) ],[ AC_MSG_RESULT([no]) ]) AH_TEMPLATE([HAVE___VA_COPY], [Define to 1 if you have the __va_copy function.]) AC_MSG_CHECKING([for __va_copy]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[va_list a, b; __va_copy(a, b);]])],[ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE___VA_COPY]) AH_BOTTOM([ #ifndef HAVE_VA_COPY # define va_copy(a,b) __va_copy(a,b) #endif ]) ],[ AC_MSG_RESULT([no]) ], [ AC_MSG_RESULT([no]) ]) build_drmaa_docs=yes RPM_AC_OPTS="$RPM_AC_OPTS --with drmaa" else DOXYGEN=none build_drmaa_docs=no RPM_AC_OPTS="$RPM_AC_OPTS --without drmaa" fi AM_CONDITIONAL(DRMAA_BUILD, [test "x$build_drmaa" == "xyes"]) AM_CONDITIONAL(DRMAA_DOCS, [test "$DOXYGEN" != "none"]) AC_SUBST(build_drmaa_docs) drmaadocdir=$datadir/doc/$PACKAGE-drmaa AC_SUBST(drmaadocdir) if test "x$gccwarnings" = "xyes" ;then AX_CFLAGS_GCC_OPTION([-W -Wall -Wextra -Wno-unused-parameter -Wno-long-long -Wpedantic -Werror -Wno-sign-compare]) AX_CXXFLAGS_GCC_OPTION([-W -Wall -Wextra -Wno-unused-parameter -Wno-long-long -Wpedantic -Werror -Wno-sign-compare]) fi dnl dnl ###################################################################### dnl Output dnl AC_CREATE_GENERIC_CONFIG([pbs],[-ltorque]) # Cause make rpm to default to use the prefix resulting from configure RPM_AC_OPTS="--define '_prefix ${prefix}'$RPM_AC_OPTS" AC_SUBST(RPM_AC_OPTS) AC_SUBST(ALPS_LIBS) dnl these are quoted, and this removes them SPEC_NAME=$PACKAGE_TARNAME SPEC_VERSION=$PACKAGE_VERSION AC_SUBST(SPEC_NAME) AC_SUBST(SPEC_VERSION) dnl Head and bottom for the config-file AH_TOP([#ifndef _PBS_CONFIG_H_ #define _PBS_CONFIG_H_]) AH_BOTTOM([ #ifndef __GNUC__ # define __attribute__ /* nothing */ #endif ]) AH_BOTTOM([ #endif /* _PBS_CONFIG_H_ */ ]) dnl Include the Cplant Fault Recovery Patch jugglery pbs_build_host=`uname -n` pbs_build_date=`date` pbs_build_dir=`pwd` pbs_source_dir=`cd $srcdir && pwd` pbs_config_args=$@ AC_DEFINE_UNQUOTED([PBS_BUILD_HOST],"${pbs_build_host}",[Define to the build hostname]) AC_DEFINE_UNQUOTED([PBS_BUILD_DATE],"${pbs_build_date}",[Define to the build date]) AC_DEFINE_UNQUOTED([PBS_BUILD_DIR],"${pbs_build_dir}",[Define to the build directory]) AC_DEFINE_UNQUOTED([PBS_SOURCE_DIR],"${pbs_source_dir}",[Define to the source directory]) AC_DEFINE_UNQUOTED([PBS_BUILD_USER],"${USER}",[Define to the building username]) AC_DEFINE_UNQUOTED([PBS_INSTALL_DIR],"${prefix}",[Define to the install directory]) AC_DEFINE_UNQUOTED([PBS_CONFIG_ARGS],"${ac_configure_args}",[Define to the install directory]) AC_DEFINE_UNQUOTED([PBS_CFLAGS],"${CFLAGS}",[Define to the install directory]) AC_CONFIG_FILES([torque.spec:buildutils/torque.spec.in]) #The output files are alphabetically ordered by src then check test files AC_OUTPUT(buildutils/pbs_mkdirs buildutils/self-extract-head-sh buildutils/modulefiles buildutils/modulefiles.vers Makefile contrib/blcr/Makefile contrib/init.d/Makefile contrib/systemd/Makefile doc/Makefile doc/man1/Makefile doc/man3/Makefile doc/man7/Makefile doc/man8/Makefile src/Makefile src/cmds/Makefile src/daemon_client/Makefile src/gui/Makefile src/gui/Ccode/Makefile src/include/Makefile src/lib/Makefile src/lib/Libattr/Makefile src/lib/Libcmds/Makefile src/lib/Libcsv/Makefile src/lib/Libdis/Makefile src/lib/Libifl/Makefile src/lib/Liblog/Makefile src/lib/Libnet/Makefile src/lib/Libpbs/Makefile src/lib/Libsite/Makefile src/lib/Libutils/Makefile src/mom_rcp/Makefile src/momctl/Makefile src/resmom/Makefile src/resmom/cygwin/Makefile src/resmom/darwin/Makefile src/resmom/linux/Makefile src/resmom/solaris7/Makefile src/scheduler.basl/Makefile src/scheduler.cc/Makefile src/scheduler.cc/samples/Makefile src/scheduler.cc/samples/cray_t3e/Makefile src/scheduler.cc/samples/dec_cluster/Makefile src/scheduler.cc/samples/fifo/Makefile src/scheduler.cc/samples/msic_cluster/Makefile src/scheduler.cc/samples/sgi_origin/Makefile src/scheduler.cc/samples/umn_cluster/Makefile src/scheduler.tcl/Makefile src/server/Makefile src/tools/Makefile src/tools/xpbsmon/Makefile src/drmaa/Makefile src/drmaa/src/Makefile src/drmaa/Doxyfile src/pam/Makefile ) echo echo "Building components: server=$build_server mom=$build_mom clients=$build_clients gui=$build_gui drmaa=$build_drmaa pam=`test "x$pammoddir" = "xdisabled" && echo no || echo yes`" echo "PBS Machine type : $PBS_MACH" echo "Remote copy : $RCP_PATH $RCP_ARGS" echo "PBS home : $PBS_SERVER_HOME" echo "Default server : $PBS_DEFAULT_SERVER" echo echo "Unix Domain sockets : $ENABLE_UNIX_SOCKETS" echo "Linux cpusets : $build_l26_cpuset" echo "Tcl : `test "$TCL" = "1" && echo $MY_TCL_INCS $MY_TCL_LIBS || echo disabled`" echo "Tk : `test "$TK" = "1" && echo $MY_TCLTK_INCS $MY_TCLTK_LIBS || echo disabled`" echo "Authentication : $AUTH_TYPE" echo if test "x$gccwarnings" = "xyes" ;then AC_MSG_WARN([This compilation has strict compiler options enabled that cause the build to fail if any compiler warnings are emitted. If this build fails because of a harmless warning, please report the problem to $PACKAGE_BUGREPORT and run configure again without --enable-gcc-warnings.]) echo fi if test "${maxint_ids}" = "1" ; then AC_MSG_WARN([You are enabling job ids to go up to the maximum value of an int on your system. Depending on the size of your system, this may make existing jobs impossible to upgrade. BE CERTAIN BEFORE PROCEEDING!]) fi echo "Ready for '${MAKE-make}'."