improvements on fpc
This commit is contained in:
@@ -93,43 +93,45 @@ CUtlString CAPKTool::BuildPackage( AndroidManifest_t manifest, CUtlString szMani
|
||||
{
|
||||
|
||||
V_printf(" APKTOOL %s\n", manifest.m_szPackageID.GetString());
|
||||
if (CommandLine()->ParamValue("-android_build_tools"))
|
||||
{
|
||||
CUtlVector<CUtlString> args = {
|
||||
"package",
|
||||
"-f",
|
||||
"-M",
|
||||
"AndroidManifest.xml",
|
||||
"-S",
|
||||
"res",
|
||||
"-I",
|
||||
CUtlString("%s/../../platforms/android-%lu/android.jar", CommandLine()->ParamValue("-android_build_tools"), manifest.m_nTargetVersion),
|
||||
"-F",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
};
|
||||
CUtlString szAndroidSDK = CommandLine()->ParamValue("-android_build_tools");
|
||||
runner->Run(CUtlString("%s/aapt",szAndroidSDK.GetString()),szManifestDir,args);
|
||||
runner->Wait();
|
||||
|
||||
args = {
|
||||
"-u",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
"lib/x86_64/libnative-app.so",
|
||||
};
|
||||
runner->Run("zip",szManifestDir, args);
|
||||
runner->Wait();
|
||||
|
||||
args = {
|
||||
"-f",
|
||||
"-v",
|
||||
"4",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
CUtlString("%s.apk", manifest.m_szPackageID.GetString()),
|
||||
};
|
||||
runner->Run(CUtlString("%s/zipalign",szAndroidSDK.GetString()),szManifestDir,args);
|
||||
} else
|
||||
Plat_FatalErrorFunc("-android_build_tools was not specified.");
|
||||
return 0;
|
||||
IINISection *pSection = NULL;
|
||||
const char *szBuildTools;
|
||||
pSection = g_pConfig->GetSection("Android_Build_Tools");
|
||||
if (!pSection)
|
||||
Plat_FatalErrorFunc("build_tools are required for this target");
|
||||
szBuildTools = pSection->GetStringValue("path");
|
||||
CUtlVector<CUtlString> args = {
|
||||
"package",
|
||||
"-f",
|
||||
"-M",
|
||||
"AndroidManifest.xml",
|
||||
"-S",
|
||||
"res",
|
||||
"-I",
|
||||
CUtlString("%s/../../platforms/android-%lu/android.jar", szBuildTools, manifest.m_nTargetVersion),
|
||||
"-F",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
};
|
||||
runner->Run(CUtlString("%s/aapt",szBuildTools),szManifestDir,args);
|
||||
runner->Wait();
|
||||
|
||||
args = {
|
||||
"-u",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
"lib/x86_64/libnative-app.so",
|
||||
};
|
||||
runner->Run("zip",szManifestDir, args);
|
||||
runner->Wait();
|
||||
|
||||
args = {
|
||||
"-f",
|
||||
"-v",
|
||||
"4",
|
||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||
CUtlString("%s.apk", manifest.m_szPackageID.GetString()),
|
||||
};
|
||||
runner->Run(CUtlString("%s/zipalign",szBuildTools),szManifestDir,args);
|
||||
return manifest.m_szPackageID;
|
||||
}
|
||||
|
||||
IAPKTool *APKTool()
|
||||
|
||||
@@ -71,7 +71,7 @@ BuildFile_t *CProjectBuilder::BuildProject( const char *szProjectName, const cha
|
||||
stLinkProject = ccompiler->Compile(&stCompileProject);
|
||||
stLinkProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||
stLinkProject.m_target = Target_t::HostTarget();
|
||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libfpcbuild.a",filesystem2->OwnDirectory())});
|
||||
stLinkProject.objects.AppendHead({CUtlString("%s/libfpcbuild.a",filesystem2->OwnDirectory())});
|
||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libfpc.so",filesystem2->OwnDirectory())});
|
||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libtier2.a",filesystem2->OwnDirectory())});
|
||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libtier1.a",filesystem2->OwnDirectory())});
|
||||
|
||||
@@ -31,6 +31,7 @@ CUtlVector<CUtlString> ICCompiler::BuildCommandLine( CProject_t *pProject, const
|
||||
EnablePIE(cmd);
|
||||
SetTarget(cmd, pProject);
|
||||
SetOutputFile(cmd, szOutputFileName);
|
||||
SetSysroot(cmd, pProject, NULL);
|
||||
CompileFile(cmd, szFileName);
|
||||
for (auto ¯o: pProject->macros)
|
||||
Macro(cmd, macro.szName, macro.szValue.GetString());
|
||||
|
||||
@@ -46,6 +46,8 @@ protected:
|
||||
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) override;
|
||||
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) override;
|
||||
virtual void EnablePIC( CUtlVector<CUtlString> &cmd ) override;
|
||||
|
||||
virtual void SetSysroot( CUtlVector<CUtlString> &cmd, CProject_t *pProject, const char *szSysroot ) override;
|
||||
};
|
||||
|
||||
const char *CClangCompiler::GetOutputObjectFormat()
|
||||
@@ -117,6 +119,31 @@ void CClangCompiler::EnablePIC( CUtlVector<CUtlString> &cmd )
|
||||
{
|
||||
cmd.AppendTail("-fPIC");
|
||||
}
|
||||
void CClangCompiler::SetSysroot( CUtlVector<CUtlString> &cmd, CProject_t *pProject, const char *szName )
|
||||
{
|
||||
if (szName != NULL)
|
||||
{
|
||||
cmd.AppendTail("--sysroot");
|
||||
cmd.AppendTail(szName);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!g_pConfig)
|
||||
return;
|
||||
|
||||
|
||||
IINISection *pSection = g_pConfig->GetSection(pProject->m_target.GetTriplet());
|
||||
if (!pSection)
|
||||
return;
|
||||
|
||||
const char *szSysroot = pSection->GetStringValue("sysroot");
|
||||
if (szSysroot)
|
||||
{
|
||||
cmd.AppendTail("--sysroot");
|
||||
cmd.AppendTail(szSysroot);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
EXPOSE_INTERFACE(CClangCompiler, ICCompiler, CLANG_C_COMPILER_INTERFACE_NAME);
|
||||
@@ -194,12 +221,8 @@ LinkProject_t CClangCompiler::Compile( CProject_t *pProject )
|
||||
args.AppendTail("-miphoneos-version-min=18.0 ");
|
||||
args.AppendTail("-fembed-bitcode");
|
||||
}
|
||||
|
||||
if (pProject->m_target.szSysroot)
|
||||
{
|
||||
args.AppendTail(CUtlString("--sysroot=%s", pProject->m_target.szSysroot));
|
||||
}
|
||||
*/
|
||||
|
||||
if (!filesystem2->ShouldRecompile(file, szOutputFile))
|
||||
goto skipcompile;
|
||||
else
|
||||
|
||||
@@ -139,14 +139,14 @@ CUtlString CClangLinker::Link( LinkProject_t *pProject )
|
||||
}
|
||||
else if (pProject->m_target.kernel == TARGET_KERNEL_ANDROID)
|
||||
{
|
||||
args.AppendTail(CUtlString("--sysroot=%s/sysroot", pProject->m_target.szSysroot));
|
||||
// args.AppendTail(CUtlString("--sysroot=%s/sysroot", pProject->m_target.szSysroot));
|
||||
|
||||
// Shouldn't be here ?
|
||||
args.AppendTail("-static-libstdc++");
|
||||
}
|
||||
else if (pProject->m_target.szSysroot)
|
||||
{
|
||||
args.AppendTail(CUtlString("--sysroot=%s", pProject->m_target.szSysroot));
|
||||
// args.AppendTail(CUtlString("--sysroot=%s", pProject->m_target.szSysroot));
|
||||
}
|
||||
|
||||
// Magic for the systems
|
||||
@@ -201,18 +201,34 @@ CUtlString CClangLinker::Link( LinkProject_t *pProject )
|
||||
args.AppendTail(framework);
|
||||
}
|
||||
|
||||
// Android SDK requires sysroot
|
||||
if (pProject->m_target.kernel == TARGET_KERNEL_ANDROID)
|
||||
{
|
||||
if (!pProject->m_target.szSysroot)
|
||||
Plat_FatalErrorFunc("szSysroot must be specified for android\n");
|
||||
runner->Run(CUtlString("%s/bin/clang++",pProject->m_target.szSysroot), args);
|
||||
IINISection *pSection = NULL;
|
||||
const char *szLinker;
|
||||
const char *szSysroot;
|
||||
if (!g_pConfig)
|
||||
goto use_default_linker;
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
pSection = g_pConfig->GetSection(pProject->m_target.GetTriplet());
|
||||
if (!pSection)
|
||||
goto use_default_linker;
|
||||
szSysroot = pSection->GetStringValue("sysroot");
|
||||
if (szSysroot)
|
||||
{
|
||||
runner->Run("clang++", args);
|
||||
args.AppendTail("--sysroot");
|
||||
args.AppendTail(szSysroot);
|
||||
}
|
||||
|
||||
szLinker = pSection->GetStringValue("CLANG_LINKER_INTERFACE_NAME");
|
||||
if (szLinker)
|
||||
{
|
||||
runner->Run(szLinker, args);
|
||||
}
|
||||
|
||||
runner->Wait();
|
||||
|
||||
goto compiled;
|
||||
use_default_linker:
|
||||
runner->Run("clang++", args);
|
||||
runner->Wait();
|
||||
}
|
||||
compiled:
|
||||
|
||||
@@ -97,9 +97,7 @@ void CPOSIXFileSystem2::CopyFile( const char *szDestination, const char *szOrigi
|
||||
szOrigin,
|
||||
szDestination,
|
||||
};
|
||||
printf("runner: %p\n",runner);
|
||||
runner->Run(CUtlString("cp"), args);
|
||||
printf("runner: %p\n",runner);
|
||||
runner->Wait();
|
||||
}
|
||||
void CPOSIXFileSystem2::CopyDirectory( const char *szDestination, const char *szOrigin )
|
||||
@@ -138,3 +136,4 @@ bool CPOSIXFileSystem2::ShouldRecompile(const char *szSource, const char *szOutp
|
||||
|
||||
|
||||
IINIFile *g_pConfig;
|
||||
EXPOSE_INTERFACE_GLOBALVAR(IINIFile, IINIFile, LIBFPC_CONFIG_INTERFACE_VERSION, g_pConfig);
|
||||
|
||||
@@ -51,9 +51,7 @@ int CPOSIXRunner::Run(CUtlString szName, CUtlVector<CUtlString>& args)
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
m_processes.AppendTail(pid);
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -85,9 +83,7 @@ int CPOSIXRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector<CUtl
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
m_processes.AppendTail(pid);
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
/* parent */
|
||||
return 0;
|
||||
}
|
||||
@@ -99,14 +95,8 @@ int CPOSIXRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector<CUtl
|
||||
|
||||
int CPOSIXRunner::Wait( void )
|
||||
{
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
if (m_processes.GetSize())
|
||||
printf("%i\n",m_processes[0]);
|
||||
|
||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
||||
for (int i = 0; i<m_processes.GetSize(); i++)
|
||||
{
|
||||
printf("p %i\n",m_processes[i]);
|
||||
int status;
|
||||
pid_t wpid = waitpid(m_processes[i], &status, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user