view src/gpf3/frame/makefile @ 309:a05a9e88976f

configure.sh: better comment
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 02 Nov 2017 06:59:21 +0000
parents c41a534f33c6
children
line wrap: on
line source

#######################  Makefile for GNU make    #####################
#
#           makefile with rules for all different variations of Frame
#
#           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#           targets:
#
#           os_layer      (objects)
#           frameobjs     Frame + OS-Layer + TST (objects)
#           ../lib/frame.lib or ../lib/frame.dll
#           ../lib/ofe.lib or ../lib/ofe.dll Frame + OS_LAYER + TST + OFE
#           clean         delete object files
#
#######################################################################


VPATH=$(OS_LAYER_SRC) $(OBJDIR)
OWN_MAKELEVEL=0


GPF:=$(subst \,/,$(GPF))

ifdef TOOL_CHOICE
  TS:=/ts$(TOOL_CHOICE)
  tsTail  :=_ts$(TOOL_CHOICE)
else
  TS:=
endif

ifdef PATH_CC_1_22E 
 PATH:=$(PATH_CC_1_22E);$(PATH)
 C_DIR:=$(PATH_CC_1_22E)
endif

ifeq ($(TOOL_CHOICE), 3)
 COPTS= --align_structs=4 -pden -q
 ifndef PATH_CC_2_54 
   PATH_CC_2_54=C:/Dvpt_tools/Codegen/TMS4701x_2.54
   C_DIR=PATH_CC_2_54
 endif
 Path:=$(PATH_CC_2_54)/bin;$(Path)
 INCLUDES += -I"$(PATH_CC_2_54)/include"
endif

ifeq ($(TOOL_CHOICE), 5)
 COPTS= --align_structs=4 -pden -q
 ifndef PATH_CC_2_55 
   PATH_CC_2_55=C:\Dvpt_tools\Codegen\TMS4701x_2.55
#  C_DIR=PATH_CC_2_55
 endif
 Path:=$(PATH_CC_2_55)/bin;$(Path)
 INCLUDES += -I"$(PATH_CC_2_55)/include"
endif

ifeq ($(TOOL_CHOICE), 6)
  # --code_state=16 => -mt
  # --endian=little => -me
  # what is -ml?
  COPTS= -mv=5e --abi=ti_arm9_abi
  COPTS+= -pden -pdv -mf -ms -qq -disable_branch_chaining -pi
  ifndef PATH_CC_4_11 
    PATH_CC_4_11=C:\Dvpt_tools\Codegen\TMS4701x_4.11
#   C_DIR=PATH_CC_4_11
  endif
  Path:=$(PATH_CC_4_11)/bin;$(Path)
  INCLUDES += -I"$(PATH_CC_4_11)/include"
endif

#*==== PARAMETERS-ANALYSIS =========================================*#
ifeq ($(FLOAT), 1)
REPLACE		= -replace
endif

ifeq ($(OS_ONLY), 1)
  OSAL:=/os
else
  OSAL:=
endif

ifeq ($(TARGET), nuc)
  ifeq ($(RUN_FLASH), 1)
    SECTION:=/fl
  endif

  ifeq ($(RUN_INT_RAM), 1)
    SECTION:=/ir
  endif
else
  SECTION:=
endif

ifeq ($(TARGET), linuxpc)
  ESF=1
endif
ifeq ($(TARGET), linuxarm)
  ESF=1
endif
ifeq ($(TARGET), solsparc)
  ESF=1
endif

ifeq ($(ESF), 1)
  ES:=/esf
else
  ES:=
endif

ifeq ($(NO_LINT), 1)
  USE_LINT:=1
else
  USE_LINT:=0
endif

ifeq "$(CLEARCASE_PRIMARY_GROUP)" ""
  CLRCAS=0
else
  ifeq "$(IN_VOB)" "FALSE"
    CLRCAS=0
  else
    CLRCAS=1
  endif
endif

ifeq ($(CLRCAS), 1)
  CHECKOUT = -cleartool co -nc
  CHECKIN = -cleartool ci -nc
else
  CHECKOUT = attrib -r
  CHECKIN = attrib +r
endif

# for created object files
ifeq ($(TARGET), nuc)
  OBJDIR=obj/$(TARGET)/$(PLATFORM)$(DB)$(OSAL)$(PS)$(ES)$(SECTION)$(OPT)$(TS)
  NUC_OBJDIR=e:/nucleus/v1.1/os/asm
  TIF_OBJDIR=../tst/$(OBJDIR)
  MISC_OBJDIR=../misc/$(OBJDIR)
else
  OBJDIR=obj/$(TARGET)$(DB)$(OSAL)$(PS)$(ES)
endif

# for stack calculation
GAWK=../tools/bin/gawk.exe
AWK_PROG=../BIN/cg$(tTail).awk

# Lint
LINT=lint-nt.exe
LINT_INC=-i/gpf/template/lint/
LINT_OPT_FILE=/gpf/template/lint/options.lnt

# general directories
GPFDIR=..
INCDIR=../inc
ifndef TI_DIR
  TI_DIR=/chipsetsw/
endif
override TI_DIR:=$(subst \,/,$(TI_DIR))

# for created libraries
ifeq ($(TARGET), win32)
  LIBDIR=../LIB/WIN32$(DEBUGDIR)
  BINDIR=../BIN$(DEBUGDIR)
else
  LIBDIR:=../LIB
endif


