Mercurial > ecos-v2_0-branch
diff packages/pkgconf/makevars @ 0:3111d98ba7b3 ecos-v1_1-release
Initial commit of eCos version 1.1
| author | jlarmour |
|---|---|
| date | Tue, 11 May 1999 11:16:07 +0000 |
| parents | |
| children | 443894e2e912 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/pkgconf/makevars @@ -0,0 +1,276 @@ +#=============================================================================== +# +# makevars +# +# This file allows users to control some aspects of the build process. +# +#=============================================================================== +#####COPYRIGHTBEGIN#### +# +# ------------------------------------------- +# The contents of this file are subject to the Cygnus eCos Public License +# Version 1.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://sourceware.cygnus.com/ecos +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations under +# the License. +# +# The Original Code is eCos - Embedded Cygnus Operating System, released +# September 30, 1998. +# +# The Initial Developer of the Original Code is Cygnus. Portions created +# by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. +# ------------------------------------------- +# +#####COPYRIGHTEND#### +#=============================================================================== + +# +# Some of the commands used to do builds should generally be specified by +# pkgconf. This is because the commands are target-specific, and it is +# pkgconf that knows about the target architecture and the information held +# in the targets file. Never the less it is desirable to allow users to +# redefine the commands. +# +# First, make automatically defines a number of variables unless it is +# given the -r or --no-builtin-rules arguments. The built-in values are +# unlikely to be correct when doing cross compilation. The following +# checks eliminate any such built-in definitions. +ifeq ($(origin CC),default) +CC := +endif +ifeq ($(origin CXX),default) +CXX := +endif +ifeq ($(origin AR),default) +AR := +endif +ifeq ($(origin LD),default) +LD := +endif +ifeq ($(origin CP),default) +CP := +endif +ifeq ($(origin RM),default) +RM := +endif +ifeq ($(origin TOUCH),default) +TOUCH := +endif +ifeq ($(origin CAT),default) +CAT := +endif +ifeq ($(origin TAIL),default) +TAIL := +endif + +# +# At this stage all of the variables identifying commands will be empty +# or undefined strings, or they will have been set on the make command +# line or in environment variables. +# +# For each command that is not currently defined, a default value +# is defined here. Users may make a persistent change to the commands by +# commenting out the default value and filling in an alternative one. +# +ifeq ($(CC),) +CC := $(PKGCONF_CC) +#CC := +endif +ifeq ($(CXX),) +CXX := $(PKGCONF_CXX) +#CXX := +endif +ifeq ($(AR),) +AR := $(PKGCONF_AR) +#AR := +endif +ifeq ($(LD),) +LD := $(PKGCONF_LD) +#LD := +endif +ifeq ($(OBJCOPY),) +OBJCOPY := $(PKGCONF_OBJCOPY) +#OBJCOPY := +endif +ifeq ($(CP),) +CP := install -m 0644 +#CP := +endif +ifeq ($(RM),) +RM := rm -f +#RM := +endif +ifeq ($(TOUCH),) +TOUCH := touch +#TOUCH := +endif +ifeq ($(CAT),) +CAT := cat +#CAT := +endif +ifeq ($(TAIL),) +TAIL := tail +#tail := +endif + +# +# Next deal with the various compiler flags. None of the flags should +# conflict with any built-in variables, so it is sufficient to check +# that a given flag has not been defined on the make command line or via +# an environment variable. +# +# As with the command variables, users can disable the default +# settings by commenting out one line and filling in the next line. +# +# There are five categories of flags: +# 1) architecture-related, i.e. -mthis -mthat -mthe-other +# 2) error and warning related, e.g. -Wall -Werror +# 3) language-related, e.g. -fno-rtti for C++ code +# 4) debug and code generation, e.g. -g -O2 +# 5) everything else, e.g. -DCYG_RELEASE_DEBUG +# +# For each category there are four variables. The first one, e.g. +# ARCHFLAGS, is used for all build operations. The second, e.g. +# CARCHFLAGS, is used only when compiling to C code (in addition to +# the generic ARCHFLAGS). The third, e.g. CXXARCHFLAGS is used when +# compiling C++ code and the last, LDARCHFLAGS, is used when linking +# executables (typically test programs). +# + +ifeq ($(ARCHFLAGS),) +ARCHFLAGS := $(PKGCONF_ARCHFLAGS) +#ARCHFLAGS := +endif +ifeq ($(CARCHFLAGS),) +CARCHFLAGS := $(PKGCONF_CARCHFLAGS) +#CARCHFLAGS := +endif +ifeq ($(CXXARCHFLAGS),) +CXXARCHFLAGS := $(PKGCONF_CXXARCHFLAGS) +#CXXARCHFLAGS := +endif +ifeq ($(LDARCHFLAGS),) +LDARCHFLAGS := $(PKGCONF_LDARCHFLAGS) +#LDARCHFLAGS := +endif +ifeq ($(ERRFLAGS),) +ERRFLAGS := $(PKGCONF_ERRFLAGS) +#ERRFLAGS := +endif +ifeq ($(CERRFLAGS),) +CERRFLAGS := $(PKGCONF_CERRFLAGS) +#CERRFLAGS := +endif +ifeq ($(CXXERRFLAGS),) +CXXERRFLAGS := $(PKGCONF_CXXERRFLAGS) +#CXXERRFLAGS := +endif +ifeq ($(LDERRFLAGS),) +LDERRFLAGS := $(PKGCONF_LDERRFLAGS) +#LDERRFLAGS := +endif +ifeq ($(LANGFLAGS),) +LANGFLAGS := $(PKGCONF_LANGFLAGS) +#LANGFLAGS := +endif +ifeq ($(CLANGFLAGS),) +CLANGFLAGS := $(PKGCONF_CLANGFLAGS) +#CLANGFLAGS := +endif +ifeq ($(CXXLANGFLAGS),) +CXXLANGFLAGS := $(PKGCONF_CXXLANGFLAGS) +#CXXLANGFLAGS := +endif +ifeq ($(LDLANGFLAGS),) +LDLANGFLAGS := $(PKGCONF_LDLANGFLAGS) +#LDLANGFLAGS := +endif +ifeq ($(DBGFLAGS),) +DBGFLAGS := $(PKGCONF_DBGFLAGS) +#DBGFLAGS := +endif +ifeq ($(CDBGFLAGS),) +CDBGFLAGS := $(PKGCONF_CDBGFLAGS) +#CDBGFLAGS := +endif +ifeq ($(CXXDBGFLAGS),) +CXXDBGFLAGS := $(PKGCONF_CXXDBGFLAGS) +#CXXDBGFLAGS := +endif +ifeq ($(LDDBGFLAGS),) +LDDBGFLAGS := $(PKGCONF_LDDBGFLAGS) +#LDDBGFLAGS := +endif +ifeq ($(EXTRAFLAGS),) +EXTRAFLAGS := $(PKGCONF_EXTRAFLAGS) +#EXTRAFLAGS := +endif +ifeq ($(CEXTRAFLAGS),) +CEXTRAFLAGS := $(PKGCONF_CEXTRAFLAGS) +#CEXTRAFLAGS := +endif +ifeq ($(CXXEXTRAFLAGS),) +CXXEXTRAFLAGS := $(PKGCONF_CXXEXTRAFLAGS) +#CXXEXTRAFLAGS := +endif +ifeq ($(LDEXTRAFLAGS),) +LDEXTRAFLAGS := $(PKGCONF_LDEXTRAFLAGS) +#LDEXTRAFLAGS := +endif + +# +# Now combine all the above flags, so that the build rules are actually legible. +# +CFLAGS := $(ARCHFLAGS) $(CARCHFLAGS) +CFLAGS := $(CFLAGS) $(ERRFLAGS) $(CERRFLAGS) +CFLAGS := $(CFLAGS) $(LANGFLAGS) $(CLANGFLAGS) +CFLAGS := $(CFLAGS) $(DBGFLAGS) $(CDBGFLAGS) +CFLAGS := $(CFLAGS) $(EXTRAFLAGS) $(CEXTRAFLAGS) +CFLAGS := $(strip $(CFLAGS)) + +CXXFLAGS := $(ARCHFLAGS) $(CXXARCHFLAGS) +CXXFLAGS := $(CXXFLAGS) $(ERRFLAGS) $(CXXERRFLAGS) +CXXFLAGS := $(CXXFLAGS) $(LANGFLAGS) $(CXXLANGFLAGS) +CXXFLAGS := $(CXXFLAGS) $(DBGFLAGS) $(CXXDBGFLAGS) +CXXFLAGS := $(CXXFLAGS) $(EXTRAFLAGS) $(CXXEXTRAFLAGS) +CXXFLAGS := $(strip $(CXXFLAGS)) + +LDFLAGS := $(ARCHFLAGS) $(LDARCHFLAGS) +LDFLAGS := $(LDFLAGS) $(ERRFLAGS) $(LDERRFLAGS) +LDFLAGS := $(LDFLAGS) $(LANGFLAGS) $(LDLANGFLAGS) +LDFLAGS := $(LDFLAGS) $(DBGFLAGS) $(LDDBGFLAGS) +LDFLAGS := $(LDFLAGS) $(EXTRAFLAGS) $(LDEXTRAFLAGS) +LDFLAGS := $(strip $(LDFLAGS)) + +# +# Clear the default INCLUDE_PATH. This will be set up in +# makrules.src et al. on the basis of the VPATH environment +# variable. +INCLUDE_PATH := + +# +# Finally, it is possible for users to change the rules that actually +# perform most of the build operations. + +$(PACKAGE)_%.o : %.c + $(CC) -c $(INCLUDE_PATH) $(CFLAGS) -Wp,-MD,$(@:.o=.tmp) -o $@ $< + @echo -e "\\n$@ : $< \\\\" > $(@:.o=.d) + @$(TAIL) -n +2 $(@:.o=.tmp) >> $(@:.o=.d) + @$(RM) $(@:.o=.tmp) + +$(PACKAGE)_%.o : %.cxx + $(CXX) -c $(INCLUDE_PATH) $(CXXFLAGS) -Wp,-MD,$(@:.o=.tmp) -o $@ $< + @echo -e "\\n$@ : $< \\\\" > $(@:.o=.d) + @$(TAIL) -n +2 $(@:.o=.tmp) >> $(@:.o=.d) + @$(RM) $(@:.o=.tmp) + +$(PACKAGE)_%.o : %.S + $(CXX) -c $(INCLUDE_PATH) $(CFLAGS) -Wp,-MD,$(@:.o=.tmp) -o $@ $< + @echo -e "\\n$@ : $< \\\\" > $(@:.o=.d) + @$(TAIL) -n +2 $(@:.o=.tmp) >> $(@:.o=.d) + @$(RM) $(@:.o=.tmp) +
