www.pudn.com > g7x.rar > amake


#------------------------------------------------------------------
# MPEG-4 Audio VM
# makefile (requires GNU make)
#
# $Id: makefile,v 1.60 1999/07/26 13:17:56 purnhage Exp $
#
# Authors:
# BG    Bernhard Grill, Uni Erlangen 
# HP    Heiko Purnhagen, Uni Hannover 
# BT    Bodo Teichmann, FhG/IIS 
# SE	Sebastien Etienne, CCETT Rennes
#
# Changes:
# 11-jun-96   BG    basic concept
# 13-jun-96   HP    first version
# 14-jun-96   HP    test stuff added
# 19-jun-96   HP    indiline.a added
# 20-jun-96   HP    modifications proposed by BG
# 28-jun-96   HP    fixed COPTS bug
# 04-jul-96   HP    restructured makefile, fixed CFLAGS/LIBS bug
# 04-jul-96   HP    included "pre-linked object file directory" by BG
# 05-jul-96   HP    fixed override CFLAGS/LIBS
# 20-aug-96   BG    OS2 modifications
# 26-aug-96   HP    removed PLOBJS, adapted to vm directory structure
# 26-aug-96   HP    CVS
# 13-sep-96   HP    removed -O option for Linux g++
# 25-oct-96   HP    adapted makefile options / added makefile.cfg
# 01-nov-96   HP    added "depend" target
# 03-dec-96   HP    added comment re. include dependency files
#                   added library dependency rules
# 21-jan-97   HP    added audio i/o module
# 31-jan-97   HP    seperated encoder and  -g directories
# 05-feb-97   HP    added COMLIBS
# 12-feb-97   HP    make CFLAGS and LDFLAGS values passed on and evaluated
# 14-feb-97   HP    included PICOLA speed control (by Panasonic)
# 11-mar-97   HP    included PICOLA source code
# 21-mar-97   BT    fixed CC and IRIX things, platform autodetect
# 26-mar-97   CCETT included G729  -g source code
# 20-may-97   HP    clean up
# 22-may-97   HP    added DEBUGPLOT (substitutes PLOTMTV)
# 03-jun-97   HP    disabled DEBUGPLOT as default
# 07-nov-97   HP    merged with FhG mods
# 08-apr-98   HP    added OSF platform
# 09-apr-98   HP/CF added rm before ar when making libs
# 13-oct-98   HP    improved platform detection
# 02-dec-98   HP/nn merged version-dependent directory stuff by FhG
# 11-jan-99   HP    linux_gcc
# 20-jan-99   HP    cleaned up platform dependency stuff and CFLAGS defaults
# 21-jan-99   HP    audio.c & austream.c
# 22-jan-99   HP    USE_AFSP
# 23-apr-99   HP    updated, some files renamed for IM1-compability
# 28-apr-99   HP    using AFSP_INCLUDE_PATH / AFSP_LIBRARY_PATH ...
#----------------------------------------------------------------------

#----------------------------------------------------------------------
# Notes:
#
# This makefile provides automatic handling of different system
# platforms. Therefore it is required to set the environment
# variable SYSTEM_NAME according to the actual platform.
# Currently, these platforms are supported:
#   IRIX
#   Linux
#   Solaris
#   ... and most other UNIX platforms ...
#
# If CFLAGS or LDFLAGS are changed for a subsequent invocation of make,
# object files and binaries are NOT remade automatically with the new
# options! Use "make clean" first ...
#
# To make mp4auenc and mp4audec, type:
#   make all
#
# To allow make running e.g. 4 jobs at once, type:
#   make MFLAGS=-j4
#
# On most platforms, the default compiler is g++. To use the platform's
# native compiler (e.g. cc) instead, type:
#   make MAKE_CC=native
# and to use gcc, type:
#   make MAKE_CC=gnu
#
#----------------------------------------------------------------------


# BG: OS2 fix
ifeq "$(SYSTEM_NAME)" "OS2"
SHELL = /bin/sh
export SHELL
endif

