# ---------------------------------------------------------------------------- # Rules to create object ifdef HOSTED VER_DEFS = -DBUILD_VER=\"$(BUILD_VER)\" -DBUILD_NUM=\"$(BUILD_NUM)h\" -DBUILD_DATE=\"$(BUILD_DATE)\" -DBUILD_TIME=\"$(BUILD_TIME)\" else VER_DEFS = -DBUILD_VER=\"$(BUILD_VER)\" -DBUILD_NUM=\"$(BUILD_NUM)\" -DBUILD_DATE=\"$(BUILD_DATE)\" -DBUILD_TIME=\"$(BUILD_TIME)\" endif ifneq ($(BUILD_CE_VER), 0) VER_DEFS += -DBUILD_CE_VER=\"$(BUILD_CE_VER)\" endif # New (non-beta) version of cygwin requires extra quotes (like unix) # New version of cygwin is 2.04 so check bash -version ifneq (,$(findstring 2.04,$(shell bash -version))) VER_DEFS += -DAPP_NAME="\"$(APP_NAME)\"" ifdef EXTRA_INFO VER_DEFS += -DEXTRA_INFO="\"$(EXTRA_INFO)\"" endif else VER_DEFS += -DAPP_NAME=\"$(APP_NAME)\" ifdef EXTRA_INFO VER_DEFS += -DEXTRA_INFO=\"$(EXTRA_INFO)\" endif endif VER_BUILD_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) $(CDEFS) $(VER_DEFS) -c $(RNTBASE)/common/libutil/cmdline.c -Fo$(OBJDIR)/cmdline$(OBJSFX) CXX_BUILD_CMD = $(strip $(CXX) $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(CDEFS) -Fo$(OBJDIR)/$(@F) -c /Tp $<) SAFE_CXX_BUILD_CMD = $(strip $(CXX) $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(CDEFS) -Fo$(OBJDIR)/$(@F) -c $<) $(OBJDIR)/%$(OBJSFX): %.cc $(CXX_BUILD_CMD) C_BUILD_CMD = $(strip $(CC) $(CPPFLAGS) $(CFLAGS) $(CDEFS) -Fo$(OBJDIR)/$(@F) -c $<) SAFE_C_BUILD_CMD = $(strip $(CC) $(CPPFLAGS) $(CFLAGS) $(CDEFS) -Fo$(OBJDIR)/$(@F) -c $<) $(OBJDIR)/%$(OBJSFX): %.c $(C_BUILD_CMD) # echo $< NEAL $(OBJS) # echo $< NEAL $(DBSRC) .INTERMEDIATE: $(OBJDIR)/temp.cpp $(OBJDIR)/temp.c # ---------------------------------------------------------------------------- # Source processing rules # lint rule ---------------------------------------------------------- ifndef WINDIR lint: $(LINT) $(CPPFLAGS) $(CDEFS) +posixlib $(SRC) endif # Replace default lex rule to elimnate warnings caused by flex ------- ifdef WINDIR %.c: %.l $(LEX) -t $< | sed -e 's/register char \*yy_cp, \*yy_bp;/register char *yy_cp = NULL, *yy_bp = NULL;/' | sed -e 's/#include //g' > $@ %.cc: %.lxx $(LEX) -t $< | sed -e 's/register char \*yy_cp, \*yy_bp;/register char *yy_cp = NULL, *yy_bp = NULL;/'| sed -e 's/#include //g' > $@ else %.c: %.l $(LEX) -t $< | sed -e 's/register char \*yy_cp, \*yy_bp;/register char *yy_cp = NULL, *yy_bp = NULL;/' > $@ %.cc: %.lxx $(LEX) -t $< | sed -e 's/register char \*yy_cp, \*yy_bp;/register char *yy_cp = NULL, *yy_bp = NULL;/' > $@ endif %.cc: %.yxx $(YACC) -o $@ $< # ---------------------------------------------------------------------------- clean: - $(RM) -r $(OBJDIR) $(RM) $(TARGET) # ---------------------------------------------------------------------------- # cxref cxref: $(CXREFDIRDEP) $(addprefix $(CXREFDIR)/, $(addsuffix .html, $(SRC))) $(CXREFDIR)/%.c.html: %.c @echo Cross referencing $? cxref -xref -O$(CXREFDIR) -Nrnw $(CPPFLAGS) $(CDEFS) $? @echo Documenting $? cxref -warn-xref -xref -O$(CXREFDIR) -Nrnw -html $(CPPFLAGS) $(CDEFS) $? # ---------------------------------------------------------------------------- # Makefile dependencies depend: -(find . -name "*.d" -exec rm {} \;) ifndef WINDIR D_BUILD_CMD = @$(SHELL) -ec '$(CC) -MM $(CPPFLAGS) $(CDEFS) $< \ | sed -e "s!$*\\.o!$(BUILDTARGET)/& $@!g" > $@' $(DEPDIR)/%.d: %.c $(DEPDIRDEP) $(D_BUILD_CMD) ifndef RNT_INCLUDE ifdef SRC -include $(addprefix $(DEPDIR)/, $(notdir $(SRC:.c=.d) $(CXXSRC:.cpp=.d))) endif endif endif