build/Makefile.defs
changeset 21 2a9601315dfc
child 25 9ac0a0a7da70
equal deleted inserted replaced
18:e8e63152f320 21:2a9601315dfc
       
     1 #
       
     2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description: 
       
    15 #
       
    16 
       
    17 # Default platform
       
    18 ifeq ($(OS),Windows_NT)
       
    19   # On Windows, build symbian
       
    20   export BUILDENV = symbian
       
    21 
       
    22 else
       
    23   ifdef EPOCROOT
       
    24     # On linux, build symbian if EPOCROOT is defined
       
    25     export BUILDENV = symbian
       
    26   else
       
    27     export BUILDENV = linux
       
    28   endif
       
    29 endif
       
    30 
       
    31 # S60 release file (written if release is given explicitly on commandline)
       
    32 RD_JAVA_S60_RELEASE_FILE = $(JAVA_SRC_ROOT)/inc/java_s60_release.hrh
       
    33 
       
    34 include $(JAVA_SRC_ROOT)/build/Makefile.project
       
    35 
       
    36 ifeq ($(BUILDENV),symbian)
       
    37   export PLATFORM = winscw
       
    38   export JAVA_BIN_ROOT=$(EPOCROOT)winscw/c/java
       
    39   ifeq ($(JAVA_6_HOME), )
       
    40   $(error The environment variable JAVA_6_HOME is not defined)
       
    41   endif
       
    42   export JAVA_HOME=$(JAVA_6_HOME)
       
    43 
       
    44   ifeq ($(notdir $(basename $(SHELL))),sh)
       
    45     # Cygwin definitions
       
    46     BATPREFIX =
       
    47     RMFILE = rm $(call PATHFIX, $(1))
       
    48     RMFILES = $(RMFILE)
       
    49     CATCOMMAND = cat $(call PATHFIX, $(1))
       
    50     PATHFIX = $(subst \,/,$(1))
       
    51     ANT := sh ant
       
    52     SBS = MAKELEVEL=&&MAKEFLAGS=&&MFLAGS=&&sbs
       
    53     CPPCMD = gcc -E -x assembler-with-cpp -P -undef -w -traditional-cpp
       
    54     IFNOTEXIST = if [ ! -f $(1) ]; then $(2); fi
       
    55     IFEXIST = if [ -f $(1) ]; then $(2); fi
       
    56     DEVNULL = /dev/null
       
    57     MKDIR = if [ ! -d $(1)]; then mkdir $(1); fi
       
    58     RMDIR = if [ -d $(1)]; then rmdir $(1); fi
       
    59 
       
    60   else
       
    61     # CMD.exe definitions
       
    62     BATPREFIX = cmd /c call
       
    63     RMFILE = $(if $(wildcard $(1)),del $(call PATHFIX,$(wildcard $(1))),echo Nothing to delete from $(1) > $(DEVNULL))
       
    64     RMFILES = $(RMFILE)
       
    65     CATCOMMAND = type $(call PATHFIX, $(1))
       
    66     PATHFIX = $(subst /,\,$(1))
       
    67     ANT := $(BATPREFIX) ant.bat
       
    68     SBS = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&sbs
       
    69     CPPCMD = $(EPOCROOT)epoc32/gcc/bin/cpp -lang-asm -P -undef
       
    70     IFNOTEXIST = if not exist $(1) $(2)
       
    71     IFEXIST = if exist $(1) $(2)
       
    72     DEVNULL = NUL
       
    73     MKDIR = if not exist $(1) mkdir  $(1)
       
    74     RMDIR = if exist $(1) rmdir  $(1)
       
    75 
       
    76   endif
       
    77 
       
    78   ifndef QMAKE_DEFINED
       
    79     QMAKESPEC_JAVA=$(if $(USESBS),symbian-sbsv2,symbian-abld)
       
    80 
       
    81     ifndef QTDIR
       
    82       ifneq ($(wildcard $(EPOCROOT)epoc32/tools/qmake*),)
       
    83         # Use platform's qmake
       
    84 	QMAKE := $(EPOCROOT)epoc32/tools/qmake -spec $(QMAKESPEC_JAVA)
       
    85       else
       
    86         # Use builtin qmake
       
    87 	QTDIR_JAVA := $(JAVA_SRC_ROOT)/tools/qt_symbian
       
    88 	QMAKE := $(QTDIR_JAVA)/qmake -spec $(QTDIR_JAVA)/mkspecs/symbian-abld
       
    89       endif
       
    90     else
       
    91       QMAKE := $(QTDIR)/bin/qmake -spec $(QTDIR)/mkspecs/$(QMAKESPEC_JAVA)
       
    92     endif
       
    93     QMAKE := $(call PATHFIX,$(QMAKE))
       
    94     QMAKE_DEFINED = 1
       
    95     export QMAKE
       
    96     export QMAKE_DEFINED
       
    97   endif
       
    98 
       
    99   # Prevent enclosing ant options from propagating to Java compilation
       
   100   export ANT_ARGS=
       
   101   export ANT_OPTS=
       
   102   BLDMAKE = perl -S bldmake.pl
       
   103   ABLDMAKE = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&make -r
       
   104 
       
   105   ifdef NODEP
       
   106   # Makmake does not make dependency checks with this flag
       
   107   export NO_DEPENDENCIES=-nd
       
   108   endif
       
   109 
       
   110 
       
   111 else
       
   112   export PLATFORM = linux
       
   113   QMAKE = qmake
       
   114   ANT := ant
       
   115 
       
   116   ifndef JAVA_BIN_ROOT
       
   117   export JAVA_BIN_ROOT=$(JAVA_SRC_ROOT)/bin
       
   118   endif
       
   119 
       
   120   ifndef LD_LIBRARY_PATH_SET
       
   121   export LD_LIBRARY_PATH_SET=1
       
   122   export LD_LIBRARY_PATH:=$(JAVA_BIN_ROOT)/lib:$(LD_LIBRARY_PATH)
       
   123   endif
       
   124 
       
   125   PATHFIX = $(subst \,/,$(1))
       
   126   RMFILE = rm $(call PATHFIX, $(1))
       
   127   CATCOMMAND = cat $(1)
       
   128   DEVNULL = /dev/null
       
   129 endif
       
   130 
       
   131 # Ensure that VARIANT, CFG and PLATFORM are in lower case
       
   132 ifeq ($(VARIANT),DEBUG)
       
   133   override VARIANT := debug
       
   134 endif
       
   135 ifeq ($(VARIANT),RELEASE)
       
   136   override VARIANT := release
       
   137 endif
       
   138 ifeq ($(CFG),UDEB)
       
   139   override CFG := udeb
       
   140 endif
       
   141 ifeq ($(CFG),UREL)
       
   142   override CFG := urel
       
   143 endif
       
   144 ifeq ($(PLATFORM),WINSCW)
       
   145   override PLATFORM := winscw
       
   146 endif
       
   147 ifeq ($(PLATFORM),ARMV5)
       
   148   override PLATFORM := armv5
       
   149 endif
       
   150 
       
   151 # If CFG is defined, use it instead of VARIANT (with case insensitive match)
       
   152 ifdef CFG
       
   153   ifeq ($(CFG),udeb)
       
   154       override VARIANT := debug
       
   155   else
       
   156     ifeq ($(CFG),urel)
       
   157       override VARIANT := release
       
   158     else
       
   159       $(error CFG value "$(CFG)" is not recognized)
       
   160     endif
       
   161   endif
       
   162 endif
       
   163 
       
   164 
       
   165 # Default to debug
       
   166 ifndef VARIANT
       
   167   VARIANT := debug
       
   168 endif
       
   169 
       
   170 # Define CFG based on VARIANT
       
   171 ifeq ($(VARIANT),debug)
       
   172   override CFG := udeb
       
   173 else
       
   174   override CFG := urel
       
   175 endif
       
   176 
       
   177 export VARIANT
       
   178 
       
   179 ANT_PROJECT_DEFINES = $(foreach d,$(PROJECT_DEFINES),-D$d=1)
       
   180 
       
   181 COMPONENT_NAME ?= $(notdir $(CURDIR))
       
   182 
       
   183 # Following targets should be defined by every level
       
   184 .PHONY: all export java native clean cleanexport reallyclean test qmake clean_generated clean_java clean_native builddefinefile generatejavaversion projectdefinefile javareleasables commonjavareleasables clean_build_defines clean_javaversion clean_project_defines freeze exec
       
   185 
       
   186 # Default target
       
   187 default_target: all
       
   188 
       
   189 # Silent / verbose building
       
   190 ifndef JAVAVERBOSE
       
   191 .SILENT:
       
   192 ANT += -q
       
   193 endif
       
   194 ifeq ($(JAVAVERBOSE),1)
       
   195 ANT += -q
       
   196 endif
       
   197 ifeq ($(JAVAVERBOSE),2)
       
   198 endif
       
   199 ifeq ($(JAVAVERBOSE),3)
       
   200 ANT += -v
       
   201 endif
       
   202 
       
   203 PHASEINFO = @echo $(if $(1),$(1),$@)	$(CURDIR)
       
   204 
       
   205 # Empty target, forcing target compilation
       
   206 FORCE:
       
   207 
       
   208 # Common ----------------------------------
       
   209 
       
   210 # Export files need a build_defines file
       
   211 BUILDDEFINEFILE := $(JAVA_SRC_ROOT)/inc/build_defines.hrh
       
   212 QBUILDDEFINEFILE := $(JAVA_SRC_ROOT)/inc/build_defines.pri
       
   213 JAVAVERSIONFILE := $(JAVA_SRC_ROOT)/inc/java.txt
       
   214 
       
   215 # Project define file is needed by export and native phases of nonqt components
       
   216 # Native builds require project_defines.hrh for nonqt-mmp-files
       
   217 PROJECTDEFINEFILE = $(JAVA_SRC_ROOT)/inc/project_defines.hrh
       
   218 
       
   219 ifndef FIRSTTIME_FLAG
       
   220 export FIRSTTIME_FLAG = 1
       
   221 FIRSTTIME = 1
       
   222 endif
       
   223 
       
   224 # Write file on first make evaluation
       
   225 ifdef FIRSTTIME
       
   226 
       
   227 # Echo the S60 release before export
       
   228 ifeq ($(BUILDENV),symbian)
       
   229 all init export configure qmake java native releasebuild test: echo_s60_release
       
   230 echo_s60_release:
       
   231 	@echo Building on top of S60 $(RD_JAVA_S60_RELEASE)
       
   232 endif
       
   233 
       
   234 include $(JAVA_SRC_ROOT)/build/makefile.javaversion
       
   235 
       
   236 COMMA = ,
       
   237 JAVA_VERSION_ = $(subst .,$(COMMA),$(JAVA_VERSION))
       
   238 
       
   239 configure: generateconffiles generatereleasefile
       
   240 generateconffiles:
       
   241 	@echo Writing $(BUILDDEFINEFILE) ... \
       
   242 	$(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header.txt) > $(BUILDDEFINEFILE)) \
       
   243 	$(shell echo #define RD_JAVA_VERSION $(JAVA_VERSION_) >> $(BUILDDEFINEFILE)) \
       
   244 	$(foreach d, $(PROJECT_DEFINES), $(shell echo #define $d >> $(BUILDDEFINEFILE)))
       
   245 	@echo Writing $(QBUILDDEFINEFILE) ... \
       
   246 	$(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header_hash.txt) > $(QBUILDDEFINEFILE)) \
       
   247 	$(shell echo PROJECT_DEFINES *= $(PROJECT_DEFINES) >> $(QBUILDDEFINEFILE))
       
   248 	@echo Writing $(JAVAVERSIONFILE) \
       
   249 	$(shell echo $(JAVA_VERSION)>$(JAVAVERSIONFILE))
       
   250 ifeq ($(BUILDENV),symbian)
       
   251 	@echo Writing $(PROJECTDEFINEFILE) ... \
       
   252 	$(shell $(call CATCOMMAND,$(JAVA_SRC_ROOT)/build/templates/generated_header.txt) > $(PROJECTDEFINEFILE)) \
       
   253 	$(foreach d, $(PROJECT_DEFINES), $(shell echo MACRO $d >> $(PROJECTDEFINEFILE)))
       
   254 ifdef RD_JAVA_EPOCALLOWDLLDATA_FIX
       
   255 	@echo EPOCALLOWDLLDATA >> $(PROJECTDEFINEFILE)
       
   256 endif
       
   257 endif
       
   258 
       
   259 generatereleasefile:
       
   260 ifeq ($(origin RD_JAVA_S60_RELEASE),command line)
       
   261 	@echo Writing $(RD_JAVA_S60_RELEASE_FILE) ... \
       
   262 	$(shell echo RD_JAVA_S60_RELEASE=$(RD_JAVA_S60_RELEASE)>$(RD_JAVA_S60_RELEASE_FILE))
       
   263 endif
       
   264 
       
   265 # Clean file on clean_generated
       
   266 clean_configure: clean_conffiles
       
   267 
       
   268 clean_conffiles:
       
   269 	$(call RMFILES,$(BUILDDEFINEFILE) $(QBUILDDEFINEFILE) $(JAVAVERSIONFILE) \
       
   270 	$(PROJECTDEFINEFILE) $(RD_JAVA_S60_RELEASE_FILE))
       
   271 
       
   272 endif # FIRSTTIME
       
   273 
       
   274 
       
   275 # Symbian ----------------------------------
       
   276 ifeq ($(BUILDENV),symbian)
       
   277 
       
   278 # Get build directory in symbian
       
   279 # Remove drive letter
       
   280 DIRECTORY = $(wordlist 2,2,$(subst :, ,$(CURDIR)))
       
   281 # Set makefile directory
       
   282 BUILDDIR  = /epoc32/build$(DIRECTORY)
       
   283 
       
   284 VERBOSE   = VERBOSE=-s
       
   285 
       
   286 # --------------------------------------
       
   287 
       
   288 endif