Rev 227 | Blame | Compare with Previous | Last modification | View Log | RSS feed
################################################################################ File: TOOLSET/standard.rul[e]## Contents: Toplevel toolset driver for doing stuff## CC Compile a C source file# CCDEPEND# CXX Compile a C++ source file# CCDEPEND# AS Compile an assembler file# ASDEPEND# AR Archive# LD Linker# SHLD Linked (shared library)################################################################################## Global control of compiler filters# USE_FILTER is defined by default#ifndef USE_FILTERcc_error_filter =cxx_error_filter =as_error_filter =endif################################################################################ Compile a C file.###############################################################################cc_term +=ifdef cc_error_filterifdef cc_redirectdefine CC@$(cc_pre)@$(show_environment)$(cc) $(cc_flags) $(cc_o_switch) $(cc_source) > $(basename $@).err $(cc_term);\rv=$$?;\$(cc_error_filter) < $(basename $@).err;\exit $$rv;@$(cc_post)endefelseifdef cc_redirect_stderrdefine CC@$(cc_pre)@$(show_environment)$(cc) $(cc_flags) $(cc_o_switch) $(cc_source) 2>&1 | $(cc_error_filter) $(cc_term)@$(cc_post)endefelsedefine CC@$(cc_pre)@$(show_environment)$(cc) $(cc_flags) $(cc_o_switch) $(cc_source) | $(cc_error_filter) $(cc_term)@$(cc_post)endefendifendifelsedefine CC@$(cc_pre)@$(show_environment)$(cc) $(cc_flags) $(cc_o_switch) $(cc_source) $(cc_term)@$(cc_post)endefendif$(OBJDIR)/%.${o}: %.c $(cc_init)$(CC)ccdep_term +=define CCDEPEND@$(ccdep_pre)@$(show_environment)$(ccdep) $(ccdep_flags) $(ccdep_o_switch) $(ccdep_source) $(ccdep_term)@$(ccdep_post)endef################################################################################ Compile a C++ file.###############################################################################cxx_term +=ifdef cxx_error_filterifdef cxx_redirectdefine CXX@$(cxx_pre)@$(show_environment)$(cxx) $(cxx_flags) $(cxx_o_switch) $(cxx_source) > $(basename $@).err $(cxx_term);\rv=$$?;\$(cxx_error_filter) < $(basename $@).err;\exit $$rv@$(rm) $(basename $@).err@$(cxx_post)endefelseifdef cxx_redirect_stderrdefine CXX@$(cxx_pre)@$(show_environment)$(cxx) $(cxx_flags) $(cxx_o_switch) $(cxx_source) 2>&1 | $(cxx_error_filter) $(cxx_term)@$(cxx_post)endefelsedefine CXX@$(cxx_pre)@$(show_environment)$(cxx) $(cxx_flags) $(cxx_o_switch) $(cxx_source) | $(cxx_error_filter) $(cxx_term)@$(cxx_post)endefendifendifelsedefine CXX@$(cxx_pre)@$(show_environment)$(cxx) $(cxx_flags) $(cxx_o_switch) $(cxx_source) $(cxx_term)@$(cxx_post)endefendififdef cxx_init$(OBJDIR)/%.${o}: %.cc $(cxx_init)$(CXX)$(OBJDIR)/%.${o}: %.cpp $(cxx_init)$(CXX)endif################################################################################ Assemble a file of assembler.###############################################################################as_term +=ifdef as_error_filterifdef as_redirectdefine AS@$(as_pre)@$(show_environment)$(as) $(as_flags) $(as_o_switch) $(as_source) > $(basename $@).as $(as_term)@$(as_error_filter) < $(basename $@).as@$(rm) $(basename $@).as@$(as_post)endefelsedefine AS@$(as_pre)@$(show_environment)$(as) $(as_flags) $(as_o_switch) $(as_source) | $(as_error_filer) $(as_term)@$(as_post)endefendifelsedefine AS@$(as_pre)@$(show_environment)$(as) $(as_flags) $(as_o_switch) $(as_source) $(as_term)@$(as_post)endefendififdef as_init$(OBJDIR)/%.${o}: %.${s} $(as_init)$(AS)endif################################################################################ Build a library###############################################################################ar_term +=define AR@$(ar_pre)@$(show_environment)$(ar) $(ar_flags) $(ar_o_switch) $(ar_term)@$(ar_post)endefifdef ar_depend$(BINDIR)/%.${a}: $(ar_depend) $(ar_init)$(AR)endif################################################################################ Merge libraries###############################################################################define ARMERGE@$(armerge_pre)@$(show_environment)$(armerge) $(armerge_flags) $(armerge_o_switch)@$(armerge_post)endefifdef armerge_depend$(BINDIR)/%.${a}: $(armerge_depend) $(armerge_init)$(ARMERGE)endif################################################################################ Generate a large relocatable object module from a bunch of object# modules. Only bother with this if the compiler suite defines a# `rel' extension for file names.###############################################################################rel_ld_term +=ifdef relifneq (${a},${rel})## Only have the rules for a large relocatable build if it's not# the same as a normal library build.#$(BINDIR)/%.$(rel): $(rel_ld_init)@$(rel_ld_pre)@$(show_environment)$(rel_ld) $(rel_ldflags) $(rel_ld_o_switch) $(rel_ld_term)@$(rel_ld_post)endifendif################################################################################ Link a shared library###############################################################################shld_term +=ifdef shlddefine SHLD@$(shld_pre)@$(show_environment)$(shld) $(shld_flags) $(shld_o_switch) $(shld_term)@$(shld_post)endefendif################################################################################ Link an executable###############################################################################ld_term +=define LD@$(ld_pre)@$(show_environment)$(ld) $(ld_flags) $(ld_o_switch) $(ld_term)@$(ld_post)endefifdef ld_depend$(BINDIR)/%$(exe): $(ld_depend) $(ld_init)$(LD)endif#