Hana 9e216da9ef go.mod: add go.mod and move pygments to third_party
After go1.16, go will use module mode by default,
even when the repository is checked out under GOPATH
or in a one-off directory. Add go.mod, go.sum to keep
this repo buildable without opting out of the module
mode.

> go mod init github.com/mmcgrana/gobyexample
> go mod tidy
> go mod vendor

In module mode, the 'vendor' directory is special
and its contents will be actively maintained by the
go command. pygments aren't the dependency the go will
know about, so it will delete the contents from vendor
directory. Move it to `third_party` directory now.

And, vendor the blackfriday package.

Note: the tutorial contents are not affected by the
change in go1.16 because all the examples in this
tutorial ask users to run the go command with the
explicit list of files to be compiled (e.g.
`go run hello-world.go` or `go build command-line-arguments.go`).
When the source list is provided, the go command does
not have to compute the build list and whether it's
running in GOPATH mode or module mode becomes irrelevant.
2021-02-15 16:45:26 -05:00

587 lines
12 KiB
Makefile

#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = .
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/build/unix/modules.mk
ifeq ($(BUILD_MODULES),all)
#
# And now for something completely different...
# Divide the default build into tiers.
# Tiers must be defined on module boundaries
#
SUPPRESS_DEFAULT_RULES = 1
default alldep all:: $(SUBMAKEFILES)
$(RM) -rf $(DIST)/sdk
$(RM) -rf $(DIST)/include
$(MAKE) -C config export
$(MAKE) nspr
$(MAKE) ldap
$(MAKE) tier_0
$(MAKE) tier_1
$(MAKE) tier_2
$(MAKE) tier_9
$(MAKE) tier_50
$(MAKE) tier_99
# Make sure that the existing rulesets work
DIRS = \
$(tier_0_dirs) \
$(tier_1_dirs) \
$(tier_2_dirs) \
$(tier_9_dirs) \
$(tier_50_dirs) \
$(NULL)
ifdef GC_LEAK_DETECTOR
DIRS += gc/boehm
endif
DIRS += $(tier_99_dirs)
#
# tier 0 - base build config dirs
#
tier_0_dirs = \
config \
build \
$(NULL)
#
# tier 1 - 3rd party individual libraries
#
tier_1_dirs += dbm
ifndef MOZ_NATIVE_JPEG
tier_1_dirs += jpeg
endif
ifndef MOZ_NATIVE_ZLIB
tier_1_dirs += modules/zlib
endif
# Installer needs standalone libjar, hence standalone zlib
ifdef MOZ_INSTALLER
tier_1_dirs += modules/zlib/standalone
endif
ifdef MOZ_UPDATER
tier_1_dirs += modules/libbz2
tier_1_dirs += modules/libmar
endif
ifdef MOZ_SVG_RENDERER_LIBART
tier_1_dirs += other-licenses/libart_lgpl
endif
#
# tier 2 - base libraries
#
tier_2_dirs = \
js \
xpcom \
$(NULL)
ifndef MOZ_NO_XPCOM_OBSOLETE
tier_2_dirs += modules/libreg xpcom/obsolete
endif
ifdef NS_TRACE_MALLOC
tier_2_dirs += tools/trace-malloc/lib
endif
#
# tier 9 - core components (necko,gecko)
#
tier_9_dirs += \
js/src/xpconnect \
intl \
db \
$(NULL)
ifdef MOZ_STORAGE
tier_9_dirs += storage
endif
ifdef MOZ_ENABLE_XLIB
tier_9_dirs += gfx/src/xlibrgb widget/src/xlibxtbin
endif
ifdef MOZ_ENABLE_GTK
tier_9_dirs += widget/src/gtksuperwin widget/src/gtkxtbin
endif
ifdef MOZ_ENABLE_GTK2
tier_9_dirs += widget/src/gtkxtbin
endif
ifdef MOZ_IPCD
tier_9_dirs += ipc/ipcd
endif
ifdef MOZ_JSDEBUGGER
tier_9_dirs += js/jsd
endif
tier_9_dirs += \
modules/libutil \
netwerk \
modules/libjar \
uriloader \
modules/libpref \
modules/libimg \
caps \
rdf \
parser/expat \
parser/xml \
parser/htmlparser \
gfx \
modules/libpr0n \
sun-java \
modules/plugin \
dom \
view \
widget \
content \
layout \
xpfe/components/shistory \
docshell \
webshell \
embedding \
editor \
xpfe/appshell \
$(NULL)
ifdef MOZ_OJI
tier_9_dirs += \
js/src/liveconnect \
modules/oji \
$(NULL)
endif
ifdef ACCESSIBILITY
tier_9_dirs += accessible
endif
#
# tier 50 - xpfe & toolkit
#
ifdef MOZ_XUL
ifdef MOZ_XUL_APP
tier_50_dirs += chrome
else
tier_50_dirs += rdf/chrome
endif
else
tier_50_dirs += embedding/minimo/chromelite
endif
tier_50_dirs += profile
# This must preceed xpfe
ifdef MOZ_JPROF
tier_50_dirs += tools/jprof
endif
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
tier_50_dirs += xpfe/bootstrap/appleevents
endif
tier_50_dirs += \
xpfe \
toolkit/components \
$(NULL)
ifndef MOZ_XUL_APP
tier_50_dirs += themes
endif
ifdef MOZ_ENABLE_XREMOTE
tier_50_dirs += widget/src/xremoteclient
endif
ifdef MOZ_XUL_APP
tier_50_dirs += toolkit
endif
ifdef MOZ_PHOENIX
#XXXBlake this shell path is a temp hack; toolkit shouldn't depend on browser
tier_50_dirs += browser/components/shell/public
endif
ifdef MOZ_XPINSTALL
tier_50_dirs += xpinstall
endif
# JavaXPCOM JNI code is compiled into libXUL
ifdef MOZ_JAVAXPCOM
tier_50_dirs += extensions/java/xpcom/src
endif
ifdef MOZ_ENABLE_LIBXUL
tier_50_dirs += \
toolkit/library \
xpcom/stub \
$(NULL)
endif
ifdef NS_TRACE_MALLOC
tier_50_dirs += tools/trace-malloc
endif
ifdef MOZ_PSM
tier_50_dirs += security/manager
else
tier_50_dirs += security/manager/boot/public security/manager/ssl/public
endif
ifdef MOZ_LDAP_XPCOM
tier_50_dirs += directory/xpcom
endif
ifndef MINIMO
ifdef MOZ_XUL_APP
ifdef MOZ_ENABLE_GTK2
tier_50_dirs += toolkit/components/gnome
endif
endif
endif
ifdef MOZ_LEAKY
tier_50_dirs += tools/leaky
endif
ifdef MOZ_MAPINFO
tier_50_dirs += tools/codesighs
endif
#
# tier 99 - application features
#
ifdef MOZ_MAIL_NEWS
tier_99_dirs += mailnews
endif
ifdef MOZ_CALENDAR
tier_99_dirs += calendar
endif
ifdef MOZ_EXTENSIONS
tier_99_dirs += extensions
endif
ifdef MOZ_JAVAXPCOM
tier_99_dirs += extensions/java
endif
# axcontrol
ifeq ($(OS_ARCH),WINNT)
ifndef MOZ_NO_ACTIVEX_SUPPORT
tier_99_dirs += \
embedding/browser/activex/src/control \
embedding/browser/activex/src/control_kicker \
$(NULL)
endif
endif
# Java Embedding Plugin
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
tier_99_dirs += plugin/oji/JEP
endif
ifneq (,$(filter browser suite,$(MOZ_BUILD_APP)))
tier_99_dirs += xpfe/components/search
endif
ifdef MOZ_BRANDING_DIRECTORY
tier_99_dirs += $(MOZ_BRANDING_DIRECTORY)
endif
ifdef MOZ_PHOENIX
tier_99_dirs += browser xpfe/bootstrap/init.d
endif
ifdef MOZ_XULRUNNER
tier_99_dirs += xulrunner
endif
ifdef MOZ_COMPOSER
tier_99_dirs += editor/ui
endif
ifdef MOZ_THUNDERBIRD
tier_99_dirs += mail xpfe/bootstrap/init.d
endif
ifdef MOZ_STANDALONE_COMPOSER
tier_99_dirs += composer
endif
ifdef MOZ_SUNBIRD
tier_99_dirs += calendar/sunbird
endif
ifdef MOZ_SUITE
tier_99_dirs += suite
endif
ifdef MINIMO
tier_99_dirs += minimo
endif
ifdef MOZ_XUL_APP
ifdef MOZ_INSTALLER
tier_99_dirs += toolkit/mozapps/installer
endif
else
ifneq (,$(MOZ_XPFE_COMPONENTS)$(MOZ_XUL))
ifndef MINIMO
tier_99_dirs += xpfe/bootstrap
endif
endif
endif
ifneq (,$(MOZ_ENABLE_GTK)$(MOZ_ENABLE_GTK2))
tier_99_dirs += embedding/browser/gtk
endif
# viewer
ifneq (,$(ENABLE_TESTS))
ifndef MOZ_ENABLE_LIBXUL
tier_99_dirs += webshell/tests
endif
endif
# winembed, mfcembed
ifeq ($(OS_ARCH),WINNT)
ifneq (,$(ENABLE_TESTS)$(MOZILLA_OFFICIAL))
tier_99_dirs += embedding/tests
endif
endif
# os2embed
ifeq ($(OS_ARCH),OS2)
ifneq (,$(ENABLE_TESTS)$(MOZILLA_OFFICIAL))
tier_99_dirs += embedding/tests
endif
endif
ifeq ($(MOZ_BUILD_APP),macbrowser)
tier_99_dirs += \
embedding/config \
camino \
$(NULL)
endif
# test harnesses
ifdef ENABLE_TESTS
tier_99_dirs += tools/test-harness
endif
else
# Standalone build
DIRS = $(BUILD_MODULE_DIRS)
# Hack to generate xpidl Makefile
ifneq ($(BUILD_MODULES),all)
ifneq (,$(findstring xpcom, $(BUILD_MODULE_DIRS)))
DIRS := xpcom/typelib $(DIRS)
SUBMAKEFILES := xpcom/typelib/Makefile
endif
endif
default:: $(SUBMAKEFILES)
$(MAKE) export
$(MAKE) libs
endif # BUILD_MODULES == all
STATIC_MAKEFILES := nsprpub directory/c-sdk security/nss
GARBAGE_DIRS += dist
DIST_GARBAGE = config.cache config.log config.status config-defs.h \
dependencies.beos config/autoconf.mk config/myrules.mk config/myconfig.mk \
unallmakefiles mozilla-config.h \
$(topsrcdir)/.mozconfig.mk $(topsrcdir)/.mozconfig.out
# Build pseudo-external modules first when export is explicitly called
export::
$(RM) -rf $(DIST)/sdk
$(MAKE) -C config export
$(MAKE) nspr
$(MAKE) ldap
ifneq ($(BUILD_MODULES),all)
ifneq (,$(findstring xpcom, $(BUILD_MODULE_DIRS)))
$(MAKE) -C xpcom/typelib
$(MAKE) export-idl
endif
endif
install::
ifndef MOZ_NATIVE_NSPR
$(MAKE) -C nsprpub real_install DESTDIR=$(DESTDIR) libdir=$(mozappdir) includedir=$(includedir)/nspr
$(RM) -f $(addprefix $(DESTDIR)$(mozappdir)/$(LIB_PREFIX), $(addsuffix .$(LIB_SUFFIX), nspr4 plds4 plc4))
$(RM) -f $(addprefix $(DESTDIR)$(bindir)/,nspr-config compile-et.pl prerr.properties)
endif
ifdef MOZ_LDAP_XPCOM
$(MAKE) -C directory/c-sdk real_install DESTDIR=$(DESTDIR) libdir=$(mozappdir) includedir=$(includedir)/ldap
endif
include $(topsrcdir)/config/rules.mk
# Clean up after pseudo-external modules
clean clobber realclean clobber_all distclean::
ifndef MOZ_NATIVE_NSPR
$(MAKE) -C nsprpub $@
endif
ifdef MOZ_LDAP_XPCOM
$(MAKE) -C directory/c-sdk $@
endif
# Map mozilla targets to standard automake target
ifdef MOZ_ENABLE_LIBXUL
tier_50: $(addsuffix /Makefile, $(filter-out $(STATIC_MAKEFILES), $($@_dirs)))
@echo "tier_50: $(tier_50_dirs)"
@$(EXIT_ON_ERROR) \
for d in $(tier_50_dirs); do \
$(UPDATE_TITLE) \
if test ! -f $$d/Makefile; then \
$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR) $$d/Makefile; \
fi; \
$(MAKE) -C $$d export; \
done ; \
for d in $(tier_50_dirs); do \
$(UPDATE_TITLE) \
$(MAKE) -C $$d libs; \
done
@echo "Building tools from tier 2/9/50"
@$(EXIT_ON_ERROR) \
for d in $(tier_2_dirs) $(tier_9_dirs) $(tier_50_dirs); do \
$(UPDATE_TITLE) \
$(MAKE) -C $$d tools; \
done;
endif
tier_%:
@echo "$@: $($@_dirs)"
@$(EXIT_ON_ERROR) \
for d in $($@_dirs); do \
$(UPDATE_TITLE) \
if test ! -f $$d/Makefile; then \
$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR) $$d/Makefile; \
fi; \
$(MAKE) -C $$d export; \
done ; \
for d in $($@_dirs); do $(UPDATE_TITLE) \
$(MAKE) -C $$d libs; \
done
#
# Individual modules
#
boehm:
ifdef GC_LEAK_DETECTOR
$(MAKE) -C gc/boehm
endif
nspr: boehm
ifndef MOZ_NATIVE_NSPR
$(MAKE) -C nsprpub
endif
ldap:
ifdef MOZ_LDAP_XPCOM
$(MAKE) -C directory/c-sdk
endif
distclean::
cat unallmakefiles | $(XARGS) rm -f
rm -f unallmakefiles $(DIST_GARBAGE)
ifeq ($(OS_ARCH),WINNT)
rebase:
ifdef MOZILLA_OFFICIAL
echo rebasing $(DIST)
/bin/find $(DIST) -name "*.dll" > rebase.lst
rebase -b 60000000 -R . -G rebase.lst
rm rebase.lst
endif
splitsymbols:
ifdef MOZILLA_OFFICIAL
ifdef MOZ_DEBUG_SYMBOLS
echo finding pdb files
mkdir -p $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.dll" | sed "s/\.dll$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.exe" | sed "s/\.exe$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
-cp `/bin/find . -path "./dist" -prune -o -name "*.EXE" | sed "s/\.EXE$$/\.pdb/" | xargs` $(DIST)/$(BUILDID)
endif # MOZ_DEBUG_SYMBOLS
ifdef MOZ_PROFILE
echo splitting symbols out of binaries
/bin/find $(DIST) -name "*.dll" -exec splitsym {} \;
/bin/find $(DIST) -name "*.exe" -exec splitsym {} \;
/bin/find $(DIST) -name "*.EXE" -exec splitsym {} \;
mkdir -p $(DIST)/$(BUILDID)
/bin/find $(DIST) -name "*.dbg" -exec mv {} $(DIST)/$(BUILDID) \;
endif # MOZ_PROFILE
endif # MOZILLA_OFFICIAL
signnss:
ifdef MOZILLA_OFFICIAL
echo signing NSS libs
cd $(DIST)/bin; ./shlibsign.exe -v -i softokn3.dll
cd $(DIST)/bin; ./shlibsign.exe -v -i freebl3.dll
endif # MOZILLA_OFFICIAL
BUILDID = $(shell cat $(DEPTH)/config/build_number)
deliver: splitsymbols rebase signnss
endif # WINNT