home *** CD-ROM | disk | FTP | other *** search
- /* REXX */
-
- /*===============================================================================
- *
- * $Id: configure.cmd,v 1.13 1998/12/07 06:01:54 miod Exp $
- *
- * Configuration script for MikMod under OS/2
- *
- *=============================================================================*/
- ECHO OFF
- CALL main
- ECHO ON
- EXIT
-
- /*
- *========== Helper functions
- */
-
- yesno:
- ans=''
- DO WHILE ans=''
- SAY message" [y/n] "
- PULL ans
- ans=SUBSTR(ans,1,1)
- IF \((ans='N')|(ans='Y')) THEN
- DO
- SAY "Invalid answer. Please answer Y or N"
- ans=''
- END
- END
- RETURN ans
- EXIT
-
- sed:
- IF LINES(fileout) THEN
- DO
- CALL LINEOUT fileout
- ERASE fileout
- END
- CALL LINEOUT fileout,,1
- linecount=0
- DO WHILE LINES(filein)
- line=LINEIN(filein)
- IF linecount\=0 THEN
- DO
- arro1=LASTPOS('@',line)
- arro2=0
- IF (arro1\=0) THEN arro2=LASTPOS('@',line,arro1-1)
- IF (arro2\=0) THEN
- DO
- keyword=SUBSTR(line,arro2+1,arro1-arro2-1)
- SELECT
- WHEN keyword='CC' THEN keyword=cc
- WHEN keyword='CFLAGS' THEN keyword=cflags
- WHEN keyword='LDFLAGS' THEN keyword=ldflags
- WHEN keyword='AR' THEN keyword=ar
- WHEN keyword='ARFLAGS' THEN keyword=arflags
- WHEN keyword='RANLIB' THEN keyword=ranlib
- WHEN keyword='ORULE' THEN keyword=orule
- WHEN keyword='LINK' THEN keyword=link
-
- WHEN keyword='DRIVER_OBJ' THEN keyword=driver_obj
- WHEN keyword='VIRTCH' THEN keyword=virtch
- WHEN keyword='EXTRA_OBJ' THEN keyword=extra_obj
-
- WHEN keyword='MAKE' THEN keyword=make
- OTHERWISE NOP
- END
- line=SUBSTR(line,1,arro2-1)""keyword""SUBSTR(line,arro1+1,LENGTH(line)-arro1)
- END
- /* convert forward slashes to backslashes for Watcom */
- IF cc="wcc386" THEN DO
- arro1=1
- DO WHILE arro1\=0
- arro1=LASTPOS('/',line)
- IF (arro1\=0) THEN
- line=SUBSTR(line,1,arro1-1)"\"SUBSTR(line,arro1+1,LENGTH(line)-arro1)
- END
- END
- END
- linecount=1
- CALL LINEOUT fileout, line
- END
- CALL LINEOUT fileout
- RETURN
-
- main:
-
- /*
- *========== 1. Check the system and the compiler
- */
-
- SAY "MikMod/2 version 3.1.2 configuration"
- SAY
-
- /* OS/2
- * - MMPM/2 and DART drivers are available
- * - no GNU getopt
- * - usleep is not used
- * - emx has fnmatch(3), watcom doesn't
- */
-
- /* Don't check for fnmatch() and usleep() */
-
- SAY
- SAY "Compiler..."
- SAY "You can compile MikMod either with emx or with Watcom C. However, due to"
- SAY "the Unix nature of the program, emx is recommended."
- message="Do you want to use the emx compiler (recommended) ?"
- CALL yesno
- IF RESULT='Y' THEN
- DO
- SAY "Configuring for emx..."
- cc="gcc"
- cflags="-O1 -Zmt -Zbin-files -funroll-loops -ffast-math -fno-strength-reduce -Wall"
- ldflags=""
- ar="ar"
- arflags="cr"
- ranlib="ar s"
- make="make"
- orule="-o $@ -c"
- link="$(CC) $(LDFLAGS) -o $(AOUT) $(OBJ) $(EXTRA_OBJ) $(LIB) -Zmt -Zexe -Zcrtdll -lmmpm2"
- END
- ELSE
- DO
- SAY "Configuring for Watcom C..."
- cc="wcc386"
- cflags="-5r -bt=os2 -fp5 -fpi87 -mf -oeatxh -w4 -zp8"
- ldflags=""
- ar="wlib"
- arflags="-b -c -n"
- ranlib="rem"
- make="wmake -ms"
- orule="-fo=$^@"
- link="wlink N $(AOUT) SYS OS2V2 LIBP $(LIBPATH) LIBF MMPM2.LIB F $(LINKOBJ) F $(LINKEXTRA_OBJ) F $(LIB)"
- END
-
- /* "Checking" for fnmatch() */
-
- cflags=cflags" -DHAVE_FCNTL_H -DHAVE_LIMITS_H -DHAVE_UNISTD_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_TIME_H"
- IF cc="gcc" THEN
- DO
- cflags=cflags" -DHAVE_FNMATCH_H -DHAVE_FNMATCH"
- extra_obj="getopt.o getopt1.o"
- END
- ELSE IF cc="wcc386" THEN
- DO
- extra_obj="getopt.o getopt1.o fnmatch.o"
- END
-
- /*
- *========== 2. Ask the user for his/her choices
- */
-
- /* Debug version */
- SAY
- SAY "Debugging..."
- message="Do you want a debug version ?"
- CALL yesno
- IF RESULT='Y' THEN
- DO
- cflags=cflags" -DMIKMOD_DEBUG"
- IF cc="gcc" THEN
- DO
- cflags=cflags" -g"
- ldflags=ldflags" -g"
- END
- ELSE IF cc="wcc386" THEN
- cflags=cflags" -d2"
- END
- ELSE
- DO
- IF cc="gcc" THEN
- DO
- cflags=cflags" -finline-functions -fomit-frame-pointer"
- ldflags=ldflags" -s"
- END
- ELSE IF cc="wcc386" THEN
- cflags=cflags" -d1"
- END
-
- /* Drivers */
- SAY
- SAY "Drivers..."
-
- driver_obj=""
-
- /* MMPM/2 driver */
- SAY "The MMPM/2 drivers will work with any OS/2 version starting from 2.1."
- SAY "If you're not running Warp 4, these drivers are recommended."
- message="Do you want the MMPM/2 drivers ?"
- CALL yesno
- IF RESULT='Y' THEN
- DO
- cflags=cflags" -DDRV_OS2"
- driver_obj=driver_obj" drv_os2s.o drv_os2l.o"
- END
-
- /* Dart driver */
- SAY "The DART (Direct Audio Real Time) driver will use less CPU time than the"
- SAY "standard MMPM/2 drivers, but will not work on OS/2 2.1 or 3.0."
- SAY "If you use Warp 4, this driver is recommended."
- message="Do you want the DART driver ?"
- CALL yesno
- IF RESULT='Y' THEN
- DO
- cflags=cflags" -DDRV_DART"
- driver_obj=driver_obj" drv_dart.o"
- END
-
- /* Interface */
- /* SAY
- SAY "Interface..."*/
-
- /* Options */
- SAY
- SAY "Options..."
-
- virtch=""
-
- /* Time snagger */
- cflags=cflags" -DCPUTIME_SNAGGER"
-
- /* High quality mixer */
- SAY "The High quality mixer will improve the quality of your sounds, but requires"
- SAY "a huge amount of power ! That's why it is not recommended."
- message="Do you want the high quality mixer ?"
- CALL yesno
- IF RESULT='Y' THEN
- DO
- virtch="virtch2.o"
- cflags=cflags" -DVIRTCH2"
- END
- ELSE
- virtch="virtch.o"
-
- /*
- *========== 3. Generate Makefiles
- */
-
- SAY
-
- filein ="libmikmod\Makefile.tmpl"
- fileout="libmikmod\Makefile"
- CALL sed
-
- filein ="mikmod\Makefile.tmpl"
- fileout="mikmod\Makefile"
- CALL sed
-
- filein="Makefile.os2"
- fileout="Make.cmd"
- CALL sed
-
- /*
- *========== 4. Last notes
- */
-
- SAY
- SAY "Configuration is complete. MikMod is ready to compile."
- IF cc="wcc386" THEN
- DO
- SAY "If you choose to compile with Watcom C, you may have to edit"
- SAY "mikmod\Makefile to adjust path to Watcom runtime libraries."
- SAY "Then, just enter 'make' at the command prompt..."
- END
- ELSE
- SAY "Just enter 'make' at the command prompt..."
- SAY
-
- RETURN
-