Skip to content

Commit

Permalink
Bug 1629553 Use order-prereq for $(MAKE_OBJDIR) r=rrelyea
Browse files Browse the repository at this point in the history
Introduces a simple "%/d" rule to create directories using
$(MAKE_OBJDIR) and replace all explicit $(MAKE_OBJDIR) calls
with an order-only-prerequisites.

To expand the $(@d) prerequisite, this needs .SECONDEXPANSION.

Differential Revision: https://phabricator.services.mozilla.com/D70989

--HG--
extra : moz-landing-system : lando
  • Loading branch information
jmglogow committed May 8, 2020
1 parent d195b12 commit 4809f51
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 51 deletions.
45 changes: 16 additions & 29 deletions coreconf/rules.mk
Expand Up @@ -114,6 +114,10 @@ alltags:
find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs etags -a
find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs ctags -a

.SECONDEXPANSION:
%/d:
@$(MAKE_OBJDIR)

define PROGRAM_template

ifndef $(1)_OBJS
Expand All @@ -128,8 +132,7 @@ ifndef $(1)_OBJS
endif
endif

$(1): $$($(1)_OBJS) $$(EXTRA_LIBS)
@$$(MAKE_OBJDIR)
$(1): $$($(1)_OBJS) $$(EXTRA_LIBS) | $$$$(@D)/d
rm -f $$@
ifeq (,$$(filter-out _WIN%,$$(NS_USE_GCC)_$$(OS_TARGET)))
$$(MKPROG) $$($(1)_OBJS) -Fe$$@ -link $$(LDFLAGS) $$(XLDFLAGS) $$(EXTRA_LIBS) $$(EXTRA_SHARED_LIBS) $$(OS_LIBS)
Expand All @@ -155,8 +158,7 @@ endif
get_objs:
@echo $(OBJS)

$(LIBRARY): $(OBJS)
@$(MAKE_OBJDIR)
$(LIBRARY): $(OBJS) | $$(@D)/d
rm -f $@
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(AR) $(subst /,\\,$(OBJS))
Expand Down Expand Up @@ -184,8 +186,7 @@ SUB_SHLOBJS = $(foreach dir,$(SHARED_LIBRARY_DIRS),$(addprefix $(dir)/,$(shell $
endif
endif

$(SHARED_LIBRARY): $(OBJS) $(RES) $(MAPFILE) $(SUB_SHLOBJS)
@$(MAKE_OBJDIR)
$(SHARED_LIBRARY): $(OBJS) $(RES) $(MAPFILE) $(SUB_SHLOBJS) | $$(@D)/d
rm -f $@
ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.1)
echo "#!" > $(OBJDIR)/lib$(LIBRARY_NAME)_syms
Expand Down Expand Up @@ -215,8 +216,7 @@ endif
endif

ifeq (,$(filter-out WIN%,$(OS_TARGET)))
$(RES): $(RESNAME)
@$(MAKE_OBJDIR)
$(RES): $(RESNAME) | $$(@D)/d
# The resource compiler does not understand the -U option.
ifdef NS_USE_GCC
$(RC) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) -o $@ $<
Expand All @@ -226,8 +226,7 @@ endif
@echo $(RES) finished
endif

$(MAPFILE): $(MAPFILE_SOURCE)
@$(MAKE_OBJDIR)
$(MAPFILE): $(MAPFILE_SOURCE) | $$(@D)/d
$(PROCESS_MAP_FILE)

WCCFLAGS1 := $(subst /,\\,$(CFLAGS))
Expand Down Expand Up @@ -270,8 +269,7 @@ endif
# The quotes allow absolute paths to contain spaces.
core_abspath = '$(if $(findstring :,$(1)),$(1),$(if $(filter /%,$(1)),$(1),$(PWD)/$(1)))'

$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.c
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.c | $$(@D)/d
ifdef USE_NT_C_SYNTAX
$(CC) -Fo$@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<)
else
Expand All @@ -282,7 +280,7 @@ else
endif
endif

$(PROG_PREFIX)%$(OBJ_SUFFIX): %.c
$(PROG_PREFIX)%$(OBJ_SUFFIX): %.c | $$(@D)/d
ifdef USE_NT_C_SYNTAX
$(CC) -Fo$@ -c $(CSTD) $(CFLAGS) $(call core_abspath,$<)
else
Expand All @@ -294,21 +292,17 @@ endif
endif

ifneq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.s
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.s | $$(@D)/d
$(AS) -o $@ $(ASFLAGS) -c $<
endif

