/* REXX */

/*	MikMod sound library
	(c) 1998, 1999, 2000, 2001, 2002 Miodrag Vallat and others - see
	file AUTHORS for complete list.

	This library is free software; you can redistribute it and/or modify
	it under the terms of the GNU Library General Public License as
	published by the Free Software Foundation; either version 2 of
	the License, or (at your option) any later version.
 
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Library General Public License for more details.
 
	You should have received a copy of the GNU Library General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
	02111-1307, USA.
*/

/*==============================================================================

  $Id: configure.cmd,v 1.1.1.1 2004/01/21 01:36:35 raph Exp $

  Configuration script for libmikmod under OS/2

==============================================================================*/

ver_maj=3
ver_min=1
ver_micro=10
ver_beta=''

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
			arro2=1
			DO WHILE (arro2\=0)
				arro1=POS('@',line)
				arro2=0
				IF (arro1\=0) THEN arro2=POS('@',line,arro1+1)
				IF (arro2\=0) THEN
				DO
					keyword=SUBSTR(line,arro1+1,arro2-arro1-1)
					SELECT
						WHEN keyword='AR' THEN keyword=ar
						WHEN keyword='ARFLAGS' THEN keyword=arflags
						WHEN keyword='CC' THEN keyword=cc
						WHEN keyword='CFLAGS' THEN keyword=cflags
						WHEN keyword='DEFNAME' THEN keyword=defname
						WHEN keyword='DLLNAME' THEN keyword=dllname
						WHEN keyword='DRIVER_OBJ' THEN keyword=driver_obj
						WHEN keyword='DRV_DART' THEN keyword=drv_dart
						WHEN keyword='DRV_OS2' THEN keyword=drv_os2
						WHEN keyword='IMPLIB' THEN keyword=implib
						WHEN keyword='LIB' THEN keyword=lib
						WHEN keyword='LIBMIKMOD_MAJOR_VERSION' THEN keyword=ver_maj
						WHEN keyword='LIBMIKMOD_MICRO_VERSION' THEN keyword=ver_micro
						WHEN keyword='LIBMIKMOD_MINOR_VERSION' THEN keyword=ver_min
						WHEN keyword='LIBNAME' THEN keyword=libname
						WHEN keyword='LIBS' THEN keyword=libs
						WHEN keyword='MAKE' THEN keyword=make
						WHEN keyword='ORULE' THEN keyword=orule
						WHEN keyword='DOES_NOT_HAVE_SIGNED' THEN keyword=''

						OTHERWISE NOP
					END
					line=SUBSTR(line,1,arro1-1)""keyword""SUBSTR(line,arro2+1,LENGTH(line)-arro2)
				END
			END
			/* convert forward slashes to backslashes for Watcom ? */
			IF convert="yes" THEN DO
				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
		END
		linecount=1
		CALL LINEOUT fileout, line
	END
	CALL LINEOUT fileout
	CALL LINEOUT filein
	RETURN

main:

/*
 *========== 1. Check the system and the compiler
 */

	libname="mikmod2.lib"
	dllname="mikmod2.dll"
	defname="mikmod2.def"

	build_dll=0
	lib=libname
	libs=""

	SAY "libmikmod/2 version "ver_maj"."ver_min"."ver_micro""ver_beta" configuration"
	SAY

/* OS/2
 * - MMPM/2 and DART drivers are available
 */

/* Don't check for fnmatch() */

	SAY
	SAY "Compiler..."
	SAY "You can compile libmikmod either with emx or with Watcom C. However, due to"
	SAY "the Unix nature of the library, 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="-O2 -Zomf -Zmt -funroll-loops -ffast-math -fno-strength-reduce -Wall"

		SAY
		SAY "When building with emx, you can choose between building a static library, or"
		SAY "a DLL with an import library."
		message="Do you want to build a DLL (recommended) ?"
		CALL yesno
		IF RESULT='Y' THEN
		DO
			build_dll=1
			cflags=cflags" -Zdll"
			lib=dllname
		END
		ar="emxomfar"
		arflags="cr"
		make="make"
		orule="-o $@ -c"
		implib="emximp"
	END
	ELSE
	DO
		SAY "Configuring for Watcom C..."
		cc="wcc386"
		cflags="-5r -bt=os2 -fp5 -fpi87 -mf -oeatxh -w4 -zp8"
		ar="wlib"
		arflags="-b -c -n"
		make="wmake -ms"
		orule="-fo=$^@"
		implib=""
	END

/* "Checking" for include files */

	cflags=cflags" -DHAVE_FCNTL_H -DHAVE_LIMITS_H -DHAVE_UNISTD_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_TIME_H"

/*
 *========== 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
			cflags=cflags" -g"
		ELSE IF cc="wcc386" THEN
			cflags=cflags" -d2"
	END
	ELSE
	DO
		IF cc="gcc" THEN
			cflags=cflags" -s -fomit-frame-pointer"
		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_os2.o"
		drv_os2="drv_os2 @106"
		libs="-lmmpm2"
	END
	ELSE
	DO
		drv_os2=""
	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"
		drv_dart="drv_dart @105"
		IF libs="" THEN libs="-lmmpm2"
	END
	ELSE
	DO
		drv_dart=""
	END

/*
 *========== 3. Generate Makefiles
 */

	SAY

	filein ="Makefile.tmpl"
	fileout="..\libmikmod\Makefile"
	convert="yes"
	CALL sed

	filein ="..\include\mikmod.h.in"
	fileout="..\include\mikmod.h"
	convert="no"
	CALL sed

	filein ="..\include\mikmod.h.in"
	fileout="..\include\mikmod_build.h"
	convert="no"
	CALL sed

	filein =defname".in"
	fileout="..\libmikmod\"defname
	convert="no"
	CALL sed

	filein ="Makefile.os2"
	fileout="Make.cmd"
	convert="yes"
	CALL sed

/*
 *========== 4. Last notes
 */

	SAY
	SAY "Configuration is complete. libmikmod is ready to compile."
	SAY "Just enter 'make' at the command prompt..."
	SAY

	RETURN
