#
#	@(#)Makefile (mozilla) 01-09-01
#
#	Mozilla - buildMakefile
#	(C) Copyright 1995-2001 by Personal Media Corporation

#------------------------------------------------------------
# ץꥱС
TARGET_VERSION = 0x1100

# ץ¿̾
TARGET_APPNAME ?= MOZILLA

# ץꥱ̾
TARGET_NAME = ͣ

# ǡ
TARGET_DNAME = ֥ǡ
TARGET_APPID = 0x8000 0x0028 0x8000

# ̾
FORM_NAME = ͣѻ

# OS
OS_VERSION = 4000
OS_VERSION_STR = 4.000

#------------------------------------------------------------
# mozillabuild ץ

# ǥХå⡼ɤɤ(ǥե: ǥХå⡼)
#mode =

# ץեμ
#WITH_PROFILE=

# ƥå(ǥե: ʥߥå)
#STATIC_LINK=

# ̤ܥΥå
#DLL_CHECK=

# ǥХåղ(-g)
#WITH_DEBUGINFO=

# ѥץͥ٤򲼤
#WITH_NICE=

# µǤŸǥ쥯ȥ(/SYSȤѥ)
MOZILLA_TARGET_ROOT?=/MOZ5

# logging level(µǤδĶѿNSPR_LOG_MODULES)
MOZILLA_LOG_LEVEL?=all:0

# ¹ԥץBTRONץ˥ѥåݤstrip
#TARGET_NEED_STRIP=1

# -----------------------------------------------------------------
options := $(strip $(subst ., ,$(notdir $(shell pwd))) $(options))

ifneq (,$(filter sl static, $(options)))
  STATIC_LINK=1
endif

ifneq (,$(filter p prof,$(options)))
  WITH_PROFILE=1
endif

ifneq (,$(filter d debug,$(options)))
  WITH_DEBUGINFO=1
endif


# buildץߤδϢβ(makerulesinclude)
ifdef WITH_PROFILE
  STATIC_LINK=1
endif

# ------------------------------------------------------------
# makerulesȤoptions

ifdef DLL_CHECK
  MAKE_DLL = -1
else
  ifndef STATIC_LINK
    MAKE_DLL = 1
  endif
endif

# ------------------------------------------------------------
# makerules񤭤Ķѿ

PATH_:=$(PATH)

# ------------------------------------------------------------
# ɸ롼include

gcc = 2.95
DEPS = Dependencies
#DEPENDENCIES_OUTPUT := $(DEPS)

ifndef BD
  include ../../../appl/etc/makerules
else
  include $(BD)/appl/etc/makerules
endif

#export

%.o: %.cpp; $(.o.cc)

# ------------------------------------------------------------
# makerules񤭤Ķѿ

PATH:=$(PATH_)

# -----------------------------------------------------------------
# buildץߤδϢβ(makerulesinclude)

ifneq (,$(filter rel, $(options)))
  TARGET_NEED_STRIP=1
endif

# -----------------------------------------------------------------
# ǥ쥯ȥ/ޥ

# glib-config̾ǥ󥹥ȡ뤵ƤˡХѥ
#GLIB_CONFIG=/usr/local/bin/glib12-config
#GLIB_CONFIG=$(shell which glib12-config)

# gtk-config̾ǥ󥹥ȡ뤵ƤˡХѥ
#GTK_CONFIG=/usr/X11R6/bin/gtk12-config
#GTK_CONFIG=$(shell which gtk12-config)

HOST_ARCH = $(shell uname -p)

ifneq (,$(filter rel, $(options)))
  MOZILLA_SRCDIR_SUFFIX ?= .rel
  LIBDIR_SUFFIX ?= .rel
  STLPORTDIR_SUFFIX ?= .rel
  HEADERDIR_SUFFIX ?= .rel
endif

OBJPATH:=$(shell pwd)
APPL_ROOT?=$(patsubst %/,%,$(dir $(OBJPATH)))