# HP 981013
ifeq "$(SYSTEM_NAME)" ""
ifeq "$(OSTYPE)" ""
SYSTEM_NAME = $(shell uname -s)
else
ifeq "$(OSTYPE)" "linux"
SYSTEM_NAME = Linux
endif
ifeq "$(OSTYPE)" "linux-gnu"
SYSTEM_NAME = Linux
endif
ifeq "$(OSTYPE)" "solaris"
SYSTEM_NAME = Solaris
endif
ifeq "$(OSTYPE)" "iris4d"
SYSTEM_NAME = IRIX
endif
ifeq "$(OSTYPE)" "sunos4"
SYSTEM_NAME = SunOS
endif
ifeq "$(OSTYPE)" "osf1"
SYSTEM_NAME = OSF
endif
ifeq "$(OSTYPE)" "cygwin32"
SYSTEM_NAME = cdk
endif
endif
endif


ifeq "$(SYSTEM_NAME)" ""
include error:\ SYSTEM_NAME\ environment\ variable\ not\ defined\ !!!
include Options:\ SunOS\ IRIX\ Linux\ OS2\ Solaris\ OSF\ cdk\ !!!
endif


ifeq "$(MAKELEVEL)" "0"


# COMPILE TIME OPTIONS
# 
# Several options are available to enable/disable VM modules at
# compile time. These options can be specified in the make command line
# (e.g. make PAR=0) or in the makefile.cfg file. 

# makefile options:
# PAR=1		parametric core enabled
#    =0		parametric core disabled
# LPC=1		LPC-based core enabled
#    =0		LPC-based core disabled
# TF=1		t/f-based core enabled
#   =0		t/f-based core disabled
# G729=1	g729-based core enabled
#     =0	g729-based core disabled
# G723=1	g723-based core enabled
#     =0	g723-based core disabled
# PICOLA=1	PICOLA speed control enabled
#       =0	PICOLA speed control disabled
# DEBUGPLOT=1	DEBUGPLOT enabled (only used for debugging)
#          =0	DEBUGPLOT disabled
# USE_AFSP=1    enable AFsp
#         =0    disable AFsp (only 16 bit .au files supported)

-include makefile.cfg


# defaults:
ifndef PAR
PAR = 1
endif
ifndef LPC
LPC = 1
endif
ifndef TF
TF = 1
endif
ifndef G729
G729 = 0
endif
ifndef G723
G723 = 0
endif
ifndef PICOLA
PICOLA = 1
endif
ifndef DEBUGPLOT
DEBUGPLOT = 0
endif
ifndef USE_AFSP
USE_AFSP = 0
endif
ifndef ISOMP4
ISOMP4 = 0
endif


# compiler options
# NOTE: If CFLAGS or LDFLAGS are modified, object files are NOT remade
#       automatically !!!
#       Delete the object file manually to force recompile with the
#       new CFLAGS compiler options.

#CFLAGS += -Wall
#CFLAGS += -g
#CFLAGS += -O2
#CFLAGS += -pg
#LDFLAGS += -pg
#LDFLAGS += -g -fbounds-checking
#LDFLAGS += -g

# The default CFLAGS set below should work fine with gcc/g++.
# If desired, you can override them when invoking make, e.g.:
#   make CFLAGS=""
CFLAGS += -ansi -pedantic -Wall -W 
#CFLAGS += -ansi -pedantic -Wall -Wno-unused -W

# If desired, you can override DEFFLAGS when invoking make, e.g.:
#   make DEFFLAGS=""
#DEFFLAGS += -DHAS_ULONG

# BT 990215: separate -W is necessary for gcc v 2.8.1
#CFLAGS += -ansi -pedantic -Wall 


ifndef VERSION
VERSION = 1
endif

ifeq "$(VERSION)" "2"
override DEFFLAGS += -DVERSION2
endif

ifneq "$(NO_AL_CONFIG)" "1"
override DEFFLAGS += -DAL_CONFIG
endif

ifeq "$(DEBUGPLOT)" "1"
override DEFFLAGS += -DDEBUGPLOT -DFHG_DEBUGPLOT
override CFLAGS += -g
override LDFLAGS += -g
endif
# for more info on plotmtv see src_frame/plotmtv_interf.c
# see also src_frame/writevector.c

# type "make USE=AFSP=1" to enable AFsp
ifeq "$(USE_AFSP)" "1"
override DEFFLAGS += -DUSE_AFSP
endif

# ISO MP4 file format library
ifeq "$(ISOMP4)" "1"
# ISOMP4_PATH should point to your mp4lib directory tree
ISOMP4_PATH = mp4lib
override DEFFLAGS +=-DMP4FF
override MFLAGS += ISOMP4_PATH=$(ISOMP4_PATH)
endif

