Subversion Repositories filter_foundry

Compare Revisions

Regard whitespace Rev 415 → Rev 416

/trunk/3264_mixer/foundry_3264_mixer.bat
92,6 → 92,7
echo.
echo Now start the mixer!
foundry_3264_mixer.exe
if errorlevel 1 exit /b 1
echo.
 
rem Copy back 32 bit to original build dir, to enable debugging in IDE
/trunk/3264_mixer/foundry_3264_mixer.cpp
228,10 → 228,15
 
int main()
{
LPCTSTR lpType = L"TPLT";
LPCTSTR lpName32 = (LPCTSTR)1032;
LPCTSTR lpName64 = (LPCTSTR)1064;
WORD wLanguage = 1033; // en-US
LPCTSTR lpTemplateType = L"TPLT";
LPCTSTR lpName32Plugin = (LPCTSTR)1032;
LPCTSTR lpName64Plugin = (LPCTSTR)1064;
LPCTSTR lpName32Version = (LPCTSTR)3032;
LPCTSTR lpName64Version = (LPCTSTR)3064;
LPCTSTR lpName32Pipl = (LPCTSTR)16032;
LPCTSTR lpName64Pipl = (LPCTSTR)16064;
WORD wLanguageEnUs = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); // 1033 en-US
WORD wLanguageNeutral = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL); // 0 Neutral
 
LPCTSTR file32in = L"in\\FilterFoundry.8bf";
LPCTSTR file64in = L"in\\FilterFoundry64.8bf";
240,8 → 245,8
LPCTSTR file32tmp = L"FilterFoundry.tmp";
LPCTSTR file64tmp = L"FilterFoundry64.tmp";
 
// 1. Copy "IN" to "TMP"
 
// 1a. Copy 32 "IN" to 32 "TMP", and 64 "IN" to 64 "TMP"
{
if (!CopyFile(file32in, file32tmp, false)) {
DeleteFile(file32out);
DeleteFile(file64out);
255,16 → 260,54
printf("Error: Copyfile 64in > 64tmp\n");
return 1;
}
}
 
// 2. Remove any 32/64 residue in "TMP"
// 1b. Copy 32 "IN" to 32 "OUT", and 64 "IN" to 64 "OUT" (will be edited later)
{
if (!CopyFile(file32in, file32out, false)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Copyfile 32in > 32out\n");
return 1;
}
 
removeFromFile(file32tmp, lpType, lpName32, wLanguage);
removeFromFile(file32tmp, lpType, lpName64, wLanguage);
removeFromFile(file64tmp, lpType, lpName32, wLanguage);
removeFromFile(file64tmp, lpType, lpName64, wLanguage);
if (!CopyFile(file64in, file64out, false)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Copyfile 64in > 64out\n");
return 1;
}
}
 
// 3. Update timestamp
// 2. Remove any template residues at 32/64 "TMP", since they are only used for building
// "TMP" is our "standalone plugin skelleton"
// TODO: Also remove build dialogs, cursors and icons (like done in make_win.c)?
{
// Remove TPLT 1 (Manifest template)
removeFromFile(file32tmp, lpTemplateType, MAKEINTRESOURCE(1), wLanguageNeutral);
removeFromFile(file64tmp, lpTemplateType, MAKEINTRESOURCE(1), wLanguageNeutral);
 
// Remove TPLT 1032/1064 (8BF included)
removeFromFile(file32tmp, lpTemplateType, lpName32Plugin, wLanguageEnUs);
removeFromFile(file32tmp, lpTemplateType, lpName64Plugin, wLanguageEnUs);
removeFromFile(file64tmp, lpTemplateType, lpName32Plugin, wLanguageEnUs);
removeFromFile(file64tmp, lpTemplateType, lpName64Plugin, wLanguageEnUs);
 
// Remove TPLT 3032/3064 (Versioninfo included)
removeFromFile(file32tmp, lpTemplateType, lpName32Version, wLanguageEnUs);
removeFromFile(file32tmp, lpTemplateType, lpName64Version, wLanguageEnUs);
removeFromFile(file64tmp, lpTemplateType, lpName32Version, wLanguageEnUs);
removeFromFile(file64tmp, lpTemplateType, lpName64Version, wLanguageEnUs);
 
// Remove TPLT 16032/16064 (PIPL template)
removeFromFile(file32tmp, lpTemplateType, lpName32Pipl, wLanguageNeutral);
removeFromFile(file32tmp, lpTemplateType, lpName64Pipl, wLanguageNeutral);
removeFromFile(file64tmp, lpTemplateType, lpName32Pipl, wLanguageNeutral);
removeFromFile(file64tmp, lpTemplateType, lpName64Pipl, wLanguageNeutral);
}
 