STLPORT_DIR=$(APPL_ROOT)/STLport-4.5.1$(STLPORTDIR_SUFFIX)
STLPORT_SRCPATH=$(STLPORT_DIR)/src
STLPORT_LIBPATH=$(STLPORT_DIR)/lib

MOZILLA_SRCPATH=$(APPL_ROOT)/mozilla$(MOZILLA_SRCDIR_SUFFIX)
MOZILLA_OBJPATH=$(OBJPATH)/mozilla

MOZILLA_HEADER=$(APPL_ROOT)/bsupport/include $(APPL_ROOT)/qt
MOZILLA_CXX_HEADER=$(STLPORT_DIR)/stlport
MOZILLA_LIBDIR=$(APPL_ROOT)/lib$(LIBDIR_SUFFIX)

MKDIR = $(BD)/etc/mkinstalldirs
TOUCH = touch
BTFAR = $(BD)/etc/btfar
AUTOCONF = autoconf-2.13
#AUTOCONF = autoconf213

ENV=/usr/bin/env -i

# Note: $(DB_CPP) uses Solaris cpp
GNU_CPP=$(GNUi386)/bin/gcc -E

ifneq (,)
CC=$(GNUi386)/bin/gcc
CXX=$(GNUi386)/bin/gcc
AR=$(GNUi386)/bin/ar
LD=$(GNUi386)/bin/ld
RANLIB=$(GNUi386)/bin/ranlib
STRIP=$(GNUi386)/bin/strip
endif

PERL=perl

TARGET_CC = $(CC)
TARGET_CXX = $(CXX)
TARGET_RANLIB = $(RANLIB)
TARGET_AR = $(AR)

HOST_CC=gcc
HOST_CXX=g++
HOST_AR=ar
HOST_LD=ld
HOST_RANLIB=ranlib
HOST_STRIP=strip

ifdef WITH_NICE
  NICE= nice
endif

# ------------------------------------------------------------
# mozillaѥ륪ץ/ܥ

# specsˤǥեȤΥܥ
MOZILLA_PREDEFINED_SYMBOL =					\
	-UMACH -Uunix -U__MACH__ -U__unix__ -U__MACH -U__unix
# 	-U__ELF__ -U__i386__

# targetͭܥ
MOZILLA_PREDEFINED_SYMBOL += -DPCAT -D__BTRON__ -D__BRIGHTV__=$(OS_VERSION)

# ¾ܥ
MOZILLA_PREDEFINED_SYMBOL += -DNEW_FONT_HEIGHT_APIS=1

ifdef GCC_SPECS
  CC += -specs=$(GCC_SPECS)
  CXX += -specs=$(GCC_SPECS)
endif

# Mozillaѥץ
MOZILLA_CFLAGS :=							\
        -B $(GNU_BD)/lib/gcc-lib/ -B $(GNUi386)/bin -B $(GNUi386)/	\
	$(MOZILLA_PREDEFINED_SYMBOL) -nostdinc				\
	$(MOZILLA_HEADER:%=-I%) $(HEADER:%=-I%)				\
	$(filter-out -g -fPIC, $(CFLAGS))				\

ifdef WITH_PROFILE
  MOZILLA_CFLAGS += -pg -DDEBUG_PROFILE
endif
MOZILLA_CXXFLAGS = -nostdinc++ $(MOZILLA_CXX_HEADER:%=-I%) $(MOZILLA_CFLAGS)

ifdef WITH_DEBUGINFO
  DEBUG_FLAGS = -g
endif

LDFLAGS = $(MOZILLA_LIBDIR:%=-L%) $(COMMONLIB:%=-L%)
LDFLAGS2 =

TARGET_DSO_LDOPTS = -shared -Wl,-soname=$$(notdir $$@)