# if AFSP_XXX_PATH are not set, AFsp-V3R2 as in ./include and
# .//lib is used
ifdef AFSP_INCLUDE_PATH
override MFLAGS += AFSP_INCLUDE_PATH=$(AFSP_INCLUDE_PATH)
endif
ifdef AFSP_LIBRARY_PATH
override MFLAGS += AFSP_LIBRARY_PATH=$(AFSP_LIBRARY_PATH)
endif

ifdef VERBOSE
override MFLAGS += VERBOSE=$(VERBOSE)
endif

# BG: separate sub-makefiles for the three codec families:
#       makefile.par
#       makefile.lpc
#       makefile.tf
#       makefile.g729

OBJS_ENC_PAR = enc_par_dmy.o
OBJS_ENC_LPC = enc_lpc_dmy.o
OBJS_ENC_TF  = enc_tf_dmy.o
OBJS_ENC_G729 = enc_g729_dmy.o
OBJS_ENC_G723 = enc_g723_dmy.o
OBJS_DEC_PAR = dec_par_dmy.o
OBJS_DEC_LPC = dec_lpc_dmy.o
#OBJS_DEC_TF  = dec_tf_dmy.o
# I hate to do this, but I'm forced :-(   HP 990120
# Please, Heiko, tell me why it is/was necessary to include concealment_dummy.o in OBJS_DEC_TF. lauber 990421
OBJS_DEC_TF  = dec_tf_dmy.o tf_tables.o
OBJS_DEC_G729  = dec_g729_dmy.o
OBJS_DEC_G723  = dec_g723_dmy.o

OBJS_ALL_G729 = $(OBJS_DEC_G729) $(OBJS_ENC_G729)
OBJS_ALL_G723 = $(OBJS_DEC_G723) $(OBJS_ENC_G723)

LIBS_ENC_PAR = 
LIBS_DEC_PAR = 
LIBS_ENC_LPC = 
LIBS_DEC_LPC = 
LIBS_ENC_TF = 
LIBS_DEC_TF = 
LIBS_ENC_G729 = 
LIBS_DEC_G729 = 
LIBS_ENC_G723 = 
LIBS_DEC_G723 = 

ifeq "$(PAR)" "1"
include makefile.par
endif
ifeq "$(LPC)" "1"
include makefile.lpc
endif
ifeq "$(TF)" "1"
include makefile.tf
endif
ifeq "$(G729)" "1"
include makefile.g729
endif
ifeq "$(G723)" "1"
include makefile.g723
endif

OBJS_DEC_PICOLA = 
LIBS_DEC_PICOLA = 
ifeq "$(PICOLA)" "1"
OBJS_DEC_PICOLA = pan_picola.o
else
OBJS_DEC_PICOLA = picola_dmy.o
endif



#############################################################################
#
# don't edit after this line !!!
#
# (unless you know what you are doing)
#


# object files

OBJS_COM = common_m4a.o cmdline.o bitstream.o audio.o austream.o\
	fir_filt.o flex_mux.o adif.o

ifeq "$(DEBUGPLOT)" "1"
OBJS_COM += plotmtv_interf.o writevector.o
else
OBJS_COM += plotmtv_interf_dummy.o
endif
# plotmtv_interf.c is just a C interface to the freeware program plotmtv, 
# see src_frame/plotmtv_interf.c for further information
# see also src_frame/writevector.c

ifndef STATISTICS
STATISTICS = 0
endif
ifeq "$(STATISTICS)" "1"
OBJS_COM += statistics.o
else
OBJS_COM += statistics_dummy.o
endif

OBJS_ENC = mp4auenc.o $(OBJS_COM)\
	$(OBJS_ENC_PAR) $(OBJS_ENC_LPC) $(OBJS_ENC_TF)\
	$(OBJS_ALL_G729) $(OBJS_ALL_G723)
OBJS_DEC = mp4audec.o $(OBJS_COM)\
	$(OBJS_DEC_PAR) $(OBJS_DEC_LPC) $(OBJS_DEC_TF)\
	$(OBJS_DEC_PICOLA) $(OBJS_DEC_G729) $(OBJS_DEC_G723) mod_buf.o

ifeq "$(ISOMP4)"  "1"
OBJS_DEC += mp4ifc.o
endif

