build/Makefile.comp
changeset 21 2a9601315dfc
child 25 9ac0a0a7da70
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/Makefile.comp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,253 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+ifndef JAVA_SRC_ROOT
+$(error JAVA_SRC_ROOT variable not defined!)
+endif
+
+include $(JAVA_SRC_ROOT)/build/Makefile.defs
+
+
+.PHONY: build_clean_java build_qmake build_clean_native really_clean_native clean_qmake qmakehelp emmareport
+
+
+PRO_FILE = $(wildcard *.pro)
+ANT_FILE = $(wildcard build.xml)
+ifeq ($(PRO_FILE),)
+$(error No .pro file on COMPONENT directory $(CURDIR))
+endif
+
+clean: clean_java clean_native
+
+
+# Determine if Java needs to be built
+ifneq ($(ANT_FILE),)
+java: build_java
+clean_java: build_clean_java
+makestubs: build_makestubs
+else
+java:
+clean_java:
+makestubs:
+endif
+
+# Determine if native needs to be built
+qmake: build_qmake
+native: build_native
+clean_native: build_clean_native
+reallyclean: really_clean_native clean_generated
+
+
+# Common   ---------------------------------
+
+reallyclean: clean cleanexport
+
+test: 
+	$(PHASEINFO)
+	$(EXEC_QT)
+
+clean_configure:
+
+# Make stub files of .cpp and .h files of Java compilation (needed by qmake)
+build_makestubs:
+	$(PHASEINFO)
+ifndef SBOX_CPUTRANSPARENCY_LOG
+	$(ANT) -Dtarget.platform=$(PLATFORM) -Dtarget.cfg=debug $(ANT_PROJECT_DEFINES) export
+endif
+
+build_java:
+	$(PHASEINFO)
+ifndef SBOX_CPUTRANSPARENCY_LOG
+	$(ANT) -Dtarget.platform=$(PLATFORM) -Dtarget.cfg=$(VARIANT) $(ANT_PROJECT_DEFINES) $(ANT_EMMA_DEFINES)
+endif
+
+build_clean_java:
+	$(PHASEINFO)
+ifndef SBOX_CPUTRANSPARENCY_LOG
+	-$(ANT) -Dtarget.platform=$(PLATFORM) -Dtarget.cfg=$(VARIANT) $(ANT_PROJECT_DEFINES) clean
+endif
+
+# Say "QT-=gui core" here, as removing it in omj.prf (CONFIG += omj through .pro file) does
+# not work for "default_post" step.
+qmakehelp:
+	$(call PHASEINFO,qmake)
+	$(QMAKE) "PROJECT_DEFINES=$(PROJECT_DEFINES)"
+
+emmareport:
+ifndef SBOX_CPUTRANSPARENCY_LOG
+	$(ANT) -f $(JAVA_SRC_ROOT)/build/emmautilities.xml -Dset.emma.enabled=true emma.report
+endif
+
+# Add the pro-file to the subdirs of enclosing component. Must define the file
+# explicitly when directory (==build) is differntly named from pro-file.
+configure_qmake:
+ifdef TARGET_PRO
+	echo SUBDIRS += $(TARGET_SUB)/$(PRO_FILE) >> $(TARGET_PRO)
+endif
+
+# Symbian ----------------------------------
+ifeq ($(BUILDENV),symbian)
+
+all: qmake java native
+
+# Extract basename of current component
+BASENAME = $(basename $(PRO_FILE))
+
+# Use separate qmakefix run, so that wildcards are evaluated with 
+# latest directory content
+build_qmake: clean_qmake qmakehelp
+ifndef RD_JAVA_UI_QT
+	$(MAKE) -f $(JAVA_SRC_ROOT)/build/Makefile.comp qmakefix
+endif
+
+# Replace bld.inf completely, fix mmp (if any) and remove extra files
+# (used when QT is used only for qmake)
+qmakefix:
+	$(PHASEINFO)
+ifeq ($(filter 0 1,$(words $(wildcard $(BASENAME)_*.mmp))),)
+	$(error Old generated files left on build directory. Please run "make -f subsystem.mk clean_generated" on root directory, and rebuild)
+endif
+	$(call RMFILES,Makefile* $(BASENAME)_*.pkg bld.inf*)
+ifeq ($(wildcard $(BASENAME)_*.mmp),)
+	$(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/bld.inf) > bld.inf
+else
+	python $(JAVA_SRC_ROOT)/build/buildutils/fixmmp.py --tmp-dirs --datetime --header $(JAVA_SRC_ROOT)/build/templates/generated_header.txt $(wildcard $(BASENAME)_*.mmp) $(wildcard $(BASENAME)_*.mmp) && \
+	$(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/bld.inf) > bld.inf && \
+	echo PRJ_MMPFILES >> bld.inf && \
+	echo $(wildcard $(BASENAME)_*.mmp) >> bld.inf
+endif
+ifneq ($(wildcard exports.inf),)
+	echo #include "exports.inf" >> bld.inf
+endif
+
+javareleasables:
+ifneq ($(ANT_FILE),)
+	$(ANT) -q -Dtarget.platform=$(PLATFORM) -Dtarget.cfg=$(VARIANT) $(ANT_PROJECT_DEFINES) releasables > $(DEVNULL)
+	$(call CATCOMMAND,java_releasables_$(PLATFORM)_$(VARIANT).tmp)
+	$(call RMFILE,java_releasables_$(PLATFORM)_$(VARIANT).tmp)
+endif
+
+# Remove all generated build files
+clean_generated: FORCE
+	$(PHASEINFO)
+ifdef RD_JAVA_UI_QT
+	-$(call IFEXIST,Makefile,make dodistclean)
+endif
+	-$(call RMFILES,abld.bat bld.inf* Makefile* $(BASENAME).mmp $(BASENAME)_*.mmp $(BASENAME)_*.pkg $(BASENAME)_reg.rss eabi_stl4/*)
+	-$(call RMDIR, eabi_stl4) > $(DEVNULL) 2>&1
+
+clean_qmake:
+	-$(call RMFILES,abld.bat bld.inf* Makefile* $(BASENAME).mmp $(BASENAME)_*.mmp $(BASENAME)_*.pkg $(BASENAME)_reg.rss eabi_stl4/*)
+
+# Symbian SBS ------------------------------
+ifdef USESBS
+
+export: 
+	$(PHASEINFO)
+	$(SBS) -c $(PLATFORM)_$(CFG) EXPORT
+
+build_native:
+	$(PHASEINFO)
+	$(SBS) -c $(PLATFORM)_$(CFG) BUILD
+
+fastbuild: export java
+	$(PHASEINFO)
+	$(SBS) -c $(PLATFORM)_$(CFG) TARGET
+
+build_clean_native:
+	$(PHASEINFO)
+	-$(SBS) -c $(PLATFORM)_$(CFG) clean
+
+really_clean_native:
+	$(PHASEINFO)
+	-$(SBS) -c $(PLATFORM)_$(CFG) reallyclean
+
+cleanexport:
+	$(PHASEINFO)
+	-$(SBS) -c $(PLATFORM)_$(CFG) CLEANEXPORT
+
+
+# Symbian ABLD MAKEFILE --------------------
+else
+
+export: 
+	$(PHASEINFO)
+	$(BLDMAKE) bldfiles $(PLATFORM)
+	$(ABLDMAKE) -f $(BUILDDIR)/EXPORT.make EXPORT
+
+cleanexport:
+	$(PHASEINFO)
+	$(ABLDMAKE) -f $(BUILDDIR)/EXPORT.make CLEANEXPORT
+
+build_native:
+	$(PHASEINFO)
+	$(BLDMAKE) bldfiles $(PLATFORM)
+	$(ABLDMAKE) -f $(BUILDDIR)/EXPORT.make EXPORT
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make MAKEFILE $(VERBOSE)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make LIBRARY $(VERBOSE)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make RESOURCE CFG=$(CFG) $(VERBOSE)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make TARGET CFG=$(CFG) $(VERBOSE)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make FINAL CFG=$(CFG) $(VERBOSE)
+
+fastbuild: export java
+	$(PHASEINFO)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make TARGET CFG=$(CFG) $(VERBOSE)
+
+build_clean_native:
+	$(PHASEINFO)
+	-$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make CLEAN CFG=$(CFG) $(VERBOSE)
+
+really_clean_native:
+	$(PHASEINFO)
+	$(BLDMAKE) bldfiles $(PLATFORM)
+	$(ABLDMAKE) -f $(BUILDDIR)/$(PLATFORM).make MAKEFILE $(VERBOSE) NO_DEPENDENCIES=-nd
+	-abld reallyclean $(PLATFORM) $(CFG)
+	-$(BLDMAKE) clean
+
+endif
+
+
+# Linux ------------------------------------
+else
+
+all: export java qmake native
+
+EXPORTCMD = python ${JAVA_SRC_ROOT}/build/buildutils/export.py -DJAVA_SRC_ROOT=$(JAVA_SRC_ROOT) -DJAVA_BIN_ROOT=$(JAVA_BIN_ROOT) $(addprefix -D,$(PROJECT_DEFINES))
+
+export: 
+	$(EXPORTCMD) BUILD exports.inf
+
+cleanexport:
+	$(EXPORTCMD) CLEAN exports.inf
+
+build_makemake: qmake
+
+build_qmake: qmakehelp
+
+build_native:	
+	$(PHASEINFO)
+	make
+
+build_clean_native:
+	-make clean
+
+really_clean_native: 
+	-make distclean
+
+clean_generated:
+	-rm Makefile
+
+endif