OS_LAYER_SRC=./$(TARGET)
FRAME_SRC=./



#-------------------------general exported include files
INC_FILES=Vsi.h os.h typedefs.h drvconf.h STDDEFS.H gdi.h comp.h Header.h \
          ofe.h PEI.H poolconf.h TOK.H $(LIBDIR)/FrmConst.h

#-------------------------Suffixes for the name of the output file
#---------e.g. frame_tr_rt_po_db.lib

ifeq ($(ESF), 1)
   esfTail :=_esf
else
   esfTail :=
endif

ifeq ($(RUN_FLASH), 1)
   flTail :=_fl
else
   flTail:=
endif

ifeq ($(RUN_INT_RAM), 1)
   irTail :=_ir
else
   irTail:=
endif

ifeq ($(TARGET), nuc)
  ifeq ($(PLATFORM), arm7)
    tTail :=_na7
  else
    ifeq ($(PLATFORM), arm9)
      tTail :=_na9
    else
      ifeq ($(PLATFORM), pc)
        tTail :=_npc
      endif
    endif
  endif
else
  ifeq ($(TARGET), nuc_ARM)
    tTail :=_ar
  else
    ifeq ($(TARGET), win32)
      tTail :=
    else
      ifeq ($(TARGET), psos)
        tTail :=_po
      else
   	ifeq ($(TARGET), vxworks)
	  tTail :=_vx
    	  ifeq ($(TOOL), gnu)
	    tlTail :=_gn
          else
	    tlTail :=_di
	  endif
    	  ifeq ($(CPU), PPC603)
	    cpTail :=_pp
	  endif
        else
   	  ifeq ($(TARGET), linuxpc)
	    tTail :=_lpc
            OSENV=sus
            NO_LINT=1
          else
            ifeq ($(TARGET), rtlpc)
              tTail :=_rlp
              OSENV=sus
              NO_LINT=1
              RTL_VERSION=2.0
              RTL_DIR=/opt/rtldk-$(RTL_VERSION)/rtlinuxpro
              include $(RTL_DIR)/rtl.mk
            else
              ifeq ($(TARGET), linuxarm)
                tTail :=_la9
                OSENV=sus
                NO_LINT=1
              else
                ifeq ($(TARGET), solsparc)
                  tTail :=_ssp
                  OSENV=sus
                  NO_LINT=1
                endif
              endif
	    endif
	  endif
	endif
      endif
    endif
   endif
endif


ifeq ($(DEBUG), 1)
   DB=/db
   ifeq ($(TARGET), win32)
     DEBUGDIR=/debug
     dbTail :=
   else
     dbTail :=_db
   endif
else
   dbTail:=
   DB=
endif

ifeq ($(OS_ONLY), 1)
   LIBNAME = os
else
   LIBNAME = frame
endif

ifeq ($(NO_OPT), 1)
  DISABLE_OPT:=1
  OPT:=/no
   noTail:=_no
else
  DISABLE_OPT:=0
  OPT:=
  noTail:=
endif

#---------- shell calls
RM      		= -rm -rf
ifeq ($(OSENV), sus)
  MKDIR   		= mkdir
else
  MKDIR   		= gmkdir
endif
COPY    		= cp
MOVE      	    = mv
COPTS_FILE	    =
CLEARTOOL		= cleartool
ECHO			= @echo

#-------------------------Suffixes for the name of the output files
#--------frame.lib suffixes

ifeq ($(MEMSUPER), 2)
   msTail :=_ps
   PS=/ps
endif
ifeq ($(MEMSUPER), 1)
   msTail :=_pm
endif
ifeq ($(MEMSUPER), 0)
   msTail:=
   PS=
endif

XXX:=$(tTail)$(tlTail)$(cpTail)$(dbTail)$(msTail)$(esfTail)$(irTail)$(flTail)$(noTail)$(tsTail)

#-------------------------Suffixes for the name of the output files

_OS_LAYER= os_pro.$(OBJTAIL) os_com.$(OBJTAIL) os_tim.$(OBJTAIL) os_sem.$(OBJTAIL) os_mis.$(OBJTAIL) os_mem.$(OBJTAIL) $(OS_ISR) $(OS_PART) $(OSDRV)

ifeq ($(OS_ONLY), 1)
_FRAMEOBJS =  $(ESF_FUNC)
else
_FRAMEOBJS =  frame.$(OBJTAIL) vsi_sem.$(OBJTAIL) vsi_com.$(OBJTAIL) vsi_mem.$(OBJTAIL) vsi_tim.$(OBJTAIL)\
              vsi_mis.$(OBJTAIL) vsi_drv.$(OBJTAIL) vsi_trc.$(OBJTAIL) vsi_pro.$(OBJTAIL) xalert.$(OBJTAIL)\
              route.$(OBJTAIL) prf_func.$(OBJTAIL) frm_ext.$(OBJTAIL) $(ESF_FUNC)
endif

_TIFOBJS = $(TIF_OBJDIR)/tst_pei.$(OBJTAIL) $(TIF_OBJDIR)/tstdriver.$(OBJTAIL) $(TIF_OBJDIR)/tif.$(OBJTAIL)\
          $(TIF_OBJDIR)/tr.$(OBJTAIL) $(TIF_OBJDIR)/titrc.$(OBJTAIL)

_MISCOBJS = $(MISC_OBJDIR)/tok.$(OBJTAIL) $(MISC_OBJDIR)/tools.$(OBJTAIL)