# ʲgmake <program> ǤΤ߻Ѥ롣mozillaȼƤ롣
CFLAGS_WARNING = -Wall -W -Wno-unused -Wpointer-arith -Wcast-align
CXXFLAGS_WARNING = -Wall -Wconversion -Wpointer-arith -Wbad-function-cast \
	-Wcast-align -Woverloaded-virtual -Wsynth
CFLAGS = $(MOZILLA_CFLAGS) $(CFLAGS_WARNING) $(DEBUG_FLAGS)
CXXFLAGS = $(MOZILLA_CXXFLAGS) $(CXXFLAGS_WARNING) $(DEBUG_FLAGS) -O2

# ------------------------------------------------------------
# mozilla饤֥

# ºݤ˥󥯤饤֥ϡ
# mozilla/config/Btron.mk, mozilla/nsprpub/config/my_config.mk αƶ
LDLIBS = -lgcc					\
	-lmozmain -lstdc -lstl -lqt		\
	-ldl -lapp -ltf -lgcc -lmain -ldbg 	\
	-llang					\
	-lstdc					\
	-lbms					\
	-lstdc					\
	-lsvc -lgcc
#	-llang -lg -lsys -lg -lf		\

ifdef STATIC_LINK
  LDLIBS := -lgcc -lbtoolkit -lwin -lcpp1 \
		  $(subst x-ldl, -lslstub, $(LDLIBS))
endif

ifdef WITH_PROFILE
  LDLIBS := 					\
	$(subst -lmozmain, -lmozmain_p,		\
	$(subst -lstdc, -lstdc_p,		\
	$(subst -lbtoolkit, -lbtoolkit_p,	\
	$(subst -lstl, -lstl_p,			\
	$(subst -lapp, -lapp_p,			\
	$(subst -ltf, -ltf_p,			\
	$(subst -llang, -llang_p,		\
	$(subst -lmain, -lmain_p,		\
	$(subst -lsys, -lsys_p,			\
	$(subst -lsvc, -lsvc_p,			\
	$(subst -lwin, -lwin_p,			\
	$(LDLIBS))))))))))))
endif

# ݡѥ饤֥
LIB_FILES=libbtoolkit.so libstdc.so libstl.so

# ------------------------------------------------------------
# configureץ/Ķѿ
ifdef STATIC_LINK
  MOZILLA_CONFIGURE_OPT += --disable-shared --enable-static
endif

ifneq ($(mode), debug)
  MOZILLA_CONFIGURE_OPT += --disable-debug --enable-optimize
else
  MOZILLA_CONFIGURE_OPT += --enable-debug
endif

MOZILLA_CONFIGURE_OPT += --enable-optimize='-O2'

ifneq ($(GLIB_CONFIG), )
  MOZILLA_CONFIGURE_ENV += GLIB_CONFIG=$(GLIB_CONFIG)
endif

ifneq ($(GTK_CONFIG), )
  MOZILLA_CONFIGURE_ENV += GTK_CONFIG=$(GTK_CONFIG)
endif

ifdef ENABLE_CRYPTO
  MOZILLA_CONFIGURE_OPT += --enable-crypto
else
  MOZILLA_CONFIGURE_OPT += --disable-crypto
endif

# MOZILLA_CONFIGURE_OPT += --enable-timeline

MOZILLA_OBJECT_FILE = $(MOZILLA_OBJPATH)/xpfe/bootstrap/mozilla-bin
# ------------------------------------------------------------
# mapեǤC++ܥϿʹ֤ɤʷȤ
NMFLAGS += -C

# ------------------------------------------------------------
.PHONY : mozilla-configure mozilla-make1 mozilla-make2 mozilla-allxpt
.PHONY : mozilla-clean mozilla-distclean
.PHONY : mozilla clean

mozilla: mozilla.bz
clean: mozilla-clean
distclean: mozilla-distclean

$(MOZILLA_SRCPATH)/configure: $(MOZILLA_SRCPATH)/configure.in
	cd $(MOZILLA_SRCPATH); $(AUTOCONF)

