Initial commit

This commit is contained in:
loicloic
2014-03-22 22:16:57 +01:00
parent 1b9e4fd466
commit 1af2d1d947
103 changed files with 72903 additions and 1 deletions
Binary file not shown.
Binary file not shown.
+861
View File
@@ -0,0 +1,861 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
8230C6A110AFBC9100412F24 /* Distribution */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 8230C6AD10AFBCC700412F24 /* Build configuration list for PBXAggregateTarget "Distribution" */;
buildPhases = (
8230C6AC10AFBCC700412F24 /* CopyFiles */,
8230C6A010AFBC9100412F24 /* ShellScript */,
);
dependencies = (
8230C6A510AFBC9600412F24 /* PBXTargetDependency */,
);
name = Distribution;
productName = Distribution;
};
82B9195310150EA2007BD6DB /* Build & Install FreeDO */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 82B9195D10150EA4007BD6DB /* Build configuration list for PBXAggregateTarget "Build & Install FreeDO" */;
buildPhases = (
82B9195210150EA2007BD6DB /* ShellScript */,
);
dependencies = (
82B9195F10150EB3007BD6DB /* PBXTargetDependency */,
);
name = "Build & Install FreeDO";
productName = "Build & Install";
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
37E8246E172B7BEB00E58D77 /* OE3DOSystemResponderClient.h in Resources */ = {isa = PBXBuildFile; fileRef = 37E8246D172B7BEB00E58D77 /* OE3DOSystemResponderClient.h */; };
575ACC171582D4E200EAC45A /* _3do_sys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12271582B03E003F64E5 /* _3do_sys.cpp */; };
575ACC181582D4E200EAC45A /* arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12281582B03E003F64E5 /* arm.cpp */; };
575ACC191582D4E200EAC45A /* bitop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D122A1582B03E003F64E5 /* bitop.cpp */; };
575ACC1A1582D4E200EAC45A /* Clio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D122C1582B03E003F64E5 /* Clio.cpp */; };
575ACC1B1582D4E200EAC45A /* DiagPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D122E1582B03E003F64E5 /* DiagPort.cpp */; };
575ACC1C1582D4E200EAC45A /* DSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12301582B03E003F64E5 /* DSP.cpp */; };
575ACC1D1582D4E200EAC45A /* Iso.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12341582B03F003F64E5 /* Iso.cpp */; };
575ACC1E1582D4E200EAC45A /* Madam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12371582B03F003F64E5 /* Madam.cpp */; };
575ACC1F1582D4E200EAC45A /* quarz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D123A1582B03F003F64E5 /* quarz.cpp */; };
575ACC201582D4E200EAC45A /* SPORT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D123C1582B03F003F64E5 /* SPORT.cpp */; };
575ACC211582D4E200EAC45A /* vdlp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D123F1582B03F003F64E5 /* vdlp.cpp */; };
575ACC221582D4E200EAC45A /* XBUS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 578D12411582B03F003F64E5 /* XBUS.cpp */; };
575ACC2D1582D50400EAC45A /* cd.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBE81582C37400EAC45A /* cd.c */; };
575ACC2E1582D50400EAC45A /* cdtext.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBEA1582C37400EAC45A /* cdtext.c */; };
575ACC2F1582D50400EAC45A /* cue_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBEC1582C37400EAC45A /* cue_parser.c */; };
575ACC301582D50400EAC45A /* cue_parser.ym in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBEE1582C37400EAC45A /* cue_parser.ym */; };
575ACC311582D50400EAC45A /* cue_scanner.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBEF1582C37400EAC45A /* cue_scanner.c */; };
575ACC321582D50400EAC45A /* cue_scanner.lm in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBF01582C37400EAC45A /* cue_scanner.lm */; };
575ACC331582D50400EAC45A /* rem.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBF71582C37400EAC45A /* rem.c */; };
575ACC341582D50400EAC45A /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = 575ACBF91582C37400EAC45A /* time.c */; };
575ACC391582D51900EAC45A /* liblibcue.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 575ACC271582D4F000EAC45A /* liblibcue.a */; };
575ACC3A1582D51900EAC45A /* liblibfreedo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 575ACC131582D4BE00EAC45A /* liblibfreedo.a */; };
578D12251582B00B003F64E5 /* freedo.icns in Resources */ = {isa = PBXBuildFile; fileRef = 578D12241582B00B003F64E5 /* freedo.icns */; };
57C189551581E581007AC24B /* freedoconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57C189541581E581007AC24B /* freedoconfig.cpp */; };
8230C69910AFBC3A00412F24 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 8230C69810AFBC3A00412F24 /* dsa_pub.pem */; };
8230C6AE10AFBCE500412F24 /* config.yaml in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8230C6AA10AFBCC700412F24 /* config.yaml */; };
826FDE5710142B230023A8E9 /* license.txt in Resources */ = {isa = PBXBuildFile; fileRef = 826FDD6D10142B230023A8E9 /* license.txt */; };
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
942597C515146FF40074E3A3 /* OpenEmuBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 942597C415146FF40074E3A3 /* OpenEmuBase.framework */; };
94D9257314CA9879008F697D /* FreeDOGameCore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 826FE0F41014D8930023A8E9 /* FreeDOGameCore.mm */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
575ACC351582D51000EAC45A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 575ACC121582D4BE00EAC45A;
remoteInfo = libfreedo;
};
575ACC371582D51000EAC45A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 575ACC261582D4F000EAC45A;
remoteInfo = libcue;
};
8230C6A410AFBC9600412F24 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
remoteInfo = BSNES;
};
82B9195E10150EB3007BD6DB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 089C1669FE841209C02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
remoteInfo = BSNES;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
578D12E61582B9A5003F64E5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 6;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8230C6AC10AFBCC700412F24 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 16;
files = (
8230C6AE10AFBCE500412F24 /* config.yaml in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
37E8246D172B7BEB00E58D77 /* OE3DOSystemResponderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OE3DOSystemResponderClient.h; path = ../OpenEmu/3DO/OE3DOSystemResponderClient.h; sourceTree = "<group>"; };
575ACBE81582C37400EAC45A /* cd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cd.c; sourceTree = "<group>"; };
575ACBE91582C37400EAC45A /* cd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cd.h; sourceTree = "<group>"; };
575ACBEA1582C37400EAC45A /* cdtext.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cdtext.c; sourceTree = "<group>"; };
575ACBEB1582C37400EAC45A /* cdtext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cdtext.h; sourceTree = "<group>"; };
575ACBEC1582C37400EAC45A /* cue_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cue_parser.c; sourceTree = "<group>"; };
575ACBED1582C37400EAC45A /* cue_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cue_parser.h; sourceTree = "<group>"; };
575ACBEE1582C37400EAC45A /* cue_parser.ym */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = cue_parser.ym; sourceTree = "<group>"; };
575ACBEF1582C37400EAC45A /* cue_scanner.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cue_scanner.c; sourceTree = "<group>"; };
575ACBF01582C37400EAC45A /* cue_scanner.lm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lex; path = cue_scanner.lm; sourceTree = "<group>"; };
575ACBF11582C37400EAC45A /* libcue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libcue.h; sourceTree = "<group>"; };
575ACBF71582C37400EAC45A /* rem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rem.c; sourceTree = "<group>"; };
575ACBF81582C37400EAC45A /* rem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rem.h; sourceTree = "<group>"; };
575ACBF91582C37400EAC45A /* time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = time.c; sourceTree = "<group>"; };
575ACBFA1582C37400EAC45A /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = "<group>"; };
575ACC0E1582C3A100EAC45A /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = "libcue-1.4.0/config.h"; sourceTree = SOURCE_ROOT; };
575ACC131582D4BE00EAC45A /* liblibfreedo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblibfreedo.a; sourceTree = BUILT_PRODUCTS_DIR; };
575ACC271582D4F000EAC45A /* liblibcue.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblibcue.a; sourceTree = BUILT_PRODUCTS_DIR; };
578D12241582B00B003F64E5 /* freedo.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = freedo.icns; sourceTree = SOURCE_ROOT; };
578D12271582B03E003F64E5 /* _3do_sys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = _3do_sys.cpp; sourceTree = "<group>"; };
578D12281582B03E003F64E5 /* arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = arm.cpp; sourceTree = "<group>"; };
578D12291582B03E003F64E5 /* arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arm.h; sourceTree = "<group>"; };
578D122A1582B03E003F64E5 /* bitop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitop.cpp; sourceTree = "<group>"; };
578D122B1582B03E003F64E5 /* bitop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitop.h; sourceTree = "<group>"; };
578D122C1582B03E003F64E5 /* Clio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Clio.cpp; sourceTree = "<group>"; };
578D122D1582B03E003F64E5 /* Clio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Clio.h; sourceTree = "<group>"; };
578D122E1582B03E003F64E5 /* DiagPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DiagPort.cpp; sourceTree = "<group>"; };
578D122F1582B03E003F64E5 /* DiagPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagPort.h; sourceTree = "<group>"; };
578D12301582B03E003F64E5 /* DSP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DSP.cpp; sourceTree = "<group>"; };
578D12311582B03E003F64E5 /* DSP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DSP.h; sourceTree = "<group>"; };
578D12321582B03E003F64E5 /* freedoconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freedoconfig.h; sourceTree = "<group>"; };
578D12331582B03F003F64E5 /* freedocore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freedocore.h; sourceTree = "<group>"; };
578D12341582B03F003F64E5 /* Iso.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Iso.cpp; sourceTree = "<group>"; };
578D12351582B03F003F64E5 /* IsoXBUS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsoXBUS.h; sourceTree = "<group>"; };
578D12371582B03F003F64E5 /* Madam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Madam.cpp; sourceTree = "<group>"; };
578D12381582B03F003F64E5 /* Madam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Madam.h; sourceTree = "<group>"; };
578D123A1582B03F003F64E5 /* quarz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quarz.cpp; sourceTree = "<group>"; };
578D123B1582B03F003F64E5 /* quarz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quarz.h; sourceTree = "<group>"; };
578D123C1582B03F003F64E5 /* SPORT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPORT.cpp; sourceTree = "<group>"; };
578D123D1582B03F003F64E5 /* SPORT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPORT.h; sourceTree = "<group>"; };
578D123E1582B03F003F64E5 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
578D123F1582B03F003F64E5 /* vdlp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vdlp.cpp; sourceTree = "<group>"; };
578D12401582B03F003F64E5 /* vdlp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vdlp.h; sourceTree = "<group>"; };
578D12411582B03F003F64E5 /* XBUS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XBUS.cpp; sourceTree = "<group>"; };
578D12421582B03F003F64E5 /* XBUS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XBUS.h; sourceTree = "<group>"; };
57C189541581E581007AC24B /* freedoconfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = freedoconfig.cpp; sourceTree = "<group>"; };
8230C69810AFBC3A00412F24 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = "<group>"; };
8230C6AA10AFBCC700412F24 /* config.yaml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = config.yaml; sourceTree = "<group>"; };
826FDD6D10142B230023A8E9 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = license.txt; sourceTree = "<group>"; };
826FE0F31014D8930023A8E9 /* FreeDOGameCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FreeDOGameCore.h; sourceTree = "<group>"; };
826FE0F41014D8930023A8E9 /* FreeDOGameCore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FreeDOGameCore.mm; sourceTree = "<group>"; };
82B91C841015267F007BD6DB /* libco.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libco.a; sourceTree = "<group>"; };
8D5B49B6048680CD000E48DA /* FreeDO.oecoreplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FreeDO.oecoreplugin; sourceTree = BUILT_PRODUCTS_DIR; };
8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
942597C415146FF40074E3A3 /* OpenEmuBase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenEmuBase.framework; path = ../OpenEmu/build/Release/OpenEmuBase.framework; sourceTree = "<group>"; };
D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
575ACC101582D4BE00EAC45A /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
575ACC241582D4F000EAC45A /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8D5B49B3048680CD000E48DA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
575ACC391582D51900EAC45A /* liblibcue.a in Frameworks */,
575ACC3A1582D51900EAC45A /* liblibfreedo.a in Frameworks */,
942597C515146FF40074E3A3 /* OpenEmuBase.framework in Frameworks */,
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
089C166AFE841209C02AAC07 /* BSNES */ = {
isa = PBXGroup;
children = (
08FB77AFFE84173DC02AAC07 /* Classes */,
32C88E010371C26100C91783 /* Other Sources */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
19C28FB8FE9D52D311CA2CBB /* Products */,
);
name = BSNES;
sourceTree = "<group>";
};
089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
);
name = "Frameworks and Libraries";
sourceTree = "<group>";
};
089C167CFE841241C02AAC07 /* Resources */ = {
isa = PBXGroup;
children = (
8230C69810AFBC3A00412F24 /* dsa_pub.pem */,
8D5B49B7048680CD000E48DA /* Info.plist */,
089C167DFE841241C02AAC07 /* InfoPlist.strings */,
);
name = Resources;
sourceTree = "<group>";
};
08FB77AFFE84173DC02AAC07 /* Classes */ = {
isa = PBXGroup;
children = (
575ACBE01582C37400EAC45A /* libcue */,
578D12261582B03E003F64E5 /* libfreedo */,
826FE0F31014D8930023A8E9 /* FreeDOGameCore.h */,
826FE0F41014D8930023A8E9 /* FreeDOGameCore.mm */,
57C189541581E581007AC24B /* freedoconfig.cpp */,
37E8246D172B7BEB00E58D77 /* OE3DOSystemResponderClient.h */,
826FDD6610142B230023A8E9 /* data */,
);
name = Classes;
sourceTree = "<group>";
};
1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
942597C415146FF40074E3A3 /* OpenEmuBase.framework */,
82B91C841015267F007BD6DB /* libco.a */,
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
089C167FFE841241C02AAC07 /* AppKit.framework */,
D2F7E65807B2D6F200F64583 /* CoreData.framework */,
089C1672FE841209C02AAC07 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
19C28FB8FE9D52D311CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D5B49B6048680CD000E48DA /* FreeDO.oecoreplugin */,
575ACC131582D4BE00EAC45A /* liblibfreedo.a */,
575ACC271582D4F000EAC45A /* liblibcue.a */,
);
name = Products;
sourceTree = "<group>";
};
32C88E010371C26100C91783 /* Other Sources */ = {
isa = PBXGroup;
children = (
8230C6AA10AFBCC700412F24 /* config.yaml */,
);
name = "Other Sources";
sourceTree = "<group>";
};
575ACBE01582C37400EAC45A /* libcue */ = {
isa = PBXGroup;
children = (
575ACC0E1582C3A100EAC45A /* config.h */,
575ACBE81582C37400EAC45A /* cd.c */,
575ACBE91582C37400EAC45A /* cd.h */,
575ACBEA1582C37400EAC45A /* cdtext.c */,
575ACBEB1582C37400EAC45A /* cdtext.h */,
575ACBEC1582C37400EAC45A /* cue_parser.c */,
575ACBED1582C37400EAC45A /* cue_parser.h */,
575ACBEE1582C37400EAC45A /* cue_parser.ym */,
575ACBEF1582C37400EAC45A /* cue_scanner.c */,
575ACBF01582C37400EAC45A /* cue_scanner.lm */,
575ACBF11582C37400EAC45A /* libcue.h */,
575ACBF71582C37400EAC45A /* rem.c */,
575ACBF81582C37400EAC45A /* rem.h */,
575ACBF91582C37400EAC45A /* time.c */,
575ACBFA1582C37400EAC45A /* time.h */,
);
name = libcue;
path = "libcue-1.4.0/src/libcue";
sourceTree = "<group>";
};
578D12261582B03E003F64E5 /* libfreedo */ = {
isa = PBXGroup;
children = (
578D12271582B03E003F64E5 /* _3do_sys.cpp */,
578D12281582B03E003F64E5 /* arm.cpp */,
578D12291582B03E003F64E5 /* arm.h */,
578D122A1582B03E003F64E5 /* bitop.cpp */,
578D122B1582B03E003F64E5 /* bitop.h */,
578D122C1582B03E003F64E5 /* Clio.cpp */,
578D122D1582B03E003F64E5 /* Clio.h */,
578D122E1582B03E003F64E5 /* DiagPort.cpp */,
578D122F1582B03E003F64E5 /* DiagPort.h */,
578D12301582B03E003F64E5 /* DSP.cpp */,
578D12311582B03E003F64E5 /* DSP.h */,
578D12321582B03E003F64E5 /* freedoconfig.h */,
578D12331582B03F003F64E5 /* freedocore.h */,
578D12341582B03F003F64E5 /* Iso.cpp */,
578D12351582B03F003F64E5 /* IsoXBUS.h */,
578D12371582B03F003F64E5 /* Madam.cpp */,
578D12381582B03F003F64E5 /* Madam.h */,
578D123A1582B03F003F64E5 /* quarz.cpp */,
578D123B1582B03F003F64E5 /* quarz.h */,
578D123C1582B03F003F64E5 /* SPORT.cpp */,
578D123D1582B03F003F64E5 /* SPORT.h */,
578D123E1582B03F003F64E5 /* types.h */,
578D123F1582B03F003F64E5 /* vdlp.cpp */,
578D12401582B03F003F64E5 /* vdlp.h */,
578D12411582B03F003F64E5 /* XBUS.cpp */,
578D12421582B03F003F64E5 /* XBUS.h */,
);
path = libfreedo;
sourceTree = "<group>";
};
826FDD6610142B230023A8E9 /* data */ = {
isa = PBXGroup;
children = (
578D12241582B00B003F64E5 /* freedo.icns */,
826FDD6D10142B230023A8E9 /* license.txt */,
);
path = data;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
575ACC111582D4BE00EAC45A /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
575ACC251582D4F000EAC45A /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
575ACC121582D4BE00EAC45A /* libfreedo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 575ACC141582D4BE00EAC45A /* Build configuration list for PBXNativeTarget "libfreedo" */;
buildPhases = (
575ACC0F1582D4BE00EAC45A /* Sources */,
575ACC101582D4BE00EAC45A /* Frameworks */,
575ACC111582D4BE00EAC45A /* Headers */,
);
buildRules = (
);
dependencies = (
);
name = libfreedo;
productName = libfreedo;
productReference = 575ACC131582D4BE00EAC45A /* liblibfreedo.a */;
productType = "com.apple.product-type.library.static";
};
575ACC261582D4F000EAC45A /* libcue */ = {
isa = PBXNativeTarget;
buildConfigurationList = 575ACC281582D4F000EAC45A /* Build configuration list for PBXNativeTarget "libcue" */;
buildPhases = (
575ACC231582D4F000EAC45A /* Sources */,
575ACC241582D4F000EAC45A /* Frameworks */,
575ACC251582D4F000EAC45A /* Headers */,
);
buildRules = (
);
dependencies = (
);
name = libcue;
productName = libcue;
productReference = 575ACC271582D4F000EAC45A /* liblibcue.a */;
productType = "com.apple.product-type.library.static";
};
8D5B49AC048680CD000E48DA /* FreeDO */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "FreeDO" */;
buildPhases = (
8D5B49AF048680CD000E48DA /* Resources */,
8D5B49B1048680CD000E48DA /* Sources */,
8D5B49B3048680CD000E48DA /* Frameworks */,
578D12E61582B9A5003F64E5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
575ACC361582D51000EAC45A /* PBXTargetDependency */,
575ACC381582D51000EAC45A /* PBXTargetDependency */,
);
name = FreeDO;
productInstallPath = "$(HOME)/Library/Bundles";
productName = BSNES;
productReference = 8D5B49B6048680CD000E48DA /* FreeDO.oecoreplugin */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 0430;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FreeDO" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
en,
);
mainGroup = 089C166AFE841209C02AAC07 /* BSNES */;
projectDirPath = "";
projectRoot = "";
targets = (
8D5B49AC048680CD000E48DA /* FreeDO */,
82B9195310150EA2007BD6DB /* Build & Install FreeDO */,
8230C6A110AFBC9100412F24 /* Distribution */,
575ACC121582D4BE00EAC45A /* libfreedo */,
575ACC261582D4F000EAC45A /* libcue */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8D5B49AF048680CD000E48DA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */,
826FDE5710142B230023A8E9 /* license.txt in Resources */,
8230C69910AFBC3A00412F24 /* dsa_pub.pem in Resources */,
578D12251582B00B003F64E5 /* freedo.icns in Resources */,
37E8246E172B7BEB00E58D77 /* OE3DOSystemResponderClient.h in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
8230C6A010AFBC9100412F24 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = /usr/bin/openemu_rb_automation.rb;
};
82B9195210150EA2007BD6DB /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "mkdir -p \"$USER_LIBRARY_DIR/Application Support/OpenEmu/Cores\"\nrm -rf \"$USER_LIBRARY_DIR/Application Support/OpenEmu/Cores/$PROJECT_NAME.oecoreplugin\"{,.dSYM}\ncp -rf \"$BUILT_PRODUCTS_DIR/$PROJECT_NAME.oecoreplugin\"{,.dSYM} \"$USER_LIBRARY_DIR/Application Support/OpenEmu/Cores/\"\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
575ACC0F1582D4BE00EAC45A /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
575ACC171582D4E200EAC45A /* _3do_sys.cpp in Sources */,
575ACC181582D4E200EAC45A /* arm.cpp in Sources */,
575ACC191582D4E200EAC45A /* bitop.cpp in Sources */,
575ACC1A1582D4E200EAC45A /* Clio.cpp in Sources */,
575ACC1B1582D4E200EAC45A /* DiagPort.cpp in Sources */,
575ACC1C1582D4E200EAC45A /* DSP.cpp in Sources */,
575ACC1D1582D4E200EAC45A /* Iso.cpp in Sources */,
575ACC1E1582D4E200EAC45A /* Madam.cpp in Sources */,
575ACC1F1582D4E200EAC45A /* quarz.cpp in Sources */,
575ACC201582D4E200EAC45A /* SPORT.cpp in Sources */,
575ACC211582D4E200EAC45A /* vdlp.cpp in Sources */,
575ACC221582D4E200EAC45A /* XBUS.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
575ACC231582D4F000EAC45A /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
575ACC2D1582D50400EAC45A /* cd.c in Sources */,
575ACC2E1582D50400EAC45A /* cdtext.c in Sources */,
575ACC2F1582D50400EAC45A /* cue_parser.c in Sources */,
575ACC301582D50400EAC45A /* cue_parser.ym in Sources */,
575ACC311582D50400EAC45A /* cue_scanner.c in Sources */,
575ACC321582D50400EAC45A /* cue_scanner.lm in Sources */,
575ACC331582D50400EAC45A /* rem.c in Sources */,
575ACC341582D50400EAC45A /* time.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8D5B49B1048680CD000E48DA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
94D9257314CA9879008F697D /* FreeDOGameCore.mm in Sources */,
57C189551581E581007AC24B /* freedoconfig.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
575ACC361582D51000EAC45A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 575ACC121582D4BE00EAC45A /* libfreedo */;
targetProxy = 575ACC351582D51000EAC45A /* PBXContainerItemProxy */;
};
575ACC381582D51000EAC45A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 575ACC261582D4F000EAC45A /* libcue */;
targetProxy = 575ACC371582D51000EAC45A /* PBXContainerItemProxy */;
};
8230C6A510AFBC9600412F24 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8D5B49AC048680CD000E48DA /* FreeDO */;
targetProxy = 8230C6A410AFBC9600412F24 /* PBXContainerItemProxy */;
};
82B9195F10150EB3007BD6DB /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8D5B49AC048680CD000E48DA /* FreeDO */;
targetProxy = 82B9195E10150EB3007BD6DB /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C167EFE841241C02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
1DEB913B08733D840010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
"\"$(PROJECT_DIR)/core/lib/\"",
"\"$(PROJECT_DIR)/core/\"",
"\"$(PROJECT_DIR)/libfreedo\"",
"\"$(PROJECT_DIR)/libcue/\"/**",
);
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Bundles";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
"\"$(SRCROOT)/libfreedo\"",
);
OTHER_CFLAGS = (
"-I.",
"-llibcue",
"-DPROFILE_PERFORMANCE",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-g",
);
PRODUCT_NAME = FreeDO;
USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)/core/\" \"$(PROJECT_DIR)/libcue/\"/** \"$(PROJECT_DIR)/libfreedo/\"";
WRAPPER_EXTENSION = oecoreplugin;
};
name = Debug;
};
1DEB913C08733D840010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
"\"$(PROJECT_DIR)/core/lib/\"",
"\"$(PROJECT_DIR)/core/\"",
"\"$(PROJECT_DIR)/libfreedo\"",
"\"$(PROJECT_DIR)/libcue/\"/**",
);
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Bundles";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
"\"$(SRCROOT)/libfreedo\"",
);
OTHER_CFLAGS = (
"-I.",
"-llibcue",
"-DPROFILE_PERFORMANCE",
);
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-g",
);
PRODUCT_NAME = FreeDO;
USER_HEADER_SEARCH_PATHS = "\"$(PROJECT_DIR)/core/\" \"$(PROJECT_DIR)/libcue/\"/** \"$(PROJECT_DIR)/libfreedo/\"";
WRAPPER_EXTENSION = oecoreplugin;
};
name = Release;
};
1DEB913F08733D840010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
SDKROOT = macosx;
VALID_ARCHS = x86_64;
};
name = Debug;
};
1DEB914008733D840010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
GCC_OPTIMIZATION_LEVEL = 3;
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
SDKROOT = macosx;
VALID_ARCHS = x86_64;
};
name = Release;
};
575ACC151582D4BE00EAC45A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
575ACC161582D4BE00EAC45A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = YES;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
575ACC291582D4F000EAC45A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
575ACC2A1582D4F000EAC45A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = YES;
EXECUTABLE_PREFIX = lib;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
8230C6A210AFBC9100412F24 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.6;
PRODUCT_NAME = Distribution;
};
name = Debug;
};
8230C6A310AFBC9100412F24 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.6;
PRODUCT_NAME = Distribution;
};
name = Release;
};
82B9195410150EA2007BD6DB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.6;
PRODUCT_NAME = "Build & Install";
};
name = Debug;
};
82B9195510150EA2007BD6DB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.6;
PRODUCT_NAME = "Build & Install";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "FreeDO" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB913B08733D840010E9CD /* Debug */,
1DEB913C08733D840010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FreeDO" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB913F08733D840010E9CD /* Debug */,
1DEB914008733D840010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
575ACC141582D4BE00EAC45A /* Build configuration list for PBXNativeTarget "libfreedo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
575ACC151582D4BE00EAC45A /* Debug */,
575ACC161582D4BE00EAC45A /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
575ACC281582D4F000EAC45A /* Build configuration list for PBXNativeTarget "libcue" */ = {
isa = XCConfigurationList;
buildConfigurations = (
575ACC291582D4F000EAC45A /* Debug */,
575ACC2A1582D4F000EAC45A /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8230C6AD10AFBCC700412F24 /* Build configuration list for PBXAggregateTarget "Distribution" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8230C6A210AFBC9100412F24 /* Debug */,
8230C6A310AFBC9100412F24 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
82B9195D10150EA4007BD6DB /* Build configuration list for PBXAggregateTarget "Build & Install FreeDO" */ = {
isa = XCConfigurationList;
buildConfigurations = (
82B9195410150EA2007BD6DB /* Debug */,
82B9195510150EA2007BD6DB /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "82B9195310150EA2007BD6DB"
BuildableName = "Build &amp; Install FreeDO"
BlueprintName = "Build &amp; Install FreeDO"
ReferencedContainer = "container:FreeDO.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>Build &amp; Install FreeDO.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>575ACC121582D4BE00EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>575ACC261582D4F000EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8230C6A110AFBC9100412F24</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>82B9195310150EA2007BD6DB</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8D5B49AC048680CD000E48DA</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "82B9195310150EA2007BD6DB"
BuildableName = "Build &amp; Install FreeDO"
BlueprintName = "Build &amp; Install FreeDO"
ReferencedContainer = "container:FreeDO.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>Build &amp; Install FreeDO.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>575ACC121582D4BE00EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>575ACC261582D4F000EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8230C6A110AFBC9100412F24</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>82B9195310150EA2007BD6DB</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8D5B49AC048680CD000E48DA</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>575ACC121582D4BE00EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>575ACC261582D4F000EAC45A</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8230C6A110AFBC9100412F24</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>82B9195310150EA2007BD6DB</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>8D5B49AC048680CD000E48DA</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
+161
View File
@@ -0,0 +1,161 @@
/*
Copyright (c) 2009, OpenEmu Team
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the OpenEmu Team nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import <Cocoa/Cocoa.h>
#import <OpenEmuBase/OEGameCore.h>
@class OERingBuffer;
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
struct VolumeHeader // 132 bytes
{
Byte recordType; // 1 byte
Byte syncBytes[5]; // 5 bytes
Byte recordVersion; // 1 byte
Byte flags; // 1 byte
Byte comment[32]; // 32 bytes
Byte label[32]; // 32 bytes
UInt32 id; // 4 bytes
UInt32 blockSize; // 4 bytes
UInt32 blockCount; // 4 bytes
UInt32 rootDirId; // 4 bytes
UInt32 rootDirBlocks; // 4 bytes
UInt32 rootDirBlockSize; // 4 bytes
UInt32 lastRootDirCopy; // 4 bytes
UInt32 rootDirCopies[8]; // 32 bytes
};
typedef enum
{
InterfaceFunction_FDP_FREEDOCORE_VERSION = 0,
InterfaceFunction_FDP_INIT = 1, //set ext_interface
InterfaceFunction_FDP_DESTROY = 2,
InterfaceFunction_FDP_DO_EXECFRAME = 3, //execute 1/60 of second
InterfaceFunction_FDP_DO_FRAME_MT = 4, //multitasking
InterfaceFunction_FDP_DO_EXECFRAME_MT = 5, //multitasking
InterfaceFunction_FDP_DO_LOAD = 6, //load state from buffer, returns !NULL if everything went smooth
InterfaceFunction_FDP_GET_SAVE_SIZE = 7, //return size of savestatemachine
InterfaceFunction_FDP_DO_SAVE = 8, //save state to buffer
InterfaceFunction_FDP_GETP_NVRAM = 9, //returns ptr to NVRAM 32K
InterfaceFunction_FDP_GETP_RAMS = 10, //returns ptr to RAM 3M
InterfaceFunction_FDP_GETP_ROMS = 11, //returns ptr to ROM 2M
InterfaceFunction_FDP_GETP_PROFILE = 12, //returns profile pointer, sizeof = 3M/4
InterfaceFunction_FDP_BUGTEMPORALFIX = 13, // JMK NOTE: Unused?
InterfaceFunction_FDP_SET_ARMCLOCK = 14,
InterfaceFunction_FDP_SET_TEXQUALITY = 15,
InterfaceFunction_FDP_GETP_WRCOUNT = 16, // JMK NOTE: Unused?
InterfaceFunction_FDP_SET_FIX_MODE = 17,
InterfaceFunction_FDP_GET_FRAME_BITMAP = 18
} InterfaceFunction;
enum
{
ExternalFunction_EXT_READ_ROMS = 1,
ExternalFunction_EXT_READ_NVRAM = 2,
ExternalFunction_EXT_WRITE_NVRAM = 3,
ExternalFunction_EXT_SWAPFRAME = 5, //frame swap (in mutlithreaded) or frame draw(single treaded)
ExternalFunction_EXT_PUSH_SAMPLE = 6, //sends sample to the buffer
ExternalFunction_EXT_GET_PBUSLEN = 7,
ExternalFunction_EXT_GETP_PBUSDATA = 8,
ExternalFunction_EXT_KPRINT = 9,
ExternalFunction_EXT_DEBUG_PRINT = 10,
ExternalFunction_EXT_FRAMETRIGGER_MT = 12, //multitasking
ExternalFunction_EXT_READ2048 = 14, //for XBUS Plugin
ExternalFunction_EXT_GET_DISC_SIZE = 15,
ExternalFunction_EXT_ON_SECTOR = 16,
ExternalFunction_EXT_ARM_SYNC = 17,
ExternalFunction_FDP_GET_FRAME_BITMAP = 18
} ExternalFunction;
enum {
PhysicalParameters_ROM1_SIZE = 1 * 1024 * 1024,
PhysicalParameters_ROM2_SIZE = 933636, //was 1 * 1024 * 1024,
PhysicalParameters_NVRAM_SIZE = 32 * 1024,
PhysicalParameters_PBUS_DATA_MAX_SIZE = 20,
PhysicalParameters_TARGET_FRAMES_PER_SECOND = 60,
} PhysicalParameters;
enum {
/* PbusButtonAddress_L = 0x0400,
PbusButtonAddress_R = 0x0800,
PbusButtonAddress_X = 0x1000,
PbusButtonAddress_P = 0x2000,
PbusButtonAddress_C = 0x4000,
PbusButtonAddress_B = 0x8000,
PbusButtonAddress_A = 0x0001,
PbusButtonAddress_Left = 0x0002,
PbusButtonAddress_Right = 0x0004,
PbusButtonAddress_Up = 0x0008,
PbusButtonAddress_Down = 0x0010,
*/PbusButtonAddress_L = 0x800,
PbusButtonAddress_R = 0x1000,
PbusButtonAddress_X = 0x200,
PbusButtonAddress_P = 0x400,
PbusButtonAddress_C = 0x4,
PbusButtonAddress_B = 0x8,
PbusButtonAddress_A = 0x10,
PbusButtonAddress_Left = 0x20,
PbusButtonAddress_Right = 0x100,
PbusButtonAddress_Up = 0x80,
PbusButtonAddress_Down = 0x40,
} PbusButtonsAddresses;
unsigned char nvramhead[]=
{
0x01,0x5a,0x5a,0x5a,0x5a,0x5a,0x02,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0x6e,0x76,0x72,0x61,0x6d,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0,0,0,1,
0,0,0x80,0,0xff,0xff,0xff,0xfe,0,0,0,0,0,0,0,1,
0,0,0,0,0,0,0,0x84,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0x85,0x5a,2,0xb6,0,0,0,0x98,0,0,0,0x98,
0,0,0,0x14,0,0,0,0x14,0x7A,0xa5,0x65,0xbd,0,0,0,0x84,
0,0,0,0x84,0,0,0x76,0x68,0,0,0,0x14
};
OE_EXPORTED_CLASS
@interface FreeDOGameCore : OEGameCore
{
@public
char *videoBuffer;
int videoWidth, videoHeight;
NSString *romName;
double sampleRate;
}
@end
+708
View File
@@ -0,0 +1,708 @@
/*
Copyright (c) 2009, OpenEmu Team
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the OpenEmu Team nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import "FreeDOGameCore.h"
#import <OpenEmuBase/OERingBuffer.h>
#import "OE3DOSystemResponderClient.h"
#import <OpenGL/gl.h>
#include "freedocore.h"
#include "libcue.h"
#include "cd.h"
#define TEMP_BUFFER_SIZE 5512
@interface FreeDOGameCore () <OE3DOSystemResponderClient>
- (void)fdcCallbackKPrint:(void *)pv;
- (void)fdcCallbackReadROM:(void *)pv;
- (void)fdcCallbackReadNVRAM:(void *)pv;
- (void)fdcCallbackWriteNVRAM:(void *)pv;
- (void *)fdcCallbackSwapFrame:(void *)pv;
- (void)fdcCallbackFrameTrigger;
- (void)fdcCallbackRead2048:(void *)pv;
- (void)fdcCallbackArmSync:(intptr_t)t;
- (intptr_t)fdcCallbackGetDiscSize;
- (void)fdcCallbackOnSector:(intptr_t)t;
- (intptr_t)fdcCallbackGetPbusLength;
- (void *)fdcCallbackGetPbus;
- (void)fdcCallbackPushSample:(uintptr_t)t;
@end
FreeDOGameCore *current;
@implementation FreeDOGameCore
{
Byte* biosRom1Copy;
Byte* biosRom2Copy;
volatile unsigned int pbus[5];
void *nvramCopy;
VDLFrame *frame;
NSFileHandle *isoStream;
TrackMode isoMode;
int sectorCount;
int currentSector;
BOOL isSwapFrameSignaled;
NSMutableString* kprintBuffer;
int fver1,fver2;
uintptr_t sampleBuffer[TEMP_BUFFER_SIZE];
uint sampleCurrent;
unsigned char FIXED_CLUTR[32];
unsigned char FIXED_CLUTG[32];
unsigned char FIXED_CLUTB[32];
}
static void* fdcCallback(int procedure, void* data)
{
switch(procedure)
{
case ExternalFunction_EXT_KPRINT:
[current fdcCallbackKPrint:data];
break;
case ExternalFunction_EXT_READ_ROMS:
[current fdcCallbackReadROM:data];
break;
case ExternalFunction_EXT_READ_NVRAM:
[current fdcCallbackReadNVRAM:data];
break;
case ExternalFunction_EXT_WRITE_NVRAM:
[current fdcCallbackWriteNVRAM:data];
break;
case ExternalFunction_EXT_SWAPFRAME:
return [current fdcCallbackSwapFrame:data];
case ExternalFunction_EXT_PUSH_SAMPLE:
[current fdcCallbackPushSample:(uintptr_t)data];
break;
case ExternalFunction_EXT_GET_PBUSLEN:
return (void*)[current fdcCallbackGetPbusLength];
case ExternalFunction_EXT_GETP_PBUSDATA:
return [current fdcCallbackGetPbus];
case ExternalFunction_EXT_FRAMETRIGGER_MT:
[current fdcCallbackFrameTrigger];
break;
case ExternalFunction_EXT_READ2048:
[current fdcCallbackRead2048:data];
break;
case ExternalFunction_EXT_GET_DISC_SIZE:
return (void *)[current fdcCallbackGetDiscSize];
case ExternalFunction_EXT_ON_SECTOR:
[current fdcCallbackOnSector:(intptr_t)data];
break;
case ExternalFunction_EXT_ARM_SYNC:
[current fdcCallbackArmSync:(intptr_t)data];
break;
default:
break;
}
return (void*)0;
}
unsigned int _setBitTo(unsigned int storage, BOOL set, unsigned int bitmask)
{
if(set)
return storage|bitmask;
else
return storage;
}
- (oneway void)button:(OE3DOButton)button forPlayer:(NSUInteger)player pushed:(BOOL) pushed
{
int i;
for(i=0;i<1;i++)
{
unsigned int joybin=0x8000;
if(i==player-1)
{
switch(button)
{
case OE3DOButtonA:
joybin = _setBitTo(joybin, pushed, PbusButtonAddress_A);
break;
case OE3DOButtonB:
joybin = _setBitTo(joybin, pushed, OE3DOButtonB);
break;
case OE3DOButtonC:
joybin = _setBitTo(joybin, pushed, OE3DOButtonC);
break;
case OE3DOButtonX:
joybin = _setBitTo(joybin, pushed, OE3DOButtonX);
break;
case OE3DOButtonP:
joybin = _setBitTo(joybin, pushed, OE3DOButtonP);
break;
case OE3DOButtonLeft:
joybin = _setBitTo(joybin, pushed, OE3DOButtonLeft);
break;
case OE3DOButtonRight:
joybin = _setBitTo(joybin, pushed, OE3DOButtonRight);
break;
case OE3DOButtonUp:
joybin = _setBitTo(joybin, pushed, OE3DOButtonUp);
break;
case OE3DOButtonDown:
joybin = _setBitTo(joybin, pushed, OE3DOButtonDown);
break;
case OE3DOButtonL:
joybin = _setBitTo(joybin, pushed, OE3DOButtonL);
break;
case OE3DOButtonR:
joybin = _setBitTo(joybin, pushed, OE3DOButtonR);
break;
default:
break;
}
}
if(i&1)
pbus[i>>1]=(pbus[i>>1]&0xffff0000)|joybin;
else
pbus[i>>1]=(pbus[i>>1]&0xffff)|(joybin<<16);
}
for(;i<10;i++)
{
if(i&1)
pbus[i>>1]=(pbus[i>>1]&0xffff0000)|0xffff;
else
pbus[i>>1]=(pbus[i>>1]&0xffff)|(0xffff<<16);
}
}
- (oneway void)didRelease3DOButton:(OE3DOButton)button forPlayer:(NSUInteger)player
{
[self button:button forPlayer:player pushed:NO];
}
- (oneway void)didPush3DOButton:(OE3DOButton)button forPlayer:(NSUInteger)player
{
[self button:button forPlayer:player pushed:YES];
}
- (id)init
{
self = [super init];
if(self != nil)
{
for(int j = 0; j < 32; j++)
{
FIXED_CLUTR[j] = (unsigned char)(((j & 0x1f) << 3) | ((j >> 2) & 7));
FIXED_CLUTG[j] = FIXED_CLUTR[j];
FIXED_CLUTB[j] = FIXED_CLUTR[j];
}
}
current = self;
return self;
}
#pragma mark Exectuion
- (void)executeFrame
{
[self executeFrameSkippingFrame:NO];
}
- (void)executeFrameSkippingFrame: (BOOL) skip
{
[self fdcDoExecuteFrame:frame];
}
- (void) readSector:(uint) sectorNumber toBuffer:(uint8_t*) buffer
{
if(isoMode==MODE_MODE1_RAW)
{
[isoStream seekToFileOffset:2352 * sectorNumber + 0x10];
}
else
{
[isoStream seekToFileOffset:2048 * sectorNumber];
}
NSData *data = [isoStream readDataOfLength:2048];
memcpy(buffer, [data bytes], 2048);
}
- (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error
{
NSString* isoPath;
NSError* errorCue;
currentSector = 0;
sampleCurrent = 0;
memset(sampleBuffer, 0, sizeof(uintptr_t)*TEMP_BUFFER_SIZE);
NSString* cue = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&errorCue];
const char* cueCString = [cue UTF8String];
Cd* cd = cue_parse_string(cueCString);
NSLog(@"CUE file found and parsed");
if (cd_get_ntrack(cd)!=1)
{
NSLog(@"Cue file found, but the number of tracks within was not 1.");
return NO;
}
Track* track = cd_get_track(cd, 1);
isoMode = (TrackMode)track_get_mode(track);
if ((isoMode!=MODE_MODE1&&isoMode!=MODE_MODE1_RAW))
{
NSLog(@"Cue file found, but the track within was not in the right format (should be BINARY and Mode1+2048 or Mode1+2352)");
return NO;
}
NSString *isoTrack = [NSString stringWithUTF8String:track_get_filename(track)];
isoPath = [path stringByReplacingOccurrencesOfString:[path lastPathComponent] withString:isoTrack];
isoStream = [NSFileHandle fileHandleForReadingAtPath:isoPath];
uint8_t sectorZero[2048];
[self readSector:0 toBuffer:sectorZero];
VolumeHeader* header = (VolumeHeader*)sectorZero;
sectorCount = (int)reverseBytes(header->blockCount);
NSLog(@"Sector count is %d", sectorCount);
return YES;
}
#pragma mark Video
- (const void *)videoBuffer
{
if(isSwapFrameSignaled)
{
if(fver2==fver1)
{
isSwapFrameSignaled = NO;
[self frame:frame toVideoBuffer:(Byte*)videoBuffer];
fver1++;
}
}
fver2=fver1;
return videoBuffer;
}
- (OEIntRect)screenRect
{
// hope this handles hires :/
OEIntRect rect = OEIntRectMake(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
return rect;
//return OEIntRectMake(0, 0, frame->srcw*2, frame->srch*2);
}
- (OEIntSize)bufferSize
{
return OEIntSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT);
}
- (void)setupEmulation
{
[self loadBIOSes];
[self initPBusAndNVRAM];
[self initKPrintBuffer];
[self initVideo];
currentSector = 0;
sampleCurrent = 0;
memset(sampleBuffer, 0, sizeof(uintptr_t)*TEMP_BUFFER_SIZE);
}
- (void)resetEmulation
{
// [super resetEmulation];
}
- (void) startEmulation
{
NSLog(@"FreeDO version: %d",[self fdcGetCoreVersion]);
[self fdcInitialize];
[super startEmulation];
}
- (void)stopEmulation
{
[self fdcDestroy];
[super stopEmulation];
}
- (GLenum)pixelFormat
{
return GL_BGR;
}
- (GLenum)pixelType
{
return GL_UNSIGNED_BYTE;
}
- (GLenum)internalPixelFormat
{
return GL_RGB;
}
- (NSTimeInterval)frameInterval
{
return frameInterval ? frameInterval : 60;
}
- (double)audioSampleRate
{
return sampleRate ? sampleRate : 44100;
}
- (NSUInteger)soundBufferSize
{
return TEMP_BUFFER_SIZE;
}
- (NSUInteger)channelCount
{
return 2;
}
- (NSUInteger)audioBitDepth
{
return 16;
}
- (BOOL)saveStateToFileAtPath:(NSString *)fileName
{
size_t size = [self fdcGetSaveSize];
void *data = malloc(sizeof(uintptr_t)*size);
[self fdcDoSave:data];
NSData *saveData = [NSData dataWithBytesNoCopy:data length:size freeWhenDone:YES];
NSLog(@"Game saved, length in bytes: %lu", saveData.length);
return [saveData writeToFile:fileName atomically:NO];
}
- (BOOL)loadStateFromFileAtPath:(NSString *)fileName
{
NSData *saveData = [NSData dataWithContentsOfFile:fileName];
size_t size = sizeof(uintptr_t)*saveData.length;
void* loadBuffer = malloc(size);
[saveData getBytes:loadBuffer];
return [self fdcDoLoad:loadBuffer];
}
#pragma mark - FreeDoInterface
-(void*) _freedoActionWithInterfaceFunction:(InterfaceFunction) interfaceFunction datum:(void*) datum
{
return _freedo_Interface(interfaceFunction, datum);
}
-(int) fdcGetCoreVersion
{
return (uintptr_t)[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_FREEDOCORE_VERSION datum:(void*)0];
}
-(int) fdcGetSaveSize
{
return (uintptr_t)[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_GET_SAVE_SIZE datum:(void*)0];
}
-(void*) fdcGetPointerNVRAM
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_GETP_NVRAM datum:(void*)0];
}
-(void*) fdcGetPointerRAM
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_GETP_RAMS datum:(void*)0];
}
-(void*) fdcGetPointerROM
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_GETP_ROMS datum:(void*)0];
}
-(void*) fdcGetPointerProfile
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_GETP_PROFILE datum:(void*)0];
}
-(int) fdcInitialize
{
return (intptr_t)[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_INIT datum:(void*)*fdcCallback];
}
-(void) fdcDestroy
{
[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DESTROY datum:(void*)0];
}
-(void) fdcDoExecuteFrame:(void*)vdlFrame
{
[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DO_EXECFRAME datum:vdlFrame];
}
-(void) fdcDoExecuteFrameMultitask:(void*)vdlFrame
{
[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DO_EXECFRAME_MT datum:vdlFrame];
}
-(void) fdcDoFrameMultitask:(void*)vdlFrame
{
[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DO_FRAME_MT datum:vdlFrame];
}
-(BOOL) fdcDoLoad:(void*)buffer
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DO_LOAD datum:buffer]!=0;
}
-(void) fdcDoSave:(void*)buffer
{
[self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_DO_SAVE datum:buffer];
}
-(void*) fdcSetArmClock:(int)clock
{
//untested!
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_SET_ARMCLOCK datum:(void*) clock];
}
-(void*) fdcSetFixMode:(int)fixMode
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_SET_FIX_MODE datum:(void*) fixMode];
}
-(void*) fdcSetTextureQuality:(int)textureQuality
{
return [self _freedoActionWithInterfaceFunction:InterfaceFunction_FDP_SET_TEXQUALITY datum:(void*) textureQuality];
}
- (void)fdcCallbackKPrint:(void *)pv
{
NSString* currentChar = [NSString stringWithFormat:@"%c", pv];
if ([currentChar isEqualToString:@"\n"])
{
NSLog(@"KPRINT: %@", kprintBuffer);
kprintBuffer = [NSMutableString string];
}
else
{
[kprintBuffer appendString:currentChar];
}
}
- (void)fdcCallbackReadROM:(void *)pv
{
//NSLog(@"fdcCallbackReadROM");
memcpy(pv, biosRom1Copy, PhysicalParameters_ROM1_SIZE);
void *biosRom2Dest = (void*)((intptr_t)pv+PhysicalParameters_ROM2_SIZE);
memcpy(biosRom2Dest, biosRom2Copy, PhysicalParameters_ROM2_SIZE);
}
- (void)fdcCallbackReadNVRAM:(void *)buffer
{
//NSLog(@"fdcCallbackReadNVRAM");
memcpy(buffer, nvramCopy, PhysicalParameters_NVRAM_SIZE);
}
- (void)fdcCallbackWriteNVRAM:(void *)pv
{
//NSLog(@"fdcCallbackWriteNVRAM");
}
- (void *)fdcCallbackSwapFrame:(void *)pv
{
isSwapFrameSignaled = YES;
return frame;
}
- (void)fdcCallbackFrameTrigger
{
//NSLog(@"fdcCallbackFrameTrigger");
isSwapFrameSignaled = YES;
[self fdcDoFrameMultitask:frame];
}
- (void)fdcCallbackRead2048:(void *)buffer
{
//NSLog(@"fdcCallbackRead2048");
[self readSector:currentSector toBuffer:(uint8_t*)buffer];
}
- (void)fdcCallbackArmSync:(intptr_t)t
{
NSLog(@"fdcCallbackArmSync");
}
- (intptr_t)fdcCallbackGetDiscSize
{
//NSLog(@"fdcCallbackGetDiscSize");
return sectorCount;
}
- (void)fdcCallbackOnSector:(intptr_t)sector
{
//NSLog(@"fdcCallbackOnSector");
currentSector = sector;
}
- (intptr_t)fdcCallbackGetPbusLength
{
return PhysicalParameters_PBUS_DATA_MAX_SIZE;
}
- (void *)fdcCallbackGetPbus
{
int i;
for(i = 0; i < PhysicalParameters_PBUS_DATA_MAX_SIZE; i++)
{
if (i > 0)
printf(":");
printf("%02X", pbus[i]);
}
printf("\n");
return (void*)pbus;
}
//FIXME: Audio need some work
- (void)fdcCallbackPushSample:(uintptr_t)sample
{
//NSLog(@"fdcCallbackPushSample");
sampleBuffer[sampleCurrent] = sample;
sampleCurrent ++;
if(sampleCurrent>TEMP_BUFFER_SIZE)
{
sampleCurrent = 0;
[[self ringBufferAtIndex:0] write:sampleBuffer maxLength:sizeof(uintptr_t)*TEMP_BUFFER_SIZE];
memset(sampleBuffer, 0, sizeof(uintptr_t)*TEMP_BUFFER_SIZE);
}
}
#pragma mark - Helpers
- (void) initVideo
{
if(videoBuffer)
free(videoBuffer);
videoBuffer = (char*)malloc(SCREEN_WIDTH * SCREEN_HEIGHT * 4);
frame = new VDLFrame;
fver2=fver1=0;
}
-(void) initKPrintBuffer
{
kprintBuffer = [NSMutableString string];
}
- (void)initPBusAndNVRAM
{
memset((void*)pbus,0xff,PhysicalParameters_PBUS_DATA_MAX_SIZE);
nvramCopy = malloc(65536/2);
memset(nvramCopy,0,65536/2);
memcpy(nvramCopy,nvramhead,sizeof(nvramhead));
frame = (VDLFrame*)malloc(sizeof(VDLFrame));
memset(frame, 0, sizeof(VDLFrame));
}
-(void) loadBIOSes
{
NSString *rom1Path = [[self biosDirectoryPath] stringByAppendingPathComponent:@"panafz10.bin"];
NSData *data = [NSData dataWithContentsOfFile:rom1Path];
NSUInteger len = [data length];
assert(len==PhysicalParameters_ROM1_SIZE);
biosRom1Copy = (Byte*)malloc(len);
memcpy(biosRom1Copy, [data bytes], len);
// "ROM 2 Japanese Character ROM" / Set it if we find it. It's not requiered for soem JAP games. We still have to init the memory tho
NSString *rom2Path = [[self biosDirectoryPath] stringByAppendingPathComponent:@"rom2.rom"];
data = [NSData dataWithContentsOfFile:rom2Path];
if(data)
{
len = [data length];
assert(len==PhysicalParameters_ROM2_SIZE);
biosRom2Copy = (Byte*)malloc(len);
memcpy(biosRom2Copy, [data bytes], len);
}
else
{
biosRom2Copy = (Byte*)malloc(PhysicalParameters_ROM2_SIZE);
memset(biosRom2Copy,0,len);
}
}
static uint32_t reverseBytes(uint32_t value)
{
return (value & 0x000000FFU) << 24 | (value & 0x0000FF00U) << 8 | (value & 0x00FF0000U) >> 8 | (value & 0xFF000000U) >> 24;
}
-(void) frame:(VDLFrame*) framePtr toVideoBuffer:(Byte*) destPtr
{
int copyHeight = framePtr->srch*2;
int copyWidth = framePtr->srcw*2;
for(int line = 0; line < copyHeight; line++)
{
VDLLine* linePtr = &framePtr->lines[line];
short* srcPtr = (short*)linePtr;
bool allowFixedClut = (linePtr->xOUTCONTROLL & 0x2000000) > 0;
for(int pix = 0; pix < copyWidth; pix++)
{
Byte bPart = 0;
Byte gPart = 0;
Byte rPart = 0;
if(*srcPtr == 0)
{
bPart = (Byte)(linePtr->xBACKGROUND & 0x1F);
gPart = (Byte)((linePtr->xBACKGROUND >> 5) & 0x1F);
rPart = (Byte)((linePtr->xBACKGROUND >> 10) & 0x1F);
}
else if(allowFixedClut && (*srcPtr & 0x8000) > 0)
{
bPart = FIXED_CLUTB[(*srcPtr) & 0x1F];
gPart = FIXED_CLUTG[((*srcPtr) >> 5) & 0x1F];
rPart = FIXED_CLUTR[(*srcPtr) >> 10 & 0x1F];
}
else
{
bPart = (Byte)(linePtr->xCLUTB[(*srcPtr) & 0x1F]);
gPart = linePtr->xCLUTG[((*srcPtr) >> 5) & 0x1F];
rPart = linePtr->xCLUTR[(*srcPtr) >> 10 & 0x1F];
}
*destPtr++ = bPart;
*destPtr++ = gPart;
*destPtr++ = rPart;
srcPtr++;
}
}
}
@end
+44
View File
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>freedo</string>
<key>CFBundleIdentifier</key>
<string>org.openemu.${PRODUCT_NAME:identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.085</string>
<key>NSPrincipalClass</key>
<string>OEGameCoreController</string>
<key>OEGameCoreClass</key>
<string>FreeDOGameCore</string>
<key>OEGameCorePlayerCount</key>
<string>8</string>
<key>OEProjectURL</key>
<string>http://code.google.com/p/freedo/</string>
<key>OESystemIdentifiers</key>
<array>
<string>openemu.system.3do</string>
</array>
<key>SUEnableAutomaticChecks</key>
<string>1</string>
<key>SUFeedURL</key>
<string>http://openemu.org/updater/freedo_appcast.xml</string>
<key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string>
<key>OEGameCoreRequiresFiles</key>
<true/>
</dict>
</plist>
+1 -1
View File
@@ -1,4 +1,4 @@
4DO-Core
========
OpenEmu Core plugin with 4DO to support 3DO emulation
OpenEmu Core plugin with 4DO/libfreedo to support 3DO emulation
+9
View File
@@ -0,0 +1,9 @@
build_now: 'YES'
create_core_path: 'YES'
download_base_url: http://github.com/downloads/openemu/openemu/
release_notes_base_url: http://openemu.org/category/releasenotes/bsnes/
appcast_basefolder: '/Users/jweinberg/Desktop/Appcast'
appcast_xml_name: 'bsnes_appcast.xml'
keychain_privkey_name: 'Sparkle Private Key'
css_file_name: 'rnotes.css'
bundle_extension: 'oecoreplugin'
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

+20
View File
@@ -0,0 +1,20 @@
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
+20
View File
@@ -0,0 +1,20 @@
-----BEGIN PUBLIC KEY-----
MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQD/nSuLzikeU6MrymSPr34AiU2RDJz6
0pm/3PPs27f6QTtbUAvGC13q6XWrE3HJU8Gz7RM0EJZGpiwb86LgqOJhjfQ7WKse
uaGdbHnvJEFsGqpKX7rnUWaWO3HAsKzDx4HzJqKupFEbTbzXl/GT3JMm+a3PXA3S
kyATydRPrX583Ih8iHO1zQs1pwp2AnUvaQXvp4QOLFWheH5napkDZBjc9B7H38dg
f4c0QqEXJw0lJbG26FxhpOWMiXwpWpOHSfb+XtmzpeTDIHxKPLMEdf2wc+xNC/M9
GdVBfM7+hCEhl1JGqNWPpT7ZzciX8Cxg+5/MIfx+BQ7xQ4wo1SN7y1bZAhUAuBcT
+ZsHbLXlR3uGHLIMg8boUKcCggEAGKgD56/tB6siFr5zEY+RTozPLmbBEcvhz5/p
hAQo7z7ODimZAA1MN1J7Hv7o1S5D9dpZuOnGhiXaN3Z50WdePb9LVH7twrB8v3Xn
ZOEHpumYNcYhvXrIx8LbhnMZmU27xSnrOQF9UfokRxGnXkNmlIwjT0NWqZCqQZwM
wVj1Bgld3YV7CpGTF3aGM6a0pk9LBB71PoczXAx0Cum87ouXXy3c8F/82RF9tgXE
ZBQ+7K2QXYPv9smbYDB+ZlsQ4VTOi3AReG5AeHTVWha3uaSFxY5vKpfau31iMRuT
b1VQ2HVynBpemwhAw4FFvj5dm94aN0Rrvq9BKM09DL4zoOlLogOCAQUAAoIBAE8B
I8z38GdbtswSoSV5JZ9z9cBMj/7x/sHi5ED9v1M8MD6AcxJSbo2cbK98xA3A9U22
6XFHthGReVLa0dyN3Ov+GhBdf8b4CBuebAAS4z8du2EvUFtwDUHorLIo2Qtq2SYR
wpznpB9+3g+z+8GZbzZkdm2mFBKa6GItj82qfEHwxB40aEBx7uQXzM3TH0rV8sMq
u91aAVUQuoiG2/IYWc5O34kKMlHUTt6+uuJiSG0ax8ysWE5XltCfSh/VJcGrzKU6
ZjGBzh8j5+KSXgoe9TuKlsnN5HDCZKaFTCvrxq889HJj0/ks4UrIF+meEyJvDt4P
O4HHoKRtUdLEBMcY0JA=
-----END PUBLIC KEY-----
BIN
View File
Binary file not shown.
+12
View File
@@ -0,0 +1,12 @@
//
// freedoconfig.c
// FreeDO
//
// Created by Sergey Klimov on 6/8/12.
// Copyright (c) 2012 Self-Employed. All rights reserved.
//
#include "freedoconfig.h"
bool __temporalfixes = false;
int HightResMode = 1;
+12
View File
@@ -0,0 +1,12 @@
Current Developers
------------------
Jochen Keil <jrkay@users.sourceforge.net>
Avuton Olrich
He helped a lot to make compilation on win32 work (it still would break
without him). Finding the parallel build bug is also accredited to him.
Thanks!
Former Developers
-----------------
Svend Sorensen <sorensen@users.berlios.de>
+693
View File
@@ -0,0 +1,693 @@
== IMPORTANT ==
There are two licences involved in this software.
The whole libcue project is released under GPLv2 due to its heritage
from cuetools. Some code was added independently from cuetools. These
files have a copyright notice and licensing information on their own.
All files that contain this note:
'Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen'
are taken from cuetools and are therefore under licence of GPLv2.
== IMPORTANT ==
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
+68
View File
@@ -0,0 +1,68 @@
* force make to *not* build things in parallel since this tends to mess things up
* update changelog
* set version number to 1.4.0 (libtool)
* update copyright
* fix compiler warning: input() defined but not used
* new flex behaviour: explicitly enable yylineno usage
* new automake macro name
* possible fix for compilation problems on win32
* update COPYING and corrected copyright notices in several source code files
* Update general COPYRIGHT notice as well as several file specific notifications
* update ChangeLog and NEWS
---------------------------------------
* set version number to 1.3.0 (libtool)
* fix for invalid pointer
---------------------------------------
* set version number to 1.2.0 (libtool)
* update comment on libtool versioning
* update copyright notifications
* switch copyright licence to 2-clause BSD
* update AUTHORS to reflect recent changes
* dump old README
* simple test program (not yet supported by autotools, needs flac lib
* autoheader/config.h support for parser buffer size
* update autotool build system
* update main interface/api file
* support for custom cue values hidden as rem comments
* add buffer size to config.h
* prevent the parser from memory leaking/replace strdup() with
fixed-size array and strncpy/implement yacc|bison macros for buffer
creation/deletion
* prevent the lexer from memory leaking/replace strdup() with
fixed-size array and strncpy
* cd_delete() and track_delete() methods
* support for cdtext filename
* major code clean up
* initial clean up for libcue
+651
View File
@@ -0,0 +1,651 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
pkgdatadir = $(datadir)/libcue
pkglibdir = $(libdir)/libcue
pkgincludedir = $(includedir)/libcue
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = i686-apple-darwin11.4.0
host_triplet = i686-apple-darwin11.4.0
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog NEWS \
config/config.guess config/config.sub config/depcomp \
config/install-sh config/ltmain.sh config/missing \
config/ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run aclocal-1.10
AMTAR = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run autoconf
AUTOHEADER = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run autoheader
AUTOMAKE = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run automake-1.10
AWK = awk
CC = gcc -std=gnu99
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL = dsymutil
DUMPBIN =
ECHO_C = \c
ECHO_N =
ECHO_T =
EGREP = /usr/bin/grep -E
EXEEXT =
FGREP = /usr/bin/grep -F
GREP = /usr/bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
LDFLAGS =
LEX = flex
LEXLIB = -lfl
LEX_OUTPUT_ROOT = lex.yy
LIBCUE_API_VERSION = 1.4
LIBCUE_LIBRARY_NAME = libcue
LIBCUE_LIBTOOL_VERSION = 1:4:0
LIBCUE_MAJOR_VERSION = 1
LIBCUE_MICRO_VERSION = 0
LIBCUE_MINOR_VERSION = 4
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO = lipo
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run makeinfo
MKDIR_P = config/install-sh -c -d
NM = /usr/bin/nm
NMEDIT = nmedit
OBJDUMP = false
OBJEXT = o
OTOOL = otool
OTOOL64 = :
PACKAGE = libcue
PACKAGE_BUGREPORT = jochen.keil@gmail.com
PACKAGE_NAME = libcue
PACKAGE_STRING = libcue 1.4.0
PACKAGE_TARNAME = libcue
PACKAGE_VERSION = 1.4.0
PATH_SEPARATOR = :
RANLIB = ranlib
SED = /usr/bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 1.4.0
YACC = bison -y
YFLAGS =
abs_builddir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
abs_srcdir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
abs_top_builddir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
abs_top_srcdir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
ac_ct_CC = gcc
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-apple-darwin11.4.0
build_alias =
build_cpu = i686
build_os = darwin11.4.0
build_vendor = apple
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-apple-darwin11.4.0
host_alias =
host_cpu = i686
host_os = darwin11.4.0
host_vendor = apple
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = /bin/echo
mandir = ${datarootdir}/man
mkdir_p = $(top_builddir)/config/install-sh -c -d
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix =
top_builddir = .
top_srcdir = .
ACLOCAL_AMFLAGS = -I config
MAKEFLAGS = -j1
AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2
SUBDIRS = src/libcue
EXTRA_DIST = autogen.sh
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+9
View File
@@ -0,0 +1,9 @@
ACLOCAL_AMFLAGS = -I config
MAKEFLAGS = -j1
AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2
SUBDIRS = src/libcue
EXTRA_DIST = autogen.sh
+651
View File
@@ -0,0 +1,651 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog NEWS \
config/config.guess config/config.sub config/depcomp \
config/install-sh config/ltmain.sh config/missing \
config/ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBCUE_API_VERSION = @LIBCUE_API_VERSION@
LIBCUE_LIBRARY_NAME = @LIBCUE_LIBRARY_NAME@
LIBCUE_LIBTOOL_VERSION = @LIBCUE_LIBTOOL_VERSION@
LIBCUE_MAJOR_VERSION = @LIBCUE_MAJOR_VERSION@
LIBCUE_MICRO_VERSION = @LIBCUE_MICRO_VERSION@
LIBCUE_MINOR_VERSION = @LIBCUE_MINOR_VERSION@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ACLOCAL_AMFLAGS = -I config
MAKEFLAGS = -j1
AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2
SUBDIRS = src/libcue
EXTRA_DIST = autogen.sh
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+112
View File
@@ -0,0 +1,112 @@
Changes since 1.3.0
* force make to *not* build things in parallel since this tends to mess things up
* update changelog
* set version number to 1.4.0 (libtool)
* update copyright
* fix compiler warning: input() defined but not used
* new flex behaviour: explicitly enable yylineno usage
* new automake macro name
* possible fix for compilation problems on win32
* update COPYING and corrected copyright notices in several source code files
* Update general COPYRIGHT notice as well as several file specific notifications
* update ChangeLog and NEWS
Changes since 1.2.0
* fix for invalid pointer
Changes from cuetools svn (>1.3.1) to libcue 1.2.0
* Update copyright notifications
* Switch copyright licence to 2-clause BSD
* Update AUTHORS to reflect recent changes
* Update autotool build system
* Update main interface/api file
* API for parsing non standard values in REM comments
* Fix the lexer and parser memory leak
* Methods for freeing allocated Cd and Track objects
* Support for cdtext filename
* Major code clean up
* Initial clean up for libcue
Changes since 1.3
* Applied most of Branden Robinson's Debian patch
(cuetools_1.3-2.diff.gz). This included many fixes and enhancements
to tools and manual pages. cuebreakpoints and cueconvert will exit if
they fail on any of the input files. cuebreakpoints, cueconvert, and
cuetools will exit with a nonzero return value if there was a failure
on an input file.
* Added version option to all tools.
* Single quoted string support has been removed. This was broken, and I am not
sure of any software that supports single quoted strings in cue or toc files.
Changes since 1.2
* Build system has been rewritten using automake/autoconf.
* Added append, prepend, and split pregap modes to cuebreakpoints.
* Fixed possible compilation error with Bison.
* All tools accept long options.
* Programs exit if --input-format or --output-format is an illegal value.
Changes since 1.1
* cuebreakpoints was not printing the last track breakpoint. This has been
fixed.
* cueprint now prints a zero-length string for undefined values. Flags, width,
and precision are applied to conversion characters which have no conversion.
* Added a tagging script, cuetag.sh, which uses cueprint, vorbiscomment, and
mp3info to tag Ogg Vorbis and MP3 files. This needs more testing and
documentation.
* Added a track selection flag to cueprint.
Changes since 1.0
* File formats documentation has been readded and updated (docs/formats.txt).
* ``CDTEXTFILE`` is now a recognized (but ignored) keyword.
* If only a disc or track template is specified on the command line, then only
the disc or track information is printed, respectively.
* cueprint now supports flags and width and precision values for template
expansion (like the printf command).
Changes since 0.6
* cuetools-1.x is a significant code rewrite of 0.x. The cue/toc parsing code
has been reimplemented in lex/yacc.
* cuerename has been replaced by the more general utility cueprint.
* Usage syntax of the utilities has changed. See the respective man pages.
View File
+8847
View File
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
echo "aclocal.."
aclocal --force || exit 1
echo "libtoolize.."
libtoolize --force || exit 1
echo "autoheader.."
autoheader --force || exit 1
if [ -f config.h.in~ ]; then
rm config.h.in~
fi
echo "automake.."
automake --force --add-missing || exit 1
echo "autoconf.."
autoconf --force || exit 1
if [ -f configure ]; then
./configure $*
fi
+79
View File
@@ -0,0 +1,79 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the <libintl.h,> header file. */
/* #undef HAVE_LIBINTL_H_ */
/* Define to 1 if you have the <malloc.c,> header file. */
/* #undef HAVE_MALLOC_C_ */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR ".libs/"
/* Name of package */
#define PACKAGE "libcue"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "jochen.keil@gmail.com"
/* Define to the full name of this package. */
#define PACKAGE_NAME "libcue"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "libcue 1.4.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libcue"
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.4.0"
/* Size of parser buffer */
#define PARSER_BUFFER 1024
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.4.0"
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
#define YYTEXT_POINTER 1
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
+78
View File
@@ -0,0 +1,78 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <libintl.h,> header file. */
#undef HAVE_LIBINTL_H_
/* Define to 1 if you have the <malloc.c,> header file. */
#undef HAVE_MALLOC_C_
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Size of parser buffer */
#undef PARSER_BUFFER
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
#undef YYTEXT_POINTER
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
File diff suppressed because it is too large Load Diff
+2040
View File
File diff suppressed because it is too large Load Diff
+1407
View File
File diff suppressed because it is too large Load Diff
+1504
View File
File diff suppressed because it is too large Load Diff
+589
View File
@@ -0,0 +1,589 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2007-03-29.01
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:
+519
View File
@@ -0,0 +1,519 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2006-12-25.00
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:
+8457
View File
File diff suppressed because it is too large Load Diff
+367
View File
@@ -0,0 +1,367 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2006-05-10.23
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:
+223
View File
@@ -0,0 +1,223 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
scriptversion=2007-11-22.22
# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
# 2007 Free Software Foundation, Inc.
#
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case "$1" in
'')
echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
exit 1
;;
--basedir)
basedir=$2
shift 2
;;
-h|--h*)
cat <<\EOF
Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
Wrapper for lex/yacc invocations, renaming files as desired.
INPUT is the input file
OUTPUT is one file PROG generates
DESIRED is the file we actually want instead of OUTPUT
PROGRAM is program to run
ARGS are passed to PROG
Any number of OUTPUT,DESIRED pairs may be used.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v|--v*)
echo "ylwrap $scriptversion"
exit $?
;;
esac
# The input.
input="$1"
shift
case "$input" in
[\\/]* | ?:[\\/]*)
# Absolute path; do nothing.
;;
*)
# Relative path. Make it absolute.
input="`pwd`/$input"
;;
esac
pairlist=
while test "$#" -ne 0; do
if test "$1" = "--"; then
shift
break
fi
pairlist="$pairlist $1"
shift
done
# The program to run.
prog="$1"
shift
# Make any relative path in $prog absolute.
case "$prog" in
[\\/]* | ?:[\\/]*) ;;
*[\\/]*) prog="`pwd`/$prog" ;;
esac
# FIXME: add hostname here for parallel makes that run commands on
# other machines. But that might take us over the 14-char limit.
dirname=ylwrap$$
trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
mkdir $dirname || exit 1
cd $dirname
case $# in
0) "$prog" "$input" ;;
*) "$prog" "$@" "$input" ;;
esac
ret=$?
if test $ret -eq 0; then
set X $pairlist
shift
first=yes
# Since DOS filename conventions don't allow two dots,
# the DOS version of Bison writes out y_tab.c instead of y.tab.c
# and y_tab.h instead of y.tab.h. Test to see if this is the case.
y_tab_nodot="no"
if test -f y_tab.c || test -f y_tab.h; then
y_tab_nodot="yes"
fi
# The directory holding the input.
input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
# Quote $INPUT_DIR so we can use it in a regexp.
# FIXME: really we should care about more than `.' and `\'.
input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
while test "$#" -ne 0; do
from="$1"
# Handle y_tab.c and y_tab.h output by DOS
if test $y_tab_nodot = "yes"; then
if test $from = "y.tab.c"; then
from="y_tab.c"
else
if test $from = "y.tab.h"; then
from="y_tab.h"
fi
fi
fi
if test -f "$from"; then
# If $2 is an absolute path name, then just use that,
# otherwise prepend `../'.
case "$2" in
[\\/]* | ?:[\\/]*) target="$2";;
*) target="../$2";;
esac
# We do not want to overwrite a header file if it hasn't
# changed. This avoid useless recompilations. However the
# parser itself (the first file) should always be updated,
# because it is the destination of the .y.c rule in the
# Makefile. Divert the output of all other files to a temporary
# file so we can compare them to existing versions.
if test $first = no; then
realtarget="$target"
target="tmp-`echo $target | sed s/.*[\\/]//g`"
fi
# Edit out `#line' or `#' directives.
#
# We don't want the resulting debug information to point at
# an absolute srcdir; it is better for it to just mention the
# .y file with no path.
#
# We want to use the real output file name, not yy.lex.c for
# instance.
#
# We want the include guards to be adjusted too.
FROM=`echo "$from" | sed \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
-e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
TARGET=`echo "$2" | sed \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
-e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
-e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
# Check whether header files must be updated.
if test $first = no; then
if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
echo "$2" is unchanged
rm -f "$target"
else
echo updating "$2"
mv -f "$target" "$realtarget"
fi
fi
else
# A missing file is only an error for the first file. This
# is a blatant hack to let us support using "yacc -d". If -d
# is not specified, we don't want an error when the header
# file is "missing".
if test $first = yes; then
ret=1
fi
fi
shift
shift
first=no
done
else
ret=$?
fi
# Remove the directory.
cd ..
rm -rf $dirname
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:
Vendored Executable
+14438
View File
File diff suppressed because it is too large Load Diff
+62
View File
@@ -0,0 +1,62 @@
AC_INIT([libcue], [1.4.0], [jochen.keil@gmail.com])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([config])
AM_INIT_AUTOMAKE([foreign 1.9 dist-bzip2])
AM_CONFIG_HEADER([config.h])
m4_define([package_major_version], [1])
m4_define([package_minor_version], [4])
m4_define([package_micro_version], [0])
m4_define([package_version], [package_major_version.package_minor_version.package_micro_version])
AM_INIT_AUTOMAKE
# This makes sure the right substitution is done
[LIBCUE_MAJOR_VERSION]=package_major_version
[LIBCUE_MINOR_VERSION]=package_minor_version
[LIBCUE_MICRO_VERSION]=package_micro_version
AC_SUBST([LIBCUE_MAJOR_VERSION])
AC_SUBST([LIBCUE_MINOR_VERSION])
AC_SUBST([LIBCUE_MICRO_VERSION])
# CURRENT:REVISION:AGE
#
# CURRENT
# The most recent interface number that this library implements.
# REVISION
# The implementation number of the current interface.
# AGE
# The difference between the newest and oldest interfaces that this library
# implements. In other words, the library implements all the interface numbers in
# the range from number current - age to current.
LIBCUE_LIBRARY_NAME=libcue
AC_SUBST(LIBCUE_LIBRARY_NAME)
LIBCUE_LIBTOOL_VERSION=$LIBCUE_MAJOR_VERSION:$LIBCUE_MINOR_VERSION:$LIBCUE_MICRO_VERSION
AC_SUBST(LIBCUE_LIBTOOL_VERSION)
LIBCUE_API_VERSION=$LIBCUE_MAJOR_VERSION.$LIBCUE_MINOR_VERSION
AC_SUBST(LIBCUE_API_VERSION)
AC_CHECK_HEADERS([libintl.h, malloc.c, stddef.h])
AC_TYPE_SIZE_T
AC_PROG_CC_C99
AM_PROG_LEX
AC_PROG_YACC
AM_PROG_LIBTOOL
AC_ARG_WITH([parser-buffer],
[AS_HELP_STRING([--with-parser-buffer=SIZE],
[Size of parser buffer. Default of 1024 should be enough])],
[parser_buffer="$withval"],
[parser_buffer=1024])
AC_DEFINE_UNQUOTED([PARSER_BUFFER], [$parser_buffer], [Size of parser buffer])
AC_OUTPUT([
Makefile
src/libcue/Makefile
src/libcue/libcue.pc
])
+8941
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
# dummy
+1
View File
@@ -0,0 +1 @@
# dummy
@@ -0,0 +1 @@
# dummy
@@ -0,0 +1 @@
# dummy
+1
View File
@@ -0,0 +1 @@
# dummy
+1
View File
@@ -0,0 +1 @@
# dummy
+577
View File
@@ -0,0 +1,577 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# src/libcue/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
pkgdatadir = $(datadir)/libcue
pkglibdir = $(libdir)/libcue
pkgincludedir = $(includedir)/libcue
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = i686-apple-darwin11.4.0
host_triplet = i686-apple-darwin11.4.0
subdir = src/libcue
DIST_COMMON = $(libcueinclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/libcue.pc.in cue_parser.c \
cue_parser.h cue_scanner.c
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = libcue.pc
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
"$(DESTDIR)$(libcueincludedir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libcue_la_LIBADD =
am_libcue_la_OBJECTS = cd.lo cdtext.lo rem.lo time.lo cue_parser.lo \
cue_scanner.lo
libcue_la_OBJECTS = $(am_libcue_la_OBJECTS)
libcue_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libcue_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I. -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS)
YLWRAP = $(top_srcdir)/config/ylwrap
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
SOURCES = $(libcue_la_SOURCES)
DIST_SOURCES = $(libcue_la_SOURCES)
pkgconfigDATA_INSTALL = $(INSTALL_DATA)
DATA = $(pkgconfig_DATA)
libcueincludeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(libcueinclude_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run aclocal-1.10
AMTAR = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run autoconf
AUTOHEADER = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run autoheader
AUTOMAKE = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run automake-1.10
AWK = awk
CC = gcc -std=gnu99
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL = dsymutil
DUMPBIN =
ECHO_C = \c
ECHO_N =
ECHO_T =
EGREP = /usr/bin/grep -E
EXEEXT =
FGREP = /usr/bin/grep -F
GREP = /usr/bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
LDFLAGS =
LEX = flex
LEXLIB = -lfl
LEX_OUTPUT_ROOT = lex.yy
LIBCUE_API_VERSION = 1.4
LIBCUE_LIBRARY_NAME = libcue
LIBCUE_LIBTOOL_VERSION = 1:4:0
LIBCUE_MAJOR_VERSION = 1
LIBCUE_MICRO_VERSION = 0
LIBCUE_MINOR_VERSION = 4
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO = lipo
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/missing --run makeinfo
MKDIR_P = ../../config/install-sh -c -d
NM = /usr/bin/nm
NMEDIT = nmedit
OBJDUMP = false
OBJEXT = o
OTOOL = otool
OTOOL64 = :
PACKAGE = libcue
PACKAGE_BUGREPORT = jochen.keil@gmail.com
PACKAGE_NAME = libcue
PACKAGE_STRING = libcue 1.4.0
PACKAGE_TARNAME = libcue
PACKAGE_VERSION = 1.4.0
PATH_SEPARATOR = :
RANLIB = ranlib
SED = /usr/bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 1.4.0
YACC = bison -y
YFLAGS =
abs_builddir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/src/libcue
abs_srcdir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/src/libcue
abs_top_builddir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
abs_top_srcdir = /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0
ac_ct_CC = gcc
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = i686-apple-darwin11.4.0
build_alias =
build_cpu = i686
build_os = darwin11.4.0
build_vendor = apple
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-apple-darwin11.4.0
host_alias =
host_cpu = i686
host_os = darwin11.4.0
host_vendor = apple
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /Users/darvin/Projects/OpenEmu/FreeDO/libcue-1.4.0/config/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = /bin/echo
mandir = ${datarootdir}/man
mkdir_p = $(top_builddir)/config/install-sh -c -d
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../../
top_builddir = ../..
top_srcdir = ../..
AM_YFLAGS = -d
EXTRA_DIST = libcue.pc.in
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcue.pc
INCLUDES = \
-I. \
-Wall -Wmissing-declarations
libcue_la_SOURCES = \
cd.c \
cdtext.c \
rem.c \
time.c \
cue_parser.y \
cue_scanner.l
libcueinclude_HEADERS = \
libcue.h \
cd.h \
cdtext.h \
rem.h \
time.h
lib_LTLIBRARIES = libcue.la
libcue_la_LDFLAGS = -version-info 1:4:0
libcueincludedir = $(includedir)/libcue-1.4/libcue
all: all-am
.SUFFIXES:
.SUFFIXES: .c .l .lo .o .obj .y
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcue/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign src/libcue/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libcue.pc: $(top_builddir)/config.status $(srcdir)/libcue.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
cue_parser.h: cue_parser.c
@if test ! -f $@; then \
rm -f cue_parser.c; \
$(MAKE) $(AM_MAKEFLAGS) cue_parser.c; \
else :; fi
libcue.la: $(libcue_la_OBJECTS) $(libcue_la_DEPENDENCIES)
$(libcue_la_LINK) -rpath $(libdir) $(libcue_la_OBJECTS) $(libcue_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/cd.Plo
include ./$(DEPDIR)/cdtext.Plo
include ./$(DEPDIR)/cue_parser.Plo
include ./$(DEPDIR)/cue_scanner.Plo
include ./$(DEPDIR)/rem.Plo
include ./$(DEPDIR)/time.Plo
.c.o:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c $<
.c.obj:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
# source='$<' object='$@' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LTCOMPILE) -c -o $@ $<
.l.c:
$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
.y.c:
$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
@list='$(pkgconfig_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
$(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
uninstall-pkgconfigDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgconfig_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
install-libcueincludeHEADERS: $(libcueinclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(libcueincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcueincludedir)"
@list='$(libcueinclude_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(libcueincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libcueincludedir)/$$f'"; \
$(libcueincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libcueincludedir)/$$f"; \
done
uninstall-libcueincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(libcueinclude_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(libcueincludedir)/$$f'"; \
rm -f "$(DESTDIR)$(libcueincludedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libcueincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-rm -f cue_parser.c
-rm -f cue_parser.h
-rm -f cue_scanner.c
clean: clean-am
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-libcueincludeHEADERS install-pkgconfigDATA
install-dvi: install-dvi-am
install-exec-am: install-libLTLIBRARIES
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-libLTLIBRARIES uninstall-libcueincludeHEADERS \
uninstall-pkgconfigDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am \
install-libLTLIBRARIES install-libcueincludeHEADERS \
install-man install-pdf install-pdf-am install-pkgconfigDATA \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-libLTLIBRARIES \
uninstall-libcueincludeHEADERS uninstall-pkgconfigDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+31
View File
@@ -0,0 +1,31 @@
AM_YFLAGS = -d
EXTRA_DIST = libcue.pc.in
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcue.pc
INCLUDES = \
-I. \
-Wall -Wmissing-declarations
libcue_la_SOURCES = \
cd.c \
cdtext.c \
rem.c \
time.c \
cue_parser.y \
cue_scanner.l
libcueinclude_HEADERS = \
libcue.h \
cd.h \
cdtext.h \
rem.h \
time.h
lib_LTLIBRARIES = libcue.la
libcue_la_LDFLAGS = -version-info @LIBCUE_LIBTOOL_VERSION@
libcueincludedir = $(includedir)/@LIBCUE_LIBRARY_NAME@-@LIBCUE_API_VERSION@/@LIBCUE_LIBRARY_NAME@
+577
View File
@@ -0,0 +1,577 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = src/libcue
DIST_COMMON = $(libcueinclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/libcue.pc.in cue_parser.c \
cue_parser.h cue_scanner.c
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = libcue.pc
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
"$(DESTDIR)$(libcueincludedir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libcue_la_LIBADD =
am_libcue_la_OBJECTS = cd.lo cdtext.lo rem.lo time.lo cue_parser.lo \
cue_scanner.lo
libcue_la_OBJECTS = $(am_libcue_la_OBJECTS)
libcue_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libcue_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS)
YLWRAP = $(top_srcdir)/config/ylwrap
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
SOURCES = $(libcue_la_SOURCES)
DIST_SOURCES = $(libcue_la_SOURCES)
pkgconfigDATA_INSTALL = $(INSTALL_DATA)
DATA = $(pkgconfig_DATA)
libcueincludeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(libcueinclude_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBCUE_API_VERSION = @LIBCUE_API_VERSION@
LIBCUE_LIBRARY_NAME = @LIBCUE_LIBRARY_NAME@
LIBCUE_LIBTOOL_VERSION = @LIBCUE_LIBTOOL_VERSION@
LIBCUE_MAJOR_VERSION = @LIBCUE_MAJOR_VERSION@
LIBCUE_MICRO_VERSION = @LIBCUE_MICRO_VERSION@
LIBCUE_MINOR_VERSION = @LIBCUE_MINOR_VERSION@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
YACC = @YACC@
YFLAGS = @YFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_YFLAGS = -d
EXTRA_DIST = libcue.pc.in
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcue.pc
INCLUDES = \
-I. \
-Wall -Wmissing-declarations
libcue_la_SOURCES = \
cd.c \
cdtext.c \
rem.c \
time.c \
cue_parser.y \
cue_scanner.l
libcueinclude_HEADERS = \
libcue.h \
cd.h \
cdtext.h \
rem.h \
time.h
lib_LTLIBRARIES = libcue.la
libcue_la_LDFLAGS = -version-info @LIBCUE_LIBTOOL_VERSION@
libcueincludedir = $(includedir)/@LIBCUE_LIBRARY_NAME@-@LIBCUE_API_VERSION@/@LIBCUE_LIBRARY_NAME@
all: all-am
.SUFFIXES:
.SUFFIXES: .c .l .lo .o .obj .y
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcue/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign src/libcue/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
libcue.pc: $(top_builddir)/config.status $(srcdir)/libcue.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
cue_parser.h: cue_parser.c
@if test ! -f $@; then \
rm -f cue_parser.c; \
$(MAKE) $(AM_MAKEFLAGS) cue_parser.c; \
else :; fi
libcue.la: $(libcue_la_OBJECTS) $(libcue_la_DEPENDENCIES)
$(libcue_la_LINK) -rpath $(libdir) $(libcue_la_OBJECTS) $(libcue_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdtext.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cue_parser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cue_scanner.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
.l.c:
$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
.y.c:
$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
@list='$(pkgconfig_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
$(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
uninstall-pkgconfigDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgconfig_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
install-libcueincludeHEADERS: $(libcueinclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(libcueincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcueincludedir)"
@list='$(libcueinclude_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(libcueincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libcueincludedir)/$$f'"; \
$(libcueincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libcueincludedir)/$$f"; \
done
uninstall-libcueincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(libcueinclude_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(libcueincludedir)/$$f'"; \
rm -f "$(DESTDIR)$(libcueincludedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libcueincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-rm -f cue_parser.c
-rm -f cue_parser.h
-rm -f cue_scanner.c
clean: clean-am
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-libcueincludeHEADERS install-pkgconfigDATA
install-dvi: install-dvi-am
install-exec-am: install-libLTLIBRARIES
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-libLTLIBRARIES uninstall-libcueincludeHEADERS \
uninstall-pkgconfigDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am \
install-libLTLIBRARIES install-libcueincludeHEADERS \
install-man install-pdf install-pdf-am install-pkgconfigDATA \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-libLTLIBRARIES \
uninstall-libcueincludeHEADERS uninstall-pkgconfigDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+420
View File
@@ -0,0 +1,420 @@
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cd.h"
typedef struct Data Data;
struct Data {
int type; /* DataType */
char *name; /* data source name */
long start; /* start time for data */
long length; /* length of data */
};
struct Track {
Data zero_pre; /* pre-gap generated with zero data */
Data file; /* track data file */
Data zero_post; /* post-gap generated with zero data */
int mode; /* track mode */
int sub_mode; /* sub-channel mode */
int flags; /* flags */
char *isrc; /* IRSC Code (5.22.4) 12 bytes */
Cdtext *cdtext; /* CD-TEXT */
Rem* rem;
int nindex; /* number of indexes */
long index[MAXINDEX]; /* indexes (in frames) (5.29.2.5)
* relative to start of track
* index[0] should always be zero */
};
struct Cd {
int mode; /* disc mode */
char *catalog; /* Media Catalog Number (5.22.3) */
char *cdtextfile; /* Filename of CDText File */
Cdtext *cdtext; /* CD-TEXT */
Rem* rem;
int ntrack; /* number of tracks in album */
Track *track[MAXTRACK]; /* array of tracks */
};
Cd *cd_init(void)
{
Cd *cd = NULL;
cd = malloc(sizeof(Cd));
if(NULL == cd) {
fprintf(stderr, "unable to create cd\n");
} else {
cd->mode = MODE_CD_DA;
cd->catalog = NULL;
cd->cdtextfile = NULL;
cd->cdtext = cdtext_init();
cd->rem = rem_new();
cd->ntrack = 0;
}
return cd;
}
void track_delete(struct Track* track)
{
if (track != NULL)
{
cdtext_delete(track_get_cdtext(track));
rem_free(track_get_rem(track));
free(track->isrc);
free(track->zero_pre.name);
free(track->zero_post.name);
free(track->file.name);
free(track);
}
}
void cd_delete(struct Cd* cd)
{
int i = 0;
if (cd != NULL)
{
free(cd->catalog);
free(cd->cdtextfile);
for (i = 0; i < cd->ntrack; i++)
track_delete(cd->track[i]);
cdtext_delete(cd_get_cdtext(cd));
rem_free(cd_get_rem(cd));
free(cd);
}
}
Track *track_init(void)
{
Track *track = NULL;
track = malloc(sizeof(Track));
if (NULL == track) {
fprintf(stderr, "unable to create track\n");
} else {
track->zero_pre.type = DATA_ZERO;
track->zero_pre.name = NULL;
track->zero_pre.start = 0;
track->zero_pre.length = 0;
track->file.type = DATA_AUDIO;
track->file.name = NULL;
track->file.start = 0;
track->file.length = 0;
track->zero_post.type = DATA_ZERO;
track->zero_post.name = NULL;
track->zero_post.start = 0;
track->zero_post.length = 0;
track->mode = MODE_AUDIO;
track->sub_mode = SUB_MODE_RW;
track->flags = FLAG_NONE;
track->isrc = NULL;
track->cdtext = cdtext_init();
track->rem = rem_new();
track->nindex = 0;
}
return track;
}
/*
* cd structure functions
*/
void cd_set_mode(Cd *cd, int mode)
{
cd->mode = mode;
}
int cd_get_mode(Cd *cd)
{
return cd->mode;
}
void cd_set_catalog(Cd *cd, char *catalog)
{
if (cd->catalog)
free(cd->catalog);
cd->catalog = strdup(catalog);
}
void cd_set_cdtextfile(Cd *cd, char *cdtextfile)
{
if (cd->cdtextfile)
free(cd->cdtextfile);
cd->cdtextfile = strdup(cdtextfile);
}
char *cd_get_cdtextfile(Cd *cd)
{
return cd->cdtextfile;
}
Cdtext *cd_get_cdtext(Cd *cd)
{
if (cd != NULL)
return cd->cdtext;
else
return NULL;
}
Rem*
cd_get_rem( Cd* cd)
{
if (cd != NULL)
return cd->rem;
else
return NULL;
}
Track *cd_add_track(Cd *cd)
{
if (MAXTRACK - 1 > cd->ntrack)
cd->ntrack++;
else
fprintf(stderr, "too many tracks\n");
/* this will reinit last track if there were too many */
cd->track[cd->ntrack - 1] = track_init();
return cd->track[cd->ntrack - 1];
}
int cd_get_ntrack(Cd *cd)
{
return cd->ntrack;
}
Track *cd_get_track(Cd *cd, int i)
{
if ((0 < i) && (i <= cd->ntrack) && (cd != NULL))
return cd->track[i - 1];
else
return NULL;
}
/*
* track structure functions
*/
void track_set_filename(Track *track, char *filename)
{
if (track->file.name)
free(track->file.name);
track->file.name = strdup(filename);
}
char *track_get_filename(Track *track)
{
return track->file.name;
}
void track_set_start(Track *track, long start)
{
track->file.start = start;
}
long track_get_start(Track *track)
{
return track->file.start;
}
void track_set_length(Track *track, long length)
{
track->file.length = length;
}
long track_get_length(Track *track)
{
return track->file.length;
}
void track_set_mode(Track *track, int mode)
{
track->mode = mode;
}
int track_get_mode(Track *track)
{
return track->mode;
}
void track_set_sub_mode(Track *track, int sub_mode)
{
track->sub_mode = sub_mode;
}
int track_get_sub_mode(Track *track)
{
return track->sub_mode;
}
void track_set_flag(Track *track, int flag)
{
track->flags |= flag;
}
void track_clear_flag(Track *track, int flag)
{
track->flags &= ~flag;
}
int track_is_set_flag(Track *track, int flag)
{
return track->flags & flag;
}
void track_set_zero_pre(Track *track, long length)
{
track->zero_pre.length = length;
}
long track_get_zero_pre(Track *track)
{
return track->zero_pre.length;
}
void track_set_zero_post(Track *track, long length)
{
track->zero_post.length = length;
}
long track_get_zero_post(Track *track)
{
return track->zero_post.length;
}
void track_set_isrc(Track *track, char *isrc)
{
if (track->isrc)
free(track->isrc);
track->isrc = strdup(isrc);
}
char *track_get_isrc(Track *track)
{
return track->isrc;
}
Cdtext *track_get_cdtext(Track *track)
{
if (track != NULL)
return track->cdtext;
else
return NULL;
}
Rem*
track_get_rem( Track* track)
{
if (track != NULL)
return track->rem;
else
return NULL;
}
void track_add_index(Track *track, long ind)
{
if (MAXTRACK - 1 > track->nindex)
track->nindex++;
else
fprintf(stderr, "too many indexes\n");
/* this will overwrite last index if there were too many */
track->index[track->nindex - 1] = ind;
}
int track_get_nindex(Track *track)
{
return track->nindex;
}
long track_get_index(Track *track, int i)
{
if ((0 <= i) && (i < track->nindex))
return track->index[i];
return -1;
}
/*
* dump cd information
*/
static void cd_track_dump(Track *track)
{
int i;
printf("zero_pre: %ld\n", track->zero_pre.length);
printf("filename: %s\n", track->file.name);
printf("start: %ld\n", track->file.start);
printf("length: %ld\n", track->file.length);
printf("zero_post: %ld\n", track->zero_post.length);
printf("mode: %d\n", track->mode);
printf("sub_mode: %d\n", track->sub_mode);
printf("flags: 0x%x\n", track->flags);
printf("isrc: %s\n", track->isrc);
printf("indexes: %d\n", track->nindex);
for (i = 0; i < track->nindex; ++i)
printf("index %d: %ld\n", i, track->index[i]);
if (NULL != track->cdtext) {
printf("cdtext:\n");
cdtext_dump(track->cdtext, 1);
}
if (track->rem != NULL)
{
fprintf(stdout, "rem:\n");
rem_dump(track->rem);
}
}
void cd_dump(Cd *cd)
{
int i;
printf("Disc Info\n");
printf("mode: %d\n", cd->mode);
printf("catalog: %s\n", cd->catalog);
printf("cdtextfile: %s\n", cd->cdtextfile);
if (NULL != cd->cdtext) {
printf("cdtext:\n");
cdtext_dump(cd->cdtext, 0);
}
if (cd->rem != NULL)
{
fprintf(stdout, "rem:\n");
rem_dump(cd->rem);
}
for (i = 0; i < cd->ntrack; ++i) {
printf("Track %d Info\n", i + 1);
cd_track_dump(cd->track[i]);
}
}
+171
View File
@@ -0,0 +1,171 @@
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
/* references: MMC-3 draft revsion - 10g */
#ifndef CD_H
#define CD_H
#include "cdtext.h"
#include "rem.h"
#define MAXTRACK 99 /* Red Book track limit */
#define MAXINDEX 99 /* Red Book index limit */
/*
* disc modes
* DATA FORM OF MAIN DATA (5.29.2.8)
*/
enum DiscMode {
MODE_CD_DA, /* CD-DA */
MODE_CD_ROM, /* CD-ROM mode 1 */
MODE_CD_ROM_XA /* CD-ROM XA and CD-I */
};
/*
* track modes
* 5.29.2.8 DATA FORM OF MAIN DATA
* Table 350 - Data Block Type Codes
*/
enum TrackMode {
MODE_AUDIO, /* 2352 byte block length */
MODE_MODE1, /* 2048 byte block length */
MODE_MODE1_RAW, /* 2352 byte block length */
MODE_MODE2, /* 2336 byte block length */
MODE_MODE2_FORM1, /* 2048 byte block length */
MODE_MODE2_FORM2, /* 2324 byte block length */
MODE_MODE2_FORM_MIX, /* 2332 byte block length */
MODE_MODE2_RAW /* 2352 byte block length */
};
/*
* sub-channel mode
* 5.29.2.13 Data Form of Sub-channel
* NOTE: not sure if this applies to cue files
*/
enum TrackSubMode {
SUB_MODE_RW, /* RAW Data */
SUB_MODE_RW_RAW /* PACK DATA (written R-W */
};
/*
* track flags
* Q Sub-channel Control Field (4.2.3.3, 5.29.2.2)
*/
enum TrackFlag {
FLAG_NONE = 0x00, /* no flags set */
FLAG_PRE_EMPHASIS = 0x01, /* audio recorded with pre-emphasis */
FLAG_COPY_PERMITTED = 0x02, /* digital copy permitted */
FLAG_DATA = 0x04, /* data track */
FLAG_FOUR_CHANNEL = 0x08, /* 4 audio channels */
FLAG_SCMS = 0x10, /* SCMS (not Q Sub-ch.) (5.29.2.7) */
FLAG_ANY = 0xff /* any flags set */
};
enum DataType {
DATA_AUDIO,
DATA_DATA,
DATA_FIFO,
DATA_ZERO
};
/* ADTs */
typedef struct Cd Cd;
typedef struct Track Track;
/* return pointer to CD structure */
Cd *cd_init(void);
Track *track_init(void);
void track_delete(struct Track* track);
void cd_delete(struct Cd* cd);
void cd_dump(Cd *cd);
/*
* Cd functions
*/
void cd_set_mode(Cd *cd, int mode);
int cd_get_mode(Cd *cd);
void cd_set_catalog(Cd *cd, char *catalog);
char *cd_get_catalog(Cd *cd);
void cd_set_cdtextfile(Cd *cd, char *cdtextfile);
char *cd_get_cdtextfile(Cd *cd);
/*
* return pointer to cd's Cdtext
*/
Cdtext *cd_get_cdtext(Cd *cd);
Rem* cd_get_rem(Cd* cd);
/*
* add a new track to cd, increment number of tracks
* and return pointer to new track
*/
Track *cd_add_track(Cd *cd);
/*
* return number of tracks in cd
*/
int cd_get_ntrack(Cd *cd);
Track *cd_get_track(Cd *cd, int i);
/*
* Track functions
*/
/* filename of data file */
void track_set_filename(Track *track, char *filename);
char *track_get_filename(Track *track);
/* track start is starting position in data file */
void track_set_start(Track *track, long start);
long track_get_start(Track *track);
/* track length is length of data file to use */
void track_set_length(Track *track, long length);
long track_get_length(Track *track);
/* see enum TrackMode */
void track_set_mode(Track *track, int mode);
int track_get_mode(Track *track);
/* see enum TrackSubMode */
void track_set_sub_mode(Track *track, int sub_mode);
int track_get_sub_mode(Track *track);
/* see enum TrackFlag */
void track_set_flag(Track *track, int flag);
void track_clear_flag(Track *track, int flag);
int track_is_set_flag(Track *track, int flag);
/* zero data pregap */
void track_set_zero_pre(Track *track, long length);
long track_get_zero_pre(Track *track);
/* zero data postgap */
void track_set_zero_post(Track *track, long length);
long track_get_zero_post(Track *track);
void track_set_isrc(Track *track, char *isrc);
char *track_get_isrc(Track *track);
Cdtext *track_get_cdtext(Track *track);
Rem* track_get_rem(Track* track);
void track_add_index(Track *track, long index);
int track_get_nindex(Track *track);
long track_get_index(Track *track, int i);
#endif
+167
View File
@@ -0,0 +1,167 @@
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cdtext.h"
struct Cdtext {
int pti;
int format;
char *value;
};
Cdtext *cdtext_init(void)
{
Cdtext *new_cdtext = NULL;
Cdtext cdtext[] = {
{PTI_TITLE, FORMAT_CHAR, NULL},
{PTI_PERFORMER, FORMAT_CHAR, NULL},
{PTI_SONGWRITER, FORMAT_CHAR, NULL},
{PTI_COMPOSER, FORMAT_CHAR, NULL},
{PTI_ARRANGER, FORMAT_CHAR, NULL},
{PTI_MESSAGE, FORMAT_CHAR, NULL},
{PTI_DISC_ID, FORMAT_BINARY, NULL},
{PTI_GENRE, FORMAT_BINARY, NULL},
{PTI_TOC_INFO1, FORMAT_BINARY, NULL},
{PTI_TOC_INFO2, FORMAT_BINARY, NULL},
{PTI_RESERVED1, FORMAT_CHAR, NULL},
{PTI_RESERVED2, FORMAT_CHAR, NULL},
{PTI_RESERVED3, FORMAT_CHAR, NULL},
{PTI_RESERVED4, FORMAT_CHAR, NULL},
{PTI_UPC_ISRC, FORMAT_CHAR, NULL},
{PTI_SIZE_INFO, FORMAT_BINARY, NULL},
{PTI_END, FORMAT_CHAR, NULL}
};
new_cdtext = (Cdtext *) calloc (sizeof (cdtext) / sizeof (Cdtext), sizeof (Cdtext));
if (NULL == new_cdtext)
fprintf (stderr, "problem allocating memory\n");
else
memcpy (new_cdtext, cdtext, sizeof(cdtext));
return new_cdtext;
}
void cdtext_delete(Cdtext *cdtext)
{
int i;
if (NULL != cdtext) {
for (i = 0; PTI_END != cdtext[i].pti; i++)
{
free (cdtext[i].value);
}
free (cdtext);
}
}
/* return 0 if there is no cdtext, returns non-zero otherwise */
int cdtext_is_empty(Cdtext *cdtext)
{
for (; PTI_END != cdtext->pti; cdtext++)
if (NULL != cdtext->value)
return -1;
return 0;
}
/* sets cdtext's pti entry to field */
void cdtext_set(int pti, char *value, Cdtext *cdtext)
{
if (NULL != value) /* don't pass NULL to strdup */
for (; PTI_END != cdtext->pti; cdtext++)
if (pti == cdtext->pti) {
free (cdtext->value);
cdtext->value = strdup (value);
}
}
/* returns value for pti, NULL if pti is not found */
char *cdtext_get(int pti, Cdtext *cdtext)
{
for (; PTI_END != cdtext->pti; cdtext++)
if (pti == cdtext->pti)
return cdtext->value;
return NULL;
}
const char *cdtext_get_key(int pti, int istrack)
{
const char *key = NULL;
switch (pti) {
case PTI_TITLE:
key = "TITLE";
break;
case PTI_PERFORMER:
key = "PERFORMER";
break;
case PTI_SONGWRITER:
key = "SONGWRITER";
break;
case PTI_COMPOSER:
key = "COMPOSER";
break;
case PTI_ARRANGER:
key = "ARRANGER";
break;
case PTI_MESSAGE:
key = "MESSAGE";
break;
case PTI_DISC_ID:
key = "DISC_ID";
break;
case PTI_GENRE:
key = "GENRE";
break;
case PTI_TOC_INFO1:
key = "TOC_INFO1";
break;
case PTI_TOC_INFO2:
key = "TOC_INFO1";
break;
case PTI_RESERVED1:
/* reserved */
break;
case PTI_RESERVED2:
/* reserved */
break;
case PTI_RESERVED3:
/* reserved */
break;
case PTI_RESERVED4:
/* reserved */
break;
case PTI_UPC_ISRC:
if (0 == istrack)
key = "UPC_EAN";
else
key = "ISRC";
break;
case PTI_SIZE_INFO:
key = "SIZE_INFO";
break;
}
return key;
}
void cdtext_dump(Cdtext *cdtext, int istrack)
{
int pti;
char *value = NULL;
for (pti = 0; PTI_END != pti; pti++) {
if (NULL != (value = cdtext_get(pti, cdtext))) {
printf("%s: ", cdtext_get_key(pti, istrack));
printf("%s\n", value);
}
}
}
+70
View File
@@ -0,0 +1,70 @@
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
/* references: MMC-3 draft revsion - 10g */
#ifndef CDTEXT_H
#define CDTEXT_H
#include <stdio.h>
/* cdtext pack type indicators */
enum Pti {
PTI_TITLE, /* title of album or track titles */
PTI_PERFORMER, /* name(s) of the performer(s) */
PTI_SONGWRITER, /* name(s) of the songwriter(s) */
PTI_COMPOSER, /* name(s) of the composer(s) */
PTI_ARRANGER, /* name(s) of the arranger(s) */
PTI_MESSAGE, /* message(s) from the content provider and/or artist */
PTI_DISC_ID, /* (binary) disc identification information */
PTI_GENRE, /* (binary) genre identification and genre information */
PTI_TOC_INFO1, /* (binary) table of contents information */
PTI_TOC_INFO2, /* (binary) second table of contents information */
PTI_RESERVED1, /* reserved */
PTI_RESERVED2, /* reserved */
PTI_RESERVED3, /* reserved */
PTI_RESERVED4, /* reserved for content provider only */
PTI_UPC_ISRC, /* UPC/EAN code of the album and ISRC code of each track */
PTI_SIZE_INFO, /* (binary) size information of the block */
PTI_END /* terminating PTI (for stepping through PTIs) */
};
enum PtiFormat {
FORMAT_CHAR, /* single or double byte character string */
FORMAT_BINARY /* binary data */
};
typedef struct Cdtext Cdtext;
/* return a pointer to a new Cdtext */
Cdtext *cdtext_init(void);
/* release a Cdtext */
void cdtext_delete(Cdtext *cdtext);
/* returns non-zero if there are no CD-TEXT fields set, zero otherwise */
int cdtext_is_empty(Cdtext *cdtext);
/* set CD-TEXT field to value for PTI pti */
void cdtext_set(int pti, char *value, Cdtext *cdtext);
/* returns pointer to CD-TEXT value for PTI pti */
char *cdtext_get(int pti, Cdtext *cdtext);
/*
* returns appropriate string for PTI pti
* if istrack is zero, UPC/EAN string will be returned for PTI_UPC_ISRC
* othwise ISRC string will be returned
*/
const char *cdtext_get_key(int pti, int istrack);
/*
* dump all cdtext info
* in human readable format (for debugging)
*/
void cdtext_dump(Cdtext *cdtext, int istrack);
#endif
File diff suppressed because it is too large Load Diff
+163
View File
@@ -0,0 +1,163 @@
/* A Bison parser, made by GNU Bison 2.4.1. */
/* Skeleton interface for Bison's Yacc-like parsers in C
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
NUMBER = 258,
STRING = 259,
CATALOG = 260,
CDTEXTFILE = 261,
FFILE = 262,
BINARY = 263,
MOTOROLA = 264,
AIFF = 265,
WAVE = 266,
MP3 = 267,
TRACK = 268,
AUDIO = 269,
MODE1_2048 = 270,
MODE1_2352 = 271,
MODE2_2336 = 272,
MODE2_2048 = 273,
MODE2_2342 = 274,
MODE2_2332 = 275,
MODE2_2352 = 276,
TRACK_ISRC = 277,
FLAGS = 278,
PRE = 279,
DCP = 280,
FOUR_CH = 281,
SCMS = 282,
PREGAP = 283,
INDEX = 284,
POSTGAP = 285,
TITLE = 286,
PERFORMER = 287,
SONGWRITER = 288,
COMPOSER = 289,
ARRANGER = 290,
MESSAGE = 291,
DISC_ID = 292,
GENRE = 293,
TOC_INFO1 = 294,
TOC_INFO2 = 295,
UPC_EAN = 296,
ISRC = 297,
SIZE_INFO = 298,
DATE = 299,
REPLAYGAIN_ALBUM_GAIN = 300,
REPLAYGAIN_ALBUM_PEAK = 301,
REPLAYGAIN_TRACK_GAIN = 302,
REPLAYGAIN_TRACK_PEAK = 303
};
#endif
/* Tokens. */
#define NUMBER 258
#define STRING 259
#define CATALOG 260
#define CDTEXTFILE 261
#define FFILE 262
#define BINARY 263
#define MOTOROLA 264
#define AIFF 265
#define WAVE 266
#define MP3 267
#define TRACK 268
#define AUDIO 269
#define MODE1_2048 270
#define MODE1_2352 271
#define MODE2_2336 272
#define MODE2_2048 273
#define MODE2_2342 274
#define MODE2_2332 275
#define MODE2_2352 276
#define TRACK_ISRC 277
#define FLAGS 278
#define PRE 279
#define DCP 280
#define FOUR_CH 281
#define SCMS 282
#define PREGAP 283
#define INDEX 284
#define POSTGAP 285
#define TITLE 286
#define PERFORMER 287
#define SONGWRITER 288
#define COMPOSER 289
#define ARRANGER 290
#define MESSAGE 291
#define DISC_ID 292
#define GENRE 293
#define TOC_INFO1 294
#define TOC_INFO2 295
#define UPC_EAN 296
#define ISRC 297
#define SIZE_INFO 298
#define DATE 299
#define REPLAYGAIN_ALBUM_GAIN 300
#define REPLAYGAIN_ALBUM_PEAK 301
#define REPLAYGAIN_TRACK_GAIN 302
#define REPLAYGAIN_TRACK_PEAK 303
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
/* Line 1676 of yacc.c */
#line 59 "cue_parser.y"
long ival;
char *sval;
/* Line 1676 of yacc.c */
#line 155 "cue_parser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
extern YYSTYPE yylval;
+352
View File
@@ -0,0 +1,352 @@
%{
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "config.h"
#include "cd.h"
#include "time.h"
#ifdef YY_BUF_SIZE
#undef YY_BUF_SIZE
#endif
#define YY_BUF_SIZE 16384
#define YYDEBUG 1
char fnamebuf[PARSER_BUFFER];
/* debugging */
//int yydebug = 1;
extern int yylineno;
extern FILE* yyin;
static Cd *cd = NULL;
static Track *track = NULL;
static Track *prev_track = NULL;
static Cdtext *cdtext = NULL;
static Rem *rem = NULL;
static char *prev_filename = NULL; /* last file in or before last track */
static char *cur_filename = NULL; /* last file in the last track */
static char *new_filename = NULL; /* last file in this track */
/* lexer interface */
typedef struct yy_buffer_state* YY_BUFFER_STATE;
int yylex(void);
void yyerror(const char*);
YY_BUFFER_STATE yy_scan_string(const char*);
YY_BUFFER_STATE yy_create_buffer(FILE*, int);
void yy_switch_to_buffer(YY_BUFFER_STATE);
void yy_delete_buffer(YY_BUFFER_STATE);
/* parser interface */
int yyparse(void);
Cd *cue_parse_file(FILE *fp);
Cd *cue_parse_string(const char*);
%}
%start cuefile
%union {
long ival;
char *sval;
}
%token <ival> NUMBER
%token <sval> STRING
/* global (header) */
%token CATALOG
%token CDTEXTFILE
%token FFILE
%token BINARY
%token MOTOROLA
%token AIFF
%token WAVE
%token MP3
/* track */
%token TRACK
%token <ival> AUDIO
%token <ival> MODE1_2048
%token <ival> MODE1_2352
%token <ival> MODE2_2336
%token <ival> MODE2_2048
%token <ival> MODE2_2342
%token <ival> MODE2_2332
%token <ival> MODE2_2352
/* ISRC is with CD_TEXT */
%token TRACK_ISRC
%token FLAGS
%token <ival> PRE
%token <ival> DCP
%token <ival> FOUR_CH
%token <ival> SCMS
%token PREGAP
%token INDEX
%token POSTGAP
/* CD-TEXT */
%token <ival> TITLE
%token <ival> PERFORMER
%token <ival> SONGWRITER
%token <ival> COMPOSER
%token <ival> ARRANGER
%token <ival> MESSAGE
%token <ival> DISC_ID
%token <ival> GENRE
%token <ival> TOC_INFO1
%token <ival> TOC_INFO2
%token <ival> UPC_EAN
%token <ival> ISRC
%token <ival> SIZE_INFO
%type <ival> track_mode
%type <ival> track_flag
%type <ival> time
%type <ival> cdtext_item
/* REM */
%type <ival> rem_item
%token <ival> DATE
%token <ival> REPLAYGAIN_ALBUM_GAIN
%token <ival> REPLAYGAIN_ALBUM_PEAK
%token <ival> REPLAYGAIN_TRACK_GAIN
%token <ival> REPLAYGAIN_TRACK_PEAK
%%
cuefile
: new_cd global_statements track_list
;
new_cd
: /* empty */ {
cd = cd_init();
cdtext = cd_get_cdtext(cd);
rem = cd_get_rem(cd);
}
;
global_statements
: /* empty */
| global_statements global_statement
;
global_statement
: CATALOG STRING '\n' { cd_set_catalog(cd, $2); }
| CDTEXTFILE STRING '\n' { cd_set_cdtextfile(cd, $2); }
| cdtext
| rem
| track_data
| error '\n'
;
track_data
: FFILE STRING file_format '\n' {
if (NULL != new_filename) {
yyerror("too many files specified\n");
}
new_filename = strncpy(fnamebuf, $2, sizeof(fnamebuf));
new_filename[strlen(new_filename)] = '\0';
}
;
track_list
: track
| track_list track
;
track
: new_track track_def track_statements
;
file_format
: BINARY
| MOTOROLA
| AIFF
| WAVE
| MP3
;
new_track
: /*empty */ {
/* save previous track, to later set length */
prev_track = track;
track = cd_add_track(cd);
cdtext = track_get_cdtext(track);
rem = track_get_rem(track);
cur_filename = new_filename;
if (NULL != cur_filename)
prev_filename = cur_filename;
if (NULL == prev_filename)
yyerror("no file specified for track");
else
track_set_filename(track, prev_filename);
new_filename = NULL;
}
;
track_def
: TRACK NUMBER track_mode '\n' {
track_set_mode(track, $3);
}
;
track_mode
: AUDIO
| MODE1_2048
| MODE1_2352
| MODE2_2336
| MODE2_2048
| MODE2_2342
| MODE2_2332
| MODE2_2352
;
track_statements
: track_statement
| track_statements track_statement
;
track_statement
: cdtext
| rem
| FLAGS track_flags '\n'
| TRACK_ISRC STRING '\n' { track_set_isrc(track, $2); }
| PREGAP time '\n' { track_set_zero_pre(track, $2); }
| INDEX NUMBER time '\n' {
int i = track_get_nindex(track);
long prev_length;
if (0 == i) {
/* first index */
track_set_start(track, $3);
if (NULL != prev_track && NULL == cur_filename) {
/* track shares file with previous track */
prev_length = $3 - track_get_start(prev_track);
track_set_length(prev_track, prev_length);
}
}
for (; i <= $2; i++)
track_add_index(track, \
track_get_zero_pre(track) + $3 \
- track_get_start(track));
}
| POSTGAP time '\n' { track_set_zero_post(track, $2); }
| track_data
| error '\n'
;
track_flags
: /* empty */
| track_flags track_flag { track_set_flag(track, $2); }
;
track_flag
: PRE
| DCP
| FOUR_CH
| SCMS
;
cdtext
: cdtext_item STRING '\n' { cdtext_set ($1, $2, cdtext); }
;
cdtext_item
: TITLE
| PERFORMER
| SONGWRITER
| COMPOSER
| ARRANGER
| MESSAGE
| DISC_ID
| GENRE
| TOC_INFO1
| TOC_INFO2
| UPC_EAN
| ISRC
| SIZE_INFO
;
time
: NUMBER
| NUMBER ':' NUMBER ':' NUMBER { $$ = time_msf_to_frame($1, $3, $5); }
;
rem
: rem_item STRING '\n' { rem_set($1, $2, rem); }
;
rem_item
: DATE
| REPLAYGAIN_ALBUM_GAIN
| REPLAYGAIN_ALBUM_PEAK
| REPLAYGAIN_TRACK_GAIN
| REPLAYGAIN_TRACK_PEAK
;
%%
/* lexer interface */
void yyerror (const char *s)
{
fprintf(stderr, "%d: %s\n", yylineno, s);
}
Cd *cue_parse_file(FILE *fp)
{
YY_BUFFER_STATE buffer = NULL;
yyin = fp;
buffer = yy_create_buffer(yyin, YY_BUF_SIZE);
yy_switch_to_buffer(buffer);
if (0 == yyparse())
{
yy_delete_buffer(buffer);
return cd;
}
yy_delete_buffer(buffer);
return NULL;
}
Cd *cue_parse_string(const char* string)
{
YY_BUFFER_STATE buffer = NULL;
buffer = yy_scan_string(string);
if (0 == yyparse())
{
yy_delete_buffer(buffer);
return cd;
}
yy_delete_buffer(buffer);
return NULL;
}
File diff suppressed because it is too large Load Diff
+139
View File
@@ -0,0 +1,139 @@
%{
/*
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
#include <stdlib.h>
#include <string.h>
#include "config.h"
#include "cd.h"
#include "cue_parser.h"
char buffer[PARSER_BUFFER];
int yylex(void);
%}
ws [ \t\r]
nonws [^ \t\r\n]
%option yylineno
%option noyywrap
%option noinput
%option nounput
%s NAME
%x REM
%x RPG
%x SKIP
%%
\'([^\']|\\\')*\' |
\"([^\"]|\\\")*\" {
yylval.sval = strncpy( buffer,
++yytext,
(yyleng > sizeof(buffer) ? sizeof(buffer) : yyleng));
yylval.sval[yyleng - 2] = '\0';
BEGIN(INITIAL);
return STRING;
}
<NAME>{nonws}+ {
yylval.sval = strncpy( buffer,
yytext,
(yyleng > sizeof(buffer) ? sizeof(buffer) : yyleng));
yylval.sval[yyleng] = '\0';
BEGIN(INITIAL);
return STRING;
}
CATALOG { BEGIN(NAME); return CATALOG; }
CDTEXTFILE { BEGIN(NAME); return CDTEXTFILE; }
FILE { BEGIN(NAME); return FFILE; }
BINARY { return BINARY; }
MOTOROLA { return MOTOROLA; }
AIFF { return AIFF; }
WAVE { return WAVE; }
MP3 { return MP3; }
TRACK { return TRACK; }
AUDIO { yylval.ival = MODE_AUDIO; return AUDIO; }
MODE1\/2048 { yylval.ival = MODE_MODE1; return MODE1_2048; }
MODE1\/2352 { yylval.ival = MODE_MODE1_RAW; return MODE1_2352; }
MODE2\/2336 { yylval.ival = MODE_MODE2; return MODE2_2336; }
MODE2\/2048 { yylval.ival = MODE_MODE2_FORM1; return MODE2_2048; }
MODE2\/2342 { yylval.ival = MODE_MODE2_FORM2; return MODE2_2342; }
MODE2\/2332 { yylval.ival = MODE_MODE2_FORM_MIX; return MODE2_2332; }
MODE2\/2352 { yylval.ival = MODE_MODE2_RAW; return MODE2_2352; }
FLAGS { return FLAGS; }
PRE { yylval.ival = FLAG_PRE_EMPHASIS; return PRE; }
DCP { yylval.ival = FLAG_COPY_PERMITTED; return DCP; }
4CH { yylval.ival = FLAG_FOUR_CHANNEL; return FOUR_CH; }
SCMS { yylval.ival = FLAG_SCMS; return SCMS; }
PREGAP { return PREGAP; }
INDEX { return INDEX; }
POSTGAP { return POSTGAP; }
TITLE { BEGIN(NAME); yylval.ival = PTI_TITLE; return TITLE; }
PERFORMER { BEGIN(NAME); yylval.ival = PTI_PERFORMER; return PERFORMER; }
SONGWRITER { BEGIN(NAME); yylval.ival = PTI_SONGWRITER; return SONGWRITER; }
COMPOSER { BEGIN(NAME); yylval.ival = PTI_COMPOSER; return COMPOSER; }
ARRANGER { BEGIN(NAME); yylval.ival = PTI_ARRANGER; return ARRANGER; }
MESSAGE { BEGIN(NAME); yylval.ival = PTI_MESSAGE; return MESSAGE; }
DISC_ID { BEGIN(NAME); yylval.ival = PTI_DISC_ID; return DISC_ID; }
GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return GENRE; }
TOC_INFO1 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
TOC_INFO2 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
UPC_EAN { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return UPC_EAN; }
ISRC/{ws}+\" { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return ISRC; }
SIZE_INFO { BEGIN(NAME); yylval.ival = PTI_SIZE_INFO; return SIZE_INFO; }
ISRC { BEGIN(NAME); return TRACK_ISRC; }
REM { BEGIN(REM); /* exclusive rules for special exceptions */ }
<REM>DATE { BEGIN(NAME); yylval.ival = REM_DATE; return DATE; }
<REM>REPLAYGAIN_ALBUM_GAIN { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_GAIN;
return REPLAYGAIN_ALBUM_GAIN; }
<REM>REPLAYGAIN_ALBUM_PEAK { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_PEAK;
return REPLAYGAIN_ALBUM_PEAK; }
<REM>REPLAYGAIN_TRACK_GAIN { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_GAIN;
return REPLAYGAIN_TRACK_GAIN; }
<REM>REPLAYGAIN_TRACK_PEAK { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_PEAK;
return REPLAYGAIN_TRACK_PEAK; }
<REM>{ws}+ { BEGIN(REM); }
<REM>. { BEGIN(REM); }
<REM>\n { BEGIN(INITIAL); }
<RPG>{nonws}+ {
yylval.sval = strncpy( buffer,
yytext,
(yyleng > sizeof(buffer) ? sizeof(buffer) : yyleng));
yylval.sval[yyleng] = '\0';
BEGIN(SKIP);
return STRING;
}
<RPG>{ws}+ { BEGIN(RPG); }
<SKIP>.*\n { BEGIN(INITIAL); yylineno++; return '\n'; }
{ws}+ { /* ignore whitespace */ }
[[:digit:]]+ { yylval.ival = atoi(yytext); return NUMBER; }
: { return yytext[0]; }
^{ws}*\n { yylineno++; /* blank line */ }
\n { yylineno++; return '\n'; }
. { fprintf(stderr, "bad character '%c'\n", yytext[0]); }
%%
+12
View File
@@ -0,0 +1,12 @@
/*
* Copyright (c) 2009, 2010 Jochen Keil
* For license terms, see the file COPYING in this distribution.
*/
extern "C" {
#include "cd.h"
Cd* cue_parse_file(FILE*);
Cd* cue_parse_string(const char*);
}
+10
View File
@@ -0,0 +1,10 @@
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/libcue-1.4
Name: libcue
Description: Cuesheet parser library
Version: 1.4.0
Libs: -L${libdir} -lcue
Cflags: -I${includedir}
+10
View File
@@ -0,0 +1,10 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/@LIBCUE_LIBRARY_NAME@-@LIBCUE_API_VERSION@
Name: libcue
Description: Cuesheet parser library
Version: @VERSION@
Libs: -L${libdir} -lcue
Cflags: -I${includedir}
+140
View File
@@ -0,0 +1,140 @@
/*
* Copyright (c) 2009, 2010 Jochen Keil
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY Jochen Keil ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Jochen Keil BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "rem.h"
struct Rem {
unsigned int cmt;
char *value;
};
Rem*
rem_new( void)
{
Rem* new_rem = NULL;
Rem rem[] = {
{REM_DATE, NULL},
{REM_REPLAYGAIN_ALBUM_GAIN, NULL},
{REM_REPLAYGAIN_ALBUM_PEAK, NULL},
{REM_REPLAYGAIN_TRACK_GAIN, NULL},
{REM_REPLAYGAIN_TRACK_PEAK, NULL},
{REM_END, NULL}
};
/* sizeof(rem) = number of elements in rem[] * sizeof(Rem) */
new_rem = (Rem*)calloc(sizeof(rem) / sizeof(Rem), sizeof(Rem));
if (new_rem == NULL)
fprintf(stderr, "rem_new(): problem allocating memory\n");
else
memcpy(new_rem, rem, sizeof(rem));
return new_rem;
}
void
rem_free( Rem* rem)
{
if (rem == NULL)
return;
Rem* ptr = rem;
do
{
free(ptr->value);
}
while ((++ptr)->cmt != REM_END);
free(rem);
}
int
rem_is_emtpy( Rem* rem)
{
if (rem == NULL)
return 1;
do
{
if (rem->value != NULL)
return 0;
} while ((++rem)->cmt != REM_END);
return 1;
}
void
rem_set( unsigned int cmt,
char* value,
Rem* rem)
{
if (rem == NULL || value == NULL)
return;
do
{
if (rem->cmt == cmt)
{
free(rem->value);
rem->value = strdup(value);
return;
}
} while ((++rem)->cmt != REM_END);
}
char*
rem_get( unsigned int cmt,
Rem* rem)
{
if (rem == NULL)
return NULL;
do
{
if (rem->cmt == cmt)
{
if (rem->value != NULL)
return rem->value;
else
return NULL;
}
} while ((++rem)->cmt != REM_END);
return NULL;
}
void
rem_dump( Rem* rem)
{
if (rem == NULL)
return;
do
{
fprintf(stdout, "REM %u: %s\n", rem->cmt, rem->value);
} while ((++rem)->cmt != REM_END);
}
+82
View File
@@ -0,0 +1,82 @@
/*
* Copyright (c) 2009, 2010 Jochen Keil
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY Jochen Keil ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Jochen Keil BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef REM_H
#define REM_H
#include <stdio.h>
enum Cmt {
REM_DATE, /* date of cd/track */
REM_REPLAYGAIN_ALBUM_GAIN,
REM_REPLAYGAIN_ALBUM_PEAK,
REM_REPLAYGAIN_TRACK_GAIN,
REM_REPLAYGAIN_TRACK_PEAK,
REM_END /* terminating REM (for stepping through REMs) */
};
typedef struct Rem Rem;
/**
* return new allocated rem struct
*/
Rem*
rem_new( void);
/**
* free rem struct
*/
void
rem_free( Rem*);
/**
* return true if allocated rem struct is empty
*/
int
rem_is_emtpy( Rem*);
/**
* set value of rem comment
* @param unsigned int: enum of rem comment
*/
void
rem_set( unsigned int,
char*,
Rem*);
/**
* return pointer to value for rem comment
* @param unsigned int: enum of rem comment
*/
char*
rem_get( unsigned int,
Rem*);
/**
* dump all rem comments in human readable form
* @param bool: if track: true; else false
*/
void
rem_dump( Rem*);
#endif
+45
View File
@@ -0,0 +1,45 @@
/*
* time.c -- time functions
*
* Copyright (C) 2004, 2005, 2006, 2007 Svend Sorensen
* For license terms, see the file COPYING in this distribution.
*/
#include "time.h"
#include <stdio.h>
#include <stdlib.h>
long time_msf_to_frame(int m, int s, int f)
{
return (m * 60 + s) * 75 + f;
}
void msf_frame_to_msf(long frame, int *m, int *s, int *f)
{
*f = frame % 75; /* 0 <= frames <= 74 */
frame /= 75;
*s = frame % 60; /* 0 <= seconds <= 59 */
frame /= 60;
*m = frame; /* 0 <= minutes */
}
void time_frame_to_msf(long frame, int *m, int *s, int *f)
{
*f = frame % 75; /* 0 <= frames <= 74 */
frame /= 75;
*s = frame % 60; /* 0 <= seconds <= 59 */
frame /= 60;
*m = frame; /* 0 <= minutes */
}
/* print frame in mm:ss:ff format */
char *time_frame_to_mmssff(long f)
{
static char msf[9];
int minutes, seconds, frames;
msf_frame_to_msf(f, &minutes, &seconds, &frames);
sprintf(msf, "%02d:%02d:%02d", minutes, seconds, frames);
return msf;
}
+17
View File
@@ -0,0 +1,17 @@
/*
* time.h -- time declarations
*
* Copyright (C) 2004, 2005, 2006, 2007 Svend Sorensen
* For license terms, see the file COPYING in this distribution.
*/
#ifndef TIME_H
#define TIME_H
void msf_frame_to_msf(long frame, int *m, int *s, int *f);
long time_msf_to_frame(int m, int s, int f);
long time_mmssff_to_frame(char *mmssff);
void time_frame_to_msf(long frame, int *m, int *s, int *f);
char *time_frame_to_mmssff(long f);
#endif
+1
View File
@@ -0,0 +1 @@
timestamp for config.h
+992
View File
@@ -0,0 +1,992 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// Clio.cpp: implementation of the CClio class.
//
//////////////////////////////////////////////////////////////////////
#include "freedoconfig.h"
#include "Clio.h"
#include "Madam.h"
#include "XBUS.h"
#include "arm.h"
#include "DSP.h"
#include "stdafx.h"
#define DECREMENT 0x1
#define RELOAD 0x2
#define CASCADE 0x4
#define FLABLODE 0x8
void __fastcall HandleDMA(unsigned int val);
//#define FIFODBG
#define RELOAD_VAL 0x10
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#pragma pack(push,1)
struct FIFOt{
unsigned int StartAdr;
int StartLen;
unsigned int NextAdr;
int NextLen;
};
struct CLIODatum
{
unsigned int cregs[65536];
int DSPW1;
int DSPW2;
int DSPA;
int PTRI[13];
int PTRO[4];
FIFOt FIFOI[13];
FIFOt FIFOO[4];
};
#pragma pack(pop)
static unsigned int * Mregs;
static CLIODatum clio;
#define cregs clio.cregs
#define DSPW1 clio.DSPW1
#define DSPW2 clio.DSPW2
#define DSPA clio.DSPA
#define PTRI clio.PTRI
#define PTRO clio.PTRO
#define FIFOI clio.FIFOI
#define FIFOO clio.FIFOO
#include <memory.h>
unsigned int _clio_SaveSize()
{
return sizeof(CLIODatum);
}
void _clio_Save(void *buff)
{
memcpy(buff,&clio,sizeof(CLIODatum));
}
void _clio_Load(void *buff)
{
memcpy(&clio,buff,sizeof(CLIODatum));
}
#define CURADR Mregs[base]
#define CURLEN Mregs[base+4]
#define RLDADR Mregs[base+8]
#define RLDLEN Mregs[base+0xc]
extern int fastrand();
int _clio_v0line()
{
return cregs[8]&0x7ff;
}
int _clio_v1line()
{
return cregs[12]&0x7ff;
}
bool __fastcall _clio_NeedFIQ()
{
if( (cregs[0x40]&cregs[0x48]) || (cregs[0x60]&cregs[0x68]) ) return true;
return false;
}
void __fastcall _clio_GenerateFiq(unsigned int reason1, unsigned int reason2)
{
cregs[0x40]|=reason1;
cregs[0x60]|=reason2;
if(cregs[0x60]) cregs[0x40]|=0x80000000; // irq31 if exist irq32 and high
//if( (cregs[0x40]&cregs[0x48]) || (cregs[0x60]&cregs[0x68]) ) _arm_SetFIQ();
/////////////
#ifdef DBGFIQ
sprintf(str,"FIQ accepted 0x%8.8X 0x%8.8X 0x%8.8X 0x%8.8X\n",reason1,reason2,CClio::Peek(0x48),CClio::Peek(0x68));
CDebug::DPrint(str);
if( (cregs[0x40]&cregs[0x48]) || (cregs[0x60]&cregs[0x68]) )
{
sprintf(str,"!!!FIQ decision taken\n");
CDebug::DPrint(str);
}
#endif
/////////////
}
#include "freedocore.h"
extern _ext_Interface io_interface;
//extern AString str;
void __fastcall _clio_SetTimers(uint32 v200, uint32 v208);
void __fastcall _clio_ClearTimers(uint32 v204, uint32 v20c);
int __fastcall _clio_Poke(unsigned int addr, unsigned int val)
{
int base;
int i;
//if(addr==0x200 || addr==0x204 || addr==0x208 || addr==0x20c || (addr>=0x100 && addr<=0x17c) || addr==0x220)io_interface(EXT_DEBUG_PRINT,(void*)str.print("CLIO Write[0x%X] = 0x%8.8X",addr,val).CStr());
//if(addr==0x34 || addr==0x30)io_interface(EXT_DEBUG_PRINT,(void*)str.print("CLIO Write[0x%X] = 0x%8.8X",addr,val).CStr());
if( (addr& ~0x2C) == 0x40 ) // 0x40..0x4C, 0x60..0x6C case
{
if(addr==0x40)
{
cregs[0x40]|=val;
if(cregs[0x60]) cregs[0x40]|=0x80000000;
//if(cregs[0x40]&cregs[0x48]) _arm_SetFIQ();
return 0;
}
else if(addr==0x44)
{
cregs[0x40]&=~val;
if(!cregs[0x60]) cregs[0x40]&=~0x80000000;
return 0;
}
else if(addr==0x48)
{
cregs[0x48]|=val;
//if(cregs[0x40]&cregs[0x48]) _arm_SetFIQ();
return 0;
}
else if(addr==0x4c)
{
cregs[0x48]&=~val;
cregs[0x48]|=0x80000000; // always one for irq31
return 0;
}
/*else if(addr==0x50)
{
cregs[0x50]|=val&0x3fff0000;
return 0;
}
else if(addr==0x54)
{
cregs[0x50]&=~val;
return 0;
} */
else if(addr==0x60)
{
cregs[0x60]|=val;
if(cregs[0x60]) cregs[0x40]|=0x80000000;
//if(cregs[0x60]&cregs[0x68]) _arm_SetFIQ();
return 0;
}
else if(addr==0x64)
{
cregs[0x60]&=~val;
if(!cregs[0x60]) cregs[0x40]&=~0x80000000;
return 0;
}
else if(addr==0x68)
{
cregs[0x68]|=val;
//if(cregs[0x60]&cregs[0x68]) _arm_SetFIQ();
return 0;
}
else if(addr==0x6c)
{
cregs[0x68]&=~val;
return 0;
}
}
else if(addr==0x84)
{
//temp=val&0xf0;
//temp=temp>>4;
//val&=0x0f;
//cregs[0x84]&=~temp;
//cregs[0x84]|=val;
cregs[0x84]=val&0xf;
SelectROM((val&4)? 1:0 );
return 0;
}else if(addr==0x300)
{ //clear down the fifos and stop them
base=0;
cregs[0x304]&=~val;
for(i=0;i<13;i++)
{
if(val&(1<<i))
{
base=0x400+(i<<4);
RLDADR=CURADR=0;
RLDLEN=CURLEN=0;
_clio_SetFIFO(base,0);
_clio_SetFIFO(base+4,0);
_clio_SetFIFO(base+8,0);
_clio_SetFIFO(base+0xc,0);
val&=~(1<<i);
PTRI[i]=0;
}
}
{
for(i=0;i<4;i++)
{
if(val&(1<<(i+16)))
{
base=0x500+(i<<4);
RLDADR=CURADR=0;
RLDLEN=CURLEN=0;
_clio_SetFIFO(base,0);
_clio_SetFIFO(base+4,0);
_clio_SetFIFO(base+8,0);
_clio_SetFIFO(base+0xc,0);
val&=~(1<<(i+16));
PTRO[i]=0;
}
}
}
return 0;
}
else if(addr==0x304) // Dma Starter!!!!! P/A !!!! need to create Handler.
{
//if(val&0x00100000)
//{
HandleDMA(val);
// cregs[0x304]&=~0x00100000;
//}
return 0;
}
else if(addr==0x308) //Dma Stopper!!!!
{
cregs[0x304]&=~val;
return 0;
}
else if(addr==0x400) //XBUS direction
{
if(val&0x800)
return 0;
else
{
cregs[0x400]=val;
return 0;
}
}
else if((addr>=0x500) && (addr<0x540))
{
_xbus_SetSEL(val);
return 0;
}
else if((addr>=0x540) && (addr<0x580))
{
#ifdef DBGXBUS
sprintf(str,"XBPC : 0x%8.8x :",RegRead(15));
CDebug::DPrint(str);
#endif
_xbus_SetPoll(val);
return 0;
}
else if((addr>=0x580) && (addr<0x5c0))
{
_xbus_SetCommandFIFO(val); // on FIFO Filled execute the command
return 0;
}
else if((addr>=0x5c0) && (addr<0x600))
{
_xbus_SetDataFIFO(val); // on FIFO Filled execute the command
return 0;
}
else if(addr==0x28)
{
cregs[addr]=val;
if(val==0x30)
return 1;
else
return 0;
}else if((addr>=0x1800)&&(addr<=0x1fff))//0x0340 1800 … 0x0340 1BFF && 0x0340 1C00 … 0x0340 1FFF
{
addr&=~0x400; //mirrors
DSPW1=val>>16;
DSPW2=val&0xffff;
DSPA=(addr-0x1800)>>1;
//sprintf(str,"0x%8.8X : 2x1NWRITE 0x%3.3X 0x%4.4X\n",GetPC(),DSPA,DSPW1);
//CDebug::DPrint(str);
//sprintf(str,"0x%8.8X : 2x2NWRITE 0x%3.3X 0x%4.4X\n",GetPC(),DSPA+1,DSPW2);
//CDebug::DPrint(str);
_dsp_WriteMemory(DSPA,DSPW1);
_dsp_WriteMemory(DSPA+1,DSPW2);
return 0;
//DSPNRAMWrite 2 DSPW per 1ARMW
}else if((addr>=0x2000)&&(addr<=0x2fff))
{
addr&=~0x800;//mirrors
DSPW1=val&0xffff;
DSPA=(addr-0x2000)>>2;
//sprintf(str,"0x%8.8X : 1xNWRITE 0x%3.3X 0x%4.4X\n",GetPC(),DSPA,DSPW1);
//CDebug::DPrint(str);
_dsp_WriteMemory(DSPA,DSPW1);
return 0;
//DSPNRAMWrite 1 DSPW per 1ARMW
}else if((addr>=0x3000)&&(addr<=0x33ff)) //0x0340 3000 … 0x0340 33FF
{
DSPA=(addr-0x3000)>>1;
DSPA&=0xff;
DSPW1=val>>16;
DSPW2=val&0xffff;
_dsp_WriteIMem(DSPA,DSPW1);
_dsp_WriteIMem(DSPA+1,DSPW2);
/* printf("#ARM 2IWRITE1 0x%3.3X<=0x%4.4X\n",DSPA,DSPW1);
printf("#ARM 2IWRITE2 0x%3.3X<=0x%4.4X\n",DSPA+1,DSPW2);
printf("#ARM word %8.8x\n-----------------------\n",val);*/
return 0;
//DSPEIRam 2 DSPW per 1ARMW
}else if((addr>=0x3400)&&(addr<=0x37ff))//0x0340 3400 … 0x0340 37FF
{
DSPA=(addr-0x3400)>>2;
DSPA&=0xff;
//if(DSPA>0x6f)
//printf("##Strange coeff write -- 0x%3.3X<=0x%4.4X\n",DSPA,DSPW1);
DSPW1=val&0xffff;
_dsp_WriteIMem(DSPA,DSPW1);
/* printf("#ARM IWRITE 0x%3.3X<=0x%4.4X\n",DSPA,DSPW1);
printf("#ARM word %8.8x\n-----------------------\n",val);*/
return 0;
//DSPEIRam 1 DSPW per 1 ARMW
}
else if(addr==0x17E8)//Reset
{
_dsp_Reset();
return 0;
}
else if(addr==0x17D0)//Write DSP/ARM Semaphore
{
_dsp_ARMwrite2sema4(val);
return 0;
}
else if(addr==0x17FC)//start/stop
{
_dsp_SetRunning(val>0);
return 0;
}
else if(addr==0x200)
{
cregs[0x200]|=val;
_clio_SetTimers(val, 0);
return 0;
}
else if(addr==0x204)
{
cregs[0x200]&=~val;
_clio_ClearTimers(val, 0);
return 0;
}
else if(addr==0x208)
{
cregs[0x208]|=val;
_clio_SetTimers(0, val);
return 0;
}
else if(addr==0x20c)
{
cregs[0x208]&=~val;
_clio_ClearTimers(0, val);
return 0;
}
else if(addr==0x220)
{
//if(val<64)val=64;
cregs[addr]=val&0x3ff;
return 0;
}
else if(addr>=0x100 && addr<=0x7c)
{
cregs[addr]=val&0xffff;
return 0;
}
// char jj[90];
// sprintf(jj, "addr=%X, val=0x%8.8X", addr, val,);
//if(jw==0&&addr==0x128){io_interface(EXT_DEBUG_PRINT,(void*)jj); jw=100000;}
if(addr==0x128&&val==0x0)jw=17000000;//val=1;
cregs[addr]=val;
return 0;
}
unsigned int __fastcall _clio_Peek(unsigned int addr)
{
#ifdef DBGCLIO
val=CClio::Peek(index);
if(index!=0x34)
{
sprintf(str,"0x%8.8X : CLIO Read clio[0x%X] = 0x%8.8X\n",RegRead(15),index,val);
CDebug::DPrint(str);
}
return val;
#endif
//if(addr>0x600) // ??????? DSP debug
//{
// printf("#CLIO:PEEK (0x%4.4X)\n",addr);
//}
//if(addr==0x200 || addr==0x204 || addr==0x208 || addr==0x20c || (addr>=0x100 && addr<=0x17c) || addr==0x220)io_interface(EXT_DEBUG_PRINT,(void*)str.print("CLIO Read[0x%X] = 0x%8.8X",addr,cregs[addr]).CStr());
//if(addr==0x34 || addr==0x30)io_interface(EXT_DEBUG_PRINT,(void*)str.print("CLIO Read[0x%X] = 0x%8.8X",addr,cregs[addr]).CStr());
if( (addr& ~0x2C) == 0x40 ) // 0x40..0x4C, 0x60..0x6C case
{
addr&=~4; // By read 40 and 44, 48 and 4c, 60 and 64, 68 and 6c same
if(addr==0x40)
{
return cregs[0x40];
}
else if(addr==0x48)
{
return cregs[0x48]|0x80000000;
}
else if(addr==0x60)
{
return cregs[0x60];
}
else if(addr==0x68)
{
return cregs[0x68];
}
return 0; // for skip warning C4715
}
else if(addr==0x204)
{
return cregs[0x200];
}
else if(addr==0x20c)
{
return cregs[0x208];
}
else if(addr==0x308)
{
return cregs[0x304];
}
else if (addr==0x414)
{
return 0x4000; //TO CHECK!!! requested by CDROMDIPIR
}
else if((addr>=0x500) && (addr<0x540))
{
return _xbus_GetRes();
}
else if((addr>=0x540) && (addr<0x580))
{
#ifdef DBGXBUS
sprintf(str,"XBPC : 0x%8.8x :",RegRead(15));
CDebug::DPrint(str);
#endif
return _xbus_GetPoll();
}
else if((addr>=0x580) && (addr<0x5c0))
{
return _xbus_GetStatusFIFO();
}
else if((addr>=0x5c0) && (addr<0x600))
{
return _xbus_GetDataFIFO();
}
else if(addr==0x0)
{
return 0x02020000;
}
else if((addr>=0x3800)&&(addr<=0x3bff))//0x0340 3800 … 0x0340 3BFF
{
//2DSPW per 1ARMW
DSPA=(addr-0x3800)>>1;
DSPA&=0xff;
DSPA+=0x300;
DSPW1=_dsp_ReadIMem(DSPA);
DSPW2=_dsp_ReadIMem(DSPA+1);
return ((DSPW1<<16)|DSPW2);
}
else if((addr>=0x3c00)&&(addr<=0x3fff))//0x0340 3C00 … 0x0340 3FFF
{
DSPA=(addr-0x3c00)>>2;
DSPA&=0xff;
DSPA+=0x300;
return (_dsp_ReadIMem(DSPA));
}
else if(addr==0x17F0)
{
return fastrand();
}
else if(addr==0x17D0)//Read DSP/ARM Semaphore
{
return _dsp_ARMread2sema4();
}
else if(addr>=0x100 && addr<=0x7c)
{
return cregs[addr]&0xffff;
}
else
return cregs[addr];
}
void __fastcall _clio_UpdateVCNT(int line, int halfframe)
{
// Poke(0x34,Peek(0x34)+1);
cregs[0x34]=(halfframe<<11)+line;
}
void __fastcall _clio_SetTimers(uint32 v200, uint32 v208)
{
(void) v200;
(void) v208;
}
void __fastcall _clio_ClearTimers(uint32 v204, uint32 v20c)
{
(void) v204;
(void) v20c;
}
void __fastcall _clio_DoTimers()
{
unsigned int timer;
unsigned short counter;
unsigned int flag;
bool NeedDecrementNextTimer=true; // Need decrement for next timer
//bool prevdec=false;
for (timer=0;timer<16;timer++)
{
flag=cregs[(timer<8)?0x200:0x208]>>((timer*4)&31);
if( !(flag&CASCADE) ) NeedDecrementNextTimer=true;
if( NeedDecrementNextTimer && (flag&DECREMENT) )
{
counter=cregs[0x100+timer*8];
if((NeedDecrementNextTimer=(counter--==0)))
{
if((timer&1)) // Only odd timers can generate
{ // generate the interrupts because be overflow
_clio_GenerateFiq(1<<(10-timer/2),0);
}
if(flag&RELOAD)
{ // reload timer by reload value
counter=cregs[0x100+timer*8+4];
//return;
}
else
{ // timer stopped -> reset it's flag DECREMENT
cregs[(timer<8)?0x200:0x208] &= ~( DECREMENT<<((timer*4)&31) );
}
}
cregs[0x100+timer*8]=counter;
}
//else if( !prevdec && (flag&CASCADE) ) return;
else NeedDecrementNextTimer=false;
//if( !(flag&CASCADE) ) NeedDecrementNextTimer=true;
//prevdec=(flag&DECREMENT);
}
}
unsigned int _clio_GetTimerDelay()
{
return cregs[0x220];
}
void __fastcall HandleDMA(unsigned int val)
{
unsigned int src;
unsigned int trg;
int len;
unsigned int ptr;
unsigned char b0,b1,b2,b3;
cregs[0x304]|=val;
if(val&0x00100000)
{
cregs[0x304]&=~0x00100000;
src=_madam_Peek(0x540);
//if(src&3)_3do_DPrint("Align Err!!! - see CLIO XBUS DMA");
trg=src;
len=_madam_Peek(0x544);
//if(len&3)_3do_DPrint("Overflow Err!!! - see CLIO XBUS DMA");
cregs[0x400]&=~0x80;
if((cregs[0x404])&0x200)
{
ptr=0;
while(len>=0)
{
b3=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
//ptr++;
b2=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
b1=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
b0=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
_mem_write8(trg,b0);
_mem_write8(trg+1,b1);
_mem_write8(trg+2,b2);
_mem_write8(trg+3,b3);
trg+=4;
len-=4;
ptr+=4;
}
//CCdRom::ClearDataPoll(CMadam::Peek(0x544));
//CCdRom::ClearDataPoll();
cregs[0x400]|=0x80;
}
else
{
ptr=0;
while(len>=0)
{
b3=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
//ptr++;
b2=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
b1=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
b0=_xbus_GetDataFIFO();
//st=CXBUS::GetPoll();
_mem_write8(trg,b0);
_mem_write8(trg+1,b1);
_mem_write8(trg+2,b2);
_mem_write8(trg+3,b3);
trg+=4;
len-=4;
ptr+=4;
}
//CCdRom::ClearDataPoll(CMadam::Peek(0x544));
//CCdRom::ClearDataPoll();
cregs[0x400]|=0x80;
}
len=0xFFFFFFFC;
_madam_Poke(0x544,len);
//event.type = SDL_USEREVENT;
//event.user.code = CREATEFIQ|29;
//SDL_PushEvent(&event);
//CFE::FE_PushEvent(&event);
_clio_GenerateFiq(1<<29,0);
return;
}//XBDMA transfer
#ifdef FIFODBG
else
{
sprintf(str,"_Fifo304 inChan=");
CDebug::DPrint(str);
for(i=0;i<13;i++)
{
if(val&(1<<i))
{
sprintf(str,"%d ",i);
CDebug::DPrint(str);
}
}
sprintf(str,"outChan=");
CDebug::DPrint(str);
for(i=0;i<4;i++)
{
if(val&(1<<(i+16)))
{
sprintf(str,"%d ",i);
CDebug::DPrint(str);
}
}
sprintf(str,"\n");
CDebug::DPrint(str);
}
#endif
}
void _clio_Init(int ResetReson)
{
for(int i=0;i<32768;i++)
cregs[i]=0;
//cregs[8]=240;
cregs[0x0028]=ResetReson;
cregs[0x0400]=0x80;
cregs[0x220]=64;
Mregs=_madam_GetRegs();
}
unsigned short __fastcall _clio_EIFIFO(unsigned short channel)
{
unsigned int val,base,mask;
base=0x400+(channel*16);
mask=1<<channel;
if(FIFOI[channel].StartAdr!=0)//channel enabled
{
if( (FIFOI[channel].StartLen-PTRI[channel])>0 )
{
val=_mem_read16( ((FIFOI[channel].StartAdr+PTRI[channel])^2) );
PTRI[channel]+=2;
}
else
{
PTRI[channel]=0;
_clio_GenerateFiq(1<<(channel+16),0);//generate fiq
if(FIFOI[channel].NextAdr!=0)// reload enabled see patent WO09410641A1, 49.16
{
FIFOI[channel].StartAdr=FIFOI[channel].NextAdr;
FIFOI[channel].StartLen=FIFOI[channel].NextLen;
val=_mem_read16(((FIFOI[channel].StartAdr+PTRI[channel])^2)); //get the value!!!
PTRI[channel]+=2;
}
else
{
FIFOI[channel].StartAdr=0;
val=0;
}
}
}
else
{
val=0;
// JMK SEZ: What is this? It was commented out along with this whole "else"
// block, but I had to bring this else block back from the dead
// in order to initialize val appropriately.
// _clio_GenerateFiq(1<<(channel+16),0);
}
return val;
}
void __fastcall _clio_EOFIFO(unsigned short channel, unsigned short val)
{
unsigned int base;
unsigned int mask;
base=0x500+(channel*16);
mask=1<<(channel+16);
if(FIFOO[channel].StartAdr!=0)//channel enabled
{
if( (FIFOO[channel].StartLen-PTRO[channel])>0 )
{
_mem_write16(((FIFOO[channel].StartAdr+PTRO[channel])^2),val);
PTRO[channel]+=2;
}
else
{
PTRO[channel]=0;
_clio_GenerateFiq(1<<(channel+12),0);//generate fiq
if(FIFOO[channel].NextAdr!=0) //reload enabled?
{
FIFOO[channel].StartAdr=FIFOO[channel].NextAdr;
FIFOO[channel].StartLen=FIFOO[channel].NextLen;
}
else
{
FIFOO[channel].StartAdr=0;
}
}
}
}
unsigned short __fastcall _clio_EIFIFONI(unsigned short channel)
{
unsigned int base;
base=0x400+(channel*16);
return _mem_read16(((FIFOI[channel].StartAdr+PTRI[channel])^2));
}
unsigned short __fastcall _clio_GetEIFIFOStat(unsigned char channel)
{
unsigned int mask;
mask=1<<channel;
//if(cregs[0x304]&mask)//channel enabled
if( FIFOI[channel].StartAdr!=0 )
{
//return 1;
//return (FIFOI[channel].StartLen-PTRI[channel]);
return 2;// 2fixme
}
return 0;
}
unsigned short __fastcall _clio_GetEOFIFOStat(unsigned char channel)
{
unsigned int mask;
mask=1<<(channel+16);
//if(cregs[0x304]&mask)//channel enabled
if( FIFOO[channel].StartAdr!=0 )
return 1;
return 0;
}
void _clio_SetFIFO(unsigned int adr, unsigned int val)
{
if((adr&0x500)==0x400)
{
switch (adr&0xf)
{
case 0: FIFOI[(adr>>4)&0xf].StartAdr=val;
FIFOI[(adr>>4)&0xf].NextAdr=0;//see patent WO09410641A1, 46.25
#ifdef FIFODBG
sprintf(str,"SetInFIFO chan=%x StartAdr=%x\n",(adr>>4)&0xf,val);CDebug::DPrint(str);
#endif
return;
case 4: FIFOI[(adr>>4)&0xf].StartLen=val+4;
if(val==0)
FIFOI[(adr>>4)&0xf].StartLen=0;
FIFOI[(adr>>4)&0xf].NextLen=0;//see patent WO09410641A1, 46.25
#ifdef FIFODBG
sprintf(str,"SetInFIFO chan=%x StartLen=%x\n",(adr>>4)&0xf,val+4);CDebug::DPrint(str);
#endif
return;
case 8: FIFOI[(adr>>4)&0xf].NextAdr=val;
#ifdef FIFODBG
sprintf(str,"SetInFIFO chan=%x NextAdr=%x\n",(adr>>4)&0xf,val);CDebug::DPrint(str);
#endif
return;
case 0xc:
if(val!=0)
FIFOI[(adr>>4)&0xf].NextLen=val+4;
else
FIFOI[(adr>>4)&0xf].NextLen=0;
#ifdef FIFODBG
sprintf(str,"SetInFIFO chan=%x NextLen=%x\n",(adr>>4)&0xf,val+4);CDebug::DPrint(str);
#endif
return;
}
}
else
{
#ifdef FIFODBG
sprintf(str,"SetOutFIFO chan=%x addr=%x var=%x\n",(adr>>4)&0xf,val,adr&0xf);
CDebug::DPrint(str);
#endif
switch (adr&0xf)
{
case 0: FIFOO[(adr>>4)&0xf].StartAdr=val;return;
case 4: FIFOO[(adr>>4)&0xf].StartLen=val+4;return;
case 8: FIFOO[(adr>>4)&0xf].NextAdr=val;return;
case 0xc:FIFOO[(adr>>4)&0xf].NextLen=val+4;return;
}
}
}
void _clio_Reset()
{
int i;
for(i=0;i<65536;i++)
cregs[i]=0;
}
unsigned int _clio_FIFOStruct(unsigned int addr)
{
if((addr&0x500)==0x400)
{
//printf("SetOutFIFO chan=%x addr=%x var=%x\n",(adr>>4)&0xf,val,adr&0xf);
switch (addr&0xf)
{
case 0:
#ifdef FIFODBG
sprintf(str,"_GetInFIFO chan=%x StartAdr=%x\n",(addr>>4)&0xf,FIFOI[(addr>>4)&0xf].StartAdr+PTRI[(addr>>4)&0xf]);CDebug::DPrint(str);
#endif
return FIFOI[(addr>>4)&0xf].StartAdr+PTRI[(addr>>4)&0xf];
case 4:
#ifdef FIFODBG
sprintf(str,"_GetInFIFO chan=%x StartLen=%x\n",(addr>>4)&0xf,FIFOI[(addr>>4)&0xf].StartLen-PTRI[(addr>>4)&0xf]);CDebug::DPrint(str);
#endif
return FIFOI[(addr>>4)&0xf].StartLen-PTRI[(addr>>4)&0xf];
case 8:
#ifdef FIFODBG
sprintf(str,"_GetInFIFO chan=%x NextAdr=%x\n",(addr>>4)&0xf,FIFOI[(addr>>4)&0xf].NextAdr);CDebug::DPrint(str);
#endif
return FIFOI[(addr>>4)&0xf].NextAdr;
case 0xc:
#ifdef FIFODBG
sprintf(str,"_GetInFIFO chan=%x NextLen=%x\n",(addr>>4)&0xf,FIFOI[(addr>>4)&0xf].NextLen);CDebug::DPrint(str);
#endif
return FIFOI[(addr>>4)&0xf].NextLen;
}
}
else
{
//printf("SetInFIFO chan=%x addr=%x var=%x\n",(adr>>4)&0xf,val,adr&0xf);
switch (addr&0xf)
{
case 0: return FIFOO[(addr>>4)&0xf].StartAdr+PTRO[(addr>>4)&0xf];
case 4: return FIFOO[(addr>>4)&0xf].StartLen-PTRO[(addr>>4)&0xf];
case 8: return FIFOO[(addr>>4)&0xf].NextAdr;
case 0xc:return FIFOO[(addr>>4)&0xf].NextLen;
}
}
return 0; // ??? it's possible?
}
+58
View File
@@ -0,0 +1,58 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// Clio.h: interface for the CClio class.
//
//////////////////////////////////////////////////////////////////////
#ifndef CLIO_3DO_HEADER
#define CLIO_3DO_HEADER
int _clio_v0line();
int _clio_v1line();
bool __fastcall _clio_NeedFIQ();
unsigned int _clio_FIFOStruct(unsigned int addr);
void _clio_Reset();
void _clio_SetFIFO(unsigned int adr, unsigned int val);
unsigned short __fastcall _clio_GetEOFIFOStat(unsigned char channel);
unsigned short __fastcall _clio_GetEIFIFOStat(unsigned char channel);
unsigned short __fastcall _clio_EIFIFONI(unsigned short channel);
void __fastcall _clio_EOFIFO(unsigned short channel, unsigned short val);
unsigned short __fastcall _clio_EIFIFO(unsigned short channel);
void _clio_Init(int ResetReson);
void __fastcall _clio_DoTimers();
unsigned int __fastcall _clio_Peek(unsigned int addr);
int __fastcall _clio_Poke(unsigned int addr, unsigned int val);
void __fastcall _clio_UpdateVCNT(int line, int halfframe);
void __fastcall _clio_GenerateFiq(unsigned int reason1, unsigned int reason2);
unsigned int _clio_GetTimerDelay();
unsigned int _clio_SaveSize();
void _clio_Save(void *buff);
void _clio_Load(void *buff);
#endif
+1301
View File
File diff suppressed because it is too large Load Diff
+50
View File
@@ -0,0 +1,50 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// DSP.h: interface for the CDSP class.
//
//////////////////////////////////////////////////////////////////////
#ifndef DSP_3DO_HEADER
#define DSP_3DO_HEADER
unsigned int _dsp_Loop();
unsigned short __fastcall _dsp_ReadIMem(unsigned short addr);
void __fastcall _dsp_WriteIMem(unsigned short addr, unsigned short val);
void __fastcall _dsp_WriteMemory(unsigned short addr,unsigned short val);
void __fastcall _dsp_SetRunning(bool val);
void __fastcall _dsp_ARMwrite2sema4(unsigned int val);
unsigned int _dsp_ARMread2sema4(void);
void _dsp_Init();
void _dsp_Reset();
unsigned int _dsp_SaveSize();
void _dsp_Save(void *buff);
void _dsp_Load(void *buff);
#endif
+110
View File
@@ -0,0 +1,110 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// DiagPort.cpp: implementation of the DiagPort class.
//
//////////////////////////////////////////////////////////////////////
#include "freedoconfig.h"
#include "DiagPort.h"
static unsigned short SNDDebugFIFO0;
static unsigned short SNDDebugFIFO1;
static unsigned short RCVDebugFIFO0;
static unsigned short RCVDebugFIFO1;
static unsigned short GetPTR;
static unsigned short SendPTR;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void __fastcall _diag_Send(unsigned int val)
{
if(GetPTR!=16)
{
GetPTR=16;
SendPTR=16;
SNDDebugFIFO0=0;
SNDDebugFIFO1=0;
}
SNDDebugFIFO0|=(val&1)<<(SendPTR-1);
SNDDebugFIFO1|=((val&1)>>1)<<(SendPTR-1);
SendPTR--;
if(SendPTR==0)
{
SendPTR=16;
}
}
unsigned int __fastcall _diag_Get()
{
unsigned int val;
if(SendPTR!=16)
{
GetPTR=16;
SendPTR=16;
}
val=0;
val=((RCVDebugFIFO0>>(GetPTR-1))&0x1);
val|=((RCVDebugFIFO1>>(GetPTR-1))&0x1)<<0x1;
GetPTR--;
/* if(GetPTR>0)
{
RCVDebugFIFO0=RCVDebugFIFO0>>1;
RCVDebugFIFO1=RCVDebugFIFO1>>1;
GetPTR--;
val=RCVDebugFIFO0&0x1;
val|=(RCVDebugFIFO1&0x1)<<0x1;
}
*/
if(GetPTR==0) GetPTR=16;
return val;
}
void _diag_Init(int testcode)
{
SNDDebugFIFO0=0;
SNDDebugFIFO1=0;
GetPTR=16;
SendPTR=16;
if(testcode>=0)
{
testcode ^= 0xFF;
testcode |= 0xA000;
} else testcode=0;
RCVDebugFIFO0=testcode;
RCVDebugFIFO1=testcode;
}
+37
View File
@@ -0,0 +1,37 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// DiagPort.h: interface for the DiagPort class.
//
//////////////////////////////////////////////////////////////////////
#ifndef _DIAG_PORT_HEADER_DEFINITION_
#define _DIAG_PORT_HEADER_DEFINITION_
void _diag_Init(int testcode);
unsigned int __fastcall _diag_Get();
void __fastcall _diag_Send(unsigned int val);
#endif
+1371
View File
File diff suppressed because it is too large Load Diff
+66
View File
@@ -0,0 +1,66 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#ifndef ISO_3DO_HEADER
#define ISO_3DO_HEADER 0x00000001
#define XBP_INIT 0 //plugin init, returns plugin version
#define XBP_RESET 1 //plugin reset with parameter(image path)
#define XBP_SET_COMMAND 2 //XBUS
#define XBP_FIQ 3 //check interrupt form device
#define XBP_SET_DATA 4 //XBUS
#define XBP_GET_DATA 5 //XBUS
#define XBP_GET_STATUS 6 //XBUS
#define XBP_SET_POLL 7 //XBUS
#define XBP_GET_POLL 8 //XBUS
#define XBP_SELECT 9 //selects device by Opera
#define XBP_RESERV 10 //reserved reading from device
#define XBP_DESTROY 11 //plugin destroy
#define XBP_GET_SAVESIZE 19 //save support from emulator side
#define XBP_GET_SAVEDATA 20
#define XBP_SET_SAVEDATA 21
#ifdef XBUS_EXPORTS
#define XBUS_API __declspec(dllexport)
#else
#define XBUS_API __declspec(dllimport)
#endif
/*extern "C"
{
XBUS_API void* _xbplug_MainDevice(int proc, void* data);
#ifdef XBUS_EXPORTS
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
);
#endif
};
#ifndef XBUS_EXPORTS
#pragma comment(lib, "IsoXBUS.lib")
#endif*/
#endif
+2880
View File
File diff suppressed because it is too large Load Diff
+57
View File
@@ -0,0 +1,57 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// Madam.h: interface for the CMadam class.
//
//////////////////////////////////////////////////////////////////////
#ifndef MADAM_3DO_HEADER
#define MADAM_3DO_HEADER
#define FSM_IDLE 1
#define FSM_INPROCESS 2
#define FSM_SUSPENDED 3
unsigned int Get_madam_FSM();
void Set_madam_FSM(unsigned int val);
void _madam_SetMapping(unsigned int flag);
void _madam_Reset();
unsigned int _madam_GetCELCycles();
unsigned int * _madam_GetRegs();
int _madam_HandleCEL(); //!!!~!
void _madam_Init(unsigned char* memory);
void _madam_KeyPressed(unsigned char* data, unsigned int num);
void __fastcall _madam_Poke(unsigned int addr, unsigned int val);
unsigned int __fastcall _madam_Peek(unsigned int addr);
unsigned int _madam_SaveSize();
void _madam_Save(void *buff);
void _madam_Load(void *buff);
//void _madam_PrepToRendering();
//bool __fastcall _madam_VRAMBusy(unsigned int addr, int size);
#endif
+65
View File
@@ -0,0 +1,65 @@
#www.freedo.org
#The first and only working 3DO multiplayer emulator.
#
#The FreeDO licensed under modified GNU LGPL, with following notes:
#
#* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
#* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
# of the sources, or any other material published by FreeDO have to be accompanied with full credits.
#* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
# or any other material published by FreeDO is strictly forbidden without owners approval.
#
#The above notes are taking precedence over GNU LGPL in conflicting situations.
#
#Project authors:
#
#Alexander Troosh
#Maxim Grishin
#Allen Wright
#John Sammons
#Felix Lazarev
##########################################################################################################################
#source files
SRC = Clio.cpp Madam.cpp bitop.cpp arm.cpp DSP.cpp Iso.cpp quarz.cpp SPORT.cpp vdlp.cpp XBUS.cpp DiagPort.cpp _3do_sys.cpp
OBJ = $(SRC:.cpp=.o)
OUT = libfreedo.a
#include dirs
INCLUDES = -I. -I/usr/local/include
#C++ flags
CCFLAGS = -g
#compiler
CCC = g++
#libraries
LIBS = -L/usr/local/lib
#compile flags
LDFLAGS = -g
.SUFFIXES: .cpp
default: dep $(OUT)
.cpp.o:
$(CCC) $(INCLUDES) $(CCFLAGS) -c $< -o $@
$(OUT): $(OBJ)
ar rcs $(OUT) $(OBJ)
depend: dep
dep:
makedepend -- $(CFLAGS) -- $(INCLUDES) $(SRC)
clean:
rm -f $(OBJ) $(OUT) Makefile.bak Makefile~
+153
View File
@@ -0,0 +1,153 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// SPORT.cpp: implementation of the SPORT class.
//
//////////////////////////////////////////////////////////////////////
#include "freedoconfig.h"
#include "SPORT.h"
#include "arm.h"
#include <memory.h>
#include "freedocore.h"
extern _ext_Interface io_interface;
static unsigned int gSPORTCOLOR;
static unsigned int gSPORTSOURCE=0;
static unsigned int gSPORTDESTINATION=0;
static unsigned char* VRAM;
unsigned int _sport_SaveSize()
{
return 12;
}
void _sport_Save(void *buff)
{
((unsigned int*)buff)[0]=gSPORTCOLOR;
((unsigned int*)buff)[1]=gSPORTSOURCE;
((unsigned int*)buff)[2]=gSPORTDESTINATION;
}
void _sport_Load(void *buff)
{
gSPORTCOLOR=((unsigned int*)buff)[0];
gSPORTSOURCE=((unsigned int*)buff)[1];
gSPORTDESTINATION=((unsigned int*)buff)[2];
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//static AString str;
void _sport_Init(unsigned char *vmem)
{
VRAM=vmem;
}
int __fastcall _sport_SetSource(unsigned int index) //take source for SPORT
{
gSPORTSOURCE=(index<<7);
return 0;
}
void __fastcall _sport_WriteAccess(unsigned int index, unsigned int mask)
{
int i;
unsigned int tmp,ctmp;
if((index & ~0x1FFF)==0x4000) //SPORT flash write
{
index&=0x7ff;
index<<=7;
if(mask == 0xFFFFffff)
{
for(i=0;i<512;i++)
{
((unsigned int*)VRAM)[index+i]=gSPORTCOLOR;
}
}
else // mask is not 0xFFFFffff
{
for(i=0;i<512;i++)
{
tmp=((unsigned int*)VRAM)[index+i];
tmp=((tmp^gSPORTCOLOR)&mask)^gSPORTCOLOR;
((unsigned int*)VRAM)[index+i]=tmp;
}
}
if(!RESSCALE)return;
memcpy(&((unsigned int*)VRAM)[index+1024*256], &((unsigned int*)VRAM)[index], 2048);
memcpy(&((unsigned int*)VRAM)[index+2*1024*256], &((unsigned int*)VRAM)[index], 2048);
memcpy(&((unsigned int*)VRAM)[index+3*1024*256], &((unsigned int*)VRAM)[index], 2048);
return;
}
if(!(index & ~0x1FFF)) //SPORT copy page
{
gSPORTDESTINATION=(index &0x7ff)<<7;
if(mask == 0xFFFFffff)
{
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION],&((unsigned int*)VRAM)[gSPORTSOURCE],512*4);
if(!RESSCALE)return;
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+1024*256], &((unsigned int*)VRAM)[gSPORTSOURCE+1024*256], 2048);
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+2*1024*256], &((unsigned int*)VRAM)[gSPORTSOURCE+2*1024*256], 2048);
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+3*1024*256], &((unsigned int*)VRAM)[gSPORTSOURCE+3*1024*256], 2048);
}
else // mask != 0xFFFFffff
{
for(i=0;i<512;i++)
{
tmp=((unsigned int*)VRAM)[gSPORTDESTINATION+i];
ctmp=((unsigned int*)VRAM)[gSPORTSOURCE+i];
tmp=((tmp^ctmp)&mask)^ctmp;
((unsigned int*)VRAM)[gSPORTDESTINATION+i]=tmp;
}
if(!RESSCALE)return;
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+1024*256], &((unsigned int*)VRAM)[gSPORTDESTINATION], 2048);
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+2*1024*256], &((unsigned int*)VRAM)[gSPORTDESTINATION], 2048);
memcpy(&((unsigned int*)VRAM)[gSPORTDESTINATION+3*1024*256], &((unsigned int*)VRAM)[gSPORTDESTINATION], 2048);
}
return;
}
if((index & ~0x1FFF)==0x2000) //SPORT set color!!!
{
gSPORTCOLOR=mask;
return;
}
// io_interface(EXT_DEBUG_PRINT,(void*)str.print("::::SPORT:::: Unknown write, Index=0x%8.8X, Mask=0x%8.8X",index, mask).CStr());
}
+43
View File
@@ -0,0 +1,43 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// SPORT.h: interface for the SPORT class.
//
//////////////////////////////////////////////////////////////////////
#ifndef SPORT_3DO_HEADER
#define SPORT_3DO_HEADER
void _sport_Init(unsigned char *vmem);
//take source for SPORT
int __fastcall _sport_SetSource(unsigned int index);
void __fastcall _sport_WriteAccess(unsigned int index, unsigned int mask);
unsigned int _sport_SaveSize();
void _sport_Save(void *buff);
void _sport_Load(void *buff);
#endif
+322
View File
@@ -0,0 +1,322 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// XBUS.cpp: implementation of the CXBUS class.
//
//////////////////////////////////////////////////////////////////////
#include "freedoconfig.h"
//#include "astring.h"
#include "XBUS.h"
#include "Clio.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#pragma pack(push,1)
struct XBUSDatum
{
unsigned char XBSEL;
unsigned char XBSELH;
unsigned char POLF;
unsigned char POLDEVF;
unsigned char STDEVF[255]; //status of devices
unsigned char STLENF; //pointer in fifo
unsigned char CmdF[7];
unsigned char CmdPtrF;
};
#pragma pack(pop)
#define XBSEL xbus.XBSEL
#define XBSELH xbus.XBSELH
#define POLF xbus.POLF
#define POLDEVF xbus.POLDEVF
#define STDEVF xbus.STDEVF
#define STLENF xbus.STLENF
#define CmdF xbus.CmdF
#define CmdPtrF xbus.CmdPtrF
static XBUSDatum xbus;
static _xbus_device xdev[16];
#define POLSTMASK 0x01
#define POLDTMASK 0x02
#define POLMAMASK 0x04
#define POLREMASK 0x08
#define POLST 0x10
#define POLDT 0x20
#define POLMA 0x40
#define POLRE 0x80
void ExecuteCommandF();
void _xbus_SetCommandFIFO(unsigned int val)
{
if(xdev[XBSEL])
{
(*xdev[XBSEL])(XBP_SET_COMMAND,(void*)val);
if((*xdev[XBSEL])(XBP_FIQ,NULL)) _clio_GenerateFiq(4,0);
}
else if(XBSEL==0xf)
{
if (CmdPtrF<7)
{
CmdF[CmdPtrF]=(unsigned char)val;
CmdPtrF++;
}
if(CmdPtrF>=7)
{
ExecuteCommandF();
CmdPtrF=0;
}
}
}
unsigned int _xbus_GetDataFIFO()
{
if(xdev[XBSEL])
{
return (uintptr_t)(*xdev[XBSEL])(XBP_GET_DATA,NULL);
}
else
return 0;
}
unsigned int _xbus_GetPoll()
{
unsigned int res;
if(XBSEL==0xf)
res=POLF;
else if(xdev[XBSEL])res=(uintptr_t)(*xdev[XBSEL])(XBP_GET_POLL, NULL);
else res=0x30;
if(XBSELH&0x80)
res&=0xf;
return res;
}
unsigned int _xbus_GetRes()
{
if(xdev[XBSEL])return (uintptr_t)(*xdev[XBSEL])(XBP_RESERV, NULL);
return 0;
}
void ExecuteCommandF()
{
if(CmdF[0]==0x83)
{
STLENF=12;
STDEVF[0]=0x83;
STDEVF[1]=0x01;
STDEVF[2]=0x01;
STDEVF[3]=0x01;
STDEVF[4]=0x01;
STDEVF[5]=0x01;
STDEVF[6]=0x01;
STDEVF[7]=0x01;
STDEVF[8]=0x01;
STDEVF[9]=0x01;
STDEVF[10]=0x01;
STDEVF[11]=0x01;
POLDEVF|=POLST;
}
if(((POLDEVF&POLST) && (POLDEVF&POLSTMASK)) || ((POLDEVF&POLDT) && (POLDEVF&POLDTMASK)))
{
_clio_GenerateFiq(4,0);
}
}
unsigned int _xbus_GetStatusFIFO()
{
unsigned int res=0;
if(xdev[XBSEL])
{
res=(uintptr_t)(*xdev[XBSEL])(XBP_GET_STATUS,NULL);
}
else if(XBSEL==0xf)
{
if(STLENF>0)
{
res=STDEVF[0];
STLENF--;
if(STLENF>0)
{
for(int i=0;i<STLENF;i++)
STDEVF[i]=STDEVF[i+1];
}
else
{
POLDEVF&=~POLST;
}
}
return res;
}
return res;
}
void _xbus_SetDataFIFO(unsigned int val)
{
if(xdev[XBSEL])(*xdev[XBSEL])(XBP_SET_DATA,(void*)val);
}
void _xbus_SetPoll(unsigned int val)
{
if(XBSEL==0xf)
{
POLF&=0xF0;
POLF|=(val&0xf);
}
if(xdev[XBSEL])
{
(*xdev[XBSEL])(XBP_SET_POLL,(void*)val);
if((*xdev[XBSEL])(XBP_FIQ,NULL)) _clio_GenerateFiq(4,0);
}
}
void _xbus_SetSEL(unsigned int val)
{
XBSEL=(unsigned char)val&0xf;
XBSELH=(unsigned char)val&0xf0;
}
void _xbus_Init(_xbus_device zero_dev)
{
int i;
POLF=0xf;
for(i=0;i<15;i++)
{
xdev[i]=NULL;
}
_xbus_Attach(zero_dev);
}
int _xbus_Attach(_xbus_device dev)
{
int i;
for(i=0;i<16;i++)if(!xdev[i])break;
if(i==16)return -1;
xdev[i]=dev;
(*xdev[i])(XBP_INIT,NULL);
return i;
}
void _xbus_DevLoad(int dev, const char * name)
{
(*xdev[dev])(XBP_RESET,(void*)name);
}
void _xbus_DevEject(int dev)
{
(*xdev[dev])(XBP_RESET,NULL);
}
void _xbus_Destroy()
{
for(int i=0;i<16;i++)if(xdev[i]){(*xdev[i])(XBP_DESTROY,NULL);xdev[i]=NULL;}
}
unsigned int _xbus_SaveSize()
{
unsigned int tmp=sizeof(XBUSDatum);
int i;
tmp+=16*4;
for(i=0;i<15;i++)
{
if(!xdev[i])continue;
tmp+=(uintptr_t)(*xdev[i])(XBP_GET_SAVESIZE,NULL);
}
return tmp;
}
#include <memory.h>
void _xbus_Save(void *buff)
{
int i,off,j,tmp;
memcpy(buff,&xbus,sizeof(XBUSDatum));
j=off=sizeof(XBUSDatum);
off+=16*4;
for(i=0;i<15;i++)
{
if(!xdev[i])
{
tmp=0;
memcpy(&((unsigned char*)buff)[j+i*4],&tmp,4);
}
else
{
(*xdev[i])(XBP_GET_SAVEDATA,&((unsigned char*)buff)[off]);
memcpy(&((unsigned char*)buff)[j+i*4],&off,4);
off+=(uintptr_t)(*xdev[i])(XBP_GET_SAVESIZE,NULL);
}
}
}
void _xbus_Load(void *buff)
{
//AString tstr;
int i,offd,j;
j=sizeof(XBUSDatum);
memcpy(&xbus,buff,j);
for(i=0;i<15;i++)
{
memcpy(&offd,&((unsigned char*)buff)[j+i*4],4);
if(xdev[i])
{
if(!offd)
{
(*xdev[i])(XBP_RESET,NULL);
}
else
{
(*xdev[i])(XBP_SET_SAVEDATA,&((unsigned char*)buff)[offd]);
}
}
}
}
+55
View File
@@ -0,0 +1,55 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// XBUS.h: interface for the CXBUS class.
//
//////////////////////////////////////////////////////////////////////
#ifndef XBUS_3DO_HEADER
#define XBUS_3DO_HEADER
#include "IsoXBUS.h"
//interface functions
typedef void* (*_xbus_device)(int, void*);
int _xbus_Attach(_xbus_device dev);
void _xbus_DevLoad(int dev, const char * name); //!!!
void _xbus_DevEject(int dev); //!!!
void _xbus_Init(_xbus_device zero_dev);
void _xbus_Destroy();
void _xbus_SetSEL(unsigned int val);
void _xbus_SetPoll(unsigned int val);
void _xbus_SetCommandFIFO(unsigned int val);
void _xbus_SetDataFIFO(unsigned int val);
unsigned int _xbus_GetStatusFIFO();
unsigned int _xbus_GetRes();
unsigned int _xbus_GetPoll();
unsigned int _xbus_GetDataFIFO();
unsigned int _xbus_SaveSize();
void _xbus_Save(void *buff);
void _xbus_Load(void *buff);
#endif
+333
View File
@@ -0,0 +1,333 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#include "freedoconfig.h"
#include "freedocore.h"
#include "stdafx.h"
#include "arm.h"
#include "vdlp.h"
#include "DSP.h"
#include "Clio.h"
//#include "frame.h"
#include "Madam.h"
#include "SPORT.h"
#include "XBUS.h"
#include "DiagPort.h"
#include "quarz.h"
#ifdef _WIN32
#include <windows.h>
#endif
_ext_Interface io_interface;
extern void* Getp_NVRAM();
extern void* Getp_ROMS();
extern void* Getp_RAMS();
extern int ARM_CLOCK;
extern int THE_ARM_CLOCK;
__inline uint32 _bswap(uint32 x)
{
return (x>>24) | ((x>>8)&0x0000FF00L) | ((x&0x0000FF00L)<<8) | (x<<24);
}
extern void* _xbplug_MainDevice(int proc, void* data);
int _3do_Init()
{
unsigned char *Memory;
unsigned char *rom;
Memory=_arm_Init();
io_interface(EXT_READ_ROMS,Getp_ROMS());
rom=(unsigned char*)Getp_ROMS();
for(int i=(1024*1024*2)-4;i>=0;i-=4) *(int *)(rom+i)=_bswap(*(int *)(rom+i));
_vdl_Init(Memory+0x200000); // Visible only VRAM to it
_sport_Init(Memory+0x200000); // Visible only VRAM to it
_madam_Init(Memory);
_xbus_Init(_xbplug_MainDevice);
_clio_Init(0x40); // 0x40 for start from 3D0-CD, 0x01/0x02 from PhotoCD ?? (NO use 0x40/0x02 for BIOS test)
_dsp_Init();
//_frame_Init();
_diag_Init(-1); // Select test, use -1 -- if d'nt need tests
/*
00 DIAGNOSTICS TEST (run of test: 1F, 24, 25, 32, 50, 51, 60, 61, 62, 68, 71, 75, 80, 81, 90)
01 AUTO-DIAG TEST (run of test: 1F, 24, 25, 32, 50, 51, 60, 61, 62, 68, 80, 81, 90)
12 DRAM1 DATA TEST
1A DRAM2 DATA TEST
1E EARLY RAM TEST
1F RAM DATA TEST
22 VRAM1 DATA TEST
24 VRAM1 FLASH TEST
25 VRAM1 SPORT TEST
32 SRAM DATA TEST
50 MADAM TEST
51 CLIO TEST
60 CD-ROM POLL TEST
61 CD-ROM PATH TEST
62 CD-ROM READ TEST ???
63 CD-ROM AutoAdjustValue TEST
67 CD-ROM#2 AutoAdjustValue TEST
68 DEV#15 POLL TEST
71 JOYPAD1 PRESS TEST
75 JOYPAD1 AUDIO TEST
80 SIN WAVE TEST
81 MUTING TEST
90 COLORBAR
F0 CHECK TESTTOOL ???
F1 REVISION TEST
FF TEST END (halt)
*/
_xbus_DevLoad(0,NULL);
_qrz_Init();
return 0;
}
VDLFrame *curr_frame;
bool scipframe;
void _3do_InternalFrame(int cicles)
{
int line;
_qrz_PushARMCycles(cicles);
if(_qrz_QueueDSP())
{
io_interface(EXT_PUSH_SAMPLE,(void*)_dsp_Loop());
}
if(_qrz_QueueTimer())_clio_DoTimers();
if(_qrz_QueueVDL())
{
line=_qrz_VDCurrLine();
_clio_UpdateVCNT(line, _qrz_VDHalfFrame());
if(!scipframe)_vdl_DoLineNew(line,curr_frame);
if(line==16 && scipframe) io_interface(EXT_FRAMETRIGGER_MT,NULL);
if(line==_clio_v0line())
{
_clio_GenerateFiq(1<<0,0);
}
if(line==_clio_v1line())
{
_clio_GenerateFiq(1<<1,0);
_madam_KeyPressed((unsigned char*)io_interface(EXT_GETP_PBUSDATA,NULL),(intptr_t)io_interface(EXT_GET_PBUSLEN,NULL));
curr_frame->srcw=320;
curr_frame->srch=240;
if(!scipframe)curr_frame=(VDLFrame*)io_interface(EXT_SWAPFRAME,curr_frame);
}
}
}
void __fastcall _3do_Frame(VDLFrame *frame, bool __scipframe=false)
{
int i,cnt=0;
curr_frame=frame;
scipframe=__scipframe;
for(i=0;i<(12500000/60);)
{
if(Get_madam_FSM()==FSM_INPROCESS)
{
_madam_HandleCEL();
Set_madam_FSM(FSM_IDLE);
continue;
}
cnt+=_arm_Execute();
if(cnt>>4){_3do_InternalFrame(cnt);i+=cnt;cnt=0;}
}
}
void _3do_Destroy()
{
_arm_Destroy();
_xbus_Destroy();
}
unsigned int _3do_SaveSize()
{
unsigned int tmp;
tmp=_arm_SaveSize();
tmp+=_vdl_SaveSize();
tmp+=_dsp_SaveSize();
tmp+=_clio_SaveSize();
tmp+=_qrz_SaveSize();
tmp+=_sport_SaveSize();
tmp+=_madam_SaveSize();
tmp+=_xbus_SaveSize();
tmp+=16*4;
return tmp;
}
void _3do_Save(void *buff)
{
unsigned char *data=(unsigned char*)buff;
int *indexes=(int*)buff;
indexes[0]=0x97970101;
indexes[1]=16*4;
indexes[2]=indexes[1]+_arm_SaveSize();
indexes[3]=indexes[2]+_vdl_SaveSize();
indexes[4]=indexes[3]+_dsp_SaveSize();
indexes[5]=indexes[4]+_clio_SaveSize();
indexes[6]=indexes[5]+_qrz_SaveSize();
indexes[7]=indexes[6]+_sport_SaveSize();
indexes[8]=indexes[7]+_madam_SaveSize();
indexes[9]=indexes[8]+_xbus_SaveSize();
_arm_Save(&data[indexes[1]]);
_vdl_Save(&data[indexes[2]]);
_dsp_Save(&data[indexes[3]]);
_clio_Save(&data[indexes[4]]);
_qrz_Save(&data[indexes[5]]);
_sport_Save(&data[indexes[6]]);
_madam_Save(&data[indexes[7]]);
_xbus_Save(&data[indexes[8]]);
}
bool _3do_Load(void *buff)
{
unsigned char *data=(unsigned char*)buff;
int *indexes=(int*)buff;
if((unsigned int)indexes[0]!=0x97970101)return false;
_arm_Load(&data[indexes[1]]);
_vdl_Load(&data[indexes[2]]);
_dsp_Load(&data[indexes[3]]);
_clio_Load(&data[indexes[4]]);
_qrz_Load(&data[indexes[5]]);
_sport_Load(&data[indexes[6]]);
_madam_Load(&data[indexes[7]]);
_xbus_Load(&data[indexes[8]]);
return true;
}
//------------------------------------------------------------------------------
extern uint32 *profiling;
void _3do_OnSector(unsigned int sector)
{
io_interface(EXT_ON_SECTOR,(void*)sector);
}
void _3do_Read2048(void *buff)
{
io_interface(EXT_READ2048,(void*)buff);
}
unsigned int _3do_DiscSize()
{
return (uintptr_t)io_interface(EXT_GET_DISC_SIZE,NULL);
}
int __tex__scaler = 0;
//int HightResMode=0;
int fixmode=0;
int speedfixes=0;
int sf=0;
int sdf=0;
int unknownflag11=0;
int jw=0;
int cnbfix=0;
FREEDOCORE_API void* __stdcall _freedo_Interface(int procedure, void *datum)
{
int line;
switch(procedure)
{
case FDP_INIT:
sf=5000000;
cnbfix=0;
io_interface=(_ext_Interface)datum;
return (void*)_3do_Init();
case FDP_DESTROY:
_3do_Destroy();
break;
case FDP_DO_EXECFRAME:
_3do_Frame((VDLFrame*)datum);
break;
case FDP_DO_EXECFRAME_MT:
_3do_Frame((VDLFrame*)datum, true);
break;
case FDP_DO_FRAME_MT:
line=0;
while(line<256)_vdl_DoLineNew(line++,(VDLFrame*)datum);
break;
case FDP_GET_SAVE_SIZE:
return (void*)_3do_SaveSize();
case FDP_DO_SAVE:
_3do_Save(datum);
break;
case FDP_DO_LOAD:
sf=0;
return (void*)_3do_Load(datum);
case FDP_GETP_NVRAM:
return Getp_NVRAM();
case FDP_GETP_RAMS:
return Getp_RAMS();
case FDP_GETP_ROMS:
return Getp_ROMS();
case FDP_GETP_PROFILE:
return profiling;
case FDP_FREEDOCORE_VERSION:
return (void*)0x20008;
case FDP_SET_ARMCLOCK:
THE_ARM_CLOCK=0;
ARM_CLOCK=(intptr_t)datum;
break;
case FDP_SET_TEXQUALITY:
__tex__scaler=(intptr_t)datum;
break;
// case FDP_SET_FIX_MODE:
// fixmode=(intptr_t)datum;
// break;
// case FDP_GET_FRAME_BITMAP:
// GetFrameBitmapParams* param = (GetFrameBitmapParams*)datum;
// Get_Frame_Bitmap(
// param->sourceFrame
// , param->destinationBitmap
// , param->destinationBitmapWidthPixels
// , param->bitmapCrop
// , param->copyWidthPixels
// , param->copyHeightPixels
// , param->addBlackBorder
// , param->copyPointlessAlphaByte
// , param->allowCrop
// , (ScalingAlgorithm)param->scalingAlgorithm
// , &param->resultingWidth
// , &param->resultingHeight);
// break;
};
return NULL;
}
+1896
View File
File diff suppressed because it is too large Load Diff
+55
View File
@@ -0,0 +1,55 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
// CPU.h: interface for the CCPU class.
//
//////////////////////////////////////////////////////////////////////
#ifndef ARM_3DO_HEADER
#define ARM_3DO_HEADER
int __fastcall _arm_Execute();
void _arm_Reset();
void _arm_Destroy();
unsigned char * _arm_Init();
//for mas
void __fastcall _mem_write8(unsigned int addr, unsigned char val);
void __fastcall _mem_write16(unsigned int addr, unsigned short val);
void __fastcall _mem_write32(unsigned int addr, unsigned int val);
unsigned char __fastcall _mem_read8(unsigned int addr);
unsigned short __fastcall _mem_read16(unsigned int addr);
unsigned int __fastcall _mem_read32(unsigned int addr);
void __fastcall WriteIO(unsigned int addr, unsigned int val);
unsigned int __fastcall ReadIO(unsigned int addr);
void __fastcall SelectROM(int n);
unsigned int _arm_SaveSize();
void _arm_Save(void *buff);
void _arm_Load(void *buff);
#endif
+71
View File
@@ -0,0 +1,71 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#include "freedoconfig.h"
#include "bitop.h"
#include "arm.h"
uint32 BitReaderBig::Read()
{
const static uint8 mas[]={0,1,3,7,15,31,63,127,255};
uint32 retval=0;
int32 bitcnt=bitset;
if(!buf)return retval;
if((8-bitpoint)>bitset)
{
retval=_mem_read8(buf+(point^3));
retval>>=8-bitpoint-bitset;
retval&=mas[bitset];
bitpoint+=bitset;
return retval;
}
if(bitpoint)
{
retval=_mem_read8(buf+(point^3))&mas[8-bitpoint];
point++;
bitcnt-=8-bitpoint;
}
while(bitcnt>=8)
{
retval<<=8;
retval|=_mem_read8(buf+(point^3));
point++;
bitcnt-=8;
}
if(bitcnt)
{
retval<<=bitcnt;
retval|=_mem_read8(buf+(point^3))>>(8-bitcnt);
}
bitpoint=bitcnt;
return retval;
}
uint32 BitReaderBig::Read(uint8 bits)
{
SetBitRate(bits);
return Read();
}
+91
View File
@@ -0,0 +1,91 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#ifndef BITOPCLASS_DEFINITION_HEADER
#define BITOPCLASS_DEFINITION_HEADER
#include "types.h"
class BitReaderBig
{
protected:
uint32 buf;
uint32 point;
int32 bitpoint;
int32 bitset;
public:
BitReaderBig()
{
buf=0;
bitset=1;
point=0;
bitpoint=0;
};
BitReaderBig(uint32 buff)
{
buf=buff;
point=0;
bitpoint=0;
bitset=1;
};
void AttachBuffer(uint32 buff)
{
buf=buff;
point=0;
bitpoint=0;
};
void SetBitRate(uint8 bits)
{
bitset=bits;
if(bitset>32)bitset=32;
if(!bitset)bitset=1;
};
void SetPosition(uint32 bytepos, uint8 bitpos)
{
point=bytepos;
bitpoint=bitpos;
};
void SetPos(uint32 bitpos){SetPosition(bitpos>>3,bitpos&7);};
uint32 GetBytePose(){return point;};
uint32 Read();
uint32 Read(uint8 bits);
void Skip(uint32 bits)
{
bits+=bitpoint;
point+=(bits>>3);
bitpoint=bits&7;
};
};
#endif
+54
View File
@@ -0,0 +1,54 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#ifndef FREEDOCONFIG_H
#define FREEDOCONFIG_H
#ifdef __MSVC__
//#include <stdafx.h>
#include <windows.h>
#define __temporalfixes 0
#define RESSCALE __tex__scaler
extern int __tex__scaler;
#else
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
extern bool __temporalfixes;
extern int HightResMode;
#define RESSCALE HightResMode
#define DEBUG_CORE
#define _T(a) (a)
#endif
#include "types.h"
#endif // FREEDOCONFIG_H
+154
View File
@@ -0,0 +1,154 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#ifndef __3DO_SYSTEM_HEADER_DEFINITION
#define __3DO_SYSTEM_HEADER_DEFINITION
//------------------------------------------------------------------------------
#pragma pack(push,1)
struct VDLLine
//VDLP Line - one VDLP line per patent
{
unsigned short line[320*4];//,line2[320*2*16];
unsigned char xCLUTB[32];
unsigned char xCLUTG[32];
unsigned char xCLUTR[32];
unsigned int xOUTCONTROLL;
unsigned int xCLUTDMA;
unsigned int xBACKGROUND;
};
struct VDLFrame
{
VDLLine lines[240*4];
unsigned int srcw,srch;
};
struct BitmapCrop
{
int left;
int top;
int bottom;
int right;
};
struct GetFrameBitmapParams
{
VDLFrame* sourceFrame;
void* destinationBitmap;
int destinationBitmapWidthPixels;
BitmapCrop* bitmapCrop;
int copyWidthPixels;
int copyHeightPixels;
bool addBlackBorder;
bool copyPointlessAlphaByte;
bool allowCrop;
int scalingAlgorithm;
int resultingWidth;
int resultingHeight;
};
enum ScalingAlgorithm
{
None = 0,
HQ2X = 1,
HQ3X = 2,
HQ4X = 3
};
#pragma pack(pop)
#define EXT_READ_ROMS 1
#define EXT_READ_NVRAM 2
#define EXT_WRITE_NVRAM 3
#define EXT_SWAPFRAME 5 //frame swap (in mutlithreaded) or frame draw(single treaded)
#define EXT_PUSH_SAMPLE 6 //sends sample to the buffer
#define EXT_GET_PBUSLEN 7
#define EXT_GETP_PBUSDATA 8
#define EXT_KPRINT 9
#define EXT_DEBUG_PRINT 10
#define EXT_FRAMETRIGGER_MT 12 //multitasking
#define EXT_READ2048 14 //for XBUS Plugin
#define EXT_GET_DISC_SIZE 15
#define EXT_ON_SECTOR 16
#define EXT_ARM_SYNC 17
typedef void* (__stdcall *_ext_Interface)(int, void*);
#define FDP_FREEDOCORE_VERSION 0
#define FDP_INIT 1 //set ext_interface
#define FDP_DESTROY 2
#define FDP_DO_EXECFRAME 3 //execute 1/60 of second
#define FDP_DO_FRAME_MT 4 //multitasking
#define FDP_DO_EXECFRAME_MT 5 //multitasking
#define FDP_DO_LOAD 6 //load state from buffer, returns !NULL if everything went smooth
#define FDP_GET_SAVE_SIZE 7 //return size of savestatemachine
#define FDP_DO_SAVE 8 //save state to buffer
#define FDP_GETP_NVRAM 9 //returns ptr to NVRAM 32K
#define FDP_GETP_RAMS 10 //returns ptr to RAM 3M
#define FDP_GETP_ROMS 11 //returns ptr to ROM 2M
#define FDP_GETP_PROFILE 12 //returns profile pointer, sizeof = 3M/4
#define FDP_BUGTEMPORALFIX 13
#define FDP_SET_ARMCLOCK 14
#define FDP_SET_TEXQUALITY 15
#define FDP_GETP_WRCOUNT 16
#define FDP_SET_FIX_MODE 17
#define FDP_GET_FRAME_BITMAP 18
#define FIX_BIT_TIMING_1 (0x00000001)
#define FIX_BIT_TIMING_2 (0x00000002)
#define FIX_BIT_TIMING_3 (0x00000004)
#define FIX_BIT_TIMING_4 (0x00000008)
#define FIX_BIT_TIMING_5 (0x00000010)
#define FIX_BIT_TIMING_6 (0x00000020)
#define FIX_BIT_TIMING_7 (0x00000040)
#define FIX_BIT_GRAPHICS_STEP_Y (0x00080000) // Preserve Y coordinate rather than X between CELs.
#ifdef __MSVC__
#ifdef FREEDOCORE_EXPORTS
#define FREEDOCORE_API __declspec(dllexport)
#else
#define FREEDOCORE_API __declspec(dllimport)
#endif
#else
#define FREEDOCORE_API
#endif
extern "C"
{
FREEDOCORE_API void* __stdcall _freedo_Interface(int procedure, void *datum=0);
};
#ifdef __MSVC__
#ifndef FREEDOCORE_EXPORTS
//#pragma comment(lib, "freedocore.lib")
#endif
#endif
//------------------------------------------------------------------------------
#endif
+13
View File
@@ -0,0 +1,13 @@
#-------------------------------------------------
#
# Project created by QtCreator 2010-11-10T21:13:39
#
#-------------------------------------------------
TARGET = freedo
TEMPLATE = lib
CONFIG += staticlib
SOURCES += arm.cpp bitop.cpp Clio.cpp DiagPort.cpp DSP.cpp Iso.cpp Madam.cpp quarz.cpp SPORT.cpp vdlp.cpp XBUS.cpp _3do_sys.cpp
HEADERS += arm.h bitop.h Clio.h DiagPort.h DSP.h freedoconfig.h freedocore.h IsoXBUS.h Madam.h quarz.h SPORT.h types.h vdlp.h XBUS.h
+179
View File
@@ -0,0 +1,179 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#include "quarz.h"
#include "types.h"
#include "clio.h"
#include "vdlp.h"
#include "XBUS.h"
#include "madam.h"
#include "stdafx.h"
int ARM_CLOCK=12500000;
int THE_ARM_CLOCK=0;
extern _ext_Interface io_interface;
#define SND_CLOCK 44100
//#define NTSC_CLOCK 12270000 //818*500(ñòðîê) //15 ÊÃö
//#define PAL_CLOCK 14750000 //944*625(ñòðîê) //15625 Ãö
#pragma pack(push,1)
struct QDatum
{
uint32 qrz_AccARM;
uint32 qrz_AccDSP;
uint32 qrz_AccVDL;
uint32 qrz_TCount;
uint32 VDL_CLOCK, qrz_vdlline, VDL_HS,VDL_FS;
};
#pragma pack(pop)
static QDatum quarz;
#include <memory.h>
unsigned int _qrz_SaveSize()
{
return sizeof(QDatum);
}
void _qrz_Save(void *buff)
{
memcpy(buff,&quarz,sizeof(QDatum));
}
void _qrz_Load(void *buff)
{
memcpy(&quarz,buff,sizeof(QDatum));
}
#define qrz_AccARM quarz.qrz_AccARM
#define qrz_AccDSP quarz.qrz_AccDSP
#define qrz_AccVDL quarz.qrz_AccVDL
#define qrz_TCount quarz.qrz_TCount
#define VDL_CLOCK quarz.VDL_CLOCK
#define qrz_vdlline quarz.qrz_vdlline
#define VDL_HS quarz.VDL_HS
#define VDL_FS quarz.VDL_FS
void __fastcall _qrz_Init()
{
qrz_AccVDL=qrz_AccDSP=0;
qrz_AccARM=0;
VDL_FS=526;
VDL_CLOCK=VDL_FS*30;
VDL_HS=VDL_FS/2;
qrz_TCount=0;
qrz_vdlline=0;
}
int __fastcall _qrz_VDCurrLine()
{
return qrz_vdlline%(VDL_HS/*+(VDL_HS/2)*/);
}
int __fastcall _qrz_VDHalfFrame()
{
return qrz_vdlline/(VDL_HS);
}
int __fastcall _qrz_VDCurrOverline()
{
return qrz_vdlline;
}
bool __fastcall _qrz_QueueVDL()
{
if(qrz_AccVDL>>24)
{
qrz_AccVDL-=0x1000000;
qrz_vdlline++;
qrz_vdlline%=VDL_FS;
return true;
}
return false;
}
bool __fastcall _qrz_QueueDSP()
{
if(qrz_AccDSP>>24)
{
//if(HightResMode!=0) qrz_AccDSP-=0x1000000/1.3;
//else
qrz_AccDSP-=0x1000000;
return true;
}
return false;
}
bool __fastcall _qrz_QueueTimer()
{
//uint32 cnt=_clio_GetTimerDelay();
if(qrz_TCount>>24)//=cnt)
{
qrz_TCount-=0x1000000;//cnt;
return true;
}
return false;
}
void __fastcall _qrz_PushARMCycles(unsigned int clks)
{
uint32 arm,cnt;
int timers=21000000; //default
int sp=0;
if(sdf>0) sdf--;
if(sf>0) sf--;
if(unknownflag11>0)unknownflag11--;
if(ARM_CLOCK<0x5F5E10)ARM_CLOCK=0x5F5E10;
if(ARM_CLOCK>0x2FAF080)ARM_CLOCK=0x2FAF080;
if(speedfixes>0&&speedfixes<0x186A1) {/*sp=0x2DC6C0;*/ speedfixes--;}
else if(speedfixes>0x186A1&&speedfixes<0x30D41) {/*if(sdf==0)sp=0x4C4B40; */speedfixes--;}
else if(speedfixes<0) {sp=0x3D0900; speedfixes++;}
else if(speedfixes>0x30D41) {/*sp=0x249F00;*/ speedfixes--;}
else if(speedfixes==0x30D41||speedfixes==0x186A1) speedfixes=0;
if((fixmode&FIX_BIT_TIMING_2)&&sf<=2500000) {sp=0; timers=21000000; if(sf==0)sp=-(0x1C9C380-ARM_CLOCK);}
if((fixmode&FIX_BIT_TIMING_1)/*&&jw>0*/&&sf<=1500000){/*jw--;*/timers=1000000;sp=-1000000;}
if((fixmode&FIX_BIT_TIMING_4)/*&&jw>0*/){/*jw--;*/timers=1000000;sp=-1000000;}
if((fixmode&FIX_BIT_TIMING_3)&&(sf>0&&sf<=100000)/*&&jw>0*/){/*jw--;*/timers=900000;}
if((fixmode&FIX_BIT_TIMING_5)&&sf==0/*&&jw>0*/){/*jw--;*/timers=1000000;}
if((fixmode&FIX_BIT_TIMING_6)/*&&jw>0*/){/*jw--;*/timers=1000000; if(sf<=80000)sp=-23000000;}
if(fixmode&FIX_BIT_TIMING_7){sp=-3000000; timers=21000000;}
if((sf>0x186A0&&!(fixmode&FIX_BIT_TIMING_2))||((fixmode&FIX_BIT_TIMING_2)&&sf>2500000))sp=-(12200000-ARM_CLOCK);
if((ARM_CLOCK-sp)<0x2DC6C0)sp=-(0x2DC6C0-ARM_CLOCK);
if((ARM_CLOCK-sp)!=THE_ARM_CLOCK)
{ THE_ARM_CLOCK=(ARM_CLOCK-sp);
io_interface(EXT_ARM_SYNC,(void*)THE_ARM_CLOCK); //fix for working with 4do
}
arm=(clks<<24)/(ARM_CLOCK-sp);
qrz_AccARM+=arm*(ARM_CLOCK-sp);
if( (qrz_AccARM>>24) != clks )
{
arm++;
qrz_AccARM+=ARM_CLOCK;
qrz_AccARM&=0xffffff;
}
qrz_AccDSP+=arm*SND_CLOCK;
qrz_AccVDL+=arm*(VDL_CLOCK);
//if(Get_madam_FSM()!=FSM_INPROCESS)
if(_clio_GetTimerDelay())qrz_TCount+=arm*((timers)/(_clio_GetTimerDelay()));//clks<<1;
}
+44
View File
@@ -0,0 +1,44 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
#ifndef QUARZ_3DO_HEADER_DEFINTION
#define QUARZ_3DO_HEADER_DEFINTION
void __fastcall _qrz_Init();
int __fastcall _qrz_VDCurrLine();
int __fastcall _qrz_VDHalfFrame();
int __fastcall _qrz_VDCurrOverline();
bool __fastcall _qrz_QueueVDL();
bool __fastcall _qrz_QueueDSP();
bool __fastcall _qrz_QueueTimer();
void __fastcall _qrz_PushARMCycles(unsigned int clks);
unsigned int _qrz_SaveSize();
void _qrz_Save(void *buff);
void _qrz_Load(void *buff);
#endif
+26
View File
@@ -0,0 +1,26 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#ifndef AFX_STDAFX_H__MAZAFAKING_HEADER
#define AFX_STDAFX_H__MAZAFAKING_HEADER
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
//#include "astring.h"
#include "types.h"
extern int fixmode;
extern int speedfixes;
extern int sf;
extern int sdf;
extern int unknownflag11;
extern int HightResMode;
extern int jw;
extern int cnbfix;
#define DEBUG_CORE
#endif
+79
View File
@@ -0,0 +1,79 @@
/*
www.freedo.org
The first and only working 3DO multiplayer emulator.
The FreeDO licensed under modified GNU LGPL, with following notes:
* The owners and original authors of the FreeDO have full right to develop closed source derivative work.
* Any non-commercial uses of the FreeDO sources or any knowledge obtained by studying or reverse engineering
of the sources, or any other material published by FreeDO have to be accompanied with full credits.
* Any commercial uses of FreeDO sources or any knowledge obtained by studying or reverse engineering of the sources,
or any other material published by FreeDO is strictly forbidden without owners approval.
The above notes are taking precedence over GNU LGPL in conflicting situations.
Project authors:
Alexander Troosh
Maxim Grishin
Allen Wright
John Sammons
Felix Lazarev
*/
/*****************************************************************************
Copyright (C) 2007-2008 Maxim Grishin (http://altmer.arts-union.ru)
*****************************************************************************/
#ifndef TYPES_HEAD_DEFINITION
#define TYPES_HEAD_DEFINITION
typedef unsigned int uint32;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long long uint64;
typedef unsigned long long __uint64;
typedef int int32;
typedef char int8;
typedef short int16;
typedef signed long long int64;
#ifndef WIN32
#ifndef __int64
typedef signed long long __int64;
#endif
#endif
typedef float real32;
typedef double real64;
typedef long double real80;
#ifndef NULL
#define NULL 0
#endif
#ifdef __GNUC__
#define __fastcall __attribute__((__fastcall__))
#endif
//------------------Vector types-------------------------------------------
#pragma pack(push,1)
template <class T> struct point2d { T x,y; };
template <class T> struct sprite{ point2d<T> ul,dr; };
#pragma pack(pop)
//---------------------------------------------------------------------------
//--------------------resources------------------------------------------------
#pragma pack(push,1)
struct imgdata
{
#define IMDT_BMP32 0
#define IMDT_BMP24 1
uint32 pref; //0xf - type,....
uint32 w,h,d;
uint32 data[1];
};
#pragma pack(pop)
//----------------------------------------------------------------------------
#endif

Some files were not shown because too many files have changed in this diff Show More