1############################################################################# 2# Software Testing Automation Framework (STAF) # 3# (C) Copyright IBM Corp. 2001, 2005 # 4# # 5# This software is licensed under the Eclipse Public License (EPL) V1.0. # 6############################################################################# 7 8################################################################################ 9# Master Variables # 10################################################################################ 11 12.SUFFIXES: .o .obj .d .cpp .rxp .rxl .cfg 13SUBSYS := staf 14 15ifndef BUILD_TYPE 16 BUILD_TYPE := retail 17endif 18 19MAKEDIR := $(shell pwd) 20SPACE := $(EMPTY) $(EMPTY) 21INIT_INCLUDE := $(INCLUDE) 22 23################################################################################ 24# Configuration Settings # 25################################################################################ 26 27ifneq ($(wildcard makefile.cfg),) 28 include makefile.cfg 29endif 30 31################################################################################ 32# Projects to build # 33################################################################################ 34 35ifndef PROJECTS 36 PROJECTS := staf connprov_tcp connprov_localipc 37endif 38 39ifeq ($(PROJECTS),all) 40 PROJECTS := staf connprov_tcp connprov_localipc zip java perl python tcl ant demo 41endif 42 43# Here's a list of all possible projects to build, including external Java services 44# PROJECTS := staf connprov_tcp connprov_localipc zip java perl python tcl ant demo rexx docs authsample lite device jython stax event eventmanager cron http whoami email fsext sxe timer namedcounter namespace ftp 45 46################################################################################ 47# Operating System Makefile # 48################################################################################ 49 50ifndef OS_NAME 51 OS_NAME := UNKNOWN_OPERATING_SYSTEM 52 $(error Unknown operating system. Please set the OS_NAME environment variable) 53endif 54 55include build/makefile.$(OS_NAME) 56 57################################################################################ 58# Compiler Makefile # 59################################################################################ 60 61ifndef CC_NAME 62 CC_NAME := UNKNOWN_COMPILER 63 $(error Unknown compiler. Please set the CC_NAME environment variable) 64endif 65 66include build/makefile.$(CC_NAME) 67 68################################################################################ 69# Makefiles # 70################################################################################ 71 72ALLMAKEFILES = $(foreach PROJECT, $(PROJECTS),\ 73 $(shell find $(MAKEDIR) -name "*makefile.$(PROJECT)" -print)) 74 75################################################################################ 76# AT : Turns echo off or on for some commands. Turning echo on # 77# can be useful when debugging a build problem # 78# Valid Values: @ (echo off) or nothing (echo on) # 79# Default : Turn echo off, AT=@ # 80################################################################################ 81 82ifndef AT 83 AT := @ 84else 85 # Verify that AT is set to either @ or to nothing 86 ifeq ($(AT),@) 87 $(info AT=@) 88 else 89 ifeq ($(AT),) 90 $(info AT=) 91 else 92 $(error The AT environment variable can only be set to @ to turn off echo or to nothing to turn on echo) 93 endif 94 endif 95endif 96 97################################################################################ 98# Common Variables # 99################################################################################ 100# These variables represent common variables needed throughout the makefiles. # 101# These variables are only valid when interpreted by make or the unix/cygwin # 102# shell. Caution should be used if/when passing them to operating system # 103# specific commands, or when using them in operating system specific ways. # 104# You should normally use the operating system specific versions defined later # 105# on in the Operating System section. # 106################################################################################ 107 108OS_PATHNAME := $(OS_NAME) 109 110ifdef OS_SUBNAME 111 OS_PATHNAME := $(OS_NAME)/$(OS_SUBNAME) 112endif 113 114ROOT := $(MAKEDIR:/src/$(SUBSYS)=) 115SRC := $(ROOT)/src/$(SUBSYS) 116O := $(ROOT)/obj/$(OS_PATHNAME)/$(SUBSYS)/$(BUILD_TYPE) 117REL := $(ROOT)/rel/$(OS_PATHNAME)/$(SUBSYS)/$(BUILD_TYPE) 118PKG := $(ROOT)/pkg/$(OS_PATHNAME)/$(SUBSYS)/$(BUILD_TYPE)/staf 119PKG_ROOT := $(ROOT)/pkg/$(OS_PATHNAME)/$(SUBSYS)/$(BUILD_TYPE) 120SUBSYS_REL_SRC = $(SRC)/$(SUBSYS_REL) 121SR_SRC = $(SUBSYS_REL_SRC) 122LIB_STAF = $(subst Name,STAF,$(DLL)) 123LIB_STAF_FP = $(REL)/lib/$(LIB_STAF) 124 125################################################################################ 126# Java # 127################################################################################ 128# Note: Below XX refers to the generic version of Java being used. For # 129# example, V11 refers to JDK 1.1.x and V12 refers to JDK 1.2.x (or # 130# higher, as there are no STAF related differences after JDK 1.2.x). # 131################################################################################ 132# Note: In general (particularly on Unix systems), it is sufficient to set # 133# the JAVA_VXX_ROOT, JAVA_BUILD_VXX, and JAVA_DEFAULT_VERSION # 134# variables. The rest of the variables will be filled in appropriately. # 135################################################################################ 136# JAVA_VXX_ROOT : Root of JDK install. This is usually the only # 137# thing that need needs to be set. # 138# Default: set in OS include file # 139# # 140# JAVA_VXX_BIN_DIR : Location of Java executables, e.g. javac, etc. # 141# Default: $(JAVA_VXX_ROOT)/bin # 142# # 143# JAVA_VXX_INCLUDE_DIR : Location of Java include files # 144# Default: $(JAVA_VXX_ROOT)/include # 145# # 146# JAVA_VXX_OS_NAME : Name by which the JDK knows this operating system # 147# Default: $(OS_NAME) # 148# # 149# JAVA_VXX_INCLUDE_OS_NAME : Name by which the JDK knows this operating system # 150# with respect to the include directory # 151# Default: $(JAVA_VXX_OS_NAME) # 152# # 153# JAVA_VXX_LIBDIR_OS_NAME : Name by which the JDK knows this operating system # 154# with respect to the lib directory # 155# Default: $(JAVA_VXX_OS_NAME) # 156# # 157# JAVA_VXX_INCLUDE_OS_DIR : Location of OS specific Java include files # 158# Default: $(JAVA_VXX_INCLUDE_DIR)/ # 159# $(JAVA_VXX_OS_NAME) # 160# # 161# JAVA_VXX_INCLUDEDIRS : All necessary Java include file directories # 162# Default: $(JAVA_VXX_INCLUDE_DIR) # 163# $(JAVA_VXX_INCLUDE_OS_DIR) # 164# # 165# JAVA_VXX_CC_FLAGS : Compiler flags necessary to build JNI code # 166# Default: no default # 167# # 168# JAVA_VXX_LIBS : Libraries needed to link Java code # 169# Default: java (V11), jvm (V12) # 170# # 171# JAVA_VXX_LIBDIRS : Locations of Java libraries # 172# Default: no default # 173# # 174# JAVA_VXX_CLASSPATH : CLASSPATH of necessary JDK classes # 175# Default: $(JAVA_VXX_ROOT)/lib/classes.zip # 176# # 177# JAVAC_VXX : The javac command # 178# Default: $(JAVA_VXX_BIN_DIR)/javac # 179# # 180# JAVAH_VXX : The javah command # 181# Default: $(JAVA_VXX_BIN_DIR)/javah # 182# # 183# JAR_VXX : The jar command # 184# Default: $(JAVA_VXX_BIN_DIR)/jar # 185# # 186# JAVA_DEFAULT_VERSION : The default version of Java to use for the # 187# following paths and commands # 188# Default: V11 # 189# # 190# JAVA_CLASSPATH : The default CLASSPATH of necessary JDK classes # 191# Default: $(JAVA_$(JAVA_DEFAULT_VERSION)_CLASSPATH)# 192# # 193# JAVAC : The default javac command # 194# Default: $(JAVA_$(JAVA_DEFAULT_VERSION)) # 195# # 196# JAVAH : The default javah command # 197# Default: $(JAVA_$(JAVA_DEFAULT_VERSION)) # 198# # 199# JAR : The default jar command # 200# Default: $(JAVA_$(JAVA_DEFAULT_VERSION)) # 201# # 202# JAVA_BUILD_VXX : Wheter this version of java should be built (0/1) # 203# Default: 0 # 204################################################################################ 205 206JAVA_V11_OS_NAME ?= $(OS_NAME) 207JAVA_V11_INCLUDE_OS_NAME ?= $(JAVA_V11_OS_NAME) 208JAVA_V11_LIBDIR_OS_NAME ?= $(JAVA_V11_OS_NAME) 209JAVA_V11_INCLUDE_DIR ?= $(JAVA_V11_ROOT)/include 210JAVA_V11_INCLUDE_OS_DIR ?= $(JAVA_V11_INCLUDE_DIR)/$(JAVA_V11_INCLUDE_OS_NAME) 211JAVA_V11_INCLUDEDIRS ?= $(JAVA_V11_INCLUDE_DIR) $(JAVA_V11_INCLUDE_OS_DIR) 212JAVA_V11_LIBDIRS ?= $(JAVA_V11_ROOT)/lib/$(JAVA_V11_LIBDIR_OS_NAME)/native_threads 213JAVA_V11_LIBS ?= java 214JAVA_V11_CLASSPATH ?= $(JAVA_V11_ROOT)/lib/classes.zip 215JAVA_V11_BIN_DIR ?= $(JAVA_V11_ROOT)/bin 216JAVAC_V11 ?= $(JAVA_V11_BIN_DIR)/javac 217JAVA_V11 ?= $(JAVA_V11_BIN_DIR)/java 218JAVAH_V11 ?= $(JAVA_V11_BIN_DIR)/javah 219JAR_V11 ?= $(JAVA_V11_BIN_DIR)/jar 220 221JAVA_V12_OS_NAME ?= $(OS_NAME) 222JAVA_V12_INCLUDE_OS_NAME ?= $(JAVA_V12_OS_NAME) 223JAVA_V12_LIBDIR_OS_NAME ?= $(JAVA_V12_OS_NAME) 224JAVA_V12_INCLUDE_DIR ?= $(JAVA_V12_ROOT)/include 225JAVA_V12_INCLUDE_OS_DIR ?= $(JAVA_V12_INCLUDE_DIR)/$(JAVA_V12_INCLUDE_OS_NAME) 226JAVA_V12_INCLUDEDIRS ?= $(JAVA_V12_INCLUDE_DIR) $(JAVA_V12_INCLUDE_OS_DIR) 227JAVA_V12_LIBDIRS ?= $(JAVA_V12_ROOT)/jre/bin/classic 228JAVA_V12_CLASSPATH ?= $(JAVA_V12_ROOT)/lib/tools.jar 229JAVA_V12_BIN_DIR ?= $(JAVA_V12_ROOT)/bin 230JAVAC_V12 ?= $(JAVA_V12_BIN_DIR)/javac 231JAVA_V12 ?= $(JAVA_V12_BIN_DIR)/java 232JAVAH_V12 ?= $(JAVA_V12_BIN_DIR)/javah 233JAR_V12 ?= $(JAVA_V12_BIN_DIR)/jar 234 235JAVA_DEFAULT_VERSION ?= V12 236 237JAVA_CLASSPATH ?= $(JAVA_$(JAVA_DEFAULT_VERSION)_CLASSPATH) 238JAVAC ?= $(JAVAC_$(JAVA_DEFAULT_VERSION)) 239JAVA ?= $(JAVA_$(JAVA_DEFAULT_VERSION)) 240JAVAH ?= $(JAVAH_$(JAVA_DEFAULT_VERSION)) 241JAR ?= $(JAR_$(JAVA_DEFAULT_VERSION)) 242 243################################################################################ 244# Rexx # 245################################################################################ 246# REXX_ROOT : Root of installed Rexx tree # 247# Default: /usr/local/orexx # 248# # 249# REXX_BIN_DIR : Location of rexx executable # 250# Default: $(REXX_ROOT)/bin # 251# # 252# REXX_IMAGE_DIR : Location of rexx execution image files # 253# Default: $(REXX_BIN_DIR) # 254# # 255# REXX : Command used to invoke the Rexx interpreter # 256# Default: $(REXX_BIN_DIR)/rexx # 257# # 258# REXX_LIBS : Rexx libraries necessary to link Rexx apps # 259# Default: rexx rexxapi # 260# # 261# REXX_LIBDIRS : Locations of Rexx libraries # 262# Default: $(REXX_ROOT)/lib # 263# # 264# REXX_INCLUDEDIRS : Locations of Rexx include files # 265# Default: $(REXX_ROOT)/include # 266# # 267# RXPP_ROOT : Directory where RxPP is installed # 268# Default: /usr/local/rxpp # 269# # 270# RXPP : Command used to invoke RxPP Rexx Pre-processor # 271# Default: $(REXX) $(RXPP_ROOT)/bin/RxPP # 272# # 273# RXPP_PATH : Paths to RxPP libraries # 274# Default: $(RXPP_ROOT)/lib $(REL)/lib # 275# # 276# B2H_ROOT : Directory where b2h is installed # 277# Default: /usr/local/b2h # 278# # 279# B2H : Command used to invoke b2h (Bookie-to-HTML) # 280# Default: PATH=$(REXX_IMAGE_DIR):$$PATH $(REXX) # 281# $(B2H_ROOT)/bin/b2h # 282# # 283# SAXON_ROOT : Directory where Saxon is installed # 284# # 285# DOCBOOK_ROOT : Directory where DocBook is installed # 286# # 287################################################################################ 288 289REXX_ROOT ?= /usr/local/orexx 290REXX_BIN_DIR ?= $(REXX_ROOT)/bin 291REXX_IMAGE_DIR ?= $(REXX_BIN_DIR) 292REXX ?= $(REXX_BIN_DIR)/rexx 293REXX_LIBS ?= rexx rexxapi 294REXX_LIBDIRS ?= $(REXX_ROOT)/lib 295REXX_INCLUDEDIRS ?= $(REXX_ROOT)/include 296 297RXPP_ROOT ?= /usr/local/rxpp 298RXPP ?= $(REXX) $(RXPP_ROOT)/bin/RxPP 299RXPP_PATH ?= $(RXPP_ROOT)/lib:$(REL)/lib 300 301B2H_ROOT ?= /usr/local/b2h 302B2H ?= PATH=$(REXX_IMAGE_DIR):$$PATH $(REXX) $(B2H_ROOT)/bin/b2h 303 304#SAXON_ROOT ?= /usr/local/saxon 305#DOCBOOK_ROOT ?= /usr/local/docbook 306 307################################################################################ 308# Perl # 309################################################################################ 310# Note: Below XX refers to the generic version of Perl being used. For # 311# example, V56 refers to Perl 5.6 and V58 refers to Perl 5.8 # 312################################################################################ 313# PERL_VXX_ROOT : Root of installed Perl tree # 314# Default: /usr/local/perl # 315# # 316# PERL_VXX_LIBS : Perl libraries necessary to link Perl apps # 317# Default: perl # 318# # 319# PERL_VXX_LIBDIRS : Locations of Perl libraries # 320# Default: $(PERL_ROOT) # 321# # 322# PERL_VXX_INCLUDEDIRS : Locations of Perl include files # 323# Default: $(PERL_ROOT) # 324# # 325# PERL_BUILD_VXX : Wheter this version of Perl should be built (0/1) # 326# Default: 0 # 327################################################################################ 328 329PERL_V58_ROOT ?= /usr/local/perl 330PERL_V58_LIBS ?= perl 331PERL_V58_LIBDIRS ?= $(PERL_V58_ROOT) 332PERL_V58_INCLUDEDIRS ?= $(PERL_V58_ROOT) 333PERL_BUILD_V58 ?= 0 334PERL_BUILD_V56 ?= 0 335PERL_BUILD_V50 ?= 0 336 337################################################################################ 338# Tcl # 339################################################################################ 340# TCL_ROOT : Root of installed Tcl tree # 341# Default: No default # 342# # 343# TCL_INCLUDEDIRS : Location of Tcl include files # 344# Default: $(TCL_ROOT)/include # 345# # 346# TCL_LIBDIRS : Location of Tcl libraries # 347# Default: $(TCL_ROOT)/libs # 348# # 349# TCL_LIBS : Tcl libraries necessary to link Tcl apps # 350# Default: tcl # 351################################################################################ 352 353TCL_INCLUDEDIRS ?= $(TCL_ROOT)/include 354TCL_LIBDIRS ?= $(TCL_ROOT)/lib 355TCL_LIBS ?= tcl 356 357################################################################################ 358# Python # 359################################################################################ 360# PYTHON_ROOT : Root of installed Python tree # 361# Default: No default # 362# # 363# PYTHON_LIBS : Python libraries necessary to link Python apps # 364# Default: No default # 365# # 366# PYTHON_LIBDIRS : Locations of Python libraries # 367# Default: $(PYTHON_ROOT)/libs # 368# # 369# PYTHON_INCLUDEDIRS : Locations of Python include files # 370# Default: $(PYTHON_ROOT)/include # 371################################################################################ 372 373PYTHON_LIBDIRS ?= $(PYTHON_ROOT)/libs 374PYTHON_INCLUDEDIRS ?= $(PYTHON_ROOT)/include 375 376################################################################################ 377# OpenSSL # 378################################################################################ 379# STAF_USE_SSL : Indicates to build the STAF TCP connection # 380# provider with support for secure tcp in addition # 381# to support for non-secure tcp if set to any # 382# non-empty value. # 383# Default: 1 # 384# # 385# OPENSSL_ROOT : Root of installed OpenSSL tree # 386# Default: No default # 387# # 388# OPENSSL_LIBDIRS : Locations of OpenSSL libraries # 389# Default on Unix: $(OPENSSL_ROOT)/lib # 390# Default on Windows: $(OPENSSL_ROOT)/bin # 391# # 392# OPENSSL_INCLUDEDIRS : Locations of OpenSSL include files # 393# Default: $(OPENSSL_ROOT)/include # 394# # 395# Note: Defaults are assigned in connproviders/tcp/makefile.connprov_tcp # 396################################################################################ 397 398STAF_USE_SSL ?= 1 399 400################################################################################ 401# Commands # 402################################################################################ 403# MAKE_PATH : The command which will create a directory path. # 404# Note: Must support creating intermediate # 405# directories # 406# Default: mkdir -p # 407# # 408# CREATE_PATH : Creates the path represented by $(@D) # 409# Default: $(MAKE_PATH) $(@D) # 410# # 411# COPY : Command used to copy a file # 412# Default: cp # 413# # 414# MOVE : Command used to move a file # 415# Default: mv # 416# # 417# DEL : Command used to delete a file # 418# Default: rm # 419# # 420# DELTREE : Command used to delete a directory tree # 421# Default: rm -Rf # 422# # 423# TOUCH : Command used to create a file or update the # 424# timestamp of a file # 425# Default: touch # 426# # 427# OUT_ERR_TO_DEV_NULL : Syntax to ignore stdout and stderr output # 428# Default: >/def/null 2>&1 # 429################################################################################ 430 431MAKE_PATH ?= mkdir -p 432CREATE_PATH ?= $(MAKE_PATH) $(@D) 433COPY ?= cp 434RECURSIVE_COPY ?= cp -R 435MOVE ?= mv 436DEL ?= rm 437DELTREE ?= rm -Rf 438TOUCH ?= touch 439OUT_ERR_TO_DEV_NULL ?= >/dev/null 2>&1 440 441################################################################################ 442# Operating System Variables # 443################################################################################ 444# OS_SHARED_LIB_PREFIX : Prefix used by shared libraries # 445# Default: lib # 446# # 447# OS_SHARED_LIB_SUFFIX : Suffix used by shared libraries # 448# Default: .so # 449# # 450# OS_LIBS : Libraries that the system requires you link with # 451# Default: no default # 452# # 453# OS_PTHREAD_LIB : Library that implements threads # 454# Default: pthread # 455# # 456# OS_DL_LIB : Library that implements dynamic linking # 457# Default: dl # 458# # 459# OS_TYPE : The type of the operating system # 460# Default: set in OS include file # 461# # 462# OS_LD_PATH_NAME : The name of the "LD_LIBRARY_PATH" variable, which # 463# dlopen() searches # 464# Default: LD_LIBRARY_PATH # 465# # 466# OS_OE : The object file extension # 467# Default: .o # 468# # 469# OS_EE : The executable file extension # 470# Default: no default # 471# # 472# OS_PS : The path separator # 473# Default: ':' # 474# # 475# OS_FS : The file separator # 476# Default: '/' # 477# # 478# OS_SRC : The operating system specific version of $(SRC) # 479# Default: $(SRC) # 480# # 481# OS_REL : The operating system specific version of $(REL) # 482# Default: $(REL) # 483# # 484# OS_PKG : The operating system specific version of $(PKG) # 485# Default: $(PKG) # 486# # 487# OS_O : The operating system specific version of $(O) # 488# Default: $(O) # 489# # 490# OS_OBJS : The operating system specific version of $(OBJS) # 491# Default: $(OBJS) # 492# # 493# OS_@ : The operating system specific version of $@ # 494# Default: $@ # 495# # 496# OS_< : The operating system specific version of $< # 497# Default: $< # 498# # 499# DLL : This is a convenient shorthand used to specify # 500# the name of a DLL. Typically usage is # 501# JSTAFDLL = $(subst Name,JSTAF,$(DLL)) # 502# # 503################################################################################ 504 505OS_SHARED_LIB_PREFIX ?= lib 506OS_SHARED_LIB_SUFFIX ?= .so 507OS_PTHREAD_LIB ?= pthread 508OS_DL_LIB ?= dl 509OS_LD_PATH_NAME ?= LD_LIBRARY_PATH 510OS_OE ?= .o 511OS_PS ?= : 512OS_FS ?= / 513OS_SRC ?= $(SRC) 514OS_REL ?= $(REL) 515OS_PKG ?= $(PKG) 516OS_O ?= $(O) 517OS_OJBS ?= $(OBJS) 518OS_@ ?= $@ 519OS_< ?= $< 520 521DLL = $(OS_SHARED_LIB_PREFIX)Name$(OS_SHARED_LIB_SUFFIX) 522 523################################################################################ 524# C++ Compiler Variables # 525################################################################################ 526# Note: The following variables are common to all subordiante makefiles and # 527# should not generally be changed, unless you REALLY know what you are # 528# doing. The compiler should honor these variables. # 529################################################################################ 530# COMMON_LIBDIRS : This specifies common library paths on which the # 531# compiler should look. # 532# Default: $(REL)/lib # 533# # 534# COMMON_INCLUDEDIRS : This specifies common include paths on which the # 535# compiler should look # 536# Default: $(SUBSYS_REL_SRC) # 537# $(SUBSYS_REL_SRC)/$(OS_TYPE) # 538# $(SRC)/stafif/$(OS_TYPE) $(SRC)/stafif # 539# # 540################################################################################ 541# Note: The following variables may be specified in subordinate makefiles and # 542# the compiler makefile should honor them. # 543################################################################################ 544# LIBS : This specifies libraries that the executable or # 545# library needs to be linked with # 546# Default: no default # 547# # 548# LIBDIRS : This specifies library paths on which the # 549# compiler should look # 550# Default: no default # 551# # 552# INCLUDEDIRS : This specifies include paths on which the # 553# compiler should look # 554# Default: no default # 555# # 556# COMMONFLAGS : This specifies common compiler/linger flags with # 557# which the executable/library needs to be # 558# compiled/linked # 559# Default: no default # 560# # 561# CFLAGS : This specifies compiler flags with which the # 562# executable or library needs to be compiled # 563# Default: no default # 564# # 565# LINKFLAGS : This specifies link flags with which the # 566# executable or library needs to be linked # 567# Default: no default # 568# # 569# OBJS : This specifies the set of files which need to be # 570# linked to generate an executable or library # 571# Default: no default # 572################################################################################ 573# Note: The following variables must be defined by the compiler makefile as # 574# they are used by the rest of the makefile # 575################################################################################ 576# CC_DEPEND_IT : Used to create a dependency file for a C++ file. # 577# This should process the file $< and generate $@. # 578# # 579# CC_DEPEND_IT_C : Used to create a dependency file for a C file. # 580# This should process the file $< and generate $@. # 581# # 582# CC_COMPILE_IT : Used to compile a C++ file. This should process # 583# the file $< and generate $@. # 584# # 585# CC_COMPILE_IT_C : Used to compile a C file. This should process # 586# the file $< and generate $@. # 587# # 588# CC_LINK_IT : Used to link an executable. This should process # 589# $(OBJS) and generate $@. # 590# # 591# CC_SHARED_LIB_IT : Used to link a shared library. This should # 592# process $(OBJS) and generate $@. # 593################################################################################ 594# Note: The following variables are not required to be used or implemented by # 595# any compiler makefile. They are provided as they are useful for most # 596# compilers. # 597################################################################################ 598# ALL_LIB_LIST_RAW : The set of all necessary link linbraries # 599# # 600# ALL_LIB_LIST : The expended set of all necessary link libraries # 601# # 602# ALL_LIBDIR_LIST_RAW : The set of all necessary library directories # 603# # 604# ALL_LIBDIR_LIST : The expanded set of all necessary library # 605# directories # 606# ALL_INCLUDEDIR_LIST_RAW : The set of all necessary include directories # 607# # 608# ALL_INCLUDEDIR_LIST : The expanded set of all necessary include # 609# directories # 610################################################################################ 611 612COMMON_LIBDIRS ?= $(REL)/lib 613COMMON_INCLUDEDIRS ?= $(SUBSYS_REL_SRC) $(SUBSYS_REL_SRC)/$(OS_TYPE)\ 614 $(SRC)/stafif/$(OS_TYPE) $(SRC)/stafif 615 616ALL_LIB_LIST_RAW ?= $(CC_LIBS) $(LIBS) $(OS_LIBS) 617ALL_LIB_LIST ?= $(foreach lib, $(ALL_LIB_LIST_RAW),-l$(lib)) 618 619ALL_LIBDIR_LIST_RAW ?= $(CC_LIBDIRS) $(OS_LIBDIRS) $(COMMON_LIBDIRS) $(LIBDIRS) 620ALL_LIBDIR_LIST ?= $(foreach libdir, $(ALL_LIBDIR_LIST_RAW),-L$(libdir)) 621 622ALL_INCLUDEDIR_LIST_RAW ?= $(INIT_INCLUDE) $(CC_INCLUDEDIRS) $(OS_INCLUDEDIRS) $(COMMON_INCLUDEDIRS) $(INCLUDEDIRS) 623ALL_INCLUDEDIR_LIST ?= $(foreach incdir, $(ALL_INCLUDEDIR_LIST_RAW),-I$(incdir)) 624 625# Setup the library prefix and suffix based on OS as well 626# as other OS dependent defines, libraries, flags, etc. 627 628define COPY_FILE 629 @$(CREATE_PATH) 630 @echo "*** Copying $(@F) ***" 631 $(AT)$(COPY) $< $@ 632endef 633 634define RXPP_IT 635 @$(CREATE_PATH) 636 @echo "*** Building $(@F) ***" 637 @PATH=$(REXX_IMAGE_DIR):$$PATH RXPPPATH='$(subst $(SPACE),$(OS_PS),$(strip $(RXPP_PATH)))' $(RXPP) '$(OS_<)' '$(OS_@)' 638endef 639 640define STRIP_IT 641 @echo "*** Stripping $(@F) ***" 642 $(AT)$(STRIP) $@ 643endef 644 645define C_DEPEND_IT 646 $(AT)$(CREATE_PATH) 647 @echo "*** Generating dependency for $(@F) *** " 648 $(AT)$(CC_DEPEND_IT) 649endef 650 651define C_DEPEND_IT_C 652 $(AT)$(CREATE_PATH) 653 @echo "*** Generating dependency for $(@F) *** " 654 $(AT)$(CC_DEPEND_IT_C) 655endef 656 657define COMPILE_IT 658 $(AT)$(CREATE_PATH) 659 @echo "*** Compiling $(@F) ***" 660 $(AT)$(CC_COMPILE_IT) 661endef 662 663define COMPILE_IT_C 664 $(AT)$(CREATE_PATH) 665 @echo "*** Compiling $(@F) ***" 666 $(AT)$(CC_COMPILE_IT_C) 667endef 668 669define LINK_IT 670 $(AT)$(CREATE_PATH) 671 @echo "*** Linking $(@F) ***" 672 $(AT)$(CC_LINK_IT) 673endef 674 675define SHARED_LIB_IT 676 $(AT)$(CREATE_PATH) 677 @echo "*** Linking shared library $(@F) ***" 678 $(AT)$(CC_SHARED_LIB_IT) 679 $(AT)$(MOVE_SIDE_DECK) 680endef 681 682# Setup our global inference rules 683 684InferenceRules := $(SRC)/build/makefile.inf 685 686# Check to see if we are in cleanup. If so, we won't want to include 687# dependency makefiles 688 689ifneq ($(find cleanup, $(MAKECMDGOALS)), "") 690InCleanup := 1 691else 692inCleanup := 0 693endif 694 695# Default target. This is a fake target that points to the real default which 696# is defined after all the subordinate makefiles have been included 697 698all: real_all 699 700# Include subordinate makefiles 701include $(ALLMAKEFILES) 702 703# Undefine SUBSYS_REL to be safe 704SUBSYS_REL := $(EMPTY) 705 706export RXPPPATH 707 708# Targets 709 710showvars: 711 @echo LibPref = $(OS_SHARED_LIB_PREFIX) 712 @echo LibSuff = $(OS_SHARED_LIB_SUFFIX) 713 @echo MakeDir = $(MAKEDIR) 714 @echo AllMakeFiles = $(ALLMAKEFILES) 715 @echo INCLUDE = $(INCLUDE) 716 717cleanup: $(CleanupTargets) 718 719real_all: $(Targets) 720