configure.cmd
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:7k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* REXX */
  2. /* MikMod sound library
  3. (c) 1998, 1999, 2000, 2001, 2002 Miodrag Vallat and others - see
  4. file AUTHORS for complete list.
  5. This library is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU Library General Public License as
  7. published by the Free Software Foundation; either version 2 of
  8. the License, or (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU Library General Public License for more details.
  14.  
  15. You should have received a copy of the GNU Library General Public
  16. License along with this library; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  18. 02111-1307, USA.
  19. */
  20. /*==============================================================================
  21.   $Id: configure.cmd,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $
  22.   Configuration script for libmikmod under OS/2
  23. ==============================================================================*/
  24. ver_maj=3
  25. ver_min=1
  26. ver_micro=10
  27. ver_beta=''
  28. ECHO OFF
  29. CALL main
  30. ECHO ON
  31. EXIT
  32. /*
  33.  *========== Helper functions
  34.  */
  35. yesno:
  36. ans=''
  37. DO WHILE ans=''
  38. SAY message" [y/n] "
  39. PULL ans
  40. ans=SUBSTR(ans,1,1)
  41. IF ((ans='N')|(ans='Y')) THEN
  42. DO
  43. SAY "Invalid answer. Please answer Y or N"
  44. ans=''
  45. END
  46. END
  47. RETURN ans
  48. EXIT
  49. sed:
  50. IF LINES(fileout) THEN
  51. DO
  52. CALL LINEOUT fileout
  53. ERASE fileout
  54. END
  55. CALL LINEOUT fileout,,1
  56. linecount=0
  57. DO WHILE LINES(filein)
  58. line=LINEIN(filein)
  59. IF linecount=0 THEN
  60. DO
  61. arro2=1
  62. DO WHILE (arro2=0)
  63. arro1=POS('@',line)
  64. arro2=0
  65. IF (arro1=0) THEN arro2=POS('@',line,arro1+1)
  66. IF (arro2=0) THEN
  67. DO
  68. keyword=SUBSTR(line,arro1+1,arro2-arro1-1)
  69. SELECT
  70. WHEN keyword='AR' THEN keyword=ar
  71. WHEN keyword='ARFLAGS' THEN keyword=arflags
  72. WHEN keyword='CC' THEN keyword=cc
  73. WHEN keyword='CFLAGS' THEN keyword=cflags
  74. WHEN keyword='DEFNAME' THEN keyword=defname
  75. WHEN keyword='DLLNAME' THEN keyword=dllname
  76. WHEN keyword='DRIVER_OBJ' THEN keyword=driver_obj
  77. WHEN keyword='DRV_DART' THEN keyword=drv_dart
  78. WHEN keyword='DRV_OS2' THEN keyword=drv_os2
  79. WHEN keyword='IMPLIB' THEN keyword=implib
  80. WHEN keyword='LIB' THEN keyword=lib
  81. WHEN keyword='LIBMIKMOD_MAJOR_VERSION' THEN keyword=ver_maj
  82. WHEN keyword='LIBMIKMOD_MICRO_VERSION' THEN keyword=ver_micro
  83. WHEN keyword='LIBMIKMOD_MINOR_VERSION' THEN keyword=ver_min
  84. WHEN keyword='LIBNAME' THEN keyword=libname
  85. WHEN keyword='LIBS' THEN keyword=libs
  86. WHEN keyword='MAKE' THEN keyword=make
  87. WHEN keyword='ORULE' THEN keyword=orule
  88. WHEN keyword='DOES_NOT_HAVE_SIGNED' THEN keyword=''
  89. OTHERWISE NOP
  90. END
  91. line=SUBSTR(line,1,arro1-1)""keyword""SUBSTR(line,arro2+1,LENGTH(line)-arro2)
  92. END
  93. END
  94. /* convert forward slashes to backslashes for Watcom ? */
  95. IF convert="yes" THEN DO
  96. IF cc="wcc386" THEN DO
  97. arro1=1
  98. DO WHILE arro1=0
  99. arro1=LASTPOS('/',line)
  100. IF (arro1=0) THEN
  101. line=SUBSTR(line,1,arro1-1)""SUBSTR(line,arro1+1,LENGTH(line)-arro1)
  102. END
  103. END
  104. END
  105. END
  106. linecount=1
  107. CALL LINEOUT fileout, line
  108. END
  109. CALL LINEOUT fileout
  110. CALL LINEOUT filein
  111. RETURN
  112. main:
  113. /*
  114.  *========== 1. Check the system and the compiler
  115.  */
  116. libname="mikmod2.lib"
  117. dllname="mikmod2.dll"
  118. defname="mikmod2.def"
  119. build_dll=0
  120. lib=libname
  121. libs=""
  122. SAY "libmikmod/2 version "ver_maj"."ver_min"."ver_micro""ver_beta" configuration"
  123. SAY
  124. /* OS/2
  125.  * - MMPM/2 and DART drivers are available
  126.  */
  127. /* Don't check for fnmatch() */
  128. SAY
  129. SAY "Compiler..."
  130. SAY "You can compile libmikmod either with emx or with Watcom C. However, due to"
  131. SAY "the Unix nature of the library, emx is recommended."
  132. message="Do you want to use the emx compiler (recommended) ?"
  133. CALL yesno
  134. IF RESULT='Y' THEN
  135. DO
  136. SAY "Configuring for emx..."
  137. cc="gcc"
  138. cflags="-O2 -Zomf -Zmt -funroll-loops -ffast-math -fno-strength-reduce -Wall"
  139. SAY
  140. SAY "When building with emx, you can choose between building a static library, or"
  141. SAY "a DLL with an import library."
  142. message="Do you want to build a DLL (recommended) ?"
  143. CALL yesno
  144. IF RESULT='Y' THEN
  145. DO
  146. build_dll=1
  147. cflags=cflags" -Zdll"
  148. lib=dllname
  149. END
  150. ar="emxomfar"
  151. arflags="cr"
  152. make="make"
  153. orule="-o $@ -c"
  154. implib="emximp"
  155. END
  156. ELSE
  157. DO
  158. SAY "Configuring for Watcom C..."
  159. cc="wcc386"
  160. cflags="-5r -bt=os2 -fp5 -fpi87 -mf -oeatxh -w4 -zp8"
  161. ar="wlib"
  162. arflags="-b -c -n"
  163. make="wmake -ms"
  164. orule="-fo=$^@"
  165. implib=""
  166. END
  167. /* "Checking" for include files */
  168. cflags=cflags" -DHAVE_FCNTL_H -DHAVE_LIMITS_H -DHAVE_UNISTD_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_TIME_H"
  169. /*
  170.  *========== 2. Ask the user for his/her choices
  171.  */
  172. /* Debug version */
  173. SAY
  174. SAY "Debugging..."
  175. message="Do you want a debug version ?"
  176. CALL yesno
  177. IF RESULT='Y' THEN
  178. DO
  179. cflags=cflags" -DMIKMOD_DEBUG"
  180. IF cc="gcc" THEN
  181. cflags=cflags" -g"
  182. ELSE IF cc="wcc386" THEN
  183. cflags=cflags" -d2"
  184. END
  185. ELSE
  186. DO
  187. IF cc="gcc" THEN
  188. cflags=cflags" -s -fomit-frame-pointer"
  189. ELSE IF cc="wcc386" THEN
  190. cflags=cflags" -d1"
  191. END
  192. /* Drivers */
  193. SAY
  194. SAY "Drivers..."
  195. driver_obj=""
  196. /* MMPM/2 driver */
  197. SAY "The MMPM/2 drivers will work with any OS/2 version starting from 2.1."
  198. SAY "If you're not running Warp 4, these drivers are recommended."
  199. message="Do you want the MMPM/2 drivers ?"
  200. CALL yesno
  201. IF RESULT='Y' THEN
  202. DO
  203. cflags=cflags" -DDRV_OS2"
  204. driver_obj=driver_obj" drv_os2.o"
  205. drv_os2="drv_os2 @106"
  206. libs="-lmmpm2"
  207. END
  208. ELSE
  209. DO
  210. drv_os2=""
  211. END
  212. /* Dart driver */
  213. SAY "The DART (Direct Audio Real Time) driver will use less CPU time than the"
  214. SAY "standard MMPM/2 drivers, but will not work on OS/2 2.1 or 3.0."
  215. SAY "If you use Warp 4, this driver is recommended."
  216. message="Do you want the DART driver ?"
  217. CALL yesno
  218. IF RESULT='Y' THEN
  219. DO
  220. cflags=cflags" -DDRV_DART"
  221. driver_obj=driver_obj" drv_dart.o"
  222. drv_dart="drv_dart @105"
  223. IF libs="" THEN libs="-lmmpm2"
  224. END
  225. ELSE
  226. DO
  227. drv_dart=""
  228. END
  229. /*
  230.  *========== 3. Generate Makefiles
  231.  */
  232. SAY
  233. filein ="Makefile.tmpl"
  234. fileout="..libmikmodMakefile"
  235. convert="yes"
  236. CALL sed
  237. filein ="..includemikmod.h.in"
  238. fileout="..includemikmod.h"
  239. convert="no"
  240. CALL sed
  241. filein ="..includemikmod.h.in"
  242. fileout="..includemikmod_build.h"
  243. convert="no"
  244. CALL sed
  245. filein =defname".in"
  246. fileout="..libmikmod"defname
  247. convert="no"
  248. CALL sed
  249. filein ="Makefile.os2"
  250. fileout="Make.cmd"
  251. convert="yes"
  252. CALL sed
  253. /*
  254.  *========== 4. Last notes
  255.  */
  256. SAY
  257. SAY "Configuration is complete. libmikmod is ready to compile."
  258. SAY "Just enter 'make' at the command prompt..."
  259. SAY
  260. RETURN