// 3. Update timestamp of 32/64 "TMP"
{
if (!update_pe_timestamp(file32tmp, time(0))) {
DeleteFile(file32out);
DeleteFile(file64out);
278,9 → 321,10
printf("Error: Update TMP timestamp 64\n");
return 1;
}
}
 
// 4. Repair checksums
 
// 4. Repair checksums of 32/64 "TMP"
{
if (!repair_pe_checksum(file32tmp)) {
DeleteFile(file32out);
DeleteFile(file64out);
293,31 → 337,17
printf("Error: Repair TMP checksum 64\n");
return 1;
}
 
// 5. Copy "TMP" to "OUT" (will be edited later)
 
if (!CopyFile(file32tmp, file32out, false)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Copyfile 32tmp > 32out\n");
return 1;
}
if (!CopyFile(file64tmp, file64out, false)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Copyfile 64tmp > 64out\n");
return 1;
}
 
// 6. Add 32/64 "TMP" to 64/32 "OUT"
 
if (!addToFile(file32out, file32tmp, lpType, lpName32, wLanguage)) {
// 6. Add 32/64 "TMP" to 64/32 "OUT" ("criss-cross")
{
if (!addToFile(file32out, file32tmp, lpTemplateType, lpName32Plugin, wLanguageEnUs)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Add 32 to 32\n");
return 1;
}
if (!addToFile(file32out, file64tmp, lpType, lpName64, wLanguage)) {
if (!addToFile(file32out, file64tmp, lpTemplateType, lpName64Plugin, wLanguageEnUs)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Add 64 to 32\n");
324,7 → 354,7
return 1;
}
 
if (!addToFile(file64out, file32tmp, lpType, lpName32, wLanguage)) {
if (!addToFile(file64out, file32tmp, lpTemplateType, lpName32Plugin, wLanguageEnUs)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Add 32 to 64\n");
331,20 → 361,106
return 1;
}
 
if (!addToFile(file64out, file64tmp, lpType, lpName64, wLanguage)) {
if (!addToFile(file64out, file64tmp, lpTemplateType, lpName64Plugin, wLanguageEnUs)) {
DeleteFile(file32out);
DeleteFile(file64out);
printf("Error: Add 64 to 64\n");
return 1;
}
}
 
// 7. Delete "TMP"
// 7a. Read Version Info from 32 bit "TMP", and copy it to 32/64 "OUT" template
{
HMODULE lib = LoadLibraryEx(file32tmp, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (!lib) {
printf("Loadlib failed at versioninfo TPLT 32");
return 1;
}
HRSRC resinfo = FindResource(lib, MAKEINTRESOURCE(1), RT_VERSION);
if (!resinfo) {
printf("FindResource failed at versioninfo TPLT 32");
return 1;
}
size_t cbVersionInfo = SizeofResource(lib, resinfo);
HGLOBAL hvinfo = LoadResource(lib, resinfo);
if (!hvinfo) {
printf("LoadResource failed at versioninfo TPLT 32");
return 1;
}
char* vinfo = (char*)LockResource(hvinfo);
char* vinfocpy = (char*)malloc(cbVersionInfo);
if (vinfocpy == NULL) return 1;
memcpy(vinfocpy, vinfo, cbVersionInfo);
UnlockResource(hvinfo);
FreeLibrary(lib);
 
// Write Version info to TPLT Resource of 32 bit "OUT"
 
HANDLE hupd = BeginUpdateResource(file32out, false);
UpdateResource(hupd, TEXT("TPLT"), lpName32Version, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), vinfocpy, cbVersionInfo);
EndUpdateResource(hupd, false);
 
// Write Version info to TPLT Resource of 64 bit "OUT"
 
hupd = BeginUpdateResource(file64out, false);
UpdateResource(hupd, TEXT("TPLT"), lpName32Version, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), vinfocpy, cbVersionInfo);
EndUpdateResource(hupd, false);
 
// Free memory
 
free(vinfocpy);
}
 
// 7b. Read Version Info from 64 bit "TMP", and copy it to 32/64 "OUT" template
{
HMODULE lib = LoadLibraryEx(file64tmp, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (!lib) {
printf("Loadlib failed at versioninfo TPLT 64");
return 1;
}
HRSRC resinfo = FindResource(lib, MAKEINTRESOURCE(1), RT_VERSION);
if (!resinfo) {
printf("FindResource failed at versioninfo TPLT 64");
return 1;
}
size_t cbVersionInfo = SizeofResource(lib, resinfo);
HGLOBAL hvinfo = LoadResource(lib, resinfo);
if (!hvinfo) {
printf("LoadResource failed at versioninfo TPLT 64");
return 1;
}
char* vinfo = (char*)LockResource(hvinfo);
char* vinfocpy = (char*)malloc(cbVersionInfo);
if (vinfocpy == NULL) return 1;
memcpy(vinfocpy, vinfo, cbVersionInfo);
UnlockResource(hvinfo);
FreeLibrary(lib);
 
// Write Version info to TPLT Resource of 32 bit "OUT"
 
HANDLE hupd = BeginUpdateResource(file32out, false);
UpdateResource(hupd, TEXT("TPLT"), lpName64Version, 1033, vinfocpy, cbVersionInfo);
EndUpdateResource(hupd, false);
 
// Write Version info to TPLT Resource of 64 bit "OUT"
 
hupd = BeginUpdateResource(file64out, false);
UpdateResource(hupd, TEXT("TPLT"), lpName64Version, 1033, vinfocpy, cbVersionInfo);
EndUpdateResource(hupd, false);
 
// Free memory
 
free(vinfocpy);
}
 
// 8. Delete 32/64 "TMP"
{
DeleteFile(file32tmp);
DeleteFile(file64tmp);
}
 
// 8. Update timestamp
 
// 9. Update timestamp of 32/64 "OUT"
{
if (!update_pe_timestamp(file32out, time(0))) {
DeleteFile(file32out);
DeleteFile(file64out);
358,9 → 474,10
printf("Error: Update OUT timestamp 64\n");
return 1;
}
}
 
// 9. Repair checksums
 
// 10. Repair checksums of 32/64 "OUT"
{
if (!repair_pe_checksum(file32out)) {
DeleteFile(file32out);
DeleteFile(file64out);
373,8 → 490,9
printf("Error: Repair OUT checksum 64\n");
return 1;
}
}
 
// 10. All done!
// 11. All done!
 
printf("All OK!\n");
return 0;
/trunk/3264_mixer/foundry_3264_mixer.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/3264_mixer/foundry_3264_mixer.sln
1,7 → 1,7

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31410.357
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foundry_3264_mixer", "foundry_3264_mixer.vcxproj", "{5C8DE1CC-009B-4567-9CF0-D81874538A93}"
EndProject
/trunk/3264_mixer/foundry_3264_mixer.vcxproj
29,13 → 29,13
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
42,13 → 42,13
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>