394 lines
7.0 KiB
Plaintext
394 lines
7.0 KiB
Plaintext
#######################################################
|
|
#
|
|
# Master C library makefile
|
|
#
|
|
#######################################################
|
|
#
|
|
# Imported Macro names
|
|
# OS - name of target operating system
|
|
# CPU - type of target CPU
|
|
# KIND - particular type of build
|
|
# PLATFORM - type of build platform
|
|
# INTL - if defined make international version
|
|
# DEBUG - if defined make debug version
|
|
# COPTS - additional C compiler switches (optional)
|
|
# AOPTS - additional masm switches (optional)
|
|
# AAOPTS - additional asm/a68 switches (optional)
|
|
#
|
|
# Local Macro names
|
|
# SRCDIR - current source dir
|
|
# SRCPATH - current path for finding sources
|
|
# SRCOS - source tree OS name
|
|
# SRCCPU - source tree CPU name
|
|
# OBJDIR - dir for objs
|
|
# DEPDIR - dir for dependencies
|
|
# COMMON - name of sub-dir containing common sources
|
|
# OBJ - root dir of obj tree
|
|
# DEP - root dir of dependency tree
|
|
# INCDIR - root dir of include files
|
|
# INCLUDE - path containing include files
|
|
# INCPATH - same as INCLUDE with {}
|
|
# DFLAGS - list of define flags to pass to tools
|
|
# MAINOK - used to assure lower levels are included correctly
|
|
#
|
|
#######################################################
|
|
|
|
COMMON = common
|
|
INCDIR = h
|
|
DEP = dep
|
|
MAINOK = YES
|
|
|
|
# Echo warnings
|
|
|
|
!IF "$(CL)" != ""
|
|
!MESSAGE *** WARNING: CL variable set, CL=$(CL)
|
|
!ENDIF
|
|
|
|
!IF "$(ML)" != ""
|
|
!MESSAGE *** WARNING: ML variable set, ML=$(ML)
|
|
!ENDIF
|
|
|
|
!IF "$(LINK)" != ""
|
|
!MESSAGE *** WARNING: LINK variable set, LINK=$(LINK)
|
|
!ENDIF
|
|
|
|
# Echo input environment
|
|
|
|
!MESSAGE
|
|
!MESSAGE OS = $(OS)
|
|
!MESSAGE CPU = $(CPU)
|
|
!MESSAGE KIND = $(KIND)
|
|
!MESSAGE PLATFORM = $(PLATFORM)
|
|
!MESSAGE COPTS = $(COPTS)
|
|
!MESSAGE AOPTS = $(AOPTS)
|
|
!MESSAGE AAOPTS = $(AAOPTS)
|
|
|
|
# Check INTL and DEBUG
|
|
|
|
!IFDEF DEBUG
|
|
OBJ = dobj
|
|
DFLAGS = -DDEBUG
|
|
!MESSAGE DEBUG = $(DEBUG)
|
|
!ELSE
|
|
OBJ = obj
|
|
DFLAGS = -DNDEBUG
|
|
!MESSAGE DEBUG = (not defined)
|
|
!ENDIF
|
|
|
|
!IFDEF INTL
|
|
DFLAGS = $(DFLAGS) -D_INTL
|
|
OBJ = i$(OBJ)
|
|
!MESSAGE INTL = $(INTL)
|
|
!ELSE
|
|
!MESSAGE INTL = (not defined)
|
|
!ENDIF
|
|
|
|
!IFDEF MBCS
|
|
DFLAGS = $(DFLAGS) -D_MBCS -D_KANJI
|
|
OBJ = m$(OBJ)
|
|
!MESSAGE MBCS = $(MBCS)
|
|
!ELSE
|
|
!MESSAGE MBCS = (not defined)
|
|
!ENDIF
|
|
|
|
# Set up for building dependency files
|
|
|
|
!IFDEF DEPEND
|
|
!IF "$(MAKEFLAGS)" == "$(MAKEFLAGS:A=)"
|
|
!ERROR Must use /a switch when making dependency files
|
|
!ENDIF
|
|
OBJ = $(DEP)
|
|
!ENDIF
|
|
|
|
# Parse PLATFORM & OS/CPU/KIND
|
|
|
|
!IF "$(PLATFORM)" == "OS2" || "$(PLATFORM)" == "NT"
|
|
!ELSE
|
|
!ERROR PLATFORM set to Unknown value
|
|
!ENDIF
|
|
|
|
SRCOS = $(OS) # Assume source and object OS are the same
|
|
SRCCPU = $(CPU) # Assume source and object CPU are the same
|
|
CFLAGS = # Set up default flags
|
|
AFLAGS =
|
|
AAFLAGS =
|
|
CXXFLAGS = $(CFLAGS)
|
|
CFILES = $<
|
|
CXXFILES = $<
|
|
AFILES = $<,$*.obj;
|
|
AAFILES = $<
|
|
|
|
!INCLUDE $(OS).mkf # Get flags for particular operating system
|
|
|
|
INCLUDE = $(INCDIR)\$(SRCOS)\$(SRCCPU);$(INCDIR)\$(SRCOS);$(INCDIR)\$(COMMON);$(INCDIR);$(LANGAPI)\include;$(LANGAPI)\undname;$(BLDINC);$(BLDINC)\macos;
|
|
INCPATH = {$(INCLUDE)}
|
|
OBJDIR = $(OBJ)\$(OS)\$(CPU)\$(KIND)
|
|
DEPDIR = $(DEP)\$(OS)\$(CPU)\$(KIND)
|
|
|
|
# Create object directories if needed
|
|
|
|
!IF !EXIST($(OBJ))
|
|
!IF [mkdir $(OBJ)]
|
|
!ENDIF
|
|
!ENDIF
|
|
|
|
!IF !EXIST($(OBJ)\$(OS))
|
|
!IF [mkdir $(OBJ)\$(OS)]
|
|
!ENDIF
|
|
!ENDIF
|
|
|
|
!IF !EXIST($(OBJ)\$(OS)\$(CPU))
|
|
!IF [mkdir $(OBJ)\$(OS)\$(CPU)]
|
|
!ENDIF
|
|
!ENDIF
|
|
|
|
!IF !EXIST($(OBJ)\$(OS)\$(CPU)\$(KIND))
|
|
!IF [mkdir $(OBJ)\$(OS)\$(CPU)\$(KIND)]
|
|
!ENDIF
|
|
!ENDIF
|
|
|
|
# Set up environment variables
|
|
|
|
!IF [set include=$(INCLUDE)]
|
|
!ENDIF
|
|
|
|
!IF [set path=$(BLDTOOLS);tools\$(SRCOS);tools;]
|
|
!ENDIF
|
|
|
|
!IF [set objdir=$(OBJDIR)]
|
|
!ENDIF
|
|
|
|
# Echo all the working variables too.
|
|
!MESSAGE OBJDIR = $(OBJDIR)
|
|
!MESSAGE INCLUDE = $(INCLUDE)
|
|
!IF [path]
|
|
!ENDIF
|
|
!MESSAGE
|
|
|
|
|
|
all: libc
|
|
|
|
# Pull in makefiles for the objs
|
|
|
|
!MESSAGE Scanning makefiles...
|
|
!MESSAGE
|
|
|
|
SRCDIR = convert
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = dos
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
#SRCDIR = direct
|
|
#!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = exec
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
!IF "$(OS)" == "OS220" || "$(OS)" == "DOSX32" || "$(OS)" == "MAC"
|
|
SRCDIR = heap
|
|
!ELSE
|
|
SRCDIR = winheap
|
|
!ENDIF
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = iostream
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = lowio
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = misc
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = startup
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = stdio
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = string
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = time
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = mbstring
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = eh
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
SRCDIR = linkopts
|
|
!INCLUDE $(SRCDIR)\$(SRCDIR).mkf
|
|
|
|
# Main target lib makefile
|
|
|
|
LIBC =\
|
|
$(STARTUP_LIB) \
|
|
$(DOS_LIB) \
|
|
# $(DIRECT_LIB) \
|
|
$(STDIO_LIB) \
|
|
$(LOWIO_LIB) \
|
|
$(HEAP_LIB) \
|
|
$(TIME_LIB) \
|
|
$(STRING_LIB) \
|
|
$(CONVERT_LIB) \
|
|
$(MISC_LIB) \
|
|
$(IOSTREAM_LIB) \
|
|
$(EXEC_LIB) \
|
|
$(MBSTRING_LIB) \
|
|
$(EH_LIB)\
|
|
|
|
libc: $(OBJDIR)\libc.lib \
|
|
$(STARTUP_NOLIB) \
|
|
$(DOS_NOLIB) \
|
|
# $(DIRECT_NOLIB) \
|
|
$(STDIO_NOLIB) \
|
|
$(LOWIO_NOLIB) \
|
|
$(HEAP_NOLIB) \
|
|
$(TIME_NOLIB) \
|
|
$(STRING_NOLIB) \
|
|
$(CONVERT_NOLIB) \
|
|
$(MISC_NOLIB) \
|
|
$(IOSTREAM_NOLIB) \
|
|
$(EXEC_NOLIB) \
|
|
$(EH_NOLIB) \
|
|
$(LINKOPTS_NOLIB)
|
|
|
|
$(OBJDIR)\libc.lib: $(LIBC)
|
|
!IFNDEF DEPEND
|
|
-del $@ 2>NUL
|
|
link -lib -out:$@ @<<
|
|
$(LIBC: =^
|
|
)
|
|
<<
|
|
!ELSE
|
|
lib @<<
|
|
$@/p:32
|
|
y
|
|
&
|
|
$(LIBC: = &^
|
|
)
|
|
nul
|
|
<<
|
|
!ENDIF
|
|
|
|
clean:
|
|
echo Deleting objects and libs in "$(OBJDIR)"
|
|
-del $(OBJDIR)\*.obj 2>NUL
|
|
-del $(OBJDIR)\*.lib 2>NUL
|
|
|
|
startup: $(STARTUP_LIB) $(STARTUP_NOLIB)
|
|
|
|
startupdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\startup.mkf
|
|
!ENDIF
|
|
|
|
dos: $(DOS_LIB) $(DOS_NOLIB)
|
|
|
|
dosdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\dos.mkf
|
|
!ENDIF
|
|
|
|
#direct: $(DIRECT_LIB) $(DIRECT_NOLIB)
|
|
|
|
directdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\direct.mkf
|
|
!ENDIF
|
|
|
|
stdio: $(STDIO_LIB) $(STDIO_NOLIB)
|
|
|
|
stdiodep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\stdio.mkf
|
|
!ENDIF
|
|
|
|
lowio: $(LOWIO_LIB) $(LOWIO_NOLIB)
|
|
|
|
lowiodep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\lowio.mkf
|
|
!ENDIF
|
|
|
|
heap: $(HEAP_LIB) $(HEAP_NOLIB)
|
|
|
|
heapdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\heap.mkf
|
|
!ENDIF
|
|
|
|
time: $(TIME_LIB) $(TIME_NOLIB)
|
|
|
|
timedep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\time.mkf
|
|
!ENDIF
|
|
|
|
string: $(STRING_LIB) $(STRING_NOLIB)
|
|
|
|
stringdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\string.mkf
|
|
!ENDIF
|
|
|
|
convert: $(CONVERT_LIB) $(CONVERT_NOLIB)
|
|
|
|
convertdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\convert.mkf
|
|
!ENDIF
|
|
|
|
misc: $(MISC_LIB) $(MISC_NOLIB)
|
|
|
|
miscdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\misc.mkf
|
|
!ENDIF
|
|
|
|
exec: $(EXEC_LIB) $(EXEC_NOLIB)
|
|
|
|
execdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\exec.mkf
|
|
!ENDIF
|
|
|
|
iostream: $(IOSTREAM_NOLIB) $(IOSTREAM_LIB)
|
|
|
|
iostreamdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\iostream.mkf
|
|
!ENDIF
|
|
|
|
mbstringdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\mbstring.mkf
|
|
!ENDIF
|
|
|
|
mbstring: $(MBSTRING_LIB)
|
|
|
|
ehdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\eh.mkf
|
|
!ENDIF
|
|
|
|
eh: $(EH_LIB)
|
|
|
|
linkoptsdep:
|
|
!IF DEFINED(DEPEND)
|
|
echo. > $(OBJDIR)\linkopts.mkf
|
|
!ENDIF
|
|
|
|
linkopts: $(LINKOPTS_NOLIB)
|
|
|
|
# comparison targets
|
|
|
|
save: $(OBJDIR)\libc.lib
|
|
copy $(OBJDIR)\libc.lib $(OBJDIR)\libc.old
|
|
|
|
libcmp: $(OBJDIR)\libc.lib $(OBJDIR)\libc.old
|
|
libcmp -v $(OBJDIR)\libc.lib $(OBJDIR)\libc.old
|