OSDN Git Service

BuildSystem: darwin
authorkonablend <konablend@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 4 Mar 2009 00:54:53 +0000 (00:54 +0000)
committerkonablend <konablend@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 4 Mar 2009 00:54:53 +0000 (00:54 +0000)
- 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://localhost/HandBrake/trunk@2214 b64f7644-9d1e-0410-96f1-a4d463321fa5

00-Building.cygwin.txt
00-Building.linux.txt
00-Building.osx.txt
doc/texi/building/chapter.via.xcode.texi
macosx/HandBrake.xcodeproj/project.pbxproj
macosx/module.defs
macosx/module.xcode
make/configure.py
make/include/base.rules
make/include/report.defs
make/xcodemake [moved from make/xcodemake.sh with 61% similarity, mode: 0755]

index b0c5717..dca7d90 100644 (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
index a2e2d0b..ae6158e 100644 (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
index dc7c0a5..471ffda 100644 (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
index 9983c94..df42fac 100644 (file)
@@ -49,6 +49,23 @@ This configuration is used to build for the ppc64 architecture. Build directory
 @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
 The following user defined settings are used in Xcode project for the external build system:
index aa37cec..41272fd 100644 (file)
 /* 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 */
 
 /* 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 */
 
                        buildRules = (
                        );
                        dependencies = (
-                               27774C2B0F5CB1D600897477 /* PBXTargetDependency */,
+                               277C2E560F5DFF450067D708 /* PBXTargetDependency */,
                        );
                        name = HandBrakeCLI;
                        productName = HandBrakeCLI;
                        buildRules = (
                        );
                        dependencies = (
-                               27774C2D0F5CB1DD00897477 /* PBXTargetDependency */,
+                               277C2E540F5DFF400067D708 /* PBXTargetDependency */,
                        );
                        name = HandBrake;
                        productName = HandBrake;
                        targets = (
                                4DD93F8D082036E8008E1322 /* HandBrake */,
                                0DFF0C090B6BCEC200549488 /* HandBrakeCLI */,
-                               278071070F5C9C2C00699207 /* libhb */,
-                               278070E10F5C7F9E00699207 /* contrib */,
+                               27F143770F5DF34F00A684FF /* external */,
+                               27F143850F5DF37600A684FF /* libhb */,
+                               27F1437E0F5DF36000A684FF /* contrib */,
                        );
                };
 /* End PBXProject section */
 /* 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 */
 
                        };
                        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 = {
                                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;
                                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;
                                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;
                                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;
                        };
                        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 = {
                                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;
                                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;
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = standard;
                };
-               278070E20F5C7F9E00699207 /* Build configuration list for PBXLegacyTarget "contrib" */ = {
+               27F1438E0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "external" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               27F143780F5DF34F00A684FF /* standard */,
+                               27F143790F5DF34F00A684FF /* debug */,
+                               27F1437A0F5DF34F00A684FF /* standard.i386 */,
+                               27F1437B0F5DF34F00A684FF /* standard.x86_64 */,
+                               27F1437C0F5DF34F00A684FF /* standard.ppc */,
+                               27F1437D0F5DF34F00A684FF /* standard.ppc64 */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = standard;
+               };
+               27F1438F0F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "contrib" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               278070E30F5C7F9E00699207 /* standard */,
-                               278070E40F5C7F9E00699207 /* debug */,
-                               278070E50F5C7F9E00699207 /* standard.i386 */,
-                               278070E60F5C7F9E00699207 /* standard.x86_64 */,
-                               278070E70F5C7F9E00699207 /* standard.ppc */,
-                               278070E80F5C7F9E00699207 /* standard.ppc64 */,
+                               27F1437F0F5DF36000A684FF /* standard */,
+                               27F143800F5DF36000A684FF /* debug */,
+                               27F143810F5DF36000A684FF /* standard.i386 */,
+                               27F143820F5DF36000A684FF /* standard.x86_64 */,
+                               27F143830F5DF36000A684FF /* standard.ppc */,
+                               27F143840F5DF36000A684FF /* standard.ppc64 */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = standard;
                };
-               278071080F5C9C2C00699207 /* Build configuration list for PBXLegacyTarget "libhb" */ = {
+               27F143900F5DF3EA00A684FF /* Build configuration list for PBXLegacyTarget "libhb" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               278071090F5C9C2C00699207 /* standard */,
-                               2780710A0F5C9C2C00699207 /* debug */,
-                               2780710B0F5C9C2C00699207 /* standard.i386 */,
-                               2780710C0F5C9C2C00699207 /* standard.x86_64 */,
-                               2780710D0F5C9C2C00699207 /* standard.ppc */,
-                               2780710E0F5C9C2C00699207 /* standard.ppc64 */,
+                               27F143860F5DF37600A684FF /* standard */,
+                               27F143870F5DF37600A684FF /* debug */,
+                               27F143880F5DF37600A684FF /* standard.i386 */,
+                               27F143890F5DF37600A684FF /* standard.x86_64 */,
+                               27F1438A0F5DF37600A684FF /* standard.ppc */,
+                               27F1438B0F5DF37600A684FF /* standard.ppc64 */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = standard;
index 2b525ac..fec467d 100644 (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) )
index 5d75f51..81f6616 100644 (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))
index 2f8cf6e..59a512f 100644 (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 )
 
index f128864..fd90d77 100644 (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
index 858c455..7962a66 100644 (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
old mode 100644 (file)
new mode 100755 (executable)
similarity index 61%
rename from make/xcodemake.sh
rename to make/xcodemake
index 5354b54..a75cd3e
@@ -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