_NUCOBJS = $(NUC_OBJDIR)/inc.$(OBJTAIL) $(NUC_OBJDIR)/dmi.$(OBJTAIL) $(NUC_OBJDIR)/evi.$(OBJTAIL) $(NUC_OBJDIR)/pmi.$(OBJTAIL) $(NUC_OBJDIR)/mbi.$(OBJTAIL) $(NUC_OBJDIR)/ioi.$(OBJTAIL) $(NUC_OBJDIR)/tmi.$(OBJTAIL) \
           $(NUC_OBJDIR)/qui.$(OBJTAIL) $(NUC_OBJDIR)/hii.$(OBJTAIL) $(NUC_OBJDIR)/eri.$(OBJTAIL) $(NUC_OBJDIR)/pii.$(OBJTAIL) $(NUC_OBJDIR)/smi.$(OBJTAIL) $(NUC_OBJDIR)/tci.$(OBJTAIL) $(NUC_OBJDIR)/erc.$(OBJTAIL) \
           $(NUC_OBJDIR)/mbd.$(OBJTAIL) $(NUC_OBJDIR)/iod.$(OBJTAIL) $(NUC_OBJDIR)/hid.$(OBJTAIL) $(NUC_OBJDIR)/pid.$(OBJTAIL) $(NUC_OBJDIR)/qud.$(OBJTAIL) $(NUC_OBJDIR)/erd.$(OBJTAIL) $(NUC_OBJDIR)/lic.$(OBJTAIL) \
           $(NUC_OBJDIR)/rld.$(OBJTAIL) $(NUC_OBJDIR)/lid.$(OBJTAIL) $(NUC_OBJDIR)/ioc.$(OBJTAIL) $(NUC_OBJDIR)/ioce.$(OBJTAIL) $(NUC_OBJDIR)/iof.$(OBJTAIL) $(NUC_OBJDIR)/quc.$(OBJTAIL) $(NUC_OBJDIR)/quce.$(OBJTAIL) \
           $(NUC_OBJDIR)/quf.$(OBJTAIL) $(NUC_OBJDIR)/qus.$(OBJTAIL) $(NUC_OBJDIR)/quse.$(OBJTAIL) $(NUC_OBJDIR)/pic.$(OBJTAIL) $(NUC_OBJDIR)/pice.$(OBJTAIL) $(NUC_OBJDIR)/pif.$(OBJTAIL) $(NUC_OBJDIR)/pis.$(OBJTAIL) \
           $(NUC_OBJDIR)/pise.$(OBJTAIL) $(NUC_OBJDIR)/mbc.$(OBJTAIL) $(NUC_OBJDIR)/mbce.$(OBJTAIL) $(NUC_OBJDIR)/mbf.$(OBJTAIL) $(NUC_OBJDIR)/mbs.$(OBJTAIL) $(NUC_OBJDIR)/mbse.$(OBJTAIL) $(NUC_OBJDIR)/sms.$(OBJTAIL) \
           $(NUC_OBJDIR)/smse.$(OBJTAIL) $(NUC_OBJDIR)/tcs.$(OBJTAIL) $(NUC_OBJDIR)/tcse.$(OBJTAIL) $(NUC_OBJDIR)/evf.$(OBJTAIL) $(NUC_OBJDIR)/hic.$(OBJTAIL) $(NUC_OBJDIR)/dmc.$(OBJTAIL) $(NUC_OBJDIR)/dmce.$(OBJTAIL) \
           $(NUC_OBJDIR)/dmd.$(OBJTAIL) $(NUC_OBJDIR)/dmf.$(OBJTAIL) $(NUC_OBJDIR)/evc.$(OBJTAIL) $(NUC_OBJDIR)/evce.$(OBJTAIL) $(NUC_OBJDIR)/evd.$(OBJTAIL) $(NUC_OBJDIR)/pmf.$(OBJTAIL) $(NUC_OBJDIR)/smf.$(OBJTAIL) \
           $(NUC_OBJDIR)/tcf.$(OBJTAIL) $(NUC_OBJDIR)/tmf.$(OBJTAIL) $(NUC_OBJDIR)/rlc.$(OBJTAIL) $(NUC_OBJDIR)/csc.$(OBJTAIL) $(NUC_OBJDIR)/tmc.$(OBJTAIL) $(NUC_OBJDIR)/pmc.$(OBJTAIL) $(NUC_OBJDIR)/pmce.$(OBJTAIL) \
           $(NUC_OBJDIR)/pmd.$(OBJTAIL) $(NUC_OBJDIR)/smc.$(OBJTAIL) $(NUC_OBJDIR)/smce.$(OBJTAIL) $(NUC_OBJDIR)/smd.$(OBJTAIL) $(NUC_OBJDIR)/tcc.$(OBJTAIL) $(NUC_OBJDIR)/tcce.$(OBJTAIL) $(NUC_OBJDIR)/tcd.$(OBJTAIL) \
           $(NUC_OBJDIR)/tms.$(OBJTAIL) $(NUC_OBJDIR)/tmse.$(OBJTAIL) $(NUC_OBJDIR)/tmd.$(OBJTAIL)


ifeq ($(MEMSUPER), 2)
   _FRAMEOBJS +=  vsi_ppm.$(OBJTAIL)
endif

_FRAMEOBJS +=  frame_version.$(OBJTAIL)