ifeq "$(VERSION)" "2"
OBJS_DEC += resilience.o 
endif


# libraries

# -lm is always included (see makelevel 1)   HP 961203
LIBS_COM = 
ifeq "$(USE_AFSP)" "1"
LIBS_COM += -ltsp
endif
ifeq "$(ISOMP4)"  "1"
LIBS_COM += -lisomp4
endif

LIBS_ENC = $(LIBS_ENC_PAR) $(LIBS_ENC_LPC) $(LIBS_ENC_TF) $(LIB_ENC_G729)\
	$(LIB_ENC_G723)
LIBS_DEC = $(LIBS_DEC_PAR) $(LIBS_DEC_LPC) $(LIBS_DEC_TF) $(LIBS_DEC_PICOLA)\
	$(LIB_DEC_G729)	$(LIB_DEC_G723)


# rules

default : all

all : mp4auenc mp4audec

mp4auenc :
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_ENC)"\
	LIBS="$(LIBS_ENC)" COMLIBS="$(LIBS_COM)"\
	CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"\
	DEFFLAGS="$(DEFFLAGS)" VERSION="$(VERSION)"\
	INCLDEP=1 ENCODE=1 TARGET=mp4auenc binary

mp4audec : 
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_DEC)"\
	LIBS="$(LIBS_DEC)" COMLIBS="$(LIBS_COM)"\
	CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"\
	DEFFLAGS="$(DEFFLAGS)" VERSION="$(VERSION)"\
	INCLDEP=1 TARGET=mp4audec binary


depend :
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_ENC)" VERSION="$(VERSION)"\
	ENCODE=1 TARGET=mp4auenc depend
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_DEC)" VERSION="$(VERSION)"\
	TARGET=mp4audec depend

clean :
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_ENC)" VERSION="$(VERSION)"\
	ENCODE=1 TARGET=mp4auenc clean
	$(MAKE) $(MFLAGS) OBJS="$(OBJS_DEC)" VERSION="$(VERSION)"\
	TARGET=mp4audec clean

makedirs :
	$(MAKE) $(MFLAGS) OBJS="" VERSION="$(VERSION)"\
	TARGET=mp4auenc makedirs
	$(MAKE) $(MFLAGS) OBJS="" VERSION="$(VERSION)"\
	TARGET=mp4audec makedirs



endif    #MAKELEVEL == 0


#############################################################################


ifeq "$(MAKELEVEL)" "1"

# HP 981202  VERSION now passed down to MAKELEVEL 1
ifeq "$(VERSION)" "2"
VERDIR = v2
else
VERDIR = v1
endif

# -lm is always included   HP 961203
SYSLIBS = -lm

# defaults for "make depend" as used by most platforms
DEPFLAGS = -M
# SED = sed 's§$*.o§$(OBJDIR)/$*.o $(OBJDIR)/$*.d§g'
SED = sed 's@$*.o@$(OBJDIR)/$*.o $(OBJDIR)/$*.d@g'

# automatic platform detection
##############################
ifeq "$(SYSTEM_NAME)" "SunOS"
  PLTDIR       = sunos
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  #override CFLAGS += -ansi -pedantic-errors
  DCC = g++
  CC = g++
  LINK = g++
else
##############################
ifeq "$(SYSTEM_NAME)" "HPUX"
  PLTDIR       = hpux
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  #override CFLAGS += -ansi -pedantic-errors
  #override CFLAGS += -ansi -g -pedantic -Wall
  #DCC = g++
  #CC = g++
  #LINK = g++
  #DCC = gcc
  #CC  = gcc
  #LINK = gcc
  ifneq "$(PURIFY)" "1"
    override CFLAGS += -Aa +O2
    DCC = gcc
    CC = cc
    LINK = cc
    LANG = C
  else
    override CFLAGS += -Aa -g
    DCC = gcc
    CC = cc
    LINK = purify cc
    LANG = C
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "IRIX"
  PLTDIR       = sgi
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  ifeq "$(MAKE_CC)" "CC"
    ## sgi c:
    #override CFLAGS += -ansi -pedantic -DHAS_ULONG
    #DCC = cc
    #CC = cc
    #LINK = cc
    ## sgi c++:
    PLTVERSYSDIR = $(PLTVERDIR)_cc
    override CFLAGS += -g -ansi -pedantic
    override LDFLAGS += -g
    DCC = CC
    CC = CC
    LINK = CC