$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.asm
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.asm | $$(@D)/d
$(AS) -Fo$@ $(ASFLAGS) -c $<

$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.S
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)%$(OBJ_SUFFIX): %.S | $$(@D)/d
$(AS) -o $@ $(ASFLAGS) -c $<

$(OBJDIR)/$(PROG_PREFIX)%: %.cpp
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)%: %.cpp | $$(@D)/d
ifdef USE_NT_C_SYNTAX
$(CCC) -Fo$@ -c $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(call core_abspath,$<)
else
Expand All @@ -321,8 +315,7 @@ endif

define compile_ccc_pattern_RULE

$$(OBJDIR)/$$(PROG_PREFIX)%$$(OBJ_SUFFIX): %.$(1)
$$(MAKE_OBJDIR)
$$(OBJDIR)/$$(PROG_PREFIX)%$$(OBJ_SUFFIX): %.$(1) | $$$$(@D)/d
ifdef STRICT_CPLUSPLUS_SUFFIX
echo "#line 1 \"$$<\"" | cat - $$< > $$(OBJDIR)/t_$$*.cc
$$(CCC) -o $$@ -c $$(CXXSTD) $$(CFLAGS) $$(CXXFLAGS) $$(OBJDIR)/t_$$*.cc
Expand Down Expand Up @@ -367,9 +360,6 @@ endif
define copy_varlist_into_dir_RULE
ifdef $(2)
ifneq (,$$(strip $$($(2))))
$(3)/d:
@$$(MAKE_OBJDIR)

$(3)/%: %
$$(INSTALL) -m 444 $$^ $(3)

Expand Down Expand Up @@ -400,9 +390,6 @@ ifneq ($(BUILD_OPT),)
REGDATE = $(subst \ ,, $(shell $(PERL) $(CORE_DEPTH)/$(MODULE)/scripts/now))
endif

$(TESTS_DIR)/d:
@$(MAKE_OBJDIR)

check: $(REGRESSION_SPEC) | $(TESTS_DIR)/d
cd $(PLATFORM); \
../$(SOURCE_MD_DIR)/bin/regress$(PROG_SUFFIX) specfile=../$(REGRESSION_SPEC) progress $(EXTRA_REGRESS_OPTIONS)
Expand Down
3 changes: 1 addition & 2 deletions lib/ckfw/builtins/Makefile
Expand Up @@ -66,6 +66,5 @@ ifndef NSS_CERTDATA_TXT
NSS_CERTDATA_TXT = certdata.txt
endif

$(OBJDIR)/certdata.c: $(NSS_CERTDATA_TXT) certdata.perl
@$(MAKE_OBJDIR)
$(OBJDIR)/certdata.c: $(NSS_CERTDATA_TXT) certdata.perl | $$(@D)/d
$(PERL) certdata.perl $(NSS_CERTDATA_TXT) $@
3 changes: 1 addition & 2 deletions lib/ckfw/builtins/testlib/Makefile
Expand Up @@ -70,7 +70,6 @@ ifndef NSS_CERTDATA-TESTLIB_TXT
NSS_CERTDATA-TESTLIB_TXT = certdata-testlib.txt
endif

$(OBJDIR)/certdata-testlib.c: $(NSS_CERTDATA-TESTLIB_TXT)
@$(MAKE_OBJDIR)
$(OBJDIR)/certdata-testlib.c: $(NSS_CERTDATA-TESTLIB_TXT) | $$(@D)/d
$(PERL) ../certdata.perl $(NSS_CERTDATA-TESTLIB_TXT) $@

3 changes: 1 addition & 2 deletions lib/ckfw/capi/Makefile
Expand Up @@ -70,8 +70,7 @@ DSO_LDOPTS = -bM:SRE -bh:4 -bnoentry
EXTRA_DSO_LDOPTS = -lc
MKSHLIB = xlC $(DSO_LDOPTS)

