diff options
Diffstat (limited to 'source4/rules.mk')
-rw-r--r-- | source4/rules.mk | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/source4/rules.mk b/source4/rules.mk index b6a54fae25..0d529b7314 100644 --- a/source4/rules.mk +++ b/source4/rules.mk @@ -1,41 +1,27 @@ # Dependencies command DEPENDS = $(CC) -M -MG -MP -MT $(<:.c=.o) -MT $@ \ - $(CFLAGS) `$(PERL) $(srcdir)/script/cflags.pl $@` \ - $(CPPFLAGS) $(FIRST_PREREQ) -o $@ + $(CFLAGS) $(CPPFLAGS) $< -o $@ # Dependencies for host objects HDEPENDS = $(CC) -M -MG -MP -MT $(<:.c=.ho) -MT $@ \ - $(HOSTCC_FLAGS) `$(PERL) $(srcdir)/script/cflags.pl $@` \ - $(CPPFLAGS) $(FIRST_PREREQ) -o $@ + $(HOSTCC_FLAGS) $(CPPFLAGS) $< -o $@ # Dependencies for precompiled headers PCHDEPENDS = $(CC) -M -MG -MT include/includes.h.gch -MT $@ \ - $(CFLAGS) $(CPPFLAGS) $(FIRST_PREREQ) -o $@ - -# $< is broken in older BSD versions: -# when $@ is foo/bar.o, $< could be torture/foo/bar.c -# if it also exists. So better use $* which is foo/bar -# and append .c manually to get foo/bar.c -# -# If we have GNU Make, it is safe to use $<, which also lets -# building with $srcdir != $builddir work. + $(CFLAGS) $(CPPFLAGS) $< -o $@ # Run a static analysis checker -CHECK = $(CC_CHECKER) $(CFLAGS) `$(PERL) $(srcdir)/script/cflags.pl $@` \ - $(PICFLAG) $(CPPLAGS) -c $(FIRST_PREREQ) -o $@ +CHECK = $(CC_CHECKER) $(CFLAGS) $(PICFLAG) $(CPPLAGS) -c $< -o $@ # Run the configured compiler COMPILE = $(CC) $(CFLAGS) $(PICFLAG) \ - `$(PERL) $(srcdir)/script/cflags.pl $@` \ $(CPPFLAGS) \ - -c $(FIRST_PREREQ) -o $@ + -c $< -o $@ # Run the compiler for the build host -HCOMPILE = $(HOSTCC) $(HOSTCC_FLAGS) `$(PERL) $(srcdir)/script/cflags.pl $@` \ - $(CPPFLAGS) -c $(FIRST_PREREQ) -o $@ +HCOMPILE = $(HOSTCC) $(HOSTCC_FLAGS) $(CPPFLAGS) -c $< -o $@ # Precompile headers PCHCOMPILE = @$(CC) -Ilib/replace \ - $(CFLAGS) `$(PERL) $(srcdir)/script/cflags.pl $@` \ - $(PICFLAG) $(CPPFLAGS) -c $(FIRST_PREREQ) -o $@ + $(CFLAGS) $(PICFLAG) $(CPPFLAGS) -c $< -o $@ # Partial linking PARTLINK = @$(PROG_LD) -r @@ -101,6 +87,43 @@ unused_macros: $(srcdir)/script/find_unused_macros.pl `find . -name "*.[ch]"` | sort ############################################################################### +# Templates +############################################################################### + +# Partially link +# Arguments: target object file, source object files +define partial_link_template +$(1): $(2) ; + @echo Partially linking $$@ + @mkdir -p $$(@D) + $$(PARTLINK) -o $$@ $$^ +endef + +# Link a binary +# Arguments: target file, depends, flags +define binary_link_template +$(1): $(2) ; + @echo Linking $$@ + @$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3) +endef + +# Link a host-machine binary +# Arguments: target file, depends, flags +define host_binary_link_template +$(1): $(2) ; + @echo Linking $$@ + @$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3) +endef + +# Create a prototype header +# Arguments: header file, c files +define proto_header_template +$(1): $(2) ; + @echo "Creating $$@" + @$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --all=$$@ $$^ +endef + +############################################################################### # File types ############################################################################### @@ -127,9 +150,11 @@ include/includes.d: include/includes.h @-mkdir -p `dirname $@` @$(COMPILE) && exit 0 ; \ echo "The following command failed:" 1>&2;\ - echo "$(COMPILE)" 1>&2;\ $(COMPILE) >/dev/null 2>&1 + +# echo "$(COMPILE)" 1>&2;\ + .c.ho: @echo "Compiling $< with host compiler" @-mkdir -p `dirname $@` @@ -150,6 +175,13 @@ include/includes.d: include/includes.h @echo "Building $< with $(LEX)" @-$(srcdir)/script/lex_compile.sh "$(LEX)" "$<" "$@" +%.a: + @echo Linking $@ + @rm -f $@ + @mkdir -p $(@D) + @$(STLD) $(STLD_FLAGS) $@ $^ + + DOCBOOK_MANPAGE_URL = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl .1.xml.1: @@ -167,9 +199,6 @@ DOCBOOK_MANPAGE_URL = http://docbook.sourceforge.net/release/xsl/current/manpage .8.xml.8: $(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $< -DEP_FILES = $(patsubst %.ho,%.hd,$(patsubst %.o,%.d,$(ALL_OBJS))) \ - include/includes.d - dist:: idl_full manpages configure distclean configure: |