#    SED = sed 's§a.out§$(OBJDIR)/$*.o $(OBJDIR)/$*.d§g'
    SED = sed 's@a.out@$(OBJDIR)/$*.o $(OBJDIR)/$*.d@g'
  else
    ifeq "$(MAKE_CC)" "gnu"
      PLTVERSYSDIR = $(PLTVERDIR)_gcc
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_gcc3
        override CFLAGS += -O3
      else
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = gcc
      CC = gcc
      LINK = gcc
    else 
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_3
        override CFLAGS += -O3
      else
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = g++
      CC = g++
      LINK = g++
    endif
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "IRIX64"
  PLTDIR       = sgi64
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  ifeq "$(MAKE_CC)" "native"
    PLTVERSYSDIR = $(PLTVERDIR)_native
    override CFLAGS += -ansi -pedantic -fullwarn -woff 1174,1209,1552,1521
    CXX = cc -n32
    LINK = cc -n32
    ifeq "$(OPTIM_LEV)" "0"
      DCC = $(CXX) -g
      CC = $(CXX) -g
      #LINK =  $(LINK) -g
    endif # OPTIM_LEV == 0
    ifeq "$(OPTIM_LEV)" "1"
      PLTVERSYSDIR = $(PLTVERDIR)_native1
      DCC =  $(CXX) -O -g1
      CC =  $(CXX) -O -g1
      #LINK =  $(LINK) -g
    endif # OPTIM_LEV == 1
    ifeq "$(OPTIM_LEV)" "2"
      PLTVERSYSDIR = $(PLTVERDIR)_native2
      DCC =  $(CXX) -O2 -g2
      CC =  $(CXX) -O2 -g2
      #LINK =  $(LINK) -g
    endif # OPTIM_LEV == 2
    ifeq "$(OPTIM_LEV)" "3"
      PLTVERSYSDIR = $(PLTVERDIR)_native3
      DCC =  $(CXX) -O3 -g3
      CC =  $(CXX) -O3 -g3
      #LINK =  $(LINK) -g
    endif # OPTIM_LEV == 3
    ifeq "$(OPTIM_LEV)" "4"
      PLTVERSYSDIR = $(PLTVERDIR)_native4
      DCC =  $(CXX) -O4 -g4
      CC =  $(CXX) -O4 -g4
      #LINK =  $(LINK) -g
    endif # OPTIM_LEV == 4
  else
    ifeq "$(MAKE_CC)" "cc"
      PLTVERSYSDIR = $(PLTVERDIR)_cc
      override CFLAGS += -g -ansi -pedantic 
      override LDFLAGS += -g
      DCC = cc 
      CC = cc
      LINK = cc
    else
      ifeq "$(MAKE_CC)" "gnu"
        PLTVERSYSDIR = $(PLTVERDIR)_gcc
        ifeq "$(OPTIM_LEV)" "3"
          PLTVERSYSDIR = $(PLTVERDIR)_gcc3
          override CFLAGS += -O3
        else
          override CFLAGS += -g
          override LDFLAGS += -g
        endif
        DCC = gcc
        CC = gcc
        LINK = gcc
      else 
        ifeq "$(OPTIM_LEV)" "3"
          PLTVERSYSDIR = $(PLTVERDIR)_g++3
          override CFLAGS += -O3
        else
          PLTVERSYSDIR = $(PLTVERDIR)_g++
          override CFLAGS += -g
          override LDFLAGS += -g
        endif
        DCC = g++
        CC = g++
        LINK = g++
      endif
    endif
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "Linux"
  PLTDIR       = linux
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  ifeq "$(BOUNDS)" "1"
    PLTVERSYSDIR = $(PLTVERDIR)_bounds
    GCC_HOME = $(HOME)/tools/gcc-2.7.2
    override CFLAGS +=-B$(GCC_HOME)/ -g -fbounds-checking -ansi -pedantic -Wall #-fno-builtin -Wno-unused
    DCC = $(GCC_HOME)/xgcc
    CC = $(GCC_HOME)/xgcc
    LINK = $(GCC_HOME)/xgcc -B$(GCC_HOME)/ -g -fbounds-checking #-fno-builtin
  else
    #override CFLAGS += -ansi -pedantic -Wmissing-prototypes -Wall  -Wno-unused
    override CFLAGS += -ansi -pedantic -Wall -Wno-unused -Wmissing-prototypes 
    ifeq "$(MAKE_CC)" "gnu"
      PLTVERSYSDIR = $(PLTVERDIR)_gcc
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_gcc3
        override CFLAGS += -O3
      else
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = gcc
      CC = gcc
      LINK = gcc
    else 
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_g++3
        override CFLAGS += -O3
      else
        PLTVERSYSDIR = $(PLTVERDIR)_g++
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = g++
      CC = g++
      LINK = g++
    endif
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "Linux6"
  PLTDIR       = linux6
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  ifeq "$(BOUNDS)" "1"
    PLTVERSYSDIR = $(PLTVERDIR)_bounds
    GCC_HOME = $(HOME)/tools/gcc-2.7.2
    override CFLAGS +=-B$(GCC_HOME)/ -g -fbounds-checking -ansi -pedantic -Wall #-fno-builtin -Wno-unused
    DCC = $(GCC_HOME)/xgcc
    CC = $(GCC_HOME)/xgcc
    LINK = $(GCC_HOME)/xgcc -B$(GCC_HOME)/ -g -fbounds-checking #-fno-builtin
  else
    #override CFLAGS += -ansi -pedantic -Wmissing-prototypes -Wall  -Wno-unused
    override CFLAGS += -ansi -pedantic -Wall -Wno-unused -Wmissing-prototypes 
    ifeq "$(MAKE_CC)" "gnu"
      PLTVERSYSDIR = $(PLTVERDIR)_gcc
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_gcc3
        override CFLAGS += -O3
      else
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = gcc
      CC = gcc
      LINK = gcc
    else 
      ifeq "$(OPTIM_LEV)" "3"
        PLTVERSYSDIR = $(PLTVERDIR)_g++3
        override CFLAGS += -O3
      else
        PLTVERSYSDIR = $(PLTVERDIR)_g++
        override CFLAGS += -g
        override LDFLAGS += -g
      endif
      DCC = g++
      CC = g++
      LINK = g++
    endif
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "OSF"
  #override CFLAGS += -ansi -pedantic -Wall
  PLTDIR       = osf
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  #DCC = g++
  #CC = g++
  #LINK = g++
  DCC  = cc
  CC   = cc
  LINK = cc
