From 80f07d6746e572c508082b4da92c08b56953092e Mon Sep 17 00:00:00 2001 From: Jan-Marek Glogowski Date: Tue, 5 May 2020 12:29:36 +0000 Subject: Bug 290526 Drop double-colon usage and add directory depends r=rrelyea Double-colon rule behaviour isn't really compatible with parallel build. This gets rid of all of them, so we can codify the directory dependencies. This leaves just three problems, which aren't really fixable with the current build system without completely replacing it: * everything depends on nsinstall * everything depends on installed headers * ckfw child directories depend on the build parent libs This is handled by the prepare_build target. Overall this allows most if the build to run in parallel. P.S. the release_md:: has to stay :-( P.P.S. no clue, why freebl must use libs: instead of using the TARGETS and .PHONY variables Differential Revision: https://phabricator.services.mozilla.com/D69023 --- Makefile | 4 +- cmd/Makefile | 4 +- cmd/shlibsign/Makefile | 3 +- cmd/smimetools/rules.mk | 2 +- coreconf/rules.mk | 139 ++++++++++++++++++------------------------------ gtests/manifest.mn | 15 ++++++ lib/freebl/Makefile | 42 ++++++++++----- lib/manifest.mn | 8 +++ manifest.mn | 21 ++++++++ 9 files changed, 132 insertions(+), 106 deletions(-) diff --git a/Makefile b/Makefile index f207bd460..eb4ed1a74 100644 --- a/Makefile +++ b/Makefile @@ -47,12 +47,12 @@ include $(CORE_DEPTH)/coreconf/rules.mk # (7) Execute "local" rules. (OPTIONAL). # ####################################################################### -nss_build_all:: +nss_build_all: $(MAKE) build_nspr $(MAKE) all $(MAKE) latest -nss_clean_all:: +nss_clean_all: $(MAKE) clobber_nspr $(MAKE) clobber diff --git a/cmd/Makefile b/cmd/Makefile index 86ef29ad4..292c73723 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -38,7 +38,9 @@ INCLUDES += \ -I./include \ $(NULL) +$(SOFTOKEN_SRCDIRS) $(NSS_SRCDIRS): $(LIB_SRCDIRS) + include $(CORE_DEPTH)/coreconf/rules.mk -symbols:: +symbols: @echo "TARGETS = $(TARGETS)" diff --git a/cmd/shlibsign/Makefile b/cmd/shlibsign/Makefile index 30f01ba40..73641d996 100644 --- a/cmd/shlibsign/Makefile +++ b/cmd/shlibsign/Makefile @@ -95,6 +95,5 @@ else endif endif -libs:: - $(MAKE) install +libs: install $(MAKE) $(CHECKLOC) diff --git a/cmd/smimetools/rules.mk b/cmd/smimetools/rules.mk index 1ed381ef3..b4ee091ef 100644 --- a/cmd/smimetools/rules.mk +++ b/cmd/smimetools/rules.mk @@ -3,5 +3,5 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -install:: +install: $(INSTALL) -m 755 $(SCRIPTS) $(SOURCE_BIN_DIR) diff --git a/coreconf/rules.mk b/coreconf/rules.mk index 14d951377..03abba4c9 100644 --- a/coreconf/rules.mk +++ b/coreconf/rules.mk @@ -10,49 +10,21 @@ ####################################################################### ####################################################################### -# Double-Colon rules for utilizing the binary release model. # +# Dont't use double-colon rules! # ####################################################################### -all:: - $(MAKE) -C coreconf/nsinstall program - $(MAKE) export - # pre-build child dir -> parent dir dependencies - # ckfw/builtins -> ckfw - IGNORE_DIRS=1 $(MAKE) -C lib/ckfw libs - # ckfw/builtins/testlib -> ckfw/builtins + base - $(MAKE) -C lib/base libs - IGNORE_DIRS=1 $(MAKE) -C lib/ckfw/builtins libs - $(MAKE) -C lib/util libs - # softoken + legacydb -> util + sqlite + freebl + dbm - $(MAKE) -C lib/dbm libs - $(MAKE) -C lib/sqlite libs - $(MAKE) -C lib/freebl libs - # nss -> util + certhi + cryptohi + pk11wrap + certdb + pki + dev (+ base) + pkix - $(MAKE) -C lib/certhigh libs - $(MAKE) -C lib/cryptohi libs - $(MAKE) -C lib/pk11wrap libs - $(MAKE) -C lib/certdb libs - $(MAKE) -C lib/pki libs - $(MAKE) -C lib/dev libs - $(MAKE) -C lib/libpkix libs - $(MAKE) -C lib/nss libs - # smime -> nss + pkcs12 + pkcs7 - $(MAKE) -C lib/pkcs7 libs - $(MAKE) -C lib/pkcs12 libs - # all dependencies done -> finish libraries - $(MAKE) -C lib libs - # cmd library sectool - $(MAKE) -C cmd/lib libs - # everything still missing - $(MAKE) libs +ifndef HAVE_ALL_TARGET +all: libs +endif +autobuild: ifeq ($(AUTOCLEAN),1) -autobuild:: clean export libs program install -else -autobuild:: export libs program install + $(MAKE) clean endif + $(MAKE) all + $(MAKE) install -platform:: +platform: @echo $(OBJDIR_NAME) ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET))) @@ -61,7 +33,7 @@ endif ifdef DIRS ifndef IGNORE_DIRS -$(DIRS):: +$(DIRS): $(IGNORE_ERROR)@$(MAKE) -C $@ $(MAKECMDGOALS) @$(CLICK_STOPWATCH) endif @@ -76,7 +48,7 @@ endif # note: if there is a trailing slash, the component will be appended # (see import.pl - only used for xpheader.jar) -import:: +import: @echo "== import.pl ==" @$(PERL) -I$(CORE_DEPTH)/coreconf $(CORE_DEPTH)/coreconf/import.pl \ "RELEASE_TREE=$(RELEASE_TREE)" \ @@ -99,13 +71,13 @@ ifeq ($(OS_TARGET),Darwin) find $(SOURCE_MD_DIR)/lib -name "*.a" -exec $(RANLIB) {} \; endif -export:: $(DIRS) private_export +export: $(DIRS) private_export -release_export:: $(DIRS) +release_export: $(DIRS) -release_classes:: $(DIRS) +release_classes: $(DIRS) -libs program install:: $(DIRS) $(TARGETS) +libs program install: $(DIRS) $(TARGETS) ifneq ($(LIBRARY),) $(INSTALL) -m 664 $(LIBRARY) $(SOURCE_LIB_DIR) endif @@ -132,25 +104,20 @@ ifneq ($(PROGRAMS),) $(INSTALL) -m 775 $(PROGRAMS) $(SOURCE_BIN_DIR) endif -check:: $(DIRS) +check: $(DIRS) -clean clobber:: $(DIRS) +clean clobber: $(DIRS) rm -rf $(ALL_TRASH) -realclean clobber_all:: $(DIRS) +realclean clobber_all: $(DIRS) rm -rf $(wildcard *.OBJ) dist $(ALL_TRASH) -####################################################################### -# Double-Colon rules for populating the binary release model. # -####################################################################### - - -release_clean:: +release_clean: rm -rf $(SOURCE_XP_DIR)/release/$(RELEASE_MD_DIR) -release:: release_clean release_export release_classes release_policy release_md release_jars release_cpdistdir +release: release_clean release_export release_classes release_policy release_md release_jars release_cpdistdir -release_cpdistdir:: +release_cpdistdir: @echo "== cpdist.pl ==" @$(PERL) -I$(CORE_DEPTH)/coreconf $(CORE_DEPTH)/coreconf/cpdist.pl \ "RELEASE_TREE=$(RELEASE_TREE)" \ @@ -176,7 +143,7 @@ release_cpdistdir:: # $(SOURCE_RELEASE_xxx_JAR) is a name like yyy.jar # $(SOURCE_RELEASE_xx_DIR) is a name like -release_jars:: +release_jars: @echo "== release.pl ==" @$(PERL) -I$(CORE_DEPTH)/coreconf $(CORE_DEPTH)/coreconf/release.pl \ "RELEASE_TREE=$(RELEASE_TREE)" \ @@ -222,16 +189,16 @@ endif # Substitute \$ for $ so the shell doesn't choke ifdef BUILD_OPT -release_classes:: +release_classes: $(INSTALL) -m 444 $(subst $$,\$$,$(RELEASE_FILES)) $(SOURCE_RELEASE_PREFIX)/$(SOURCE_RELEASE_CLASSES_DIR)/$(PACKAGE) else -release_classes:: +release_classes: $(INSTALL) -m 444 $(subst $$,\$$,$(RELEASE_DBG_FILES)) $(SOURCE_RELEASE_PREFIX)/$(SOURCE_RELEASE_CLASSES_DBG_DIR)/$(PACKAGE) endif endif -release_policy:: $(DIRS) +release_policy: $(DIRS) ifndef NO_MD_RELEASE ifdef LIBRARY @@ -533,7 +500,7 @@ endif # Bunch of things that extend the 'export' rule (in order): ################################################################################ -$(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) $(JMCSRCDIR):: +$(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) $(JMCSRCDIR): @if test ! -d $@; then \ echo Creating $@; \ rm -rf $@; \ @@ -545,12 +512,12 @@ $(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) $(JMCSRCDIR):: ifneq ($(IDL_GEN),) -#export:: +#export: # $(IDL2JAVA) $(IDL_GEN) -#all:: export +#all: export -#clobber:: +#clobber: # rm -f $(IDL_GEN:.idl=.class) # XXX wrong! endif @@ -570,14 +537,14 @@ endif JAVA_EXPORT_SRCS=$(shell $(PERL) $(CORE_DEPTH)/coreconf/outofdate.pl $(PERLARG) -d $(JAVA_DESTPATH)/$(PACKAGE) $(JSRCS) $(PRIVATE_JSRCS)) -export:: $(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) +export: $(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) ifneq ($(JAVA_EXPORT_SRCS),) $(JAVAC) $(JAVA_EXPORT_SRCS) endif -all:: export +all: export -clobber:: +clobber: rm -f $(SOURCE_XP_DIR)/classes/$(PACKAGE)/*.class endif @@ -604,7 +571,7 @@ endif # to parse the '=' character. A solution is to rewrite outofdate.pl so it # takes the Javac command as an argument and executes the command itself, # instead of returning a list of files. -export:: $(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) +export: $(JAVA_DESTPATH) $(JAVA_DESTPATH)/$(PACKAGE) @echo "!!! THIS COMMAND IS BROKEN ON WINDOWS--SEE rules.mk FOR DETAILS !!!" return -1 @for d in $(JDIRS); do \ @@ -657,7 +624,7 @@ JDK_STUB_CFILES := $(patsubst %,$(JDK_STUB_DIR)/%.c,$(JDK_GEN)) $(JDK_HEADER_CFILES): $(JDK_HEADER_CLASSFILES) $(JDK_STUB_CFILES): $(JDK_STUB_CLASSFILES) -export:: +export: @echo Generating/Updating JDK headers $(JAVAH) -d $(JDK_GEN_DIR) $(JDK_PACKAGE_CLASSES) @echo Generating/Updating JDK stubs @@ -706,7 +673,7 @@ JRI_STUB_CFILES := $(patsubst %,$(JRI_GEN_DIR)/%.c,$(JRI_GEN)) $(JRI_HEADER_CFILES): $(JRI_HEADER_CLASSFILES) $(JRI_STUB_CFILES): $(JRI_STUB_CLASSFILES) -export:: +export: @echo Generating/Updating JRI headers $(JAVAH) -jri -d $(JRI_GEN_DIR) $(JRI_PACKAGE_CLASSES) @echo Generating/Updating JRI stubs @@ -734,7 +701,7 @@ ifneq ($(JNI_GEN),) ifneq ($(JAVAH),) JNI_HEADERS := $(patsubst %,$(JNI_GEN_DIR)/%.h,$(JNI_GEN)) -export:: +export: @if test ! -d $(JNI_GEN_DIR); then \ echo $(JAVAH) -jni -d $(JNI_GEN_DIR) $(JNI_GEN); \ $(JAVAH) -jni -d $(JNI_GEN_DIR) $(JNI_GEN); \ @@ -758,7 +725,7 @@ JMC_EXPORT_FILES := $(patsubst %,$(JAVA_DESTPATH)/$(PACKAGE)/%.class,$(JMC_EXPOR # your NSDISTMODE and make links relative to the current directory. This is a # problem because the source isn't in the current directory: # -export:: $(JMC_EXPORT_FILES) $(JMCSRCDIR) +export: $(JMC_EXPORT_FILES) $(JMCSRCDIR) $(NSINSTALL) -t -m 444 $(JMC_EXPORT_FILES) $(JMCSRCDIR) endif @@ -784,7 +751,7 @@ $(OBJDIR)/M%$(OBJ_SUFFIX): $(JMC_GEN_DIR)/M%.c $(JMC_GEN_DIR)/M%.h @$(MAKE_OBJDIR) $(CC) -o $@ -c $(CFLAGS) $< -export:: $(JMC_HEADERS) $(JMC_STUBS) +export: $(JMC_HEADERS) $(JMC_STUBS) endif endif @@ -800,7 +767,7 @@ $(PUBLIC_EXPORT_DIR)/d: $(PUBLIC_EXPORT_DIR)/%: % $(INSTALL) -m 444 $^ $(PUBLIC_EXPORT_DIR) -export:: $(addprefix $(PUBLIC_EXPORT_DIR)/,$(EXPORTS)) | $(PUBLIC_EXPORT_DIR)/d +export: $(addprefix $(PUBLIC_EXPORT_DIR)/,$(EXPORTS)) | $(PUBLIC_EXPORT_DIR)/d endif # Duplicate export rule for private exports, with different directories @@ -814,9 +781,9 @@ $(PRIVATE_EXPORT_DIR)/d: $(PRIVATE_EXPORT_DIR)/%: % $(INSTALL) -m 444 $^ $(PRIVATE_EXPORT_DIR) -private_export:: $(addprefix $(PRIVATE_EXPORT_DIR)/,$(PRIVATE_EXPORTS)) | $(PRIVATE_EXPORT_DIR)/d +private_export: $(addprefix $(PRIVATE_EXPORT_DIR)/,$(PRIVATE_EXPORTS)) | $(PRIVATE_EXPORT_DIR)/d else -private_export:: +private_export: @echo "There are no private exports." endif @@ -834,7 +801,7 @@ ifneq ($(BUILD_OPT),) REGDATE = $(subst \ ,, $(shell $(PERL) $(CORE_DEPTH)/$(MODULE)/scripts/now)) endif -check:: $(REGRESSION_SPEC) +check: $(REGRESSION_SPEC) cd $(PLATFORM); \ ../$(SOURCE_MD_DIR)/bin/regress$(PROG_SUFFIX) specfile=../$(REGRESSION_SPEC) progress $(EXTRA_REGRESS_OPTIONS); \ if test ! -d $(TESTS_DIR); then \ @@ -848,7 +815,7 @@ ifneq ($(BUILD_OPT),) echo "then run 'reporter specfile=$(RESULTS_DIR)/rptspec'" endif else -check:: +check: @echo "Error: you didn't specify REGRESSION_SPEC in your manifest.mn file!" endif @@ -856,15 +823,15 @@ endif # Duplicate export rule for releases, with different directories ifneq ($(EXPORTS),) -$(SOURCE_RELEASE_XP_DIR)/include:: +$(SOURCE_RELEASE_XP_DIR)/include: @if test ! -d $@; then \ echo Creating $@; \ $(NSINSTALL) -D $@; \ fi -release_export:: $(SOURCE_RELEASE_XP_DIR)/include +release_export: $(SOURCE_RELEASE_XP_DIR)/include -release_export:: $(EXPORTS) +release_export: $(EXPORTS) $(INSTALL) -m 444 $^ $(SOURCE_RELEASE_XP_DIR)/include endif @@ -919,7 +886,7 @@ ifdef MKDEPENDENCIES # For Windows, $(MKDEPENDENCIES) must be -included before including rules.mk -$(MKDEPENDENCIES):: +$(MKDEPENDENCIES): @$(MAKE_OBJDIR) touch $(MKDEPENDENCIES) chmod u+w $(MKDEPENDENCIES) @@ -928,22 +895,22 @@ $(MKDEPENDENCIES):: $(MKDEPEND) -p$(OBJDIR_NAME)/ -o'$(OBJ_SUFFIX)' -f$(MKDEPENDENCIES) \ $(NOMD_CFLAGS) $(YOPT) $(CSRCS) $(CPPSRCS) $(ASFILES) -$(MKDEPEND):: $(MKDEPEND_DIR)/*.c $(MKDEPEND_DIR)/*.h +$(MKDEPEND): $(MKDEPEND_DIR)/*.c $(MKDEPEND_DIR)/*.h $(MAKE) -C $(MKDEPEND_DIR) ifdef OBJS -depend:: $(DIRS) $(MKDEPEND) $(MKDEPENDENCIES) +depend: $(DIRS) $(MKDEPEND) $(MKDEPENDENCIES) else -depend:: $(DIRS) +depend: $(DIRS) endif -dependclean:: $(DIRS) +dependclean: $(DIRS) rm -f $(MKDEPENDENCIES) #-include $(NSINSTALL_DIR)/$(OBJDIR)/depend.mk else -depend:: +depend: endif endif @@ -990,5 +957,5 @@ $(filter $(OBJDIR)/%$(OBJ_SUFFIX),$(OBJS)): $(OBJDIR)/%$(OBJ_SUFFIX): $(DUMMY_DE # Fake targets. Always run these rules, even if a file/directory with that # name already exists. # -.PHONY: all all_platforms alltags boot clean clobber clobber_all export install libs program realclean release +.PHONY: all all_platforms alltags boot clean clobber clobber_all export install libs program realclean release $(DIRS) diff --git a/gtests/manifest.mn b/gtests/manifest.mn index 1d97da3dd..97c9ef161 100644 --- a/gtests/manifest.mn +++ b/gtests/manifest.mn @@ -10,10 +10,14 @@ LIB_SRCDIRS = \ common \ $(NULL) +common: google_test + ifneq ($(NSS_BUILD_WITHOUT_UTIL),1) UTIL_SRCDIRS = \ util_gtest \ $(NULL) + +util_gtest: common endif ifneq ($(NSS_BUILD_SOFTOKEN_ONLY),1) @@ -31,6 +35,17 @@ NSS_SRCDIRS = \ nss_bogo_shim \ pkcs11testmodule \ $(NULL) + +certdb_gtest: common +certhigh_gtest: common +cryptohi_gtest: common +der_gtest: common +pk11_gtest: common pkcs11testmodule +smime_gtest: common +softoken_gtest: common +ssl_gtest: google_test +sysinit_gtest: google_test +util_gtest: common endif endif diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile index ebb1d398d..860ea8c29 100644 --- a/lib/freebl/Makefile +++ b/lib/freebl/Makefile @@ -649,9 +649,11 @@ ALL_TRASH += $(SINGLE_SHLIB_DIR) $(SINGLE_SHLIB_DIR): -mkdir -p $(SINGLE_SHLIB_DIR) -release_md libs:: $(SINGLE_SHLIB_DIR) +release_md:: freebl_single_shlib +libs: freebl_single_shlib +freebl_single_shlib: | $(SINGLE_SHLIB_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 \ - OBJDIR=$(SINGLE_SHLIB_DIR) $@ + OBJDIR=$(SINGLE_SHLIB_DIR) libs ######################## common stuff ######################### endif @@ -662,9 +664,11 @@ ALL_TRASH += $(SINGLE_SHLIB_DIR) $(SINGLE_SHLIB_DIR): -mkdir $(SINGLE_SHLIB_DIR) -release_md libs:: $(SINGLE_SHLIB_DIR) +release_md:: freebl_stub_build +libs: freebl_stub_build +freebl_stub_build: | $(SINGLE_SHLIB_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_STUB_BUILD=1 \ - OBJDIR=$(SINGLE_SHLIB_DIR) $@ + OBJDIR=$(SINGLE_SHLIB_DIR) libs endif # multiple shared libraries @@ -677,9 +681,11 @@ ALL_TRASH += $(ABI32_FPU_DIR) $(ABI32_FPU_DIR): -mkdir $(ABI32_FPU_DIR) -release_md libs:: $(ABI32_FPU_DIR) +release_md:: freebl_ABI32_FPU +libs: freebl_ABI32_FPU +freebl_ABI32_FPU: | $(ABI32_FPU_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_ABI32_FPU=1 \ - OBJDIR=$(ABI32_FPU_DIR) $@ + OBJDIR=$(ABI32_FPU_DIR) libs endif ######################## ABI32_INT32 stuff ######################### @@ -690,9 +696,11 @@ ALL_TRASH += $(ABI32_INT32_DIR) $(ABI32_INT32_DIR): -mkdir $(ABI32_INT32_DIR) -release_md libs:: $(ABI32_INT32_DIR) +release_md:: freebl_ABI32_INT32 +libs: freebl_ABI32_INT32 +freebl_ABI32_INT32: | $(ABI32_INT32_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_ABI32_INT32=1 \ - OBJDIR=$(ABI32_INT32_DIR) $@ + OBJDIR=$(ABI32_INT32_DIR) libs endif ######################## ABI32_INT64 stuff ######################### @@ -703,9 +711,11 @@ ALL_TRASH += $(ABI32_INT64_DIR) $(ABI32_INT64_DIR): -mkdir $(ABI32_INT64_DIR) -release_md libs:: $(ABI32_INT64_DIR) +release_md:: freebl_ABI32_INT64 +libs: freebl_ABI32_INT64 +freebl_ABI32_INT64: | $(ABI32_INT64_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_ABI32_INT64=1\ - OBJDIR=$(ABI32_INT64_DIR) $@ + OBJDIR=$(ABI32_INT64_DIR) libs endif ######################## END of 32-bit stuff ######################### @@ -720,9 +730,11 @@ ALL_TRASH += $(ABI64_FPU_DIR) $(ABI64_FPU_DIR): -mkdir $(ABI64_FPU_DIR) -release_md libs:: $(ABI64_FPU_DIR) +release_md:: freebl_ABI64_FPU +libs: freebl_ABI64_FPU +freebl_ABI64_FPU: | $(ABI64_FPU_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_ABI64_FPU=1 \ - OBJDIR=$(ABI64_FPU_DIR) $@ + OBJDIR=$(ABI64_FPU_DIR) libs endif ######################## ABI64_INT stuff ######################### @@ -733,9 +745,11 @@ ALL_TRASH += $(ABI64_INT_DIR) $(ABI64_INT_DIR): -mkdir $(ABI64_INT_DIR) -release_md libs:: $(ABI64_INT_DIR) +release_md:: freebl_ABI64_INT +libs: freebl_ABI64_INT +freebl_ABI64_INT: | $(ABI64_INT_DIR) $(MAKE) FREEBL_CHILD_BUILD=1 USE_ABI64_INT=1 \ - OBJDIR=$(ABI64_INT_DIR) $@ + OBJDIR=$(ABI64_INT_DIR) libs endif endif # FREEBL_CHILD_BUILD diff --git a/lib/manifest.mn b/lib/manifest.mn index 80d7d9c44..15cc2e618 100644 --- a/lib/manifest.mn +++ b/lib/manifest.mn @@ -37,6 +37,14 @@ NSS_SRCDIRS = \ endif endif +freebl: util +sysinit: util +softoken: util dbm sqlite freebl +nss: certhigh cryptohi pk11wrap certdb pki dev base libpkix util +smime: nss pkcs12 pkcs7 +ssl: nss freebl +ckfw: nss + # # organized by DLL # diff --git a/manifest.mn b/manifest.mn index 500a5ad64..4cd1ea5ee 100644 --- a/manifest.mn +++ b/manifest.mn @@ -11,3 +11,24 @@ IMPORTS = nspr20/v4.8 \ RELEASE = nss DIRS = coreconf lib cmd cpputil gtests + +lib: coreconf +cmd: lib +cpputil: lib +gtests: cmd cpputil + +HAVE_ALL_TARGET := 1 + +prepare_build: + # no real way to encode these in any sensible way + $(MAKE) -C coreconf/nsinstall program + $(MAKE) export + # pre-build child dir -> parent dir dependencies + # ckfw/builtins -> ckfw + IGNORE_DIRS=1 $(MAKE) -C lib/ckfw libs + # ckfw/builtins/testlib -> ckfw/builtins + base + $(MAKE) -C lib/base libs + IGNORE_DIRS=1 $(MAKE) -C lib/ckfw/builtins libs + +all: prepare_build + $(MAKE) libs -- cgit v1.2.1