// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 45;
	objects = {

/* Begin PBXAggregateTarget section */
		0D006A101125FBE800A2FA32 /* testit.sh */ = {
			isa = PBXAggregateTarget;
			buildConfigurationList = 0D006A171125FC1C00A2FA32 /* Build configuration list for PBXAggregateTarget "testit.sh" */;
			buildPhases = (
				0D006A0F1125FBE800A2FA32 /* ShellScript */,
			);
			dependencies = (
				0D006A141125FBFD00A2FA32 /* PBXTargetDependency */,
			);
			name = testit.sh;
			productName = testit.sh;
		};
/* End PBXAggregateTarget section */

/* Begin PBXBuildFile section */
		0D00699D1125F0C400A2FA32 /* lookup3.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C31125E529001C69E6 /* lookup3.c */; };
		0D00699F1125F0CE00A2FA32 /* poptconfig.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C91125E54B001C69E6 /* poptconfig.c */; };
		0D0069A01125F0D100A2FA32 /* popthelp.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3CB1125E553001C69E6 /* popthelp.c */; };
		0D0069A11125F0D500A2FA32 /* poptint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3CD1125E55B001C69E6 /* poptint.c */; };
		0D0069A21125F0DA00A2FA32 /* poptparse.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3D11125E584001C69E6 /* poptparse.c */; };
		0D0069A31125F0E900A2FA32 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3D51125E5A6001C69E6 /* config.h */; };
		0D0069A41125F0EC00A2FA32 /* system.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3D31125E58E001C69E6 /* system.h */; };
		0D0069A51125F0F100A2FA32 /* poptint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3CF1125E56C001C69E6 /* poptint.h */; };
		0D0069A61125F0F400A2FA32 /* popt.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3C71125E53F001C69E6 /* popt.h */; };
		0D0069C61125F60200A2FA32 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0069C51125F60200A2FA32 /* libiconv.dylib */; };
		0D0069EE1125F81900A2FA32 /* test1.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D0069DD1125F73600A2FA32 /* test1.c */; };
		0D3BAD131126031E00B3E80C /* popt.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C51125E537001C69E6 /* popt.c */; };
		0D3BAD141126031E00B3E80C /* popt.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C51125E537001C69E6 /* popt.c */; };
		0D3EA3C41125E529001C69E6 /* lookup3.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C31125E529001C69E6 /* lookup3.c */; };
		0D3EA3C81125E53F001C69E6 /* popt.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3C71125E53F001C69E6 /* popt.h */; };
		0D3EA3CA1125E54B001C69E6 /* poptconfig.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3C91125E54B001C69E6 /* poptconfig.c */; };
		0D3EA3CC1125E553001C69E6 /* popthelp.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3CB1125E553001C69E6 /* popthelp.c */; };
		0D3EA3CE1125E55B001C69E6 /* poptint.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3CD1125E55B001C69E6 /* poptint.c */; };
		0D3EA3D01125E56C001C69E6 /* poptint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3CF1125E56C001C69E6 /* poptint.h */; };
		0D3EA3D21125E584001C69E6 /* poptparse.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D3EA3D11125E584001C69E6 /* poptparse.c */; };
		0D3EA3D41125E58E001C69E6 /* system.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3D31125E58E001C69E6 /* system.h */; };
		0D3EA3D61125E5A6001C69E6 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3EA3D51125E5A6001C69E6 /* config.h */; };
		0DB920BA1126181E000277F8 /* libpopt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D0069921125F03400A2FA32 /* libpopt.dylib */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		0D0069EF1125F83000A2FA32 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = D2AAC045055464E500DB518D;
			remoteInfo = libpopt.a;
		};
		0D006A131125FBFD00A2FA32 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 0D0069E91125F80A00A2FA32;
			remoteInfo = test1;
		};
		0DB9209B112616A9000277F8 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 0D0069911125F03400A2FA32;
			remoteInfo = libpopt.dylib;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		0D0069921125F03400A2FA32 /* libpopt.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libpopt.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
		0D0069C41125F43900A2FA32 /* popt.3 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = popt.3; sourceTree = "<group>"; };
		0D0069C51125F60200A2FA32 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
		0D0069DD1125F73600A2FA32 /* test1.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = test1.c; sourceTree = "<group>"; };
		0D0069EA1125F80A00A2FA32 /* test1 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test1; sourceTree = BUILT_PRODUCTS_DIR; };
		0D006A061125FADD00A2FA32 /* testit.sh */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = text.script.sh; path = testit.sh; sourceTree = "<group>"; };
		0D3BACFC1125FF5300B3E80C /* popt.ps */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = popt.ps; sourceTree = "<group>"; };
		0D3EA3C31125E529001C69E6 /* lookup3.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = lookup3.c; sourceTree = "<group>"; };
		0D3EA3C51125E537001C69E6 /* popt.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.c; fileEncoding = 7; path = popt.c; sourceTree = "<group>"; };
		0D3EA3C71125E53F001C69E6 /* popt.h */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.h; path = popt.h; sourceTree = "<group>"; };
		0D3EA3C91125E54B001C69E6 /* poptconfig.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = poptconfig.c; sourceTree = "<group>"; };
		0D3EA3CB1125E553001C69E6 /* popthelp.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = popthelp.c; sourceTree = "<group>"; };
		0D3EA3CD1125E55B001C69E6 /* poptint.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = poptint.c; sourceTree = "<group>"; };
		0D3EA3CF1125E56C001C69E6 /* poptint.h */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.h; path = poptint.h; sourceTree = "<group>"; };
		0D3EA3D11125E584001C69E6 /* poptparse.c */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.c; path = poptparse.c; sourceTree = "<group>"; };
		0D3EA3D31125E58E001C69E6 /* system.h */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.h; path = system.h; sourceTree = "<group>"; };
		0D3EA3D51125E5A6001C69E6 /* config.h */ = {isa = PBXFileReference; fileEncoding = 7; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
		D2AAC046055464E500DB518D /* libpopt.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpopt.a; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		0D0069901125F03400A2FA32 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D0069C61125F60200A2FA32 /* libiconv.dylib in Frameworks */,
				0DB920BA1126181E000277F8 /* libpopt.dylib in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		0D0069E81125F80A00A2FA32 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D289987405E68DCB004EDB86 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		08FB7794FE84155DC02AAC07 /* popt */ = {
			isa = PBXGroup;
			children = (
				08FB7795FE84155DC02AAC07 /* Source */,
				C6A0FF2B0290797F04C91782 /* Documentation */,
				1AB674ADFE9D54B511CA2CBB /* Products */,
				0D0069C51125F60200A2FA32 /* libiconv.dylib */,
			);
			name = popt;
			sourceTree = "<group>";
		};
		08FB7795FE84155DC02AAC07 /* Source */ = {
			isa = PBXGroup;
			children = (
				0D3EA3D51125E5A6001C69E6 /* config.h */,
				0D3EA3C31125E529001C69E6 /* lookup3.c */,
				0D3EA3C51125E537001C69E6 /* popt.c */,
				0D3EA3C71125E53F001C69E6 /* popt.h */,
				0D3EA3C91125E54B001C69E6 /* poptconfig.c */,
				0D3EA3CB1125E553001C69E6 /* popthelp.c */,
				0D3EA3CD1125E55B001C69E6 /* poptint.c */,
				0D3EA3CF1125E56C001C69E6 /* poptint.h */,
				0D3EA3D11125E584001C69E6 /* poptparse.c */,
				0D3EA3D31125E58E001C69E6 /* system.h */,
				0D0069DD1125F73600A2FA32 /* test1.c */,
				0D006A061125FADD00A2FA32 /* testit.sh */,
			);
			name = Source;
			sourceTree = "<group>";
		};
		1AB674ADFE9D54B511CA2CBB /* Products */ = {
			isa = PBXGroup;
			children = (
				D2AAC046055464E500DB518D /* libpopt.a */,
				0D0069921125F03400A2FA32 /* libpopt.dylib */,
				0D0069EA1125F80A00A2FA32 /* test1 */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		C6A0FF2B0290797F04C91782 /* Documentation */ = {
			isa = PBXGroup;
			children = (
				0D3BACFC1125FF5300B3E80C /* popt.ps */,
				0D0069C41125F43900A2FA32 /* popt.3 */,
			);
			name = Documentation;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		0D00698E1125F03400A2FA32 /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D0069A31125F0E900A2FA32 /* config.h in Headers */,
				0D0069A51125F0F100A2FA32 /* poptint.h in Headers */,
				0D0069A61125F0F400A2FA32 /* popt.h in Headers */,
				0D0069A41125F0EC00A2FA32 /* system.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2AAC043055464E500DB518D /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D3EA3D61125E5A6001C69E6 /* config.h in Headers */,
				0D3EA3C81125E53F001C69E6 /* popt.h in Headers */,
				0D3EA3D01125E56C001C69E6 /* poptint.h in Headers */,
				0D3EA3D41125E58E001C69E6 /* system.h in Headers */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
		0D0069911125F03400A2FA32 /* libpopt.dylib */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0D0069991125F07600A2FA32 /* Build configuration list for PBXNativeTarget "libpopt.dylib" */;
			buildPhases = (
				0D00698E1125F03400A2FA32 /* Headers */,
				0D00698F1125F03400A2FA32 /* Sources */,
				0D0069901125F03400A2FA32 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libpopt.dylib;
			productName = libpopt.dylib;
			productReference = 0D0069921125F03400A2FA32 /* libpopt.dylib */;
			productType = "com.apple.product-type.library.dynamic";
		};
		0D0069E91125F80A00A2FA32 /* test1 */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0D0069F31125F84F00A2FA32 /* Build configuration list for PBXNativeTarget "test1" */;
			buildPhases = (
				0D0069E71125F80A00A2FA32 /* Sources */,
				0D0069E81125F80A00A2FA32 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
				0DB9209C112616A9000277F8 /* PBXTargetDependency */,
				0D0069F01125F83000A2FA32 /* PBXTargetDependency */,
			);
			name = test1;
			productName = test1;
			productReference = 0D0069EA1125F80A00A2FA32 /* test1 */;
			productType = "com.apple.product-type.tool";
		};
		D2AAC045055464E500DB518D /* libpopt.a */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "libpopt.a" */;
			buildPhases = (
				D2AAC043055464E500DB518D /* Headers */,
				D2AAC044055464E500DB518D /* Sources */,
				D289987405E68DCB004EDB86 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = libpopt.a;
			productName = popt;
			productReference = D2AAC046055464E500DB518D /* libpopt.a */;
			productType = "com.apple.product-type.library.static";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		08FB7793FE84155DC02AAC07 /* Project object */ = {
			isa = PBXProject;
			buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "popt" */;
			compatibilityVersion = "Xcode 3.1";
			hasScannedForEncodings = 1;
			knownRegions = (
				English,
				Japanese,
				French,
				German,
				"",
			);
			mainGroup = 08FB7794FE84155DC02AAC07 /* popt */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				D2AAC045055464E500DB518D /* libpopt.a */,
				0D0069911125F03400A2FA32 /* libpopt.dylib */,
				0D0069E91125F80A00A2FA32 /* test1 */,
				0D006A101125FBE800A2FA32 /* testit.sh */,
			);
		};
/* End PBXProject section */

/* Begin PBXShellScriptBuildPhase section */
		0D006A0F1125FBE800A2FA32 /* ShellScript */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "# shell script goes here\nexit 0";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		0D00698F1125F03400A2FA32 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D00699D1125F0C400A2FA32 /* lookup3.c in Sources */,
				0D3BAD141126031E00B3E80C /* popt.c in Sources */,
				0D00699F1125F0CE00A2FA32 /* poptconfig.c in Sources */,
				0D0069A01125F0D100A2FA32 /* popthelp.c in Sources */,
				0D0069A11125F0D500A2FA32 /* poptint.c in Sources */,
				0D0069A21125F0DA00A2FA32 /* poptparse.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		0D0069E71125F80A00A2FA32 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D0069EE1125F81900A2FA32 /* test1.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2AAC044055464E500DB518D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D3EA3C41125E529001C69E6 /* lookup3.c in Sources */,
				0D3BAD131126031E00B3E80C /* popt.c in Sources */,
				0D3EA3CA1125E54B001C69E6 /* poptconfig.c in Sources */,
				0D3EA3CC1125E553001C69E6 /* popthelp.c in Sources */,
				0D3EA3CE1125E55B001C69E6 /* poptint.c in Sources */,
				0D3EA3D21125E584001C69E6 /* poptparse.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		0D0069F01125F83000A2FA32 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = D2AAC045055464E500DB518D /* libpopt.a */;
			targetProxy = 0D0069EF1125F83000A2FA32 /* PBXContainerItemProxy */;
		};
		0D006A141125FBFD00A2FA32 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 0D0069E91125F80A00A2FA32 /* test1 */;
			targetProxy = 0D006A131125FBFD00A2FA32 /* PBXContainerItemProxy */;
		};
		0DB9209C112616A9000277F8 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 0D0069911125F03400A2FA32 /* libpopt.dylib */;
			targetProxy = 0DB9209B112616A9000277F8 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		0D0069931125F03500A2FA32 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				COPY_PHASE_STRIP = NO;
				EXECUTABLE_PREFIX = lib;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_MODEL_TUNING = G5;
				GCC_OPTIMIZATION_LEVEL = 2;
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
				INSTALL_PATH = /usr/local/lib;
				OTHER_LDFLAGS = "-liconv";
				PREBINDING = NO;
				PRODUCT_NAME = popt;
			};
			name = Debug;
		};
		0D0069941125F03500A2FA32 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				COPY_PHASE_STRIP = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				EXECUTABLE_PREFIX = lib;
				GCC_ENABLE_FIX_AND_CONTINUE = NO;
				GCC_MODEL_TUNING = G5;
				INSTALL_PATH = /usr/local/lib;
				PREBINDING = NO;
				PRODUCT_NAME = popt;
				ZERO_LINK = NO;
			};
			name = Release;
		};
		0D0069EC1125F80A00A2FA32 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_MODEL_TUNING = G5;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
				INSTALL_PATH = /usr/local/bin;
				MACH_O_TYPE = mh_execute;
				OTHER_LDFLAGS = (
					"-lpopt",
					"-liconv",
				);
				PREBINDING = NO;
				PRODUCT_NAME = test1;
			};
			name = Debug;
		};
		0D0069ED1125F80A00A2FA32 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				COPY_PHASE_STRIP = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_ENABLE_FIX_AND_CONTINUE = NO;
				GCC_MODEL_TUNING = G5;
				INSTALL_PATH = /usr/local/bin;
				PREBINDING = NO;
				PRODUCT_NAME = test1;
				ZERO_LINK = NO;
			};
			name = Release;
		};
		0D006A111125FBE800A2FA32 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				PRODUCT_NAME = testit.sh;
			};
			name = Debug;
		};
		0D006A121125FBE800A2FA32 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COPY_PHASE_STRIP = YES;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_ENABLE_FIX_AND_CONTINUE = NO;
				PRODUCT_NAME = testit.sh;
				ZERO_LINK = NO;
			};
			name = Release;
		};
		1DEB91EC08733DB70010E9CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_MODEL_TUNING = G5;
				GCC_OPTIMIZATION_LEVEL = 2;
				GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H;
				INSTALL_PATH = /usr/local/lib;
				"New Setting" = "";
				PRODUCT_NAME = popt;
			};
			name = Debug;
		};
		1DEB91ED08733DB70010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_MODEL_TUNING = G5;
				INSTALL_PATH = /usr/local/lib;
				PRODUCT_NAME = popt;
			};
			name = Release;
		};
		1DEB91F008733DB70010E9CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				ONLY_ACTIVE_ARCH = YES;
				PREBINDING = NO;
				SDKROOT = macosx10.6;
			};
			name = Debug;
		};
		1DEB91F108733DB70010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				PREBINDING = NO;
				SDKROOT = macosx10.6;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		0D0069991125F07600A2FA32 /* Build configuration list for PBXNativeTarget "libpopt.dylib" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D0069931125F03500A2FA32 /* Debug */,
				0D0069941125F03500A2FA32 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		0D0069F31125F84F00A2FA32 /* Build configuration list for PBXNativeTarget "test1" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D0069EC1125F80A00A2FA32 /* Debug */,
				0D0069ED1125F80A00A2FA32 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		0D006A171125FC1C00A2FA32 /* Build configuration list for PBXAggregateTarget "testit.sh" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D006A111125FBE800A2FA32 /* Debug */,
				0D006A121125FBE800A2FA32 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "libpopt.a" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1DEB91EC08733DB70010E9CD /* Debug */,
				1DEB91ED08733DB70010E9CD /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "popt" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				1DEB91F008733DB70010E9CD /* Debug */,
				1DEB91F108733DB70010E9CD /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
}