else
##############################
ifeq "$(SYSTEM_NAME)" "OS2"
  #override CFLAGS += -ansi -pedantic-errors
  override CFLAGS += -ansi -pedantic -Wall
  PLTDIR       = os2
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  DCC = gcc
  CC = gcc
  LINK = gcc -g
  EXE_SUFFIX = .exe
else
##############################
ifeq "$(SYSTEM_NAME)" "Solaris"
  PLTDIR       = sol
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  ifeq "$(MAKE_CC)" "native"	
    DCC = cc 
    CC = cc 
    LINK = cc
    SOLCC = native
    PLTVERSYSDIR = $(PLTVERDIR)_native
    override DEPFLAGS = -xM1 
    override LDFLAGS  = -g -xs -Xc -z i_full
    #override DEFFLAGS += -DHAS_ULONG
    ifeq "$(OPTIM_LEV)" "3"
      PLTVERSYSDIR = $(PLTVERDIR)_native3
      override CFLAGS  =  -g -xs -Xc -xO3 -v
    else
      override CFLAGS  =  -g -xs -Xc  -v
    endif
  else
    #override DEFFLAGS += -DHAS_ULONG
    ifeq "$(BOUNDS)" "1"
      PLTVERSYSDIR = $(PLTVERDIR)_bounds
      DCC = gcc 
      CC = gcc
      LINK = gcc
      CFLAGS += -ansi -pedantic -Wall
      override CFLAGS += -g -fbounds-checking
      override LDFLAGS += -g -fbounds-checking
    else
      ifeq "$(MAKE_CC)" "gnu"
        PLTVERSYSDIR = $(PLTVERDIR)_gcc
        ifeq "$(OPTIM_LEV)" "3"
          PLTVERSYSDIR = $(PLTVERDIR)_gcc3
          override CFLAGS += -O3
        else
          override CFLAGS += -g
          override LDFLAGS += -g
        endif
        DCC = gcc
        CC = gcc
        LINK = gcc
      else 
        ifeq "$(OPTIM_LEV)" "3"
          PLTVERSYSDIR = $(PLTVERDIR)_g++3
          override CFLAGS += -O3
        else
          PLTVERSYSDIR = $(PLTVERDIR)_g++
          override CFLAGS += -g 
          override LDFLAGS += -g
        endif
        DCC = g++
        CC = g++
        LINK = g++
      endif
    endif
  endif