$(SHARED_LIBRARY): $(OBJS)
@$(MAKE_OBJDIR)
$(SHARED_LIBRARY): $(OBJS) | $$(@D)/d
rm -f $@
$(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(EXTRA_DSO_LDOPTS)
chmod +x $@
Expand Down
3 changes: 1 addition & 2 deletions lib/dev/Makefile
Expand Up @@ -19,8 +19,7 @@ include $(CORE_DEPTH)/coreconf/rules.mk
ifeq ($(OS_TARGET)$(OS_RELEASE),AIX4.3)
ifeq ($(USE_64),1)
ifndef BUILD_OPT
$(OBJDIR)/ckhelper.o: ckhelper.c
@$(MAKE_OBJDIR)
$(OBJDIR)/ckhelper.o: ckhelper.c | $$(@D)/d
$(CC) -o $@ -c -O2 $(CFLAGS) $<
endif
endif
Expand Down
11 changes: 3 additions & 8 deletions lib/freebl/Makefile
Expand Up @@ -624,12 +624,10 @@ $(OBJDIR)/ldvector$(OBJ_SUFFIX) $(OBJDIR)/loader$(OBJ_SUFFIX) : loader.h

ifeq ($(SYSV_SPARC),1)

$(OBJDIR)/mpv_sparcv8.o $(OBJDIR)/mpv_sparcv8x.o $(OBJDIR)/montmulfv8.o : $(OBJDIR)/%.o : %.s
@$(MAKE_OBJDIR)
$(OBJDIR)/mpv_sparcv8.o $(OBJDIR)/mpv_sparcv8x.o $(OBJDIR)/montmulfv8.o : $(OBJDIR)/%.o : %.s | $$(@D)/d
$(SOLARIS_AS) -o $@ $(SOLARIS_AS_FLAGS) $<

$(OBJDIR)/mpv_sparcv9.o $(OBJDIR)/montmulfv9.o : $(OBJDIR)/%.o : %.s
@$(MAKE_OBJDIR)
$(OBJDIR)/mpv_sparcv9.o $(OBJDIR)/montmulfv9.o : $(OBJDIR)/%.o : %.s | $$(@D)/d
$(SOLARIS_AS) -o $@ $(SOLARIS_AS_FLAGS) $<

$(OBJDIR)/mpmontg.o: mpmontg.c montmulf.h
Expand All @@ -650,8 +648,6 @@ ALL_TRASH += $$($(1)_DIR)

ifeq (,$$(filter $$($(1)_DIR)/d,$$(FREEBL_OBJDIRS)))
FREEBL_OBJDIRS += $$($(1)_DIR)/d
$$($(1)_DIR)/d:
@$(MAKE_OBJDIR)
endif

release_md:: freebl_$(2)
Expand Down Expand Up @@ -679,8 +675,7 @@ endif # FREEBL_CHILD_BUILD
# ANSI C's strict aliasing rules.
ifeq ($(OS_TARGET),Linux)
ifneq ($(CPU_ARCH),x86)
$(OBJDIR)/$(PROG_PREFIX)desblapi$(OBJ_SUFFIX): desblapi.c
@$(MAKE_OBJDIR)
$(OBJDIR)/$(PROG_PREFIX)desblapi$(OBJ_SUFFIX): desblapi.c | $$(@D)/d
ifdef NEED_ABSOLUTE_PATH
$(CC) -o $@ -c $(CFLAGS) -fno-strict-aliasing $(call core_abspath,$<)
else
Expand Down
3 changes: 1 addition & 2 deletions lib/pk11wrap/Makefile
Expand Up @@ -51,8 +51,7 @@ $(OBJDIR)/pk11load$(OBJ_SUFFIX): debug_module.c
ifeq ($(OS_TARGET)$(OS_RELEASE),AIX4.3)
ifeq ($(USE_64),1)
ifndef BUILD_OPT
$(OBJDIR)/pk11slot.o: pk11slot.c
@$(MAKE_OBJDIR)
$(OBJDIR)/pk11slot.o: pk11slot.c | $$(@D)/d
$(CC) -o $@ -c -O2 $(CFLAGS) $<
endif
endif
Expand Down
7 changes: 3 additions & 4 deletions lib/softoken/Makefile
Expand Up @@ -66,11 +66,10 @@ $(SHARED_LIBRARY): $(CRYPTOLIB)
ifeq ($(OS_TARGET)$(OS_RELEASE),AIX4.3)
ifeq ($(USE_64),1)
ifndef BUILD_OPT
$(OBJDIR)/pkcs11.o: pkcs11.c
@$(MAKE_OBJDIR)
$(OBJDIR)/pkcs11.o: pkcs11.c | $$(@D)/d
$(CC) -o $@ -c -O2 $(CFLAGS) $<
$(OBJDIR)/pkcs11c.o: pkcs11c.c
@$(MAKE_OBJDIR)

$(OBJDIR)/pkcs11c.o: pkcs11c.c | $$(@D)/d
$(CC) -o $@ -c -O2 $(CFLAGS) $<
endif
endif
Expand Down

0 comments on commit 4809f51

Please sign in to comment.