BuildSystem: darwin

- made Xcode external targets consistent for each configuration.
- shunted terminal NAME=VALUE vars through xcodebuild.
- folded macosx/module.xcode shunt functions into single.
- added new report target to show a single var; eg: make report.var NAME=GCC.gcc .

BuildSystem: darwin ppc
- fixed configure on ppc host: correctly identify native architecture.
- fixed configure to be more resilient when svn probes fail.
- fixed configure to show error output for svn probes.

BuildSystme: xcode
- added external target 'external' to represent 'all things in external system'
  which is slight more than what 'libhb' might represent.
- added doc section Building.osx: External Targets .


git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2214 b64f7644-9d1e-0410-96f1-a4d463321fa5
This commit is contained in:
konablend 2009-03-04 00:54:53 +00:00
parent c4d9c49de0
commit 6d2d51974a
11 changed files with 368 additions and 224 deletions

View File

@ -1,4 +1,4 @@
Guide to Building HandBrake svn2204 (2009030201) on Cygwin
Guide to Building HandBrake svn2213 (2009030301) on Cygwin
**********************************************************
Table of Contents
@ -240,14 +240,18 @@ period.
Build main product. All necessary dependencies are also built if
required.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make install'
Perform final product(s) install. This will install build
products to a standard directory or one specified via `configure
--prefix' option.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make uninstall'
Perform final product(s) uninstall. This will uninstall any
products which may have been previously installed.
`make xclean'
Clean all build output including contrib modules. Configuration is

View File

@ -1,4 +1,4 @@
Guide to Building HandBrake svn2204 (2009030201) on Linux
Guide to Building HandBrake svn2213 (2009030301) on Linux
*********************************************************
Table of Contents
@ -306,14 +306,18 @@ period.
Build main product. All necessary dependencies are also built if
required.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make install'
Perform final product(s) install. This will install build
products to a standard directory or one specified via `configure
--prefix' option.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make uninstall'
Perform final product(s) uninstall. This will uninstall any
products which may have been previously installed.
`make xclean'
Clean all build output including contrib modules. Configuration is

View File

@ -1,4 +1,4 @@
Guide to Building HandBrake svn2204 (2009030201) on Mac OS X
Guide to Building HandBrake svn2213 (2009030301) on Mac OS X
************************************************************
Table of Contents
@ -21,7 +21,8 @@ Table of Contents
6 Building via Xcode
6.1 Checkout Sources
6.2 Build
6.3 User-Defined Settings
6.3 External Targets
6.4 User-Defined Settings
1 Introduction
@ -241,14 +242,18 @@ period.
Build main product. All necessary dependencies are also built if
required.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make install'
Perform final product(s) install. This will install build
products to a standard directory or one specified via `configure
--prefix' option.
`make clean'
Clean all build output excluding contrib modules. Configuration is
retained.
`make uninstall'
Perform final product(s) uninstall. This will uninstall any
products which may have been previously installed.
`make xclean'
Clean all build output including contrib modules. Configuration is
@ -441,7 +446,24 @@ follows:
This configuration is used to build for the ppc64 architecture.
Build directory is `build.standard.ppc64' .
6.3 User-Defined Settings
6.3 External Targets
====================
The following external targets appear in the Xcode project and perform
build and clean actions.
`external'
Target maps to `make build' and `make clean' for everything Xcode
products depend upon from the external build system.
`libhb'
Target maps to `make libhb.build' and `make libhb.clean'.
`contrib'
Target maps to `make contrib.build' and `make contrib.xclean'.
6.4 User-Defined Settings
=========================
The following user defined settings are used in Xcode project for the

View File

@ -48,6 +48,23 @@ This configuration is used to build for the ppc architecture. Build directory is
This configuration is used to build for the ppc64 architecture. Build directory is @file{build.standard.ppc64} .
@end table
@c %**-------------------------------------------------------------------------
@anchor{xcode.extenal}
@section External Targets
The following external targets appear in the Xcode project and perform @b{build} and @b{clean} actions.
@table @samp
@item external
Target maps to @command{make build} and @command{make clean} for everything Xcode products depend upon from the external build system.
@item libhb
Target maps to @command{make libhb.build} and @command{make libhb.clean}.
@item contrib
Target maps to @command{make contrib.build} and @command{make contrib.xclean}.
@end table
@c %**-------------------------------------------------------------------------
@anchor{xcode.userdefined}
@section User-Defined Settings

