www.pudn.com > communicationmatlab.rar > DRT_WATG.CMM


# Copyright (C) 1994-96, The MathWorks, Inc. 
# All Rights Reserved.           
# $Revision: 1.2 $  $Date: 1996/04/05 13:58:31 $ 
# 
# Edited for use with CommunicationToolbox, v1.0. 
# 
# File     : drt_watg.cmm 
# Abstract : 
# 
#       Template makefile for building DOS-based real-time version of 
#       SIMULINK model using generated C code and the Watcom C/386 
#       Compiler with GNU MAKE. 
# 
#       Note that this template be can automatically customized using make_rt.m 
#       and the "Generate and Build Real-time" option under the "Code" menu 
#       heading. 
# 
#       The error: 
#         "C:\MATLAB\BIN\GMAKE.EXE: virtual memory exhausted. Stop." 
#       will occur if your system does not have enough conventional memory. 
#       For GMAKE to work properly, you should have at least 425K bytes of 
#       free conventional memory.  See the "mem" command. 
# 
 
#------------------------ Macros Read By make_rt ------------------------- 
# 
# Note: These macros are parsed by make_rt.  Thus they should not contain 
#       other macros, as these macros will not be expanded. 
# 
MAKE = gmake 
QUOTE = " 
HOST = PC 
BUILD = yes 
 
#-------------------------- Customization Macros ------------------------- 
# 
# The following set of macros are customized by the make_rt program. 
# 
MODEL           = |>MODEL_NAME<| 
MAKEFILE        = |>MAKEFILE_NAME<| 
S_FUNCTIONS     = |>S_FUNCTION_FILENAMES<| 
INTEGRATOR      = |>INTEG_SRC_FILENAME<| 
LOGGER          = |>LOG_SRC_FILENAME<| 
COMM_LINK       = |>COMM_LINK_FILENAME<| 
 
INTEG_DEFINES   = |>INTEG_DEFINES<| 
LOGGING_DEFINES = |>LOGGING_DEFINES<| 
 
MATLAB_ROOT     = |>MATLAB_ROOT<| 
 
#------------------------------ Tool Locations --------------------------- 
# 
# Modify the following three macros to reflect where you have installed 
# MATLAB, the Watcom C/386 Compiler, and the Phar Lap Assembler.  The 
# Phar Lap Assembler is not required.  It is only used to compile rt_fpu.asm, 
# which is also supplied in object file form. 
# 
WATCOM_ROOT = c:\watcom 
PHARLAP_ROOT = c:\phar386 
 
#---------------------------- Tool Definitions --------------------------- 
 
ifeq ($(OS),Windows_NT) 
CC = $(WATCOM_ROOT)\binnt\wcc386 
LD = $(WATCOM_ROOT)\binnt\wcl386 
else 
CC = $(WATCOM_ROOT)\binw\wcc386 
LD = $(WATCOM_ROOT)\binw\wcl386 
endif 
 
AS = $(PHARLAP_ROOT)\bin\386asm 
PRINTENV = $(MATLAB_ROOT)\bin\printenv 
 
#------------------------------ Include Path ----------------------------- 
 
CODEGEN_ROOT = $(MATLAB_ROOT)\codegen 
 
MATLAB_INCLUDES = \ 
 -I$(MATLAB_ROOT)\simulink\include \ 
 -I$(CODEGEN_ROOT)\common\include \ 
 -I$(CODEGEN_ROOT)\rt\common \ 
 -I$(CODEGEN_ROOT)\rt\dos\os \ 
 -I$(MATLAB_ROOT)\toolbox\comm\commsfun \ 
 
COMPILER_INCLUDES = -I$(WATCOM_ROOT)\h 
 
INCLUDES = $(MATLAB_INCLUDES) $(COMPILER_INCLUDES) 
 
#-------------------------------- C Flags -------------------------------- 
 
# Required Options 
REQ_OPTS = -fpi87 -3s 
 
# Optimization Options 
OPT_OPTS = -oaxt 
 
# Debug Options 
DBG_OPTS = -d2 
 
# User Options 
OPTS = 
 