$(MOZILLA_SRCPATH)/nsprpub/configure: $(MOZILLA_SRCPATH)/nsprpub/configure.in
	cd $(MOZILLA_SRCPATH)/nsprpub; $(AUTOCONF)

mozilla-configure: .mozilla-configure-done
.mozilla-configure-done: $(MOZILLA_SRCPATH)/configure		\
			 $(MOZILLA_SRCPATH)/nsprpub/configure
	@$(MKDIR) $(MOZILLA_OBJPATH)
	cd $(MOZILLA_OBJPATH);					\
	$(NICE) $(ENV)						\
		PATH=$(PATH)					\
		CPPFLAGS=" "					\
		CPP="$(GNU_CPP)"				\
		CC="$(CC)"					\
		CXX="$(CXX)"					\
		AR="$(AR)"					\
		LD="$(LD)"					\
		RANLIB="$(RANLIB)"				\
		STRIP="$(STRIP)"				\
		CFLAGS="$(MOZILLA_CFLAGS)"			\
		CXXFLAGS="$(MOZILLA_CXXFLAGS)"			\
		LDFLAGS="$(LDFLAGS)"				\
		OS_LIBS="$(LDFLAGS) $(LDLIBS)"			\
		LIBS="$(LDFLAGS) $(LDLIBS)"			\
		CROSS_COMPILE=1					\
		LD_RUN_PATH="$(LD_LIBRARY_PATH)"		\
		HOST_CFLAGS=" "					\
		HOST_CXXFLAGS=" "				\
		HOST_LDFLAGS=" "				\
		OS_TARGET=BrightV				\
		TARGET_OS_RELEASE=$(OS_VERSION_STR)		\
		TARGET_DSO_LDOPTS='$(TARGET_DSO_LDOPTS)'	\
		MOZ_DEBUG_FLAGS="$(DEBUG_FLAGS) "		\
		MOZILLA_CLIENT=1				\
		$(MOZILLA_CONFIGURE_ENV)			\
	$(MOZILLA_SRCPATH)/configure				\
		--disable-bidi					\
		--disable-dtd-debug				\
		--disable-glibtest				\
		--disable-gtktest				\
		--disable-ldap					\
		--disable-mailnews				\
		--disable-freetype2				\
		--disable-freetypetest				\
		--disable-pedantic				\
		--disable-tests					\
		--disable-postscript				\
		--disable-xprint				\
		--disable-toolkit-gtk                           \
		--disable-toolkit-xlib                          \
		--disable-toolkit-qt                            \
		--enable-cpp-rtti				\
		--enable-logrefcnt=no				\
		--enable-long-long-warning			\
		--target=i386-unknown-gnu			\
		--with-extensions=default			\
		--without-x					\
		--without-jpeg					\
		--without-mng					\
		--without-png					\
		--without-system-nspr				\
		--without-zlib					\
		$(MOZILLA_CONFIGURE_OPT)
	@$(PERL) -i~ -pe 's/XP_UNIX/XP_BTRON/' \
		$(MOZILLA_OBJPATH)/config-defs.h
	@$(PERL) -i~ -pe 's/^.*UNIX_ASYNC_DNS.*$$//' \
		$(MOZILLA_OBJPATH)/config-defs.h
	@$(PERL) -i~ -pe 's/^.*MOZ_WIDGET_GTK.*$$//' \
		$(MOZILLA_OBJPATH)/config-defs.h
	@$(PERL) -i~ -pe 's/^.*MOZ_ENABLE_XREMOTE.*$$//' \
		$(MOZILLA_OBJPATH)/config-defs.h
	@$(PERL) -i~ -pe 's/"gtk"/"btron"/' \
		$(MOZILLA_OBJPATH)/config-defs.h
	@$(TOUCH) .mozilla-configure-done

mozilla-make1: .mozilla-make1-done
.mozilla-make1-done: .mozilla-configure-done
	@$(TOUCH) .mozilla-make1-done