else
##############################
ifeq "$(SYSTEM_NAME)" "cdk"
  #override CFLAGS += -ansi -pedantic-errors
  PLTDIR       = cdk
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  DCC = gcc
  CC = gcc
  LINK = gcc
  EXE_SUFFIX = .exe
else
##############################
  PLTDIR       = unknown
  PLTVERDIR    = $(PLTDIR)_$(VERDIR)
  PLTVERSYSDIR = $(PLTVERDIR)
  DCC = $(CC)
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif


# set paths and directories

SRCPATH = src_frame: src_par: src_lpc: src_tf: src_g729: src_g723
SRCPATHENC = src_frame_enc: src_par_enc: src_lpc_enc: src_tf_enc:\
	src_g729_enc: src_g723_enc

BINDIR = $(PLTVERSYSDIR)
OBJDIR = $(PLTVERSYSDIR)/obj
LIBDIR = $(PLTDIR)/lib
LIBDIRENC = $(PLTDIR)/lib_enc
PLTDIRTAG = $(PLTDIR)/_$(SYSTEM_NAME)_ $(PLTVERSYSDIR)/_$(SYSTEM_NAME)_

INCL =
LIBPATH =

# AFSP paths
ifdef AFSP_INCLUDE_PATH
INCL += -I$(AFSP_INCLUDE_PATH)
endif
ifdef AFSP_LIBRARY_PATH
LIBPATH += -L$(AFSP_LIBRARY_PATH)
endif

ifdef ISOMP4_PATH
ISOMP4_INCLUDE_PATH = $(ISOMP4_PATH)/src
ISOMP4_PLATFORM_PATH = $(ISOMP4_PATH)/$(PLTDIR)
ISOMP4_LIBRARY_PATH = $(ISOMP4_PLATFORM_PATH)/libisomp4
INCL += -I$(ISOMP4_PLATFORM_PATH) -I$(ISOMP4_INCLUDE_PATH) 
LIBPATH += -L$(ISOMP4_LIBRARY_PATH)
endif

ifeq "$(ENCODE)" "1"

# enable encoder directories (make encoder)
INCL += -Isrc_frame -Iinclude -Isrc_frame_enc -Iinclude_enc\
	-Isrc_par -Isrc_lpc -Isrc_tf -Isrc_g729 -Isrc_g723\
	-Isrc_par_enc -Isrc_lpc_enc -Isrc_tf_enc -Isrc_g729_enc -Isrc_g723_enc
LIBPATH += -L$(LIBDIR) -L$(LIBDIRENC)
vpath %.c
vpath %.c $(SRCPATH): $(SRCPATHENC)

else

# disable encoder directories (make decoder -g)
INCL += -Isrc_frame -Iinclude -Isrc_par -Isrc_lpc -Isrc_tf\
	-Isrc_g729 -Isrc_g723
LIBPATH += -L$(LIBDIR)
vpath %.c
vpath %.c $(SRCPATH)

endif


# add directory and extension to filenames

LIB_SUFFIX = .a
LNK_SUFFIX = .lnk

DIROBJS = $(addprefix $(OBJDIR)/,$(OBJS))
DIRDEPS = $(DIROBJS:%.o=%.d)

ifeq "$(ENCODE)" "1"
DIRLIBS = $(addsuffix .a,$(subst -l,$(LIBDIRENC)/lib,$(LIBS)))
else
DIRLIBS = $(addsuffix .a,$(subst -l,$(LIBDIR)/lib,$(LIBS)))
endif
# HP 990428   libtsp.a (the only entry in COMLIBS) can't be automatically
# generated by this makefile anyway - so there is no "dependency" required ...
#DIRLIBS += $(addsuffix .a,$(subst -l,$(LIBDIR)/lib,$(COMLIBS)))