#----------------------------------- Special settings for each target
#----------Nucleus
ifeq ($(TARGET), nuc)
  ifeq ($(PLATFORM), arm7)

    OSDRV = os_drv.$(OBJTAIL)
    OS_ISR = os_isr.$(OBJTAIL)
    OS_LAYER_SRC:=./nuc/
    _OS_LAYER += os_evt.$(OBJTAIL)

   ifeq ($(TOOL_CHOICE), )
    COPTS+= -mw -x -pw2 -q -o
   endif

   CC=cl470
   COPTS+= -me -mt

   ifeq ($(DEBUG), 1)
     ifeq ($(TOOL_CHOICE), )
       COPTS += -g
     else
       COPTS += -gt
     endif
     COPTS += -mn
     DEFINES += -dNU_DEBUG
   endif

    ifeq ($(ASM_ONLY), 1)
      ASMOBJS = $(_NUCOBJS) $(_TIFOBJS) $(_MISCOBJS)
      COPTS+= -q -n -x0 -fs $(OBJDIR)
      MKLIB = $(GAWK) -f $(AWK_PROG) > $(FRAME_LIB)
      OBJTAIL = asm
      FRAME_LIB = $(OBJDIR)/frame$(XXX).pa
    else
      LIBEXT = lib
      OBJTAIL = obj
      FRAME_LIB=$(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)
      LINT_OPT_FILE += nucleus.lnt
      LINT_OPTS = $(LINT_INC) -I"$(subst \,/,$(C_DIR))" -u  $(LINT_OPT_FILE)
      MKLIB = ar470  $(LFLAGS)
    endif

	ifeq ($(OS_ONLY), 1)
	  DEFINES += -dFF_OS_ONLY
    else
	  DEFINES += -d_FF_RV_EXIST_
      COPTS+= -o3
	endif

    ifeq ($(POOL_SPLIT), 1)
      DEFINES += -dFF_POOL_SPLIT
    endif

    ifeq ($(RUN_INT_RAM), 1)
      COPTS += -dRUN_INT_RAM
    endif

    ifeq ($(RUN_FLASH), 1)
      COPTS += -dRUN_FLASH
    endif

    COPTS += -fr $(OBJDIR) -c

    ifeq ($(MEMSUPER), 2)
      DEFINES +=  -dMEMORY_SUPERVISION -dOPTIMIZE_POOL
    endif
    ifeq ($(MEMSUPER), 1)
      DEFINES += -dMEMORY_SUPERVISION
    endif

    INCLUDES+=-I"." -I"..\FRAME\NUC" -I"..\INC\NUC" -I"..\INC\NUC\ARM7" -I"..\INC" \
             -I"..\TST" -I"$(TI_DIR)\Riviera" -I"$(TI_DIR)\Riviera\rv" -I"$(TI_DIR)\Services\dar" \
             -I"$(TI_DIR)\Riviera\rvm" -I"$(TI_DIR)\System" -I"$(TI_DIR)\Services" \
             -I"$(TI_DIR)\Drivers\drv_app"  -I"$(TI_DIR)\Drivers\drv_app\ffs" \
             -I"$(TI_DIR)\System\deps_objs\gprs_dsample_amr_nw" -I"$(TI_DIR)\System\deps_objs\gprs_dsample_amr_nw\config"


    DEFINES += -d_TARGET_ -d_NUCLEUS_
    COPTSNF = $(COPTS) $(DEFINES) $(INCLUDES)
    INCLUDELIST=$(INCLUDES)
    DEFINELIST=$(subst -d,-D,$(DEFINES))
    COPTS_FILE=
    COMMLFLAGS = -rq $@             # only one command:a
    LFLAGS=$(COMMLFLAGS)
    LIBEXT=lib

    clean:
		@$(RM) obj/$(TARGET)/$(PLATFORM)$(DB)$(OSAL)$(PS)$(SECTION)$(TS)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)

  endif
endif         # nucleus & arm7

#----------Nucleus
ifeq ($(TARGET), nuc)
  ifeq ($(PLATFORM), arm9)

    OSDRV = os_drv.$(OBJTAIL)
    OS_ISR = os_isr.$(OBJTAIL)
    OS_LAYER_SRC:=./nuc/
    _OS_LAYER += os_evt.$(OBJTAIL)

    CC=cl470
    COPTS+= -me -mt

    ifneq ($(DISABLE_OPT), 1)
      ifeq ($(TOOL_CHOICE), 6)
        COPTS+= -O=2
      else
        COPTS+= -o
      endif
    endif

    ifeq ($(DEBUG), 1)
      ifeq ($(TOOL_CHOICE), 6)
        COPTS += --symdebug:coff
      else
      # toolset 3 and 5
        COPTS += -gt
      endif
      COPTS += -mn
      DEFINES += -dNU_DEBUG
    endif

    LINT_OPT_FILE += nucleus.lnt
    LINT_OPTS = $(LINT_INC) -I"$(subst \,/,$(C_DIR))" -u  $(LINT_OPT_FILE)

	ifeq ($(OS_ONLY), 1)
	  DEFINES += -dFF_OS_ONLY
	endif

	ifeq ($(ESF), 1)
	  ESF_FUNC = esf_func.$(OBJTAIL)
	  DEFINES +=  -d_ESF_SUPPORT_
	endif

    ifeq ($(RUN_INT_RAM), 1)
      COPTS += -dRUN_INT_RAM
    endif

    ifeq ($(RUN_FLASH), 1)
      COPTS += -dRUN_FLASH
    endif

    COPTS += -fr $(OBJDIR) -c

    ifeq ($(MEMSUPER), 2)
      DEFINES +=  -dMEMORY_SUPERVISION -dOPTIMIZE_POOL
    endif
    ifeq ($(MEMSUPER), 1)
      DEFINES += -dMEMORY_SUPERVISION
    endif

    INCLUDES+=-I"." -I"..\FRAME\NUC" -I"..\INC\NUC" -I"..\INC" -I"..\TST"
    MKLIB=ar470 $(LFLAGS)

    INCLUDES += -I"..\inc\NUC\ARM9"

    DEFINES += -d_TARGET_ -d_NUCLEUS_
    COPTSNF = $(COPTS) $(DEFINES) $(INCLUDES)
    INCLUDELIST=$(INCLUDES)
    DEFINELIST=$(subst -d,-D,$(DEFINES))
    COPTS_FILE=
    COMMLFLAGS = -rq $@             # only one command:a
    LFLAGS=$(COMMLFLAGS)
    LIBEXT=lib
    OBJTAIL=obj
    FRAME_LIB=$(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

    clean:
		@$(RM) obj/$(TARGET)/$(PLATFORM)$(DB)$(OSAL)$(PS)$(ES)$(SECTION)$(OPT)$(TS)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)

  endif
