made it work with new fpc
This commit is contained in:
@@ -1,79 +0,0 @@
|
||||
#include "helper.h"
|
||||
#include "c.h"
|
||||
#include "ld.h"
|
||||
#include "tier1/utlstring.h"
|
||||
|
||||
CUtlVector<CUtlString> launcher_CompiledFiles = {
|
||||
"launcher/launcher.cpp",
|
||||
};
|
||||
|
||||
DECLARE_BUILD_STAGE(launcher)
|
||||
{
|
||||
filesystem2->MakeDirectory(CUtlString("%s/bin",szOutputDir.GetString()));
|
||||
CProject_t compileProject = {};
|
||||
LinkProject_t ldProject = {};
|
||||
|
||||
compileProject.m_szName = "launcher";
|
||||
compileProject.files = launcher_CompiledFiles;
|
||||
compileProject.includeDirectories = all_IncludeDirectories;
|
||||
compileProject.bFPIC = true;
|
||||
if (bStaticBuild)
|
||||
{
|
||||
compileProject.macros.AppendTail((C_Macro_t){"STATIC_BUILD","1"});
|
||||
}
|
||||
ldProject = ccompiler->Compile(&compileProject);
|
||||
ldProject.linkType = ELINK_EXECUTABLE;
|
||||
CUtlString szBinaryOutput = CUtlString("%s/bin/funnygame", szOutputDir.GetString());
|
||||
|
||||
if (bStaticBuild)
|
||||
{
|
||||
ldProject.objects.AppendTail((Object_t){tier0_lib});
|
||||
ldProject.objects.AppendTail((Object_t){tier1_lib});
|
||||
ldProject.objects.AppendTail((Object_t){rapier_lib});
|
||||
ldProject.objects.AppendTail((Object_t){engine_lib});
|
||||
ldProject.objects.AppendTail((Object_t){server_lib});
|
||||
ldProject.objects.AppendTail((Object_t){client_lib});
|
||||
if (Target_t::DefaultTarget().kernel == TARGET_KERNEL_IOS)
|
||||
{
|
||||
ldProject.frameworks.AppendTail("SDL3");
|
||||
ldProject.frameworks.AppendTail("CoreFoundation");
|
||||
ldProject.frameworks.AppendTail("CoreGraphics");
|
||||
ldProject.frameworks.AppendTail("IOSurface");
|
||||
ldProject.frameworks.AppendTail("Metal");
|
||||
ldProject.frameworks.AppendTail("Foundation");
|
||||
ldProject.frameworks.AppendTail("QuartzCore");
|
||||
ldProject.frameworks.AppendTail("UIKit");
|
||||
ldProject.frameworkDirectories.AppendTail("external/ios");
|
||||
filesystem2->CopyDirectory(CUtlString("%s/bin", szOutputDir.GetString()), "external/ios/SDL3.framework");
|
||||
};
|
||||
if (Target_t::DefaultTarget().kernel == TARGET_KERNEL_WINDOWS)
|
||||
{
|
||||
ldProject.objects.AppendTail((Object_t){"external/windows/vulkan-1.dll"});
|
||||
ldProject.objects.AppendTail((Object_t){"external/windows/libSDL3.a"});
|
||||
ldProject.objects.AppendTail((Object_t){"external/windows/libpthread.a"});
|
||||
ldProject.objects.AppendTail((Object_t){"external/windows/libstdc++.a"});
|
||||
if (bSteam)
|
||||
ldProject.objects.AppendTail((Object_t){"external/steamworks/redistributable_bin/win64/steam_api64.dll"});
|
||||
ldProject.libraries.AppendTail("ws2_32");
|
||||
ldProject.libraries.AppendTail("ntdll");
|
||||
ldProject.libraries.AppendTail("userenv");
|
||||
ldProject.libraries.AppendTail("winmm");
|
||||
ldProject.libraries.AppendTail("ole32");
|
||||
ldProject.libraries.AppendTail("setupapi");
|
||||
ldProject.libraries.AppendTail("gdi32");
|
||||
ldProject.libraries.AppendTail("cfgmgr32");
|
||||
ldProject.libraries.AppendTail("uuid");
|
||||
ldProject.libraries.AppendTail("imm32");
|
||||
ldProject.libraries.AppendTail("version");
|
||||
ldProject.libraries.AppendTail("oleaut32");
|
||||
filesystem2->CopyFile(CUtlString("%s/bin", szOutputDir.GetString()), "external/windows/libgcc_s_seh-1.dll");
|
||||
filesystem2->CopyFile(CUtlString("%s/bin", szOutputDir.GetString()), "external/windows/libwinpthread-1.dll");
|
||||
szBinaryOutput = CUtlString("%s/bin/funnygame.exe", szOutputDir.GetString());
|
||||
}
|
||||
};
|
||||
|
||||
CUtlString outputProject = linker->Link(&ldProject);
|
||||
filesystem2->CopyFile(szBinaryOutput, outputProject);
|
||||
|
||||
return 0;
|
||||
};
|
||||
20
launcher/build.cpp
Normal file
20
launcher/build.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include "target.h"
|
||||
#include "helper.h"
|
||||
#include "c.h"
|
||||
#include "ld.h"
|
||||
#include "tier1/utlstring.h"
|
||||
|
||||
DECLARE_BUILD_STAGE(launcher)
|
||||
{
|
||||
CProject_t compileProject = {};
|
||||
LinkProject_t ldProject = {};
|
||||
|
||||
compileProject.m_szName = "launcher";
|
||||
compileProject.files = {"launcher.cpp"};
|
||||
ldProject = ccompiler->Compile(&compileProject);
|
||||
ldProject.linkType = ELINK_EXECUTABLE;
|
||||
|
||||
CUtlString outputProject = linker->Link(&ldProject);
|
||||
ADD_OUTPUT_OBJECT("launcher", outputProject);
|
||||
return 0;
|
||||
};
|
||||
@@ -1,6 +1,5 @@
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "tier0/platform.h"
|
||||
#include "unistd.h"
|
||||
#include "libgen.h"
|
||||
|
||||
@@ -9,9 +8,7 @@
|
||||
#endif
|
||||
#ifdef __WIN32__
|
||||
#include "windows.h"
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
#else
|
||||
#include "dlfcn.h"
|
||||
#endif
|
||||
|
||||
@@ -41,10 +38,9 @@ void *pTier0Lib = NULL;
|
||||
typedef void (*EngineMainFn)(int argc, char** argv);
|
||||
EngineMainFn pEngineMain;
|
||||
|
||||
extern "C" void FunnyMain( int argc, char **argv );
|
||||
//extern "C" void FunnyMain( int argc, char **argv );
|
||||
|
||||
int main( int argc, char **argv ) {
|
||||
#ifndef STATIC_BUILD
|
||||
#ifdef __linux__
|
||||
readlink("/proc/self/exe",szLauncherPath, MAX_PATH);
|
||||
dirname(szLauncherPath);
|
||||
@@ -62,6 +58,7 @@ int main( int argc, char **argv ) {
|
||||
snprintf(szEnginePath, MAX_PATH, "%s/libengine.dylib", szLauncherPath2);
|
||||
snprintf(szTier0Path, MAX_PATH, "%s/libtier0.dylib", szLauncherPath2);
|
||||
#endif
|
||||
#ifndef __WIN32__
|
||||
if ( !dlopen(szSteamPath, RTLD_NOW ))
|
||||
printf("Failed to open steam\n");
|
||||
pTier0Lib = dlopen(szTier0Path, RTLD_LAZY | RTLD_GLOBAL);
|
||||
@@ -69,7 +66,7 @@ int main( int argc, char **argv ) {
|
||||
printf("Failed to open libtier0\n");
|
||||
printf("\t%s\n",dlerror());
|
||||
}
|
||||
pEngineLib = dlopen(szEnginePath, RTLD_LAZY | RTLD_GLOBAL);
|
||||
pEngineLib = dlopen(szEnginePath, RTLD_NOW );
|
||||
if ( !pEngineLib ) {
|
||||
printf("Failed to open libengine\n");
|
||||
printf("\t%s\n",dlerror());
|
||||
@@ -86,12 +83,22 @@ int main( int argc, char **argv ) {
|
||||
|
||||
pEngineMain(argc, argv);
|
||||
dlclose(pEngineLib);
|
||||
#else
|
||||
#endif
|
||||
#ifdef __WIN32__
|
||||
GetModuleFileNameA(NULL, szLauncherPath, MAX_PATH);
|
||||
dirname(szLauncherPath);
|
||||
|
||||
snprintf(szEnginePath, MAX_PATH, "%s/engine.dll", szLauncherPath);
|
||||
snprintf(szTier0Path, MAX_PATH, "%s/tier0.dll", szLauncherPath);
|
||||
printf("%s\n", szEnginePath);
|
||||
pEngineLib = LoadLibraryA(szEnginePath);
|
||||
pEngineMain = (EngineMainFn)GetProcAddress((HMODULE)pEngineLib, "FunnyMain");
|
||||
if ( !pEngineMain ) {
|
||||
printf("Symbol not found: FunnyMain\n");
|
||||
}
|
||||
dirname(szLauncherPath);
|
||||
SetCurrentDirectoryA(szLauncherPath);
|
||||
pEngineMain(argc, argv);
|
||||
#endif
|
||||
FunnyMain(argc, argv);
|
||||
#endif
|
||||
//FunnyMain(argc, argv);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user