# -*- Mode: makefile; indent-tabs-mode: t -*- # # This file is part of systemd. # # Copyright 2010-2012 Lennart Poettering # Copyright 2010-2012 Kay Sievers # Copyright 2013 Zbigniew Jędrzejewski-Szmek # Copyright 2013 David Strauss # Copyright 2016 Luke Shumaker # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # systemd is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . OUR_CPPFLAGS += -MT $@ -MD -MP -MF $(@D)/$(DEPDIR)/$(basename $(@F)).P$(patsubst .%,%,$(suffix $(@F))) OUR_CPPFLAGS += -include $(topoutdir)/config.h at.dirlocal += AM_CFLAGS AM_CPPFLAGS AM_LDFLAGS AM_LIBTOOLFLAGS ALL_CFLAGS = $(OUR_CFLAGS) $(AM_CFLAGS/$(@D)) $(CFLAGS) ALL_CPPFLAGS = $(OUR_CPPFLAGS) $(AM_CPPFLAGS/$(@D)) $(CPPFLAGS) ALL_LDFLAGS = $(OUR_LDFLAGS) $(AM_LDFLAGS/$(@D)) $(LDFLAGS) ALL_LIBTOOLFLAGS = $(OUR_LIBTOOLFLAGS) $(AM_LIBTOOLFLAGS/$(@D)) $(LIBTOOLFLAGS) COMPILE = $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(ALL_LIBTOOLFLAGS) --mode=compile $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(ALL_LIBTOOLFLAGS) --mode=link $(CCLD) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \ < $< > $@ # remove targets if the command fails .DELETE_ON_ERROR: # keep intermediate files .SECONDARY: # Keep the test-suite.log .PRECIOUS: $(TEST_SUITE_LOG) Makefile V ?= AM_V_M4 = $(AM_V_M4_$(V)) AM_V_M4_ = $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) AM_V_M4_0 = @echo " M4 " $@; AM_V_M4_1 = AM_V_XSLT = $(AM_V_XSLT_$(V)) AM_V_XSLT_ = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY)) AM_V_XSLT_0 = @echo " XSLT " $@; AM_V_XSLT_1 = AM_V_GPERF = $(AM_V_GPERF_$(V)) AM_V_GPERF_ = $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY)) AM_V_GPERF_0 = @echo " GPERF " $@; AM_V_GPERF_1 = AM_V_LN = $(AM_V_LN_$(V)) AM_V_LN_ = $(AM_V_LN_$(AM_DEFAULT_VERBOSITY)) AM_V_LN_0 = @echo " LN " $@; AM_V_LN_1 = AM_V_RM = $(AM_V_RM_$(V)) AM_V_RM_ = $(AM_V_RM_$(AM_DEFAULT_VERBOSITY)) AM_V_RM_0 = @echo " RM " $@; AM_V_RM_1 = AM_V_CC = $(AM_V_CC_$(V)) AM_V_CC_ = $(AM_V_CC_$(AM_DEFAULT_VERBOSITY)) AM_V_CC_0 = @echo " CC " $@; AM_V_CC_1 = AM_V_CCLD = $(AM_V_CCLD_$(V)) AM_V_CCLD_ = $(AM_V_CCLD_$(AM_DEFAULT_VERBOSITY)) AM_V_CCLD_0 = @echo " CCLD " $@; AM_V_CCLD_1 = AM_V_P = $(AM_V_P_$(V)) AM_V_P_ = $(AM_V_P_$(AM_DEFAULT_VERBOSITY)) AM_V_P_0 = false AM_V_P_1 = : AM_V_GEN = $(AM_V_GEN_$(V)) AM_V_GEN_ = $(AM_V_GEN_$(AM_DEFAULT_VERBOSITY)) AM_V_GEN_0 = @echo " GEN " $@; AM_V_GEN_1 = AM_V_at = $(AM_V_at_$(V)) AM_V_at_ = $(AM_V_at_$(AM_DEFAULT_VERBOSITY)) AM_V_at_0 = @ AM_V_at_1 = AM_V_lt = $(AM_V_lt_$(V)) AM_V_lt_ = $(AM_V_lt_$(AM_DEFAULT_VERBOSITY)) AM_V_lt_0 = --silent AM_V_lt_1 = INTLTOOL_V_MERGE = $(INTLTOOL_V_MERGE_$(V)) INTLTOOL_V_MERGE_OPTIONS = $(intltool_v_merge_options_$(V)) INTLTOOL_V_MERGE_ = $(INTLTOOL_V_MERGE_$(AM_DEFAULT_VERBOSITY)) INTLTOOL_V_MERGE_0 = @echo " ITMRG " $@; INTLTOOL_V_MERGE_1 = %-from-name.gperf: %-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct $(notdir $*)_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, %s\n", $$1, $$1 }' <$< >$@ %-from-name.h: %-from-name.gperf $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_$(notdir $*) -H hash_$(notdir $*)_name -p -C <$< >$@ # Stupid test that everything purported to be exported really is define generate-sym-test $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_at)printf '#include \n' > $@ $(AM_V_at)printf '#include "%s"\n' $(notdir $(filter %.h, $^)) >> $@ $(AM_V_at)printf 'void* functions[] = {\n' >> $@ $(AM_V_GEN)sed -r -n 's/^ +([a-zA-Z0-9_]+);/\1,/p' $< >> $@ $(AM_V_at)printf '};\nint main(void) {\n' >> $@ $(AM_V_at)printf 'unsigned i; for (i=0;i> $@ $(AM_V_at)printf 'return 0; }\n' >> $@ endef at.dirlocal += noinst_LTLIBRARIES lib_LTLIBRARIES automake_name = $(subst -,_,$(subst .,_,$1)) automake_sources = $(addprefix $(outdir)/,$(notdir $($(automake_name)_SOURCES) $(nodist_$(automake_name)_SOURCES))) automake_lo = $(patsubst %.c,%.lo,$(filter %.c,$(automake_sources))) automake_o = $(patsubst %.c,%.o,$(filter %.c,$(automake_sources))) automake_libs = $($(automake_name)_LIBADD) define automake2autothing std.out_files += $(noinst_LTLIBRARIES) $(lib_LTLIBRARIES) $(notdir $(pkgconfiglib_DATA)) std.sys_files += $(addprefix $(libdir)/,$(lib_LTLIBRARIES)) std.sys_files += $(addprefix $(pkgconfiglibdir)/,$(notdir $(lib_pkgconfiglib_DATA))) $(foreach n,$(call automake_name,$(std.out_files)),\ $(eval $n_SOURCES ?=)\ $(eval nodist_$n_SOURCES ?=)\ $(eval $n_CFLAGS ?=)\ $(eval $n_CPPFLAGS ?=)\ $(eval $n_LDFLAGS ?=)\ $(eval $n_LIBADD ?=)) $(foreach t,$(filter %.la,$(std.out_files)),\ $(eval $(outdir)/$t: $(call automake_lo,$t) $(call automake_libs,$t) )\ $(eval AM_CFLAGS += $($(call automake_name,$t)_CFLAGS) )\ $(eval AM_CPPFLAGS += $($(call automake_name,$t)_CPPFLAGS) )\ $(eval AM_LDFLAGS += $($(call automake_name,$t)_LDFLAGS) )) endef