From: konablend Date: Wed, 4 Mar 2009 00:54:53 +0000 (+0000) Subject: BuildSystem: darwin X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c8d428d055c84eb606b2d3e946bb8d192a891e00;p=handbrake-jp%2Fhandbrake-jp-git.git 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://localhost/HandBrake/trunk@2214 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/00-Building.cygwin.txt b/00-Building.cygwin.txt index b0c57173..dca7d906 100644 --- a/00-Building.cygwin.txt +++ b/00-Building.cygwin.txt @@ -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 diff --git a/00-Building.linux.txt b/00-Building.linux.txt index a2e2d0ba..ae6158e9 100644 --- a/00-Building.linux.txt +++ b/00-Building.linux.txt @@ -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 diff --git a/00-Building.osx.txt b/00-Building.osx.txt index dc7c0a54..471ffda7 100644 --- a/00-Building.osx.txt +++ b/00-Building.osx.txt @@ -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 diff --git a/doc/texi/building/chapter.via.xcode.texi b/doc/texi/building/chapter.via.xcode.texi index 9983c94f..df42faca 100644 --- a/doc/texi/building/chapter.via.xcode.texi +++ b/doc/texi/building/chapter.via.xcode.texi @@ -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: diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index aa37cecc..41272fd4 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -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 = ( + 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; diff --git a/macosx/module.defs b/macosx/module.defs index 2b525acd..fec467db 100644 --- a/macosx/module.defs +++ b/macosx/module.defs @@ -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) ) diff --git a/macosx/module.xcode b/macosx/module.xcode index 5d75f515..81f66162 100644 --- a/macosx/module.xcode +++ b/macosx/module.xcode @@ -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)) diff --git a/make/configure.py b/make/configure.py index 2f8cf6e0..59a512fb 100644 --- a/make/configure.py +++ b/make/configure.py @@ -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 ) diff --git a/make/include/base.rules b/make/include/base.rules index f1288643..fd90d776 100644 --- a/make/include/base.rules +++ b/make/include/base.rules @@ -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 diff --git a/make/include/report.defs b/make/include/report.defs index 858c4552..7962a663 100644 --- a/make/include/report.defs +++ b/make/include/report.defs @@ -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 diff --git a/make/xcodemake.sh b/make/xcodemake old mode 100644 new mode 100755 similarity index 61% rename from make/xcodemake.sh rename to make/xcodemake index 5354b54c..a75cd3ed --- a/make/xcodemake.sh +++ b/make/xcodemake @@ -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