endif         # nucleus & arm9


#----------------------------------- Special settings for each target
#----------Nucleus_ARM
ifeq ($(TARGET), nuc_ARM)

   OSDRV = os_drv.$(OBJTAIL)
   OS_LAYER_SRC:=./nuc/
   _OS_LAYER += os_evt.$(OBJTAIL)

   CC=perl "\G23M\Condat\INT\BIN\gti_compile.pl"
   COPTS= -me -mt -pw2 -q  -x -mw -o  # from condat_env.mak and os.mak for nucleus.lib

   ifeq ($(DEBUG), 1)
      COPTS += -g -mn
      DEFINES += -dNU_DEBUG
   endif
   COPTS += -fr $(OBJDIR) -fo $(OBJDIR)/$@ -c

   ifeq ($(MEMSUPER), 2)
     DEFINES +=  -dMEMORY_SUPERVISION -dOPTIMIZE_POOL
   endif
   ifeq ($(MEMSUPER), 1)
     DEFINES += -dMEMORY_SUPERVISION
   endif

   INCLUDES+=-I"..\FRAME\NUC" -I"..\inc\NUC" -I"..\inc\NUC\ARM7" -I"..\inc"  -I"..\TST"
   DEFINES += -d_TARGET_ -d_NUCLEUS_
   COPTSNF = $(COPTS) $(DEFINES) $(INCLUDES)
   INCLUDELIST=$(INCLUDES)
   DEFINELIST=$(subst -d,-D,$(DEFINES))
   COPTS_FILE=
   COMMLFLAGS = -rq $@             # only one command:a
   LFLAGS=$(COMMLFLAGS)
   MKLIB=perl "\G23M\Condat\INT\BIN\gti_archive.pl" $(LFLAGS)
   LIBEXT=lib
   OBJTAIL=obj
   FRAME_LIB=$(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

   clean:
		@$(RM) obj/$(TARGET)$(DB)$(PS)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)

endif         # target: Nucleus_ARM


#----------------------------------- Special settings for each target
#----------NucleusWin
ifeq ($(TARGET), nuc)
  ifeq ($(PLATFORM), pc)

    OS_ISR = os_isr.$(OBJTAIL)
    _OS_LAYER += os_ctb.obj
    _OS_LAYER += os_evt.$(OBJTAIL)
    OS_LAYER_SRC:=./nuc/
    CC=cl
    COPTS = /c /nologo /W3 /GX /Zp1 /GZ
    INCLUDES += -I"." -I"..\inc\NUC" -I"..\inc\NUC\PC" -I"..\inc" -I"..\TST"
    LINT_OPT_FILE += co-msc50.lnt
    LINT_OPTS = $(LINT_INC) -D_WIN32 -D_M_IX86 -I"NUC" -u $(LINT_OPT_FILE)

    ifeq ($(DEBUG), 1)
      COPTS += /MD /DEBUG /Z7
      DEFINES += -D"_DEBUG" -D"NU_DEBUG"
    else
      COPTS += /MT
    endif

    COPTS += /FR"..\temp\nucwin"  /Fd"..\temp\nucwin" /Fo./$(OBJDIR)/

    ifeq ($(OS_ONLY), 1)
	  DEFINES += -D"FF_OS_ONLY"
    endif

    ifeq ($(MEMSUPER), 2)
      DEFINES +=  -D"MEMORY_SUPERVISION"  -D"OPTIMIZE_POOL"
    endif
    ifeq ($(MEMSUPER), 1)
      DEFINES += -D"MEMORY_SUPERVISION"
    endif

    ifeq ($(POOL_SPLIT), 1)
      DEFINES += -D"FF_POOL_SPLIT"
    endif

    DEFINES += -D"_NUCLEUS_"
    COPTSNF = $(COPTS) $(DEFINES) $(INCLUDES)
    COPTS_FILE =
    INCLUDELIST=$(subst /I ,-I,$(INCLUDES))
    DEFINELIST=$(subst /D ,-D,$(DEFINES))

    COMMLFLAGS =  /nologo  /subsystem:console  /machine:I386
    LFLAGS=$(COMMLFLAGS) #/debug??
    MKLIB=LIB /out:$@ $(LFLAGS)
    LIBEXT=lib
    OBJTAIL=obj
    FRAME_LIB=$(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

    clean:
		@$(RM) obj/$(TARGET)/$(PLATFORM)$(DB)$(OSAL)$(PS)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)

  endif
