improvements on fpc
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,5 +1,4 @@
|
|||||||
build
|
build
|
||||||
.god
|
|
||||||
.git
|
.git
|
||||||
.cache
|
.cache
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
@@ -33,3 +32,5 @@ Icon?
|
|||||||
|
|
||||||
# Added by cargo
|
# Added by cargo
|
||||||
/target
|
/target
|
||||||
|
|
||||||
|
*.o
|
||||||
|
|||||||
10
fpc/Makefile
10
fpc/Makefile
@@ -20,7 +20,7 @@ recompile: ../build/tools/fpc
|
|||||||
build/fpc build
|
build/fpc build
|
||||||
|
|
||||||
install: ../build/tools/fpc libfpcbuild.a libfpc.so libtier0.so libtier1.a libtier2.a libfilesystem_std.so install_temp builddir
|
install: ../build/tools/fpc libfpcbuild.a libfpc.so libtier0.so libtier1.a libtier2.a libfilesystem_std.so install_temp builddir
|
||||||
$(CC) -fPIC main.cpp library/helper.cpp library/target.cpp library/builder.cpp -lc -lstdc++ $(CCFLAGS) -o build/fpc build/libtier0.so build/libtier1.a build/libtier2.a -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
|
$(CC) -fPIC main.cpp library/helper.cpp library/target.cpp library/builder.cpp -lc -lstdc++ $(CCFLAGS) -o build/fpc libtier0.so build/libtier1.a build/libtier2.a -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
|
||||||
build/fpc build -fpcdebug
|
build/fpc build -fpcdebug
|
||||||
|
|
||||||
libtier0.so: $(TIER0_FILES) builddir
|
libtier0.so: $(TIER0_FILES) builddir
|
||||||
@@ -51,10 +51,10 @@ builddir:
|
|||||||
mkdir -p ../build/tools/fpc
|
mkdir -p ../build/tools/fpc
|
||||||
|
|
||||||
install_fpc: ../build/tools/fpc
|
install_fpc: ../build/tools/fpc
|
||||||
mv build/fpc_temp fpc
|
mv build/fpc_temp build/fpc
|
||||||
mv build/libtier0_temp.so libtier0.so
|
#mv build/libtier0_temp.so libtier0.so
|
||||||
mv build/libfpc_temp.so libfpc.so
|
mv build/libfpc_temp.so build/libfpc.so
|
||||||
mv build/libfilesystem_std_temp.so libfilesystem_std.so
|
#mv build/libfilesystem_std_temp.so libfilesystem_std.so
|
||||||
cp -r build/* ../build/tools/fpc
|
cp -r build/* ../build/tools/fpc
|
||||||
|
|
||||||
install_temp: builddir
|
install_temp: builddir
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ DECLARE_BUILD_STAGE(libfpc)
|
|||||||
ldProject = ccompiler->Compile(&compileProject);
|
ldProject = ccompiler->Compile(&compileProject);
|
||||||
ldProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
ldProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||||
ldProject.libraryObjects = {
|
ldProject.libraryObjects = {
|
||||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
"libtier0.so",
|
||||||
GET_PROJECT_LIBRARY(tier1, "tier1"),
|
GET_PROJECT_LIBRARY(tier1, "tier1"),
|
||||||
GET_PROJECT_LIBRARY(tier2, "tier2"),
|
GET_PROJECT_LIBRARY(tier2, "tier2"),
|
||||||
};
|
};
|
||||||
@@ -109,10 +109,9 @@ DECLARE_BUILD_STAGE(fpc)
|
|||||||
compileProject.includeDirectories = g_IncludeDirectories;
|
compileProject.includeDirectories = g_IncludeDirectories;
|
||||||
ldProject = ccompiler->Compile(&compileProject);
|
ldProject = ccompiler->Compile(&compileProject);
|
||||||
ldProject.libraryObjects = {
|
ldProject.libraryObjects = {
|
||||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
"libtier0.so",
|
||||||
GET_PROJECT_LIBRARY(tier1, "tier1"),
|
GET_PROJECT_LIBRARY(tier1, "tier1"),
|
||||||
GET_PROJECT_LIBRARY(tier2, "tier2"),
|
GET_PROJECT_LIBRARY(tier2, "tier2"),
|
||||||
GET_PROJECT_LIBRARY(libfpc, "fpc"),
|
|
||||||
};
|
};
|
||||||
V_printf("WHAT %s\n",GET_PROJECT_LIBRARY(tier0, "tier0").GetString());
|
V_printf("WHAT %s\n",GET_PROJECT_LIBRARY(tier0, "tier0").GetString());
|
||||||
|
|
||||||
@@ -135,12 +134,15 @@ DECLARE_BUILD_STAGE(install)
|
|||||||
CUtlString szTier0 = GET_PROJECT_LIBRARY(tier0, "tier0");
|
CUtlString szTier0 = GET_PROJECT_LIBRARY(tier0, "tier0");
|
||||||
CUtlString szTier1 = GET_PROJECT_LIBRARY(tier1, "tier1");
|
CUtlString szTier1 = GET_PROJECT_LIBRARY(tier1, "tier1");
|
||||||
CUtlString szTier2 = GET_PROJECT_LIBRARY(tier2, "tier2");
|
CUtlString szTier2 = GET_PROJECT_LIBRARY(tier2, "tier2");
|
||||||
|
|
||||||
filesystem2->CopyFile("build/fpc_temp", szExe);
|
filesystem2->CopyFile("build/fpc_temp", szExe);
|
||||||
filesystem2->CopyFile("build/libfpc.so", szLibFpc);
|
filesystem2->CopyFile("build/libfpc_temp.so", szLibFpc);
|
||||||
filesystem2->CopyFile("build/libtier0_temp.so", szTier0);
|
|
||||||
|
/*
|
||||||
filesystem2->CopyFile("build/libtier1.a", szTier1);
|
filesystem2->CopyFile("build/libtier1.a", szTier1);
|
||||||
filesystem2->CopyFile("build/libtier2.a", szTier2);
|
filesystem2->CopyFile("build/libtier2.a", szTier2);
|
||||||
|
filesystem2->CopyFile("build/libtier0_temp.so", szTier0);
|
||||||
|
*/
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
BIN
fpc/libfpc.so
Normal file
BIN
fpc/libfpc.so
Normal file
Binary file not shown.
@@ -93,43 +93,45 @@ CUtlString CAPKTool::BuildPackage( AndroidManifest_t manifest, CUtlString szMani
|
|||||||
{
|
{
|
||||||
|
|
||||||
V_printf(" APKTOOL %s\n", manifest.m_szPackageID.GetString());
|
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 = {
|
IINISection *pSection = NULL;
|
||||||
"-u",
|
const char *szBuildTools;
|
||||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
pSection = g_pConfig->GetSection("Android_Build_Tools");
|
||||||
"lib/x86_64/libnative-app.so",
|
if (!pSection)
|
||||||
};
|
Plat_FatalErrorFunc("build_tools are required for this target");
|
||||||
runner->Run("zip",szManifestDir, args);
|
szBuildTools = pSection->GetStringValue("path");
|
||||||
runner->Wait();
|
CUtlVector<CUtlString> args = {
|
||||||
|
"package",
|
||||||
args = {
|
"-f",
|
||||||
"-f",
|
"-M",
|
||||||
"-v",
|
"AndroidManifest.xml",
|
||||||
"4",
|
"-S",
|
||||||
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
"res",
|
||||||
CUtlString("%s.apk", manifest.m_szPackageID.GetString()),
|
"-I",
|
||||||
};
|
CUtlString("%s/../../platforms/android-%lu/android.jar", szBuildTools, manifest.m_nTargetVersion),
|
||||||
runner->Run(CUtlString("%s/zipalign",szAndroidSDK.GetString()),szManifestDir,args);
|
"-F",
|
||||||
} else
|
CUtlString("%s.unaligned.apk", manifest.m_szPackageID.GetString()),
|
||||||
Plat_FatalErrorFunc("-android_build_tools was not specified.");
|
};
|
||||||
return 0;
|
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()
|
IAPKTool *APKTool()
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ BuildFile_t *CProjectBuilder::BuildProject( const char *szProjectName, const cha
|
|||||||
stLinkProject = ccompiler->Compile(&stCompileProject);
|
stLinkProject = ccompiler->Compile(&stCompileProject);
|
||||||
stLinkProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
stLinkProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||||
stLinkProject.m_target = Target_t::HostTarget();
|
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/libfpc.so",filesystem2->OwnDirectory())});
|
||||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libtier2.a",filesystem2->OwnDirectory())});
|
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libtier2.a",filesystem2->OwnDirectory())});
|
||||||
stLinkProject.libraryObjects.AppendHead({CUtlString("%s/libtier1.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);
|
EnablePIE(cmd);
|
||||||
SetTarget(cmd, pProject);
|
SetTarget(cmd, pProject);
|
||||||
SetOutputFile(cmd, szOutputFileName);
|
SetOutputFile(cmd, szOutputFileName);
|
||||||
|
SetSysroot(cmd, pProject, NULL);
|
||||||
CompileFile(cmd, szFileName);
|
CompileFile(cmd, szFileName);
|
||||||
for (auto ¯o: pProject->macros)
|
for (auto ¯o: pProject->macros)
|
||||||
Macro(cmd, macro.szName, macro.szValue.GetString());
|
Macro(cmd, macro.szName, macro.szValue.GetString());
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ protected:
|
|||||||
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) override;
|
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) override;
|
||||||
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) override;
|
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) override;
|
||||||
virtual void EnablePIC( 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()
|
const char *CClangCompiler::GetOutputObjectFormat()
|
||||||
@@ -117,6 +119,31 @@ void CClangCompiler::EnablePIC( CUtlVector<CUtlString> &cmd )
|
|||||||
{
|
{
|
||||||
cmd.AppendTail("-fPIC");
|
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);
|
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("-miphoneos-version-min=18.0 ");
|
||||||
args.AppendTail("-fembed-bitcode");
|
args.AppendTail("-fembed-bitcode");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pProject->m_target.szSysroot)
|
|
||||||
{
|
|
||||||
args.AppendTail(CUtlString("--sysroot=%s", pProject->m_target.szSysroot));
|
|
||||||
}
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!filesystem2->ShouldRecompile(file, szOutputFile))
|
if (!filesystem2->ShouldRecompile(file, szOutputFile))
|
||||||
goto skipcompile;
|
goto skipcompile;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -139,14 +139,14 @@ CUtlString CClangLinker::Link( LinkProject_t *pProject )
|
|||||||
}
|
}
|
||||||
else if (pProject->m_target.kernel == TARGET_KERNEL_ANDROID)
|
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 ?
|
// Shouldn't be here ?
|
||||||
args.AppendTail("-static-libstdc++");
|
args.AppendTail("-static-libstdc++");
|
||||||
}
|
}
|
||||||
else if (pProject->m_target.szSysroot)
|
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
|
// Magic for the systems
|
||||||
@@ -201,18 +201,34 @@ CUtlString CClangLinker::Link( LinkProject_t *pProject )
|
|||||||
args.AppendTail(framework);
|
args.AppendTail(framework);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Android SDK requires sysroot
|
IINISection *pSection = NULL;
|
||||||
if (pProject->m_target.kernel == TARGET_KERNEL_ANDROID)
|
const char *szLinker;
|
||||||
{
|
const char *szSysroot;
|
||||||
if (!pProject->m_target.szSysroot)
|
if (!g_pConfig)
|
||||||
Plat_FatalErrorFunc("szSysroot must be specified for android\n");
|
goto use_default_linker;
|
||||||
runner->Run(CUtlString("%s/bin/clang++",pProject->m_target.szSysroot), args);
|
|
||||||
|
|
||||||
}
|
|
||||||
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();
|
runner->Wait();
|
||||||
}
|
}
|
||||||
compiled:
|
compiled:
|
||||||
|
|||||||
@@ -97,9 +97,7 @@ void CPOSIXFileSystem2::CopyFile( const char *szDestination, const char *szOrigi
|
|||||||
szOrigin,
|
szOrigin,
|
||||||
szDestination,
|
szDestination,
|
||||||
};
|
};
|
||||||
printf("runner: %p\n",runner);
|
|
||||||
runner->Run(CUtlString("cp"), args);
|
runner->Run(CUtlString("cp"), args);
|
||||||
printf("runner: %p\n",runner);
|
|
||||||
runner->Wait();
|
runner->Wait();
|
||||||
}
|
}
|
||||||
void CPOSIXFileSystem2::CopyDirectory( const char *szDestination, const char *szOrigin )
|
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;
|
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);
|
_exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
|
||||||
m_processes.AppendTail(pid);
|
m_processes.AppendTail(pid);
|
||||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,9 +83,7 @@ int CPOSIXRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector<CUtl
|
|||||||
_exit(0);
|
_exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
|
||||||
m_processes.AppendTail(pid);
|
m_processes.AppendTail(pid);
|
||||||
printf("%i %p\n",m_processes.GetSize(),m_processes.GetData());
|
|
||||||
/* parent */
|
/* parent */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -99,14 +95,8 @@ int CPOSIXRunner::Run(CUtlString szName, CUtlString szDirectory, CUtlVector<CUtl
|
|||||||
|
|
||||||
int CPOSIXRunner::Wait( void )
|
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++)
|
for (int i = 0; i<m_processes.GetSize(); i++)
|
||||||
{
|
{
|
||||||
printf("p %i\n",m_processes[i]);
|
|
||||||
int status;
|
int status;
|
||||||
pid_t wpid = waitpid(m_processes[i], &status, 0);
|
pid_t wpid = waitpid(m_processes[i], &status, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,6 +149,9 @@ findbuild:
|
|||||||
|
|
||||||
g_pConfig = INIManager()->ReadFile(".fpccfg");
|
g_pConfig = INIManager()->ReadFile(".fpccfg");
|
||||||
|
|
||||||
|
IINIFile **ppConfig = (IINIFile**)pLibFPCFactory(LIBFPC_CONFIG_INTERFACE_VERSION, NULL);
|
||||||
|
*ppConfig = g_pConfig;
|
||||||
|
|
||||||
CommandLine()->CreateCommandLine(c, v);
|
CommandLine()->CreateCommandLine(c, v);
|
||||||
if (CommandLine()->CheckParam("build"))
|
if (CommandLine()->CheckParam("build"))
|
||||||
return build();
|
return build();
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ protected:
|
|||||||
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) = 0;
|
virtual void EnableDebugSymbols( CUtlVector<CUtlString> &cmd ) = 0;
|
||||||
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) = 0;
|
virtual void EnablePIE( CUtlVector<CUtlString> &cmd ) = 0;
|
||||||
virtual void EnablePIC( CUtlVector<CUtlString> &cmd ) = 0;
|
virtual void EnablePIC( CUtlVector<CUtlString> &cmd ) = 0;
|
||||||
|
|
||||||
|
virtual void SetSysroot( CUtlVector<CUtlString> &cmd, CProject_t *pProject , const char *szSysroot ) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ICCompiler *ccompiler;
|
extern ICCompiler *ccompiler;
|
||||||
|
|||||||
@@ -149,5 +149,6 @@ typedef CUtlString(*GetProjectObjectFn)( const char *szName, const char *szObjec
|
|||||||
|
|
||||||
|
|
||||||
extern IINIFile *g_pConfig;
|
extern IINIFile *g_pConfig;
|
||||||
|
#define LIBFPC_CONFIG_INTERFACE_VERSION "LibFPCConfig001"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
6
fpc/tests/android_build/.fpccfg
Normal file
6
fpc/tests/android_build/.fpccfg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[x86_64-linux-android]
|
||||||
|
sysroot = "/home/kotofyt/Android/Sdk/ndk/29.0.13599879/toolchains/llvm/prebuilt/linux-x86_64/sysroot"
|
||||||
|
CLANG_LINKER_INTERFACE_NAME = "/home/kotofyt/Android/Sdk/ndk/29.0.13599879/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++"
|
||||||
|
|
||||||
|
[Android_Build_Tools]
|
||||||
|
path = "/home/kotofyt/Android/Sdk/build-tools/36.0.0"
|
||||||
@@ -16,8 +16,11 @@ DECLARE_BUILD_STAGE(android_build)
|
|||||||
compileProject.m_szName = "android_app";
|
compileProject.m_szName = "android_app";
|
||||||
compileProject.m_androidmanifest = manifest;
|
compileProject.m_androidmanifest = manifest;
|
||||||
compileProject.bFPIC = true;
|
compileProject.bFPIC = true;
|
||||||
|
compileProject.m_target = Target_t::HostTarget();
|
||||||
|
compileProject.m_target.kernel = TARGET_KERNEL_ANDROID;
|
||||||
compileProject.files = {
|
compileProject.files = {
|
||||||
"main.c",
|
"main.c",
|
||||||
|
"android_native_app_glue.c",
|
||||||
};
|
};
|
||||||
LinkProject_t ldProject = ccompiler->Compile(&compileProject);
|
LinkProject_t ldProject = ccompiler->Compile(&compileProject);
|
||||||
ldProject.libraries = {
|
ldProject.libraries = {
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -17,7 +17,6 @@ static void handle_cmd(struct android_app* app, int32_t cmd) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Entry point for native app
|
|
||||||
void android_main(struct android_app* app) {
|
void android_main(struct android_app* app) {
|
||||||
app->onAppCmd = handle_cmd;
|
app->onAppCmd = handle_cmd;
|
||||||
|
|
||||||
@@ -26,7 +25,6 @@ void android_main(struct android_app* app) {
|
|||||||
int events;
|
int events;
|
||||||
struct android_poll_source* source;
|
struct android_poll_source* source;
|
||||||
|
|
||||||
// Main event loop
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int ident;
|
int ident;
|
||||||
while ((ident = ALooper_pollOnce(0, NULL, &events, (void**)&source)) >= 0) {
|
while ((ident = ALooper_pollOnce(0, NULL, &events, (void**)&source)) >= 0) {
|
||||||
@@ -37,6 +35,5 @@ void android_main(struct android_app* app) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Here you can update your game/render loop
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
fpc/tests/android_build/my-release-key.jks
Normal file
BIN
fpc/tests/android_build/my-release-key.jks
Normal file
Binary file not shown.
@@ -118,7 +118,17 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual CUtlBuffer<unsigned char> Read( IFileHandle *pFile ) override { return NULL; };
|
virtual CUtlBuffer<unsigned char> Read( IFileHandle *pFile ) override { return NULL; };
|
||||||
virtual const char *ReadString( IFileHandle *pFile ) override { return NULL; };
|
virtual const char *ReadString( IFileHandle *pFile ) override {
|
||||||
|
char *szData = NULL;
|
||||||
|
size_t uSize = Size(pFile);
|
||||||
|
|
||||||
|
szData = (char*)V_malloc(uSize+1);
|
||||||
|
Read(pFile, szData,uSize);
|
||||||
|
szData[uSize] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
return szData;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
EXPOSE_INTERFACE(CLIBCFileSystem, IFileSystem, FILESYSTEM_INTERFACE_VERSION)
|
EXPOSE_INTERFACE(CLIBCFileSystem, IFileSystem, FILESYSTEM_INTERFACE_VERSION)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
tier1/utlmap.o
BIN
tier1/utlmap.o
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -58,7 +58,12 @@ const char *CINISection::GetStringValue( const char *szKeyName )
|
|||||||
|
|
||||||
CUtlString CINISection::GetUTLStringValue( const char *szKeyName )
|
CUtlString CINISection::GetUTLStringValue( const char *szKeyName )
|
||||||
{
|
{
|
||||||
|
for (auto &value: m_values)
|
||||||
|
{
|
||||||
|
if (value->m_szKey == szKeyName)
|
||||||
|
return value->m_szData;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CINIFile: public IINIFile
|
class CINIFile: public IINIFile
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user