summaryrefslogtreecommitdiffstats
path: root/comm/suite/app/Makefile.in
blob: 72e1fc00b8725f3d158cbb974da05494d6d49bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# This Source Code Form is subject to the terms of the Mozilla Public
# 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/.

AB_CD = $(MOZ_UI_LOCALE)

# For splash.rc
DEFINES += \
	-DSEAMONKEY_ICO='"$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/icons/windows/main-window.ico"' \
	-DHTML_FILE_ICO='"$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/icons/windows/html-file.ico"' \
	$(NULL)

# Build a binary bootstrapping with XRE_main

ifndef MOZ_WINCONSOLE
ifdef MOZ_DEBUG
MOZ_WINCONSOLE = 1
else
MOZ_WINCONSOLE = 0
endif
endif

# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that
# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
NSDISTMODE = copy

include $(topsrcdir)/config/config.mk

# If we are trying to show an error dialog about the lack of SSE2 support,
# make sure that code itself doesn't use SSE2.
ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
CXXFLAGS := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXXFLAGS))
CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
CXXFLAGS += -mno-sse -mno-sse2 -mfpmath=387
CXX += -march=pentiumpro
endif

ifeq ($(OS_ARCH),WINNT)
# Rebuild seamonkey.exe if the manifest changes - it's included by splash.rc.
# (this dependency should really be just for seamonkey.exe, not other targets)
# Note the manifest file exists in the tree, so we use the explicit filename
# here.
EXTRA_DEPS += seamonkey.exe.manifest
endif

include $(topsrcdir)/config/rules.mk

libs::
ifeq ($(OS_ARCH),WINNT)
	$(EXIT_ON_ERROR) \
	$(PERL) -pe 's/(?<!\r)\n/\r\n/g;' < $(topsrcdir)/comm/suite/installer/license.txt > $(DIST)/bin/license.txt
else
	$(INSTALL) $(IFLAGS1) $(topsrcdir)/comm/suite/installer/license.txt $(DIST)/bin/
endif

ifneq ($(OS_ARCH),WINNT)

libs:: 
	cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)

endif

libs:: blocklist.xml
	$(INSTALL) $(IFLAGS1) $^ $(DIST)/bin

ifneq (,$(filter-out WINNT Darwin,$(OS_ARCH)))
$(MOZ_APP_NAME).1: seamonkey.man.in $(GLOBAL_DEPS) $(DEPTH)/config/autoconf.mk
	@sed -e "s|\@bindir\@|$(bindir)|g" -e "s|\@mozappdir\@|$(mozappdir)|g" \
		-e "s|\@MOZ_APP_DISPLAYNAME\@|$(MOZ_APP_DISPLAYNAME)|g" \
		-e "s|\@MOZ_APP_NAME\@|$(MOZ_APP_NAME)|g" \
		-e "s|\@MOZ_APP_VERSION\@|${MOZ_APP_VERSION}|g" < $< > $@

libs:: $(MOZ_APP_NAME).1
	$(INSTALL) $< $(DIST)/man/man1

GARBAGE += $(MOZ_APP_NAME).1
GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, browser-prefs.js)
endif

# Make extensions end up as XPIs instead of flat chrome when doing omni.jar.
# Extensions that appear in dist/bin/extensions will get bundled with the
# application, ones that appear in dist/bin/distribution/extensions will be
# copied to the profile in installed builds.
# NOTE: This is a hack to run this at the end of compilation, would be nicer
# if this was done right away for built-in extensions in omnijar mode.

ABS_STAGE = $(abspath $(STAGEDIST))

define _PACKAGE_EXTENSIONS
@echo "Packaging $(dir).xpi..."
if test -d "$(ABS_STAGE)/$(dir)"; then \
cd $(ABS_STAGE)/$(dir)/; \
$(ZIP) -r9mX ../$(dir).xpi * -x \*/.mkdir.done; \
cd ..; rm -rf $(ABS_STAGE)/$(dir); \
fi

endef # do not remove the blank line!

# GUIDs
# {972ce4c6-7e08-4474-a285-3208198ce6fd} Default theme
# {e2fda1a4-762b-4020-b5ad-a41df1933103} Lightning
DONOTPACK = {e2fda1a4%

pack-ext: $(STAGEDIST)
	@echo "Packaging extensions..."
	$(foreach dir,$(filter-out $(DONOTPACK),$(subst $(STAGEDIST)/,,$(wildcard $(STAGEDIST)/*))),$(_PACKAGE_EXTENSIONS))

tools::
	@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/extensions"
	@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/distribution/extensions"

# Additional macOS build steps.
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))

MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)

ifdef MOZ_DEBUG
MAC_APP_NAME := $(MAC_APP_NAME)Debug
endif

LOWER_MAC_APP_NAME = $(shell echo $(MAC_APP_NAME) | tr '[A-Z]' '[a-z]')

ifeq (zh-TW,$(AB_CD))
LPROJ_ROOT := $(subst -,_,$(AB_CD))
else
LPROJ_ROOT := $(firstword $(subst -, ,$(AB_CD)))
endif
LPROJ := Contents/Resources/$(LPROJ_ROOT).lproj

clean clobber repackage::
	$(RM) -r '$(DIST)/$(MOZ_MACBUNDLE_NAME)'

tools:: $(PROGRAM)
	mkdir -p '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
	rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents '$(DIST)/$(MOZ_MACBUNDLE_NAME)' --exclude English.lproj
	mkdir -p '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)'
	rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)'
	sed -e "s/\@MOZ_APP_NAME\@/$(MOZ_APP_NAME)/" -e "s/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/" -e "s/\@MOZ_APP_DISPLAYNAME\@/$(MOZ_APP_DISPLAYNAME)/" -e "s/\@MOZ_APP_VERSION\@/$(MOZ_APP_VERSION)/" $(srcdir)/macbuild/Contents/Info.plist.in > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Info.plist'
	sed -e "s/\@MOZ_APP_NAME\@/$(MOZ_APP_NAME)/" -e "s/\@MAC_APP_NAME\@/$(MAC_APP_NAME)/" -e "s/\@MOZ_APP_DISPLAYNAME\@/$(MOZ_APP_DISPLAYNAME)/" -e "s/\@MOZ_APP_VERSION\@/$(MOZ_APP_VERSION)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/$(LPROJ)/InfoPlist.strings'
	rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources'
	rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.in' --exclude '*' $(DIST)/bin/ '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
	rm -f '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/$(PROGRAM)'
	rsync -aL $(PROGRAM) '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS'
	cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/seamonkey.icns '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/seamonkey.icns'
	cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/document.icns'
	printf APPLMOZZ > '$(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/PkgInfo'
endif