endif         # nucleus && pc


ifeq ($(OSENV), sus)

    #_OS_LAYER += os_ctb.o
    OS_ISR = os_isr.$(OBJTAIL)
    ESF_FUNC = esf_func.$(OBJTAIL)
    OS_LAYER_SRC:=./$(OSENV)/
    COPTS = -c -o$(OBJDIR)/$@
    INCLUDES += -I. -I../inc/$(OSENV) -I../inc -I../TST -I$(OS_LAYER_SRC)
    ifeq ($(TARGET), linuxtool)
      DEFINES += -D_TOOLS_
    endif

    DEFINES += -DPURE_USER_MODE

    ifeq ($(OSL_LOG), 1)
      DEFINES += -DOSL_OSL_LOG
    endif
    ifeq ($(OS_ONLY), 1)
      DEFINES += -DFF_OS_ONLY
    endif

    ifeq ($(DEBUG), 1)
      COPTS += -g
      DEFINES += -DOSL_DEBUG
    endif

    ifeq ($(MEMSUPER), 2)
      DEFINES +=  -DMEMORY_SUPERVISION  -DOPTIMIZE_POOL
    endif
    ifeq ($(MEMSUPER), 1)
      DEFINES += -DMEMORY_SUPERVISION
    endif

   ifeq ($(TARGET), rtlpc)
     COPTSNF = $(CFLAGS)
     MKLIB= i386-linux-ar ruv $@
     RANLIB= i386-linux-ranlib
     DEFINES += -D_RT_LINUX_
   else
     ifeq ($(TARGET), linuxarm)
       CC=arm-linux-gcc
       MKLIB= arm-linux-ar ruv $@
       RANLIB= arm-linux-ranlib
       DEFINES += -D_TARGET -D_LINUX_ -D_ESF_SUPPORT_
     else
       ifeq ($(TARGET), solsparc)
         CC=gcc
         MKLIB= ar ruv $@
         RANLIB= ranlib
         DEFINES += -D_SOLARIS_ -D_LINUX_ -D_ESF_SUPPORT_
       else
         CC=gcc
         MKLIB= ar ruv $@
         RANLIB= ranlib
         DEFINES += -D_LINUX_ -D_ESF_SUPPORT_
       endif
     endif
   endif
    COPTSNF += $(COPTS) $(DEFINES) $(INCLUDES)
    COPTS_FILE =
    INCLUDELIST=$(subst /I ,-I,$(INCLUDES))
    DEFINELIST=$(subst /D ,-D,$(DEFINES))

    MKLIB=ar ruv $@
    LIBEXT=a
    OBJTAIL=o
    FRAME_LIB=$(LIBDIR)/lib$(LIBNAME)$(XXX).$(LIBEXT)

    clean:
		@$(RM) $(OBJDIR)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)

#_TESTOBJS=os_pro.o os_mem.o os_com.o os_sem.o os_tim.o os_mis.o
#TESTOBJS=$(patsubst %.$(OBJTAIL),$(OBJDIR)/%.$(OBJTAIL),$(_TESTOBJS))
   os_test: os_test$(tTail)
	@echo os_test$(tTail) built

   os_test$(tTail): $(_TESTOBJS) sus/os_test.c $(FRAME_LIB)
	$(CC) -g -o $@ $(INCLUDES) $(DEFINES)  sus/os_test.c $(FRAME_LIB) -lpthread -lrt

endif # osenv = sus