mozilla-make2: .mozilla-make2-done
.mozilla-make2-done: .mozilla-make1-done
	$(MAKE) mozilla-make
	@$(TOUCH) .mozilla-make2-done

mozilla-make: .mozilla-make1-done
	$(NICE) $(ENV)					\
		PATH=$(PATH)				\
		TARGET_CC="$(TARGET_CC)"		\
		TARGET_CXX="$(TARGET_CXX)"		\
		TARGET_RANLIB="$(TARGET_RANLIB)"	\
		TARGET_AR="$(TARGET_AR)"		\
		$(MAKE) -C $(MOZILLA_OBJPATH)

mozilla-allxpt: all.xpt
all.xpt : .mozilla-make2-done
	$(NICE) $(MOZILLA_OBJPATH)/dist/host/bin/host_xpt_link \
		$@ $(MOZILLA_OBJPATH)/dist/bin/components/*.xpt
$(MOZILLA_OBJECT_FILE): mozilla-allxpt

mozilla-clean: mozilla-environ.txt
	-$(NICE) $(ENV)					\
		PATH=$(PATH)				\
		$(MAKE) -C $(MOZILLA_OBJPATH) clean
	-$(RM) .mozilla-make1-done .mozilla-make2-done			\
		all.xpt mozilla-environ.txt mozilla.btf browser2.bz	\
		mozilla.f mozilla.fsn mozilla.fsn.lst mozilla_form.btf	\
		mozilla-environ.txt mozilla.bz				\
		$(NULL)

mozilla-distclean:
	-$(RM) -r mozilla .mozilla-configure-done .mozilla-make1-done .mozilla-make2-done

mozilla.map: .mozilla-make2-done
	$(NM) $(NMFLAGS) $(MOZILLA_OBJECT_FILE) > $@

# ------------------------------------------------------------
# mozilla ץꥱѥå

mozilla.f:
	@echo "-- This file is generated from Makefile." > $@
	@echo "0 0 0 0                               -- r"	>> $@
	@echo "16                                    -- chsz"	>> $@
	@echo "0x10000000L 0x10000000L 0x10FFFFFFL   -- colors"	>> $@
	@echo "4                                     -- pict"	>> $@
	@echo "$(TARGET_APPID)                       -- apl-id"	>> $@
	@echo "\"$(TARGET_NAME)\"16                  -- name"	>> $@
	@echo "\"$(TARGET_DNAME)\"16                 -- type"	>> $@
	@echo "0                                     -- dlen"	>> $@
	@cat $@

mozilla_form.btf: mozilla.fsn
	$(NICE) $(PERL) $(BTFAR) -o $@ -m $(MKBTF)	\
		-t "$(FORM_NAME)"			\
		-a 1					\
		-r 8.0	mozilla.fsn=

mozilla-environ.txt:
	echo '*' > $@
	echo '* environment variables for Mozilla for B-right/V' >> $@
	echo '*' >> $@
	echo 'GECKO_FONT_SIZE_FACTOR=1.0' >> $@
	echo 'HOME=/$$$$PROGRAM.BOX/$(TARGET_APPNAME)/misc/HOME/' >> $@
	echo 'MOZILLA_FIVE_HOME=/$$$$PROGRAM.BOX/$(TARGET_APPNAME)/misc' >> $@
	echo 'MOZILLA_FIVE_LIB=/$$$$PROGRAM.BOX/$(TARGET_APPNAME)/misc/lib' >> $@
	echo 'XPCOM_CHECK_THREADSAFE=1' >> $@
	echo 'TMPDIR=/$$$$PROGRAM.BOX/$(TARGET_APPNAME)/misc/TMP/' >> $@
	echo 'NSPR_LOG_MODULES=$(MOZILLA_LOG_LEVEL)' >> $@

MOZILLA_INSTALLPATH=$(MOZILLA_OBJPATH)/dist/bin
ifdef ENABLE_CRYPTO
MOZILLA_BUILTIN_CERT=$(MOZILLA_INSTALLPATH)/libnssckbi.so=misc/
endif
mozilla.bz: $(MOZILLA_OBJECT_FILE) all.xpt
mozilla.bz: mozilla.fsn mozilla_form.btf mozilla-environ.txt
mozilla.bz: $(patsubst %,$(MOZILLA_LIBDIR)/%,$(LIB_FILES))
	$(NM) $(NMFLAGS) $(MOZILLA_OBJECT_FILE) > mozilla.map
ifdef TARGET_NEED_STRIP
	$(NICE) $(STRIP) $(MOZILLA_OBJECT_FILE)
endif
	$(NICE) $(PERL) $(BTFAR) -o $(OBJPATH)/$@ -m $(MKBTF) -c	     \
		-a 0x8003						     \
		-t $(TARGET_APPNAME)					     \
		-r 9.0x0163 $(MOZILLA_OBJECT_FILE)=			     \
		-r 7.$(TARGET_VERSION) $(OBJPATH)/mozilla.fsn=		     \
		-r 31.0							     \
		@0.0.0x8001.0.0x800c.$(OBJPATH)/mozilla_form.btf=/	     \
	$(addsuffix =/,							     \
	  $(filter-out $(MOZILLA_INSTALLPATH)/libnssckbi.so,		     \
	    $(wildcard $(MOZILLA_INSTALLPATH)/*.so)))			     \
	$(MOZILLA_BUILTIN_CERT)						     \
	$(patsubst %,$(MOZILLA_LIBDIR)/%=/,$(LIB_FILES))		     \
	$(OBJPATH)/mozilla-environ.txt=/environ				     \
	$(addsuffix =misc/components/, $(OBJPATH)/all.xpt		     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/components/*.so))		     \
	`$(PERL) ../src/shorten20 misc/components/			     \
		$(wildcard $(MOZILLA_INSTALLPATH)/components/*.js)`	     \
	$(addsuffix =misc/chrome/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/chrome/*.jar		     \
		       $(MOZILLA_INSTALLPATH)/chrome/installed-chrome.txt))  \
	$(addsuffix =misc/defaults/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/*))		     \
	$(addsuffix =misc/defaults/pref/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/pref/*))		     \
	$(addsuffix =misc/defaults/profile/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/profile/*))	     \
	$(addsuffix =misc/defaults/profile/chrome/,			     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/profile/chrome/*))      \
	$(addsuffix =misc/defaults/profile/US/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/profile/US/*))	     \
	$(addsuffix =misc/defaults/profile/US/chrome/,			     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/profile/US/chrome/*))   \
	$(addsuffix =misc/defaults/wallet/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/defaults/wallet/*))		     \
	$(addsuffix =misc/res/,						     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/*))			     \
	$(addsuffix =misc/res/entityTables/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/entityTables/*))	     \
	$(addsuffix =misc/res/rdf/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/rdf/*))			     \
	$(addsuffix =misc/res/gfx/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/gfx/*))			     \
	$(addsuffix =misc/res/builtin/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/builtin/*))		     \
	$(addsuffix =misc/res/html/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/html/*))		     \
	$(addsuffix =misc/res/samples/,					     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/samples/*))		     \
	$(addsuffix =misc/res/samples/sampleimages/,			     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/res/samples/sampleimages/*))     \
	$(addsuffix =misc/searchplugins/,				     \
	  $(wildcard $(MOZILLA_INSTALLPATH)/searchplugins/*))		     \
	/dev/null=misc/plugins						     \
	/dev/null=misc/TMP

## ---------------------------------------------------------
.PHONY : help

help:
	@echo "Available targets are:"
	@echo "mozilla mozilla-configure mozilla-make1 mozilla-make2 mozilla-clean mozilla-distclean"
	@echo "$(TARGET).bz"

## ---------------------------------------------------------
