#!/bin/sh #set -x #//%LICENSE//////////////////////////////////////////////////////////////// #// #// Licensed to The Open Group (TOG) under one or more contributor license #// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with #// this work for additional information regarding copyright ownership. #// Each contributor licenses this file to you under the OpenPegasus Open #// Source License; you may not use this file except in compliance with the #// License. #// #// Permission is hereby granted, free of charge, to any person obtaining a #// copy of this software and associated documentation files (the "Software"), #// to deal in the Software without restriction, including without limitation #// the rights to use, copy, modify, merge, publish, distribute, sublicense, #// and/or sell copies of the Software, and to permit persons to whom the #// Software is furnished to do so, subject to the following conditions: #// #// The above copyright notice and this permission notice shall be included #// in all copies or substantial portions of the Software. #// #// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS #// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. #// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY #// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, #// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE #// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #// #////////////////////////////////////////////////////////////////////////// ##============================================================================== ## ## Check for existence of pegasus config.mak. If this does not exist, it means ## that the distribution is incomplete or that the configure file has been run ## from the wrong directory. ## ##============================================================================== tiny=0 prefix="" test_option=0 disable_tests=0 disable_tests=0 interop_name="" enable_pertinst=0 dis_wsman=0 config=mak/config.mak if [ ! -f "$config" ]; then echo "$0: Error: ./configure must be run from root of Pegasus distribution." echo exit 1 fi ##============================================================================== ## ## Collection command line options. ## ##============================================================================== help= for opt do optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` case $opt in -h | --help) help=1 ;; --prefix=*) prefix=$optarg ;; --test) test_option=1 ;; --tiny) tiny=1 disable_trace=1 disable_tests=1 interop_name=interop enable_perinst=1 ;; --flavor=*) flavor=$optarg ;; --disable-wsman) dis_wsman=1 ;; *) echo "$0: unknown option: $opt" exit 1 ;; esac done ##============================================================================== ## ## Print help message if --help given on command line. ## ##============================================================================== if [ "$help" = "1" ]; then cat</dev/null` || machine=unknown system=`(uname -s) 2>/dev/null` || system=unknown token="$machine:$system" case "$token" in i686:Linux) platform=LINUX_IX86_GNU libbase=lib ;; x86_64:Linux) platform=LINUX_X86_64_GNU libbase=lib64 ;; sun*:SunOS) platform=SOLARIS_SPARC_64_CC libbase=lib/64 ;; i86pc:SunOS) platform=SOLARIS_X86_64_CC libbase=lib/64 ;; ia64:HP-UX) platform=HPUX_IA64_ACC libbase=lib/64 ;; 9000/800:HP-UX) platform=HPUX_PARISC_ACC libbase=lib ;; ia64:Linux) platform=LINUX_IA64_GNU libbase=lib/64 ;; ppc:Linux) platform=LINUX_PPC_GNU libbase=lib ;; ppc64:Linux) platform=LINUX_PPC64_GNU libbase=lib/64 ;; s390x:Linux) platform=LINUX_ZSERIES64_GNU libbase=lib/64 ;; s390:Linux) platform=LINUX_ZSERIES_GNU libbase=lib/64 ;; *) unresolved=1 ;; esac if [ "unresolved" = "1" ]; then Machine=`(Uname -m) 2>/dev/null`||Machine=unknown System=`(Uname -s) 2>/dev/null`||System=unknown Token="$Machine:$System" case "$Token" in alpha:VMS) platform=VMS_ALPHA_DECCXX libbase=lib ;; IA64:OpenVMS) platform=VMS_IA64_DECCXX libbase=lib/64 ;; *) echo "$0: Failed to guess platform" echo " machine=$machine" echo " system=$system" exit 1 ;; esac fi fi ##============================================================================== ## ## Resolve default directory names. ## ##============================================================================== # --prefix: if [ -z "$prefix" ]; then prefix=`pwd` fi # --bindir: if [ -z "$bindir" ]; then bindir=$prefix/bin fi # --sbindir: if [ -z "$sbindir" ]; then sbindir=$prefix/sbin fi # --libdir: if [ -z "$libdir" ]; then libdir=$prefix/$libbase fi # --includedir: if [ -z "$includedir" ]; then includedir=$prefix/include fi if [ -z "$with_pam" ]; then with_pam=/etc/pam.d fi ##============================================================================= ## ##Check for Pre-Requsite ## ##============================================================================ path="$PATH" IFS=":" ccYes=0 missing=0 cmdlist="cc:gcc:g++:make" for cc in $cmdlist do echo "checking for $cc" for i in $path do if test -f $i/$cc; then ccYes=1 break fi done if [ "$ccYes" = "1" ]; then echo "$cc :yes" else echo "$cc :no" missing=1 break fi done if [ "missing" = "1" ]; then echo "$0: missing dependency $cc" exit 1; fi ##============================================================================== ## ## Detect openssl. ## ##============================================================================== enable_ssl=0 with_ssl="" if [ "$tiny" != "1" ] ;then sslcmd="openssl" sslYes=0 echo "checking for $sslcmd" for i in $path do if test -f $i/$sslcmd; then sslYes=1 withssl=$i break fi done if [ "$sslYes" = "1" ]; then echo "ssl: Yes = $withssl/$sslcmd" with_ssl=${withssl%/*} else echo "ssl: No" fi if [ ! -z "$with_ssl" ]; then if [ ! -d "$with_ssl" ]; then echo "$0: Error: No such directory: --with-ssl=$with_ssl" exit 1; fi if [ ! -f "$with_ssl/include/openssl/ssl.h" ]; then echo "$0: missing dependency: \$with_ssl/include/openssl/ssl.h" missing=1 fi if [ ! -f "$with_ssl/$libbase/libssl.so" ]; then echo "$0: missing dependency: \$with_ssl/$libbase/libssl.so" missing=1 fi if [ "$missing" = "1" ]; then echo "$0: where --with-ssl=$with_ssl" unset with_ssl else enable_ssl=1 fi fi fi ##============================================================================== ## ## Detect openslp. ## Note that if openslp is not found it should use pegasus slp. ## ##============================================================================== enable_slp=0 with_openslp="" enable_openslp=0 if [ "$tiny" != "1" ] ;then slpcmd="slptool" slpYes=0 echo "checking for openslp" for i in $path do if test -f $i/$slpcmd; then slpYes=1 withslp=$i break fi done if [ "$slpYes" = "1" ]; then echo "slp: Yes = $withslp/$slpcmd" with_openslp=${withslp%/*} else echo "slp: No" fi if [ ! -z "$with_openslp" ]; then if [ ! -d "$with_openslp" ]; then echo "$0: Error: No such directory: --with-openslp=$with_openslp" exit 1; fi if [ ! -f "$with_openslp/include/slp.h" ]; then echo "$0: missing dependency: \$with_openslp/include/slp.h" missing=1 fi if [ ! -f "$with_openslp/$libbase/libslp.so" ]; then echo "$0: missing dependency: \$with_openslp/$libbase/libslp.so" missing=1 fi if [ "$missing" = "1" ]; then echo "$0: where --with-openslp=$with_openslp" enable_slp=1 else enable_openslp=1 fi fi fi ##============================================================================== ## ## Detect sqlite. ## ##============================================================================== enable_sql=0 if [ "$tiny" != "1" ] ;then sqlcmd="sqlite3" sqlYes=0 echo "checking for sql" for i in $path do if test -f $i/$sqlcmd; then sqlYes=1 withsql=$i break fi done if [ "$sqlYes" = "1" ]; then echo "sql: Yes = $withsql/$sqlcmd" with_sql=${withsql%/*} else echo "sql: No" fi if [ ! -z "$with_sql" ]; then if [ ! -d "$with_sql" ]; then echo "$0: Error: No such directory: $with_sql" exit 1; fi if [ ! -f "$with_sql/lib64/libsqlite3.so" ]; then echo "$0: missing dependency: \$with_sql/lib64/libsqlite3.so" missing=1 fi if [ ! -f "$with_sql/include/sqlite3.h" ]; then echo "$0:missing dependency :\$with_sql/include/sqlite3.h" missing=1 fi if [ "$missing" = "1" ]; then echo "$0: sql not installed properly at $with_sql" else enable_sql=1 fi fi fi ##============================================================================== ## ## Detect net-snmp. ## ##============================================================================== enable_snmp=0 if [ "$tiny" != "1" ]; then snmpcmd="net-snmp-config" snmpYes=0 echo "checking for net-snmp" for i in $path do if test -f $i/$snmpcmd; then snmpYes=1 withsnmp=$i break fi done if [ "$snmpYes" = "1" ]; then echo "snmp: Yes = $withsnmp/$snmpcmd" with_snmp=${withsnmp%/*} else echo "snmp: No" fi if [ ! -z "$with_snmp" ]; then if [ ! -d "$with_snmp" ]; then echo "$0: Error: No such directory: $with_snmp" exit 1; fi if [ ! -f "$with_snmp/lib64/libnetsnmp.so" ]; then echo "$0: missing dependency: " missing=1 fi if [ "$missing" = "1" ]; then echo "$0: snmp not installed properly at $with_snmp" else enable_snmp=1 fi fi fi ##============================================================================= ## ##Detect icu ( Currently supported till 3.6) ## ##============================================================================= supporticu=0 if [ "$tiny" != "1" ] ;then icucmd="icu-config" gencmd="genrb" icuYes=0 echo "checking for icu" for i in $path do if test -f $i/$icucmd ;then if test -f $i/$gencmd ; then icuYes=1 withicu=$i break fi fi done if [ "$icuYes" = "1" ]; then echo "icu: Yes = $withicu/$icucmd" with_icu=${withicu%/*} else echo "icu: No" fi if [ "$icuYes" = "1" ]; then icuversion=$(icu-config --version) echo $icuversion IFS='.' op=0 for i in $icuversion do if [ "$op" = "0" ]; then icumajor=$i fi if [ "$op" = "1" ]; then icuminor=$i fi if [ "$op" -gt "1" ]; then break fi op=$((op+1)) done IFS='@@@' supporticu=0 if [ "$icumajor" -le "3" -a "$icuminor" -le "6" ]; then supporticu=1 fi if [ "$supporticu" = "1" ]; then if test -f $with_icu/$libbase/libicul18n.so; then echo " missing dependency " missing=1 supporticu=0 fi fi fi fi ##============================================================================= ## ##Detect libz ## ##============================================================================= libzpath=/usr enable_libz=1 if [ ! -f "$libzpath/$libbase/libz.so" ]; then echo " libz not found" enable_libz=0 fi if [ ! -f "$libzpath/include/zlib.h" ]; then echo " libz not found" enable_libz=0 fi if [ "$libbase" = "lib64" ]; then enable_32bit=1 fi ##============================================================================== ## ## These options (if non-empty) must denote absolute directory names. ## ##============================================================================== for i in \ prefix \ bindir \ sbindir \ libdir \ includedir \ datadir do eval v=$`echo $i` case $v in /* | "") ;; *) echo "$0: Error: Must be an absolute directory name: --$i=$v" exit 1; ;; esac done if [ "$tiny" != "1" ] ;then for i in \ with_ssl \ with_pam do eval v=$`echo $i` case $v in /* | "") ;; *) echo "$0: Error: Must be an absolute directory name: --$i=$v" exit 1; ;; esac done fi ##============================================================================== ## ## Check whether the test user will be able to access pegasus home. ## ##============================================================================== if [ "$test_option" = "-1" ] ; then with_test_user=guest with_test_user_pass=guest uid=`id -u` cwd=`/bin/pwd` if [ "$uid" = "0" -a "$disable_tests" != "1" ]; then if [ "$enable_pam" = "1" -o "$enable_pam_standalone" = "1" ]; then su $with_test_user -c "/bin/true" if [ "$?" != "0" ]; then echo "$0: The test user account ($with_test_user) does not exist on this system. Please create a test user with this name or designate an existing one with the --with-test-user option." exit 1 fi su $with_test_user -c "cd $cwd 2> /dev/null" if [ "$?" != "0" ]; then echo "$0: The test user account ($with_test_user) has insufficient privileges to access the pegasus root directory ($cwd), which will cause the user-context tests to fail. Please configure from a different directory." exit 1 fi else echo "Warning: Using --with-test-user without --enable_pam or --enable-pam-standalone" fi fi fi ##============================================================================== ## ## Detect pam ## ##============================================================================== enable_pam=0 if [ "$tiny" != "1" ] ;then pamcmd="pam_console_apply" pamYes=0 IFS=':' echo "checking for pam" for i in $path do if test -f $i/$pamcmd; then pamYes=1 withpam=$i break fi done if [ "$pamYes" = "1" ]; then echo "pam: Yes = $withpam/$pamcmd" with_pam=${withpam%/*} if [ "$with_pam" = "" ]; then with_pam=/ fi else echo "pam: No" fi if [ ! -z "$with_pam" ] then if [ ! -f "/usr/include/security/pam_appl.h" -a \ ! -f "/usr/local/include/security/pam_appl.h" ] then echo "$0: is missing (required by --enable_pam)" exit 1 else enable_pam=1 fi fi fi ##============================================================================== ## ## Create options.mak ## ##============================================================================== options=options.mak rm -f $options echo "# This file was generated by configure." >> $options echo "# ./configure $*" >> $options PEGASUS_HOME=$prefix PEGASUS_ROOT=$prefix PEGASUS_PLATFORM=$platform echo "export ROOT=$prefix" >> $options #echo "export PATH=$PATH:$cwd/$platform/bin" >> $options #echo "export LD_LIBRARY_PATH=$cwd/$platform/lib:$libdir" >> $options echo "export PEGASUS_PLATFORM=$platform" >> $options echo "export PEGASUS_ROOT=$prefix" >> $options echo "export PEGASUS_HOME=$prefix" >> $options if [ "$tiny" != "1" ]; then enable_debug=1 interop_name=root/PG_InterOp echo "export PEGASUS_ENABLE_AUDIT_LOGGER=true" >> $options echo "export PEGASUS_ENABLE_DMTF_INDICATION_PROFILE_SUPPORT=true" >> $options echo "export PEGASUS_ENABLE_EMAIL_HANDLER=true" >> $options echo "export PEGASUS_ENABLE_INDICATION_COUNT=true" >> $options echo "export PEGASUS_ENABLE_INTEROP_PROVIDER=true" >> $options if [ "$dis_wsman" != "1" ]; then echo "export PEGASUS_ENABLE_PROTOCOL_WSMAN=true" >> $options fi echo "export PEGASUS_ENABLE_SYSTEM_LOG_HANDLER=true" >> $options echo "export PEGASUS_ENABLE_USERGROUP_AUTHORIZATION=true" >> $options #echo "export PEGASUS_ENABLE_PRIVILEGE_SEPARATION=true" >>$options fi if [ "$disable_oop" = "1" ] then echo "export PEGASUS_DEFAULT_ENABLE_OOP=false" >> $options echo "export PEGASUS_DISABLE_PROV_USERCTXT=1" >> $options echo "export PEGASUS_DISABLE_PRIVILEGED_TESTS=true" >> $options fi echo "export PEGASUS_ENABLE_CQL=true" >> $options echo "export PEGASUS_ENABLE_WQL=true" >> $options if [ "$disable_ipv6" = "1" ]; then echo "export PEGASUS_ENABLE_IPV6=false" >> $options else echo "export PEGASUS_ENABLE_IPV6=true" >> $options fi echo "export PEGASUS_INTEROP_NAMESPACE=$interop_name" >> $options if [ "$disable_trace" = "1" ]; then echo "export PEGASUS_REMOVE_TRACE=1" >> $options fi if [ "$disable_tests" = "1" ]; then echo "export PEGASUS_SKIP_MOST_TEST_DIRS=true" >> $options fi if [ "$enable_perinst" = "1" ]; then echo "export PEGASUS_DISABLE_PERFINST=true" >> $options echo "export PEGASUS_INDICATION_PERFINST=true" >> $options fi if [ "$enable_debug" = 1 ] then echo "export PEGASUS_DEBUG=1" >> $options fi if [ "$enable_mrr_generation" = 1 ] then echo "export PEGASUS_ENABLE_MRR_GENERATION=1" >> $options fi if [ "$enable_mrr" = 1 ] then echo "export PEGASUS_ENABLE_MRR=1" >> $options fi if [ "$enable_pam" = "1" ]; then echo "export PEGASUS_PAM_AUTHENTICATION=true" >> $options echo "export PEGASUS_USE_PAM_STANDALONE_PROC=false" >> $options \cp -f $PEGASUS_ROOT/rpm/wbem /etc/pam.d chmod 0644 /etc/pam.d/wbem fi if [ "$enable_pam_standalone" = "1" ]; then echo "export PEGASUS_PAM_AUTHENTICATION=true" >> $options echo "export PEGASUS_USE_PAM_STANDALONE_PROC=true" >> $options \cp -f $PEGASUS_ROOT/rpm/wbem /etc/pam.d chmod 0644 /etc/pam.d/wbem fi if [ "$enable_binary_repository" = "1" ]; then echo "export PEGASUS_REPOSITORY_MODE=BIN" >> $options fi if [ "$enable_libz" = "1" ]; then echo "export PEGASUS_ENABLE_COMPRESSED_REPOSITORY=1" >> $options fi if [ "$enable_ssl" = "1" ]; then echo "export PEGASUS_HAS_SSL=true" >> $options echo "export PEGASUS_ENABLE_SSL_CRL_VERIFICATION=true" >> $options fi if [ ! -z "$with_ssl" ]; then echo "export OPENSSL_HOME=$with_ssl" >> $options fi if [ "$enable_slp" = "1" ]; then echo "export PEGASUS_ENABLE_SLP=true" >> $options fi if [ "$enable_sql" = "1" ]; then echo "export PEGASUS_USE_SQLITE_REPOSITORY=true" >> $options echo "export SQLITE_HOME=$with_sql">> $options fi if [ "$enable_snmp" = "1" ]; then echo "export PEGASUS_ENABLE_NET_SNMPV3=true" >> $options echo "export PEGASUS_USE_NET_SNMP=true" >> $options fi if [ "$enable_openslp" = "1" ]; then echo "export PEGASUS_ENABLE_SLP=true" >> $options echo "export PEGASUS_USE_EXTERNAL_SLP=openslp" >> $options fi #if [ ! -z "$with_external_slp" ]; then # echo "export PEGASUS_ENABLE_SLP=true" >> $options # echo "export PEGASUS_USE_EXTERNAL_SLP=$with_external_slp" >> $options #fi if [ ! -z "$with_external_slp_dir" ]; then echo "export PEGASUS_EXTERNAL_SLP_HOME=$with_external_slp_dir" >> $options fi if [ ! -z "$with_openslp" ]; then echo "export PEGASUS_EXTERNAL_SLP_HOME=$with_openslp" >> $options fi if [ "$disable_cmpi" != "1" ]; then echo "export PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=true" >> $options fi if [ ! -z "$flavor" ]; then echo "export PEGASUS_FLAVOR=tog">>$options fi if [ "$supporticu" = "1" ]; then echo "export PEGASUS_HAS_MESSAGES=true">>$options echo "export PEGASUS_HAS_ICU=true">>$options echo "export PEGASUS_USE_DEFAULT_MESSAGES=true">>$options # echo "export ICU_INSTALL=$with_icu">>$options fi if [ "$enable_32bit" = "1" ]; then #echo "export PEGASUS_INTERNAL_ENABLE_32BIT_PROVIDER_SUPPORT=true" >> $options echo "export PEGASUS_PLATFORM_FOR_32BIT_PROVIDER_SUPPORT=$platform" >> $options fi if [ "$test_option" = "1" ]; then echo "export PEGASUS_CCOVER=true" >> $options echo "export PEGASUS_DISABLE_PRIVILEGED_TESTS=false" >> $options echo "export PEGASUS_ENABLE_GCOV=true" >> $options echo "export PEGASUS_ENABLE_SORTED_DIFF=true" >> $options echo "export PEGASUS_TEST_ENABLE_DEBUG_TRACE=true" >> $options echo "export PEGASUS_TEST_ISGROUP_GROUP=root" >> $options echo "export PEGASUS_TEST_ISGROUP_USER_FAILURE=test" >> $options echo "export PEGASUS_TEST_ISGROUP_USER_SUCCESS=root" >> $options echo "export PEGASUS_TEST_SDK=true" >> $options echo "export PEGASUS_TEST_USER_DEFINED=false" >> $options echo "#export PEGASUS_TEST_USER_ID=" >> $options echo "#export PEGASUS_TEST_USER_PASS=" >> $options echo "export PEGASUS_TEST_VALGRIND_LOG_DIR=." >> $options echo "export PEGASUS_OVERRIDE_SSL_CERT_VERIFICATION_RESULT=true" >> $options echo "export PEGASUS_TMP=." >> $options echo "export PLATFORM_CORE_PATTERN=true" >> $options fi echo "export PATH=$bindir:$PATH" >> $options echo "export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH" >> $options IFS="@@@" export PATH=$bindir:$PATH export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH export PEGASUS_HOME PEGASUS_ROOT PEGASUS_PLATFORM echo "created $options" ## if the output file exists, make a backup if [ -f $options ]; then echo backup $options to $options.bak cp -f $options $options.bak fi . ./$options ##============================================================================== ## ## Create GNUmakefile ## ##============================================================================== cat > GNUmakefile << END include options.mak export PATH := \$(PATH):\$(PEGASUS_HOME)/bin export LD_LIBRARY_PATH := \$(LD_LIBRARY_PATH):\$(PEGASUS_HOME)/bin include Makefile distclean: rm -f GNUmakefile rm -f options.mak END echo "created GNUmakefile" ##============================================================================== ## ## Print final message: ## ##============================================================================== echo "configured for $platform" echo fi #set +x