View File

@ -94,19 +94,19 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
27774C2A0F5CB1D600897477 /* PBXContainerItemProxy */ = {
277C2E530F5DFF400067D708 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 278071070F5C9C2C00699207;
remoteInfo = libhb;
remoteGlobalIDString = 27F143770F5DF34F00A684FF;
remoteInfo = external;
};
27774C2C0F5CB1DD00897477 /* PBXContainerItemProxy */ = {
277C2E550F5DFF450067D708 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 278071070F5C9C2C00699207;
remoteInfo = libhb;
remoteGlobalIDString = 27F143770F5DF34F00A684FF;
remoteInfo = external;
};
/* End PBXContainerItemProxy section */
@ -408,35 +408,44 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXLegacyTarget section */
278070E10F5C7F9E00699207 /* contrib */ = {
27F143770F5DF34F00A684FF /* external */ = {
isa = PBXLegacyTarget;
buildArgumentsString = "$EXTERNAL_PROJECT/make/xcodemake.sh $(PRODUCT_NAME) $(ACTION)";
buildConfigurationList = 278070E20F5C7F9E00699207 /* Build configuration list for PBXLegacyTarget "contrib" */;
buildArgumentsString = "\"$EXTERNAL_PROJECT/make/xcodemake";
buildConfigurationList = 27F1438E0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "external" */;
buildPhases = (
);
buildToolPath = /bin/sh;
dependencies = (
);
name = external;
passBuildSettingsInEnvironment = 1;
productName = external;
};
27F1437E0F5DF36000A684FF /* contrib */ = {
isa = PBXLegacyTarget;
buildArgumentsString = "\"$EXTERNAL_PROJECT/make/xcodemake";
buildConfigurationList = 27F1438F0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "contrib" */;
buildPhases = (
);
buildToolPath = /bin/sh;
buildWorkingDirectory = "";
comments = "This target represents tie-in to the make-based build system for HandBrake.\nFrom Xcode's perspective we term it the 'external' build system.\n\n- building this target maps to --> make contrib.install\n- cleaning this target maps to --> make contrib.clean";
dependencies = (
);
name = contrib;
passBuildSettingsInEnvironment = 1;
productName = external.invoke;
productName = contrib;
};
278071070F5C9C2C00699207 /* libhb */ = {
27F143850F5DF37600A684FF /* libhb */ = {
isa = PBXLegacyTarget;
buildArgumentsString = "$EXTERNAL_PROJECT/make/xcodemake.sh $(PRODUCT_NAME) $(ACTION)";
buildConfigurationList = 278071080F5C9C2C00699207 /* Build configuration list for PBXLegacyTarget "libhb" */;
buildArgumentsString = "\"$EXTERNAL_PROJECT/make/xcodemake";
buildConfigurationList = 27F143900F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "libhb" */;
buildPhases = (
);
buildToolPath = /bin/sh;
buildWorkingDirectory = "";
comments = "This target represents tie-in to the make-based build system for HandBrake.\nFrom Xcode's perspective we term it the 'external' build system.\n\n- building this target maps to --> make libhb.build\n- cleaning this target maps to --> make libhb.clean";
dependencies = (
);
name = libhb;
passBuildSettingsInEnvironment = 1;
productName = external.invoke;
productName = libhb;
};
/* End PBXLegacyTarget section */
@ -451,7 +460,7 @@
buildRules = (
);
dependencies = (
27774C2B0F5CB1D600897477 /* PBXTargetDependency */,
277C2E560F5DFF450067D708 /* PBXTargetDependency */,
);
name = HandBrakeCLI;
productName = HandBrakeCLI;
@ -471,7 +480,7 @@
buildRules = (
);
dependencies = (
27774C2D0F5CB1DD00897477 /* PBXTargetDependency */,
277C2E540F5DFF400067D708 /* PBXTargetDependency */,
);
name = HandBrake;
productName = HandBrake;
@ -492,8 +501,9 @@
targets = (
4DD93F8D082036E8008E1322 /* HandBrake */,
0DFF0C090B6BCEC200549488 /* HandBrakeCLI */,
278071070F5C9C2C00699207 /* libhb */,
278070E10F5C7F9E00699207 /* contrib */,
27F143770F5DF34F00A684FF /* external */,
27F143850F5DF37600A684FF /* libhb */,
27F1437E0F5DF36000A684FF /* contrib */,
);
};
/* End PBXProject section */
@ -585,15 +595,15 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
27774C2B0F5CB1D600897477 /* PBXTargetDependency */ = {
277C2E540F5DFF400067D708 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 278071070F5C9C2C00699207 /* libhb */;
targetProxy = 27774C2A0F5CB1D600897477 /* PBXContainerItemProxy */;
target = 27F143770F5DF34F00A684FF /* external */;
targetProxy = 277C2E530F5DFF400067D708 /* PBXContainerItemProxy */;
};
27774C2D0F5CB1DD00897477 /* PBXTargetDependency */ = {
277C2E560F5DFF450067D708 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 278071070F5C9C2C00699207 /* libhb */;
targetProxy = 27774C2C0F5CB1DD00897477 /* PBXContainerItemProxy */;
target = 27F143770F5DF34F00A684FF /* external */;
targetProxy = 277C2E550F5DFF450067D708 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
@ -739,90 +749,6 @@
};
name = standard;
};
278070E30F5C7F9E00699207 /* standard */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard;
};
278070E40F5C7F9E00699207 /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = debug;
};
278070E50F5C7F9E00699207 /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.i386;
};
278070E60F5C7F9E00699207 /* standard.x86_64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.x86_64;
};
278070E70F5C7F9E00699207 /* standard.ppc */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.ppc;
};
278070E80F5C7F9E00699207 /* standard.ppc64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.ppc64;
};
278071090F5C9C2C00699207 /* standard */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard;
};
2780710A0F5C9C2C00699207 /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = debug;
};
2780710B0F5C9C2C00699207 /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.i386;
};
2780710C0F5C9C2C00699207 /* standard.x86_64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.x86_64;
};
2780710D0F5C9C2C00699207 /* standard.ppc */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.ppc;
};
2780710E0F5C9C2C00699207 /* standard.ppc64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external.invoke;
};
name = standard.ppc64;
};
27ED6ADB0F58D7F100C905EE /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -830,7 +756,7 @@
CONFIGURATION_BUILD_DIR = "$(EXTERNAL_BUILD)";
CONFIGURATION_TEMP_DIR = "$(SYMROOT)";
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -939,7 +865,7 @@
CONFIGURATION_BUILD_DIR = "$(EXTERNAL_BUILD)";
CONFIGURATION_TEMP_DIR = "$(SYMROOT)";
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -1048,7 +974,7 @@
CONFIGURATION_BUILD_DIR = "$(EXTERNAL_BUILD)";
CONFIGURATION_TEMP_DIR = "$(SYMROOT)";
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -1157,7 +1083,7 @@
CONFIGURATION_BUILD_DIR = "$(EXTERNAL_BUILD)";
CONFIGURATION_TEMP_DIR = "$(SYMROOT)";
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -1259,6 +1185,132 @@
};
name = standard.ppc64;
};
27F143780F5DF34F00A684FF /* standard */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = standard;
};
27F143790F5DF34F00A684FF /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = debug;
};
27F1437A0F5DF34F00A684FF /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = standard.i386;
};
27F1437B0F5DF34F00A684FF /* standard.x86_64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = standard.x86_64;
};
27F1437C0F5DF34F00A684FF /* standard.ppc */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = standard.ppc;
};
27F1437D0F5DF34F00A684FF /* standard.ppc64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = external;
};
name = standard.ppc64;
};
27F1437F0F5DF36000A684FF /* standard */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard;
};
27F143800F5DF36000A684FF /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = debug;
};
27F143810F5DF36000A684FF /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard.i386;
};
27F143820F5DF36000A684FF /* standard.x86_64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard.x86_64;
};
27F143830F5DF36000A684FF /* standard.ppc */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard.ppc;
};
27F143840F5DF36000A684FF /* standard.ppc64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = contrib;
};
name = standard.ppc64;
};
27F143860F5DF37600A684FF /* standard */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard;
};
27F143870F5DF37600A684FF /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = debug;
};
27F143880F5DF37600A684FF /* standard.i386 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard.i386;
};
27F143890F5DF37600A684FF /* standard.x86_64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard.x86_64;
};
27F1438A0F5DF37600A684FF /* standard.ppc */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard.ppc;
};
27F1438B0F5DF37600A684FF /* standard.ppc64 */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = libhb;
};
name = standard.ppc64;
};
4D4E7BC1087804870051572B /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1372,7 +1424,7 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -1396,7 +1448,7 @@
CONFIGURATION_BUILD_DIR = "$(EXTERNAL_BUILD)";
CONFIGURATION_TEMP_DIR = "$(SYMROOT)";
EXTERNAL_BUILD = "$(EXTERNAL_PROJECT)/build.$(CONFIGURATION)";
EXTERNAL_JOBS = 1;
EXTERNAL_JOBS = 8;
EXTERNAL_METHOD = xcode;
EXTERNAL_PROJECT = ..;
GCC_DYNAMIC_NO_PIC = YES;
@ -1429,28 +1481,41 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = standard;
};
278070E20F5C7F9E00699207 /* Build configuration list for PBXLegacyTarget "contrib" */ = {
27F1438E0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "external" */ = {
isa = XCConfigurationList;
buildConfigurations = (
278070E30F5C7F9E00699207 /* standard */,
278070E40F5C7F9E00699207 /* debug */,
278070E50F5C7F9E00699207 /* standard.i386 */,
278070E60F5C7F9E00699207 /* standard.x86_64 */,
278070E70F5C7F9E00699207 /* standard.ppc */,
278070E80F5C7F9E00699207 /* standard.ppc64 */,
27F143780F5DF34F00A684FF /* standard */,
27F143790F5DF34F00A684FF /* debug */,
27F1437A0F5DF34F00A684FF /* standard.i386 */,
27F1437B0F5DF34F00A684FF /* standard.x86_64 */,
27F1437C0F5DF34F00A684FF /* standard.ppc */,
27F1437D0F5DF34F00A684FF /* standard.ppc64 */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = standard;
};
278071080F5C9C2C00699207 /* Build configuration list for PBXLegacyTarget "libhb" */ = {
27F1438F0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "contrib" */ = {
isa = XCConfigurationList;
buildConfigurations = (
278071090F5C9C2C00699207 /* standard */,
2780710A0F5C9C2C00699207 /* debug */,
2780710B0F5C9C2C00699207 /* standard.i386 */,
2780710C0F5C9C2C00699207 /* standard.x86_64 */,
2780710D0F5C9C2C00699207 /* standard.ppc */,
2780710E0F5C9C2C00699207 /* standard.ppc64 */,
27F1437F0F5DF36000A684FF /* standard */,
27F143800F5DF36000A684FF /* debug */,
27F143810F5DF36000A684FF /* standard.i386 */,
27F143820F5DF36000A684FF /* standard.x86_64 */,
27F143830F5DF36000A684FF /* standard.ppc */,
27F143840F5DF36000A684FF /* standard.ppc64 */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = standard;
};
27F143900F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "libhb" */ = {
isa = XCConfigurationList;
buildConfigurations = (
27F143860F5DF37600A684FF /* standard */,
27F143870F5DF37600A684FF /* debug */,
27F143880F5DF37600A684FF /* standard.i386 */,
27F143890F5DF37600A684FF /* standard.x86_64 */,
27F1438A0F5DF37600A684FF /* standard.ppc */,
27F1438B0F5DF37600A684FF /* standard.ppc64 */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = standard;

View File

@ -18,27 +18,22 @@ BUILD.out += $(MACOSX.m4.out)
MACOSX.XCODE.exe = xcodebuild
MACOSX.XCODE.project = HandBrake.xcodeproj
## launch a build thru xcode; which in turn will do a nested make against
## this build system with normal build rules enabled.
##
## $(1) = list of targets
## $(2) = list of goals to shunt thru xcodebuild->make
##
MACOSX.XCODE = $(strip \
cd $(MACOSX.src/) && \
$(MACOSX.XCODE.exe) \
-project $(MACOSX.XCODE.project) \
-configuration $(MACOSX.conf) \
$(foreach t,$(MACOSX.targs),-target $t) \
$(foreach t,$(1),-target $t) \
EXTERNAL_BUILD='$(CURDIR)' \
EXTERNAL_JOBS='$(BUILD.jobs)' \
EXTERNAL_METHOD='$(CONF.method)' \
EXTERNAL_PROJECT='$(PROJECT/)' \
$(1) )
MACOSX.XCODE.PASSTHRU = $(strip \
cd $(MACOSX.src/) && \
$(MACOSX.XCODE.exe) \
-project $(MACOSX.XCODE.project) \
-configuration $(MACOSX.conf) \
-target libhb \
EXTERNAL_BUILD='$(CURDIR)' \
EXTERNAL_JOBS='$(BUILD.jobs)' \
EXTERNAL_METHOD='$(CONF.method)' \
EXTERNAL_PROJECT='$(PROJECT/)' \
EXTERNAL_GOALS='$(1)' \
build )
EXTERNAL_GOALS='$(3)' \
EXTERNAL_VARS='$(-*-command-variables-*-)' \
$(2) )

View File

@ -2,16 +2,28 @@
## which hands-off the build to Xcode which in turn may callback this
## build system.
build:
$(call MACOSX.XCODE,build)
.PHONY: macosx.build macosx.clean macosx.install
clean:
$(call MACOSX.XCODE,clean)
macosx.build:
$(call MACOSX.XCODE,HandBrakeCLI HandBrake,build)
macosx.clean:
$(call MACOSX.XCODE,HandBrakeCLI HandBrake,clean)
macosx.install:
$(call MACOSX.XCODE,HandBrakeCLI HandBrake,install)
build: macosx.build
clean: macosx.clean
install: macosx.install
xclean: clean
$(MAKECMDGOALS): __goals__
###############################################################################
MACOSX.goals = $(filter-out build clean install xclean,$(MAKECMDGOALS))
$(MACOSX.goals): __goals__
@true
__goals__:
$(call MACOSX.XCODE.PASSTHRU,$(MAKECMDGOALS))
$(call MACOSX.XCODE,external,build,$(MACOSX.goals))

View File

@ -141,7 +141,7 @@ class Guess:
self.release = ''
self.extra = ''
elif re.match( 'darwin', p_system ):
self.machine = p_machine
self.machine = p_processor
self.vendor = 'apple'
self.system = p_system
self.systemc = p_systemc
@ -263,7 +263,13 @@ class OptionMode( list ):
self.mode = self.default
def __str__( self ):
return ' '.join( self ).replace( self.mode, '*'+self.mode )
s = ''
for a in self:
if a == self.mode:
s += ' *' + a
else:
s += ' ' + a
return s[1:]
def addToGroup( self, group, option, name ):
group.add_option( '', option, help='select %s mode: %s' % (name,self), default=self.mode, metavar='MODE' )
@ -435,38 +441,40 @@ class Repository:
# parse output: svnversion PROJECT_DIR
cmd = 'svnversion ' + initial_project_dir
print 'running: %s' % (cmd)
print 'attempting to probe subversion: %s' % (cmd)
try:
p = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
p = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE )
p.wait();
if p.returncode == 0:
self.wcversion = p.stdout.readline().rstrip()
if p.returncode:
sys.exit( 1 )
self.wcversion = p.stdout.readline().rstrip()
except:
pass
# parse output: svn info PROJECT_DIR
cmd = 'svn info ' + initial_project_dir
print 'running: %s' % (cmd)
print 'attempting to probe subversion: %s' % (cmd)
try:
p = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
p = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE )
p.wait();
if p.returncode == 0:
for line in p.stdout:
(name,value) = re.match( '([^:]+):\\s+(.+)', line.rstrip() ).groups()
if name == 'URL':
self.url = value
elif name == 'Repository Root':
self.root = value
elif name == 'Repository UUID':
self.uuid = value
elif name == 'Revision':
self.rev = int( value )
elif name == 'Last Changed Date':
# strip chars in parens
if value.find( ' (' ):
self.date = value[0:value.find(' (')]
else:
self.date = value
if p.returncode:
sys.exit( 1 )
for line in p.stdout:
(name,value) = re.match( '([^:]+):\\s+(.+)', line.rstrip() ).groups()
if name == 'URL':
self.url = value
elif name == 'Repository Root':
self.root = value
elif name == 'Repository UUID':
self.uuid = value
elif name == 'Revision':
self.rev = int( value )
elif name == 'Last Changed Date':
# strip chars in parens
if value.find( ' (' ):
self.date = value[0:value.find(' (')]
else:
self.date = value
except:
pass
@ -629,7 +637,7 @@ config.add( 'HB.version.major', project.vmajor )
config.add( 'HB.version.minor', project.vminor )
config.add( 'HB.version.point', project.vpoint )
config.add( 'HB.version', project.version )
config.add( 'HB.version.hex', '%04x%02x%02x%02x%06x' % (project.vmajor,project.vminor,project.vpoint,0,repo.rev) )
config.add( 'HB.version.hex', '%04x%02x%02x%08x' % (project.vmajor,project.vminor,project.vpoint,repo.rev) )
config.add( 'HB.build', project.build )

View File

@ -1,16 +1,16 @@
.PHONY: report.main report.gcc report.modules
.PHONY: report.main report.gcc report.modules report.var report.true
report.modules::
.PHONY: report.main
report.main:
@$(MAKE) report.true REPORT=main
.PHONY: report.gcc
report.gcc:
@$(MAKE) report.true REPORT=gcc
report.var:
@$(MAKE) report.true REPORT=var
## needed for nested make (which drives each report)
.PHONY: report.true
report.true:
@true

View File

@ -53,3 +53,10 @@ $(info #########################################################################
$(info $(foreach v,$(sort $(filter GCC.%,$(.VARIABLES))),$(call fn.PRINTVAR,$v)))
$(info )
endif
## report: var
##
ifeq (var,$(REPORT))
$(info $(call fn.PRINTVAR,$(NAME)))
$(info )
endif

64
make/xcodemake.sh → make/xcodemake Normal file → Executable file
View File

@ -1,6 +1,8 @@
#!/bin/sh -ex
#!/bin/sh
#
set -e
## This script is invoked by Xcode external targets.
##
## We must guarantee no jobserver is passed through since the file-descriptors
@ -8,6 +10,7 @@
## it is allowed to run an infinite number of jobs.
##
MAKEFLAGS=
MFLAGS=
cd $EXTERNAL_BUILD
@ -43,33 +46,40 @@ else
jobs=--jobs=$EXTERNAL_JOBS
fi
## compute target
case "$1:$2" in
contrib:clean)
target=contrib.xclean
;;
contrib:*)
target=contrib.install
;;
*:clean)
target=clean
;;
libhb:'')
if [ -z "$EXTERNAL_GOALS" ]; then
target=build
else
target="$EXTERNAL_GOALS"
fi
;;
*:'')
target=build
;;
*)
echo "usage: $0 PRODUCT ACTION"
exit 1
;;
spec="$TARGET_NAME:$ACTION"
echo "env specification: $spec"
## compute goals
case "$spec" in
contrib:clean)
goals=contrib.xclean
;;
contrib:*)
goals=contrib.install
;;
external:clean)
goals=clean
;;
external:*)
if [ -z "$EXTERNAL_GOALS" ]; then
goals=build
else
goals="$EXTERNAL_GOALS"
fi
vars="$EXTERNAL_VARS"
;;
libhb:clean)
goals=libhb.clean
;;
libhb:*)
goals=libhb.build
;;
*)
echo "ERROR: invalid env specification: $spec"
exit 1
;;
esac
## handoff
set -x
exec make -C $EXTERNAL_BUILD BUILD.method=xcode $jobs $target
make -C $EXTERNAL_BUILD BUILD.method=xcode $jobs $goals $vars