ifeq "$(suffix $(TARGET))" "$(LIB_SUFFIX)"
ifeq "$(ENCODE)" "1"
DIRTARGET = $(LIBDIRENC)/$(TARGET)
else
DIRTARGET = $(LIBDIR)/$(TARGET)
endif
else
DIRTARGET = $(BINDIR)/$(TARGET)
endif


# compose list of object/library files for linker
# force linking if list of object/library files changed

LNK = $(DIROBJS) $(LIBPATH) $(LIBS) $(COMLIBS)
-include $(DIRTARGET)$(LNK_SUFFIX)

ifneq "$(strip $(OLDLNK))" "$(strip $(LNK))"
FORCE_LINKING = force
endif


# rules

force :
	@echo "*****" force linking

makedirs : $(PLTDIRTAG)

binary : $(PLTDIRTAG)
binary : $(DIRTARGET)$(EXE_SUFFIX)
	@echo "*****" made binary $<

library : $(PLTDIRTAG)
library : $(DIRTARGET)
	@echo "*****" made library $<

depend : $(PLTDIRTAG)
depend : $(DIRDEPS)
	@echo "*****" made dependencies for $(DIRTARGET)

ifeq "$(suffix $(TARGET))" "$(LIB_SUFFIX)"
# compose library
$(DIRTARGET) : $(PLTDIRTAG)
$(DIRTARGET) : $(DIROBJS)
	@echo "*****" composing library $@ ...
	-rm $(DIRTARGET)
#	ar rv $(DIRTARGET) $^
	ar rv $(DIRTARGET) $(DIROBJS)
	ranlib $(DIRTARGET)
else
# link
$(DIRTARGET)$(EXE_SUFFIX) : $(PLTDIRTAG)
$(DIRTARGET)$(EXE_SUFFIX) : $(DIROBJS) $(DIRLIBS) $(FORCE_LINKING)
	@echo "*****" linking $@ ...
	$(LINK) $(LDFLAGS) $(DIROBJS) $(LIBPATH)\
	$(LIBS) $(COMLIBS) $(SYSLIBS) -o $@
	@echo "OLDLNK = " $(LNK) > $(DIRTARGET)$(LNK_SUFFIX)
endif

ifdef FHG_MAKEDUMMYFILE
# ... doesn't work outside of FhG   HP 990520
# generate dummy file
%_dummy.c: %.c
	@echo "*****" making dummy file for $< ...
	gawk -f makedummyfile $< > $@
endif

# compile
$(DIROBJS) : $(PLTDIRTAG)
$(DIROBJS) : $(OBJDIR)/%.o : %.c
	@echo "*****" compiling $< ...
ifeq "$(VERBOSE)" "1"
	$(CC) -c $(DEFFLAGS) $(CFLAGS) $(INCL) $< -o $@
else
	@$(CC) -c $(DEFFLAGS) $(CFLAGS) $(INCL) $< -o $@
endif

# generate dependencies
$(DIRDEPS) : $(PLTDIRTAG)
$(DIRDEPS) : $(OBJDIR)/%.d : %.c 
	@echo "*****" making dependencies for $< ...
#	lint -c $(DEFFLAGS) $(CFLAGS) $(INCL) $< 
ifeq "$(VERBOSE)" "1"
	$(DCC) $(DEFFLAGS) $(DEPFLAGS) $(INCL) $< | $(SED) > $@
else
	@$(DCC) $(DEFFLAGS) $(DEPFLAGS) $(INCL) $< | $(SED) > $@
endif

# include dependency files *.d
# NOTE: If an included *.d file does not exist, this file becomes a target
#       that is to be made if a corresponding rule exists!
#       (here: "generate dependencies" rule)
ifeq "$(INCLDEP)" "1"
-include $(DIRDEPS)
endif

$(PLTDIRTAG) :
	@echo "*****" making directories
	-mkdir -p $(OBJDIR)
	-mkdir -p $(LIBDIR)
	touch $(PLTDIRTAG)

clean : 
	@echo "*****" cleaning ...
	-rm $(DIRDEPS)
	-rm $(DIROBJS)
ifeq "$(suffix $(TARGET))" "$(LIB_SUFFIX)"
	-rm $(DIRTARGET)
else
	-rm $(DIRTARGET)$(EXE_SUFFIX)
	-rm $(DIRTARGET)$(LNK_SUFFIX)
endif


endif	#(MAKELEVEL) == 1


#############################################################################

# end of makefile