CC_OPTS = $(REQ_OPTS) $(OPT_OPTS) $(DBG_OPTS) $(OPTS) 
 
CPP_REQ_DEFINES = -DMODEL_NAME=$(MODEL) -DMULTITASKING 
 
CFLAGS := $(CC_OPTS) $(INCLUDES) $(CPP_REQ_DEFINES) $(CPP_DEFINES) \ 
 $(INTEG_DEFINES) $(LOGGING_DEFINES) 
CFLAGS1 := $(CC_OPTS) $(INCLUDES) $(CPP_REQ_DEFINES) $(CPP_DEFINES) 
CFLAGS2 := $(INTEG_DEFINES) $(LOGGING_DEFINES) 
 
ASFLAGS = -twocase -nolist 
LDFLAGS = -l=dos4g -x 
 
#----------------------------- Source Files ------------------------------ 
 
REQ_SRCS = $(MODEL).c rt_main.c rt_keybd.c rt_sim.c simstruc.c rt_cpu.c 
OPT_SRCS = timer.c 
S_FCN_SRCS = $(S_FUNCTIONS) 
INT_SRCS = $(INTEGRATOR) 
LOG_SRCS = $(LOGGER) 
 
C_SRCS = $(REQ_SRCS) $(OPT_SRCS) $(S_FCN_SRCS) $(INT_SRCS) $(LOG_SRCS) 
C_OBJS = $(C_SRCS:%.c=%.obj) 
 
ASM_SRCS = rt_fpu.asm modf.asm frexp.asm  
ASM_OBJS = $(ASM_SRCS:%.asm=%.obj) 
 
OBJS = $(C_OBJS) $(ASM_OBJS) 
OB2S = $(OBJS:%.obj=%.ob2) 
 
LIBS = 
 
PROGRAM = $(MODEL).exe 
 
#--------------------- Exported Environment Variables -------------------- 
# 
# Because of the 128 character command line length limitations in DOS, we 
# use environment variables to pass additional information to the WATCOM 
# Compiler and Linker 
# 
ifeq ($(OS),Windows_NT) 
PATH := $(WATCOM_ROOT)\binnt;$(WATCOM_ROOT)\bin;$(WATCOM_ROOT)\binb 
else 
PATH := $(WATCOM_ROOT)\bin;$(WATCOM_ROOT)\binw;$(WATCOM_ROOT)\binw 
endif 
WATCOM := $(WATCOM_ROOT) 
 
#--------------------------------- Rules --------------------------------- 
 
# Note: Uses response file to pass in arbitrary number of object files. 
$(PROGRAM) : $(MODEL).lnk $(OBJS) 
	$(LD) /fe=$(MODEL).exe $(LDFLAGS) @$(MODEL).lnk $(LIBS)  
	del $(MODEL).lnk 
 
$(MODEL).lnk :: 
	@if exist $(MODEL).lnk del $(MODEL).lnk 
	$(PRINTENV) CFLAGS 
	 
$(MODEL).lnk :: $(OB2S) 
 
%.ob2 : 
	@echo FILE $*.obj >> $(MODEL).lnk 
 
%.obj : %.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : $(CODEGEN_ROOT)\rt\common\%.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : $(CODEGEN_ROOT)\rt\dos\os\%.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : $(CODEGEN_ROOT)\rt\dos\devices\%.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : $(MATLAB_ROOT)\simulink\src\%.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : $(MATLAB_ROOT)\toolbox\comm\commsfun\%.c $(MAKEFILE) 
	$(CC) @CFLAGS1 @CFLAGS2 $< 
 
%.obj : %.asm 
	$(AS) $(ASFLAGS) $< 
 
%.obj : $(CODEGEN_ROOT)\rt\dos\os\%.asm 
	copy $(CODEGEN_ROOT)\rt\dos\os\$@ $@ 
 
fft387.obj : $(CODEGEN_ROOT)\rt\dos\os\fft387.obj 
	copy $(CODEGEN_ROOT)\rt\dos\os\$@ $@ 
 
#----------------------------- Dependencies ------------------------------- 
 
rt_main.obj : $(MAKEFILE) $(MODEL).c