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