#----------------------------------- Special settings for each target
#----------Win32
ifeq ($(TARGET), win32)
   MISCXXX:=$(tTail)$(dbTail)
   TIFXXX:=$(tTail)$(dbTail)
   TOOLS_LIBDIR=../tools/lib
   OS_LAYER_SRC:=./vcms/
   CC=cl
   COPTS += /c /nologo /GX /W3 /Zp1 /GZ
   INCLUDES += -I"." -I$(OS_LAYER_SRC) -I"..\inc\vcms" -I"..\inc\win32" -I"..\inc\vcms\win32" -I"..\inc"
   LINT_OPT_FILE += co-msc50.lnt
   LINT_OPTS = $(LINT_INC) -D_WIN32 -D_M_IX86 -D_MSC_VER -D"WIN32" -u $(LINT_OPT_FILE)

   INCLUDES += -I"..\lib\win32"
   _OS_LAYER += frame_dllmain.$(OBJTAIL)

   COPTS += /FR"..\temp\win32"  /Fo./$(OBJDIR)/

   DEFINES += -D"CRASH_TOL"
   DEFINES += -D"_TOOLS_"

   DEFINES += -D"FRAME_DLL"
   DLLFLAGS= /dll\
             $(EXPFILE) $(LIBDIR)/misc$(MISCXXX).lib \
             $(LIBDIR)/tif$(TIFXXX).lib \
             $(LIBDIR)/ntutils.lib $(TOOLS_LIBDIR)/psapi.lib \
             user32.lib

   COMMLFLAGS = $(DLLFLAGS)
   COMMLFLAGS += /nologo
   ifeq ($(DEBUG), 1)
     COPTS += -DEBUG /MDd /Z7
     DEFINES += -D"_DEBUG"
     COMMLFLAGS += /DEBUG /incremental:no /pdb:none\
                   ../os_lib/win32/debug/cms.lib \
                   /nodefaultlib:"libcmtd"
   else  #debug
     COPTS += /MD
     COMMLFLAGS += ../os_lib/win32/cms.lib \
                   /nodefaultlib:"libcmt"
   endif #debug
   COPTSNF = $(COPTS) $(DEFINES) $(INCLUDES)
   INCLUDELIST=$(subst /I ,-I,$(INCLUDES))
   DEFINELIST=$(subst /D ,-D,$(DEFINES))

   LFLAGS=$(COMMLFLAGS)
   LFLAGS += /SECTION:FRAME_SHARED,RWS
   LIBEXT = dll
   MKLIB=link.exe /out:$@ $(LFLAGS)
   OBJTAIL=obj
   FRAME_LIB=$(BINDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

   COPTS_FILE=
   EXPFILE=$(LIBDIR)/frame$(XXX).exp
   IMPLIB=$(LIBDIR)/frame$(XXX).lib

   INC_FILES+=vcms/os_const.h

   implib: $(IMPLIB)

   $(IMPLIB) $(EXPFILE): $(OBJDIR) $(_OS_LAYER) $(_FRAMEOBJS)
#  OWN_MAKELEVEL == 0 if makefile called directly, == 1 if nested
   ifneq ($(OWN_MAKELEVEL), 0)
	@echo checking out and touching using $(MAKE) for two possible targets ($@), make level $(OWN_MAKELEVEL)
		$(CHECKOUT) $(IMPLIB)
		touch -c $(IMPLIB)
   else
		gnumake MAKE=gnumake OWN_MAKELEVEL=1 $(subst \,/,$@ $<)
	@echo proceeding using $(MAKE) for two possible targets ($@), make level $(OWN_MAKELEVEL)
		lib.exe /nologo /MACHINE:IX86 /DEF:frame$(msTail).def $(FRAMEOBJS)\
            $(OS_LAYER) /OUT:$(IMPLIB) /NAME:frame$(XXX).dll
   endif

   clean:
	    $(RM) $(OBJDIR)/*.$(OBJTAIL)
	    $(RM) $(IMPLIB) $(EXPFILE) $(FRAME_LIB)

endif         # target: win32



#----------------------------------- Special settings for each target
#----------pSOS+
ifeq ($(TARGET), psos)

   OS_LAYER_SRC:=./psos/
   CC=cc386
   COPTS_FILE:=c.opt
   _OS_LAYER += drv_conf.$(OBJTAIL)
   SPEC_F_OBJS=

   -include $(PSS_BSP)/bsp.mk# board support settings e.g. MODEL, FPU

   ifeq ( FPU,H )
      FPUOPT = -VNDP
   else
      FPUOPT=
   endif

   COPTS1  =       -c -V$(MODEL) -VROM -VBSS -VANSI -VLONGNAME -VSPROTO -VQUIET -VDIAGNOSTICS
   COPTS2  =       $(FPUOPT)  -I$(COMFSRC)/configps/
   COPTS3  =       -I. -I$(PSS_ROOT)/include -I$(PSS_BSP) -I$(PSS_ROOT)/bsps/devices
   COPTS4  =        -I./ -I../inc/ -I../inc/psos/ -I./psos/ -I../../g23net/dev/config  -I../TST
   COPTS5  =       -DMODEL=$(MODEL) -VNOSIGNEDCHAR -D__CADUL__=1 -DPSOS=1 -D_PSOS_

   ifeq ($(MEMSUPER), 2)
      COPTS5 += -DMEMORY_SUPERVISION -DOPTIMIZE_POOL
   endif
   ifeq ($(MEMSUPER), 1)
      COPTS5 += -DMEMORY_SUPERVISION
   endif

   ifeq ($(DEBUG), 1)
      COPTS5 += -VXDB
   endif

   COPTS5 += -DTEST_TARGET_IP_ADDRESS

   COPTS   =       @c.opt

#$(COPTS1)  $(COPTS2)  $(COPTS3)  $(COPTS4)  $(COPTS5) ich wollte c.opt umgehen. erstmal keinen Erfolg.

   COPTS += -o $(OBJDIR)/$@
   COPTSNF = $(COPTS)
   LIBEXT = lib
   MKLIB = lib386 $@         # psos related libs will not be included here
   OBJTAIL=obj
   FRAME_LIB=$(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

c.opt:  makefile
	@echo $(COPTS1) >  c.opt
	@echo $(COPTS2) >> c.opt
	@echo $(COPTS3) >> c.opt
	@echo $(COPTS4) >> c.opt
	@echo $(COPTS5) >> c.opt

#psos.abs: os.abs wie? wozu??

#~~~~~~
   clean:
		@$(RM) obj/$(TARGET)$(DB)$(PS)/*.$(OBJTAIL)
		@$(RM) $(FRAME_LIB)
		@$(RM) c.opt
endif         # target: psos

#----------------------------------- Special settings for each target
#---------- vxworks
ifeq ($(TARGET), vxworks)

   OS_PART = os_part.$(OBJTAIL)

   CC = ccppc
   OS_LAYER_SRC  = ./$(TARGET)
   SPEC_OSL_INC  =
   SPEC_OSL_OBJS =
   SPEC_F_OBJS   =

  ifeq ($(DEBUG), 1)
    COPTSNF  = -g
  else
    COPTSNF  = -O2
  endif
    COPTSNF += -c -mstrict-align -ansi -nostdinc -DRW_MULTI_THREAD -D_REENTRANT \
               -fvolatile -fno-builtin -fno-for-scope -DCPU=$(CPU) \
               -I$(WIND_BASE)/target/h -I. -I../../g23net/dev/config -I../inc/$(TARGET) \
               -I../inc -D_VXWORKS_  -I../TST

   ifeq ($(MEMSUPER), 2)
      COPTSNF +=  -DMEMORY_SUPERVISION -DOPTIMIZE_POOL
   endif
   ifeq ($(MEMSUPER), 1)
      COPTSNF += -DMEMORY_SUPERVISION
   endif

   COPTSNF += -o $(OBJDIR)/$@
   LIBEXT   = a
   MKLIB     = arppc crus $@
   OBJTAIL=obj

   FRAME_LIB= $(LIBDIR)/$(LIBNAME)$(XXX).$(LIBEXT)

clean:
	@$(RM) obj/$(TARGET)$(DB)$(PS)/*.o*
	@$(RM) $(FRAME_LIB)

endif
# target: vxworks

######################### echo for control ##################################

#echo:
#	@echo $(_OS_LAYER)
#	@echo $(OS_LAYER)
#	@echo $(_FRAMEOBJS)
#	@echo $(FRAMEOBJS)
#	@echo $(SRCFILES)
#	@echo $(DEFINES)
#	@echo $(DEFINELIST)

######################### OS layer ##################################

OS_LAYER=$(patsubst %.$(OBJTAIL),$(OBJDIR)/%.$(OBJTAIL),$(_OS_LAYER))

os_layer: $(COPTS_FILE) $(_OS_LAYER)

#########################  Frame    ##################################
.PHONY:	all label help

asm: $(OBJDIR) $(FRAME_LIB)

FRAMEOBJS=$(patsubst %.$(OBJTAIL),$(OBJDIR)/%.$(OBJTAIL),$(_FRAMEOBJS))

frameobjs: $(COPTS_FILE) $(_OS_LAYER) $(_FRAMEOBJS)

frame.$(LIBEXT): $(FRAME_LIB)

$(OBJDIR) :
	$(MKDIR) -p $(OBJDIR)

$(FRAME_LIB) : $(OBJDIR) $(COPTS_FILE) $(_OS_LAYER) $(_FRAMEOBJS) makefile $(EXPFILE)
#  OWN_MAKELEVEL == 0 if makefile called directly, == 1 if nested
ifneq ($(OWN_MAKELEVEL), 0)
	@echo checking out and touching using $(MAKE)
	$(CHECKOUT) $@ $(IMPLIB)
	touch -c $@ $(IMPLIB)
else
	gnumake MAKE=gnumake OWN_MAKELEVEL=1 $(subst \,/,$@ $<)
	@echo proceeding using $(MAKE)
  ifneq ($(OSENV), sus)
		$(RM) $@
  endif
		$(MKLIB) $(FRAMEOBJS) $(OS_LAYER) $(ASMOBJS)
  ifeq ($(OSENV), sus)
		$(RANLIB) $@
  endif
endif

$(_OS_LAYER) $(_FRAMEOBJS): %.$(OBJTAIL) :	%.c
	$(RM) $(OBJDIR)/frame_version.$(OBJTAIL)
ifneq ($(NO_LINT), 1)
	$(LINT) $(LINT_OPTS) $(DEFINES) $(INCLUDES) $<
endif
	$(CC) $(COPTSNF) $<

SRCFILES=$(patsubst %.$(OBJTAIL),%.c,$(_FRAMEOBJS) $(_OS_LAYER))

FRAME_DEP=dep_frame_$(PROJECT)$(XXX).mk

help:
	$(ECHO) usage...
	$(ECHO) building:
	$(ECHO) "gnumake [DEBUG={1|0}] [ROUTING={1|0}] [MEMSUPER={1|0}] ..."
	$(ECHO) cleaning:
	$(ECHO) "gnumake clean [DEBUG={1|0}] [ROUTING={1|0}] [MEMSUPER={1|0}] ..."
	$(ECHO) ClearCase:
	$(ECHO) "gnumake checkin - not implemeted yet -"
	$(ECHO) "gnumake label LABEL=<label type> [FLOAT={1|0}] [DEBUG={1|0}] [ROUTING={1|0}] "
	$(ECHO) "        [MEMSUPER={1|0}] ..."
	$(ECHO) help:
	$(ECHO) "gnumake help"

DEPEND_DIRS=$(GPFDIR) $(LIBDIR) $(BINDIR) $(INCDIR)
EXPORT_FILES=$(IMPLIB) $(FRAME_LIB)
INCLUDE_FILES=$(patsubst %,../inc/%,$(INC_FILES))

label:
	-$(CLEARTOOL) mklabel -recurse $(REPLACE) $(LABEL) . 2>> error.log
	-$(CLEARTOOL) mklabel $(REPLACE) $(LABEL) $(DEPEND_DIRS) \
	                      $(EXPORT_FILES) $(INCLUDE_FILES) 2>> error.log

depend: $(SRCFILES)
	@touch $(FRAME_DEP)
	makedepend -b -f$(FRAME_DEP) $^ -Y -o.$(OBJTAIL) $(INCLUDELIST) $(DEFINELIST)
	@$(RM) $(FRAME_DEP)

-include $(FRAME_DEP)