nsallinone.m4
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 2007 Regents of the SIGNET lab, University of Padova.
  3. # All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. Neither the name of the University of Padova (SIGNET lab) nor the 
  14. #    names of its contributors may be used to endorse or promote products 
  15. #    derived from this software without specific prior written permission.
  16. #
  17. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
  18. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
  19. # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  20. # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
  21. # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  22. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
  23. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
  24. # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  25. # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
  26. # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  27. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. #
  29. AC_DEFUN([AC_PATH_NS_ALLINONE], [
  30. NS_ALLINONE_PATH=''
  31. NS_PATH=''
  32. TCL_PATH=''
  33. OTCL_PATH=''
  34. NS_CPPFLAGS=''
  35. AC_ARG_WITH([ns-allinone],
  36. [AS_HELP_STRING([--with-ns-allinone=<directory>],
  37. [use ns-allinone installation in <directory>, where it is expected to find ns, tcl, otcl and tclcl subdirs])],
  38. [
  39.     if test ! -d $withval 
  40. then
  41. AC_MSG_ERROR([ns-allinone path $withval is not valid])
  42.     else
  43. NS_ALLINONE_PATH=$withval
  44. NS_PATH=$NS_ALLINONE_PATH/`cd $NS_ALLINONE_PATH; ls -d ns-* | head -n 1`
  45. TCL_PATH=$NS_ALLINONE_PATH/`cd $NS_ALLINONE_PATH; ls -d * | grep -e 'tcl[0-9].*' | head -n 1`
  46. TCLCL_PATH=$NS_ALLINONE_PATH/`cd $NS_ALLINONE_PATH; ls -d tclcl-* | head -n 1`
  47. OTCL_PATH=$NS_ALLINONE_PATH/`cd $NS_ALLINONE_PATH; ls -d otcl-* | head -n 1`
  48. NS_CPPFLAGS="-I$NS_ALLINONE_PATH/include -I$NS_PATH -I$TCLCL_PATH -I$OTCL_PATH"
  49. NS_ALLINONE_DISTCHECK_CONFIGURE_FLAGS="--with-ns-allinone=$withval"
  50. AC_SUBST(NS_ALLINONE_DISTCHECK_CONFIGURE_FLAGS)
  51.     fi
  52. ])
  53. if test x$NS_ALLINONE_PATH = x ;    then
  54.    AC_MSG_ERROR([you must specify ns-allinone installation path using --with-ns-allinone=PATH])
  55. fi      
  56. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/mac"
  57. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/propagation"
  58. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/mobile"
  59. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/pcap"
  60. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/tcp"
  61. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/sctp"
  62. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/common"
  63. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/link"
  64. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/queue"
  65. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/trace"
  66. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/adc"
  67. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/apps"
  68. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/routing"
  69. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/tools"
  70. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/classifier"
  71. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/mcast"
  72. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/diffusion3/lib"
  73. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/diffusion3/lib/main"
  74. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/diffusion3/lib/nr"
  75. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/diffusion3/ns"
  76. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/diffusion3/filter_core"
  77. NS_CPPFLAGS="$NS_CPPFLAGS  -I$NS_PATH/asim"
  78. AC_SUBST(NS_CPPFLAGS)
  79. AC_MSG_CHECKING([for NS_LDFLAGS and NS_LIBADD type])
  80. system=`uname -s`
  81. case $system in 
  82.     CYGWIN*)
  83. AC_MSG_RESULT([cygwin])
  84. echo "running cygwin"
  85. NS_LDFLAGS=" -shared -no-undefined -L${NS_PATH} -Wl,--export-all-symbols -Wl,--enable-auto-import  -Wl,--whole-archive  "
  86. NS_LIBADD=" -lns"
  87. ;;
  88.     *)
  89. AC_MSG_RESULT([none needed])
  90. # OK for linux, should be fine for unix in general
  91. NS_LDFLAGS=""
  92. NS_LIBADD=""
  93. ;;
  94. esac
  95. AC_SUBST(NS_LDFLAGS)
  96. AC_SUBST(NS_LIBADD)
  97. ########################################################
  98. # checking if ns-allinone path has been setup correctly
  99. ########################################################
  100. # temporarily add NS_CPPFLAGS to CPPFLAGS
  101. BACKUP_CPPFLAGS=$CPPFLAGS
  102. CPPFLAGS=$NS_CPPFLAGS
  103. #BACKUP_CFLAGS=$CFLAGS
  104. #CFLAGS=$NS_CPPFLAGS
  105. dnl AC_CHECK_HEADERS([tcl.h],,AC_MSG_ERROR([could not find tcl.h]))
  106. dnl AC_CHECK_HEADERS([otcl.h],,AC_MSG_ERROR([could not find otcl.h]))
  107. dnl AC_CHECK_HEADERS([tclcl.h],,AC_MSG_ERROR([could not find tclcl.h]), 
  108. dnl   [ 
  109. dnl     #if HAVE_TCL_H
  110. dnl     #include <tcl.h>
  111. dnl     #endif 
  112. dnl   ])  
  113. AC_LANG_PUSH(C++)
  114. AC_MSG_CHECKING([for ns-allinone installation])
  115. AC_PREPROC_IFELSE(
  116. [AC_LANG_PROGRAM([[
  117. #include<tcl.h>
  118. #include<otcl.h>
  119. #include<tclcl.h>
  120. #include<packet.h>
  121. Packet* p; 
  122. ]],[[
  123. p = new packet;
  124. delete p;
  125. ]]  )],
  126.         [AC_MSG_RESULT([ok])],
  127.         [
  128.   AC_MSG_RESULT([FAILED!])
  129.   AC_MSG_ERROR([Could not find NS headers. Is --with-ns-allinone set correctly? ])
  130.         ])
  131. AC_MSG_CHECKING([if ns-allinone installation has been patched for dynamic libraries])
  132. AC_PREPROC_IFELSE(
  133. [AC_LANG_PROGRAM([[
  134. #include<tcl.h>
  135. #include<otcl.h>
  136. #include<tclcl.h>
  137. #include<packet.h>
  138. ]],[[
  139. p_info::addPacket("TEST_PKT");
  140. ]]  )],
  141.         [AC_MSG_RESULT([yes])],
  142.         [
  143.   AC_MSG_RESULT([NO!])
  144.   AC_MSG_ERROR([The ns-allinone installation in $NS_ALLINONE_PATH has not been patched for dynamic libraries. 
  145.   Either patch it or change the --with-ns-allinone switch so that it refers to a patched version. ])
  146.         ])
  147. AC_LANG_POP(C++)
  148. # Restoring to the initial value
  149. CPPFLAGS=$BACKUP_CPPFLAGS
  150. #CFLAGS=$BACKUP_CFLAGS
  151. ## AC_ARG_VAR([TCLCL_PATH],[blah blah blah])
  152. ## AC_PATH_PROG([TCL2CPP],[tcl2c++],[none],[$PATH:$TCLCL_PATH])
  153. AC_ARG_VAR([TCL2CPP],[tcl2c++ executable])
  154. AC_PATH_PROG([TCL2CPP],[tcl2c++],[none],[$PATH:$TCLCL_PATH])
  155. if test "x$TCL2CPP" = "xnone" ;    then
  156. AC_MSG_ERROR([could not find tcl2c++])
  157. fi
  158. ])