mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Improved SDL platform support, 'ar' lib reworking
This commit is contained in:
parent
258a6653f9
commit
d20b53b187
16 changed files with 488 additions and 385 deletions
|
@ -45,6 +45,10 @@ if (HAVE_BACKTRACE_HEADERS)
|
||||||
add_definitions(-DBFP_HAS_BACKTRACE)
|
add_definitions(-DBFP_HAS_BACKTRACE)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (DEFINED BF_DISABLE_FFI)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBF_DISABLE_FFI")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (${IOS})
|
if (${IOS})
|
||||||
include_directories(
|
include_directories(
|
||||||
.
|
.
|
||||||
|
@ -255,7 +259,7 @@ elseif (${ANDROID})
|
||||||
../BeefySysLib/platform/android/BFPlatform.cpp
|
../BeefySysLib/platform/android/BFPlatform.cpp
|
||||||
../BeefySysLib/platform/android/AndroidCommon.cpp
|
../BeefySysLib/platform/android/AndroidCommon.cpp
|
||||||
)
|
)
|
||||||
else()
|
elseif ((${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") AND (NOT DEFINED BF_DISABLE_FFI))
|
||||||
file(GLOB SRC_FILES_OS
|
file(GLOB SRC_FILES_OS
|
||||||
../BeefySysLib/platform/linux/BFPlatform.cpp
|
../BeefySysLib/platform/linux/BFPlatform.cpp
|
||||||
../BeefySysLib/platform/linux/LinuxCommon.cpp
|
../BeefySysLib/platform/linux/LinuxCommon.cpp
|
||||||
|
@ -268,6 +272,11 @@ else()
|
||||||
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/src/x86/unix64.o
|
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/src/x86/unix64.o
|
||||||
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/src/x86/ffiw64.o
|
../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/src/x86/ffiw64.o
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
|
../BeefySysLib/platform/linux/BFPlatform.cpp
|
||||||
|
../BeefySysLib/platform/linux/LinuxCommon.cpp
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Add library to build.
|
# Add library to build.
|
||||||
|
|
|
@ -106,6 +106,10 @@ if(NOT MSVC)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-multichar")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-multichar")
|
||||||
endif(NOT MSVC)
|
endif(NOT MSVC)
|
||||||
|
|
||||||
|
if (DEFINED BF_ENABLE_SDL)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBF_ENABLE_SDL")
|
||||||
|
endif()
|
||||||
|
|
||||||
################ Files ################
|
################ Files ################
|
||||||
# -- Add files to project. -- #
|
# -- Add files to project. -- #
|
||||||
#######################################
|
#######################################
|
||||||
|
@ -118,7 +122,6 @@ file(GLOB SRC_FILES
|
||||||
Common.cpp
|
Common.cpp
|
||||||
DataStream.cpp
|
DataStream.cpp
|
||||||
FileStream.cpp
|
FileStream.cpp
|
||||||
HeadlessApp.cpp
|
|
||||||
MemStream.cpp
|
MemStream.cpp
|
||||||
ResLib.cpp
|
ResLib.cpp
|
||||||
Startup.cpp
|
Startup.cpp
|
||||||
|
@ -308,11 +311,20 @@ if (${APPLE})
|
||||||
file(GLOB SRC_FILES_OS
|
file(GLOB SRC_FILES_OS
|
||||||
platform/darwin/BFPlatform.cpp
|
platform/darwin/BFPlatform.cpp
|
||||||
platform/darwin/DarwinCommon.cpp
|
platform/darwin/DarwinCommon.cpp
|
||||||
|
HeadlessApp.cpp
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
file(GLOB SRC_FILES_OS
|
file(GLOB SRC_FILES_OS
|
||||||
platform/linux/BFPlatform.cpp
|
platform/linux/BFPlatform.cpp
|
||||||
platform/linux/LinuxCommon.cpp
|
platform/linux/LinuxCommon.cpp
|
||||||
|
HeadlessApp.cpp
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED BF_ENABLE_SDL)
|
||||||
|
file(GLOB SRC_FILES_OS
|
||||||
|
platform/sdl/SdlBFApp.cpp
|
||||||
|
platform/sdl/GLRenderDevice.cpp
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,10 @@
|
||||||
|
|
||||||
//#define offsetof(type, member) __builtin_offsetof (type, member)
|
//#define offsetof(type, member) __builtin_offsetof (type, member)
|
||||||
|
|
||||||
|
#ifdef __arm__
|
||||||
|
#define BF_PLATFORM_OPENGL_ES2
|
||||||
|
#endif
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
//#define FFI_BUILDING
|
//#define FFI_BUILDING
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../../HeadlessApp.h"
|
#include "../sdl/SdlBFApp.h"
|
||||||
|
#include "../HeadlessApp.h"
|
||||||
|
|
||||||
NS_BF_BEGIN;
|
NS_BF_BEGIN;
|
||||||
|
|
||||||
|
#ifdef BF_ENABLE_SDL
|
||||||
|
typedef SdlBFApp PlatformBFApp;
|
||||||
|
#else
|
||||||
typedef HeadlessApp PlatformBFApp;
|
typedef HeadlessApp PlatformBFApp;
|
||||||
|
#endif
|
||||||
|
|
||||||
NS_BF_END;
|
NS_BF_END;
|
|
@ -559,6 +559,9 @@ BFP_EXPORT void BFP_CALLTYPE BfpSystem_Init(int version, BfpSystemInitFlags flag
|
||||||
BfpSystem_FatalError(StrFormat("Bfp build version '%d' does not match requested version '%d'", BFP_VERSION, version).c_str(), "BFP FATAL ERROR");
|
BfpSystem_FatalError(StrFormat("Bfp build version '%d' does not match requested version '%d'", BFP_VERSION, version).c_str(), "BFP FATAL ERROR");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sigaction ignoreAction = { SIG_IGN };
|
||||||
|
sigaction(SIGPIPE, &ignoreAction, NULL);
|
||||||
|
|
||||||
//if (ptrace(PTRACE_TRACEME, 0, 1, 0) != -1)
|
//if (ptrace(PTRACE_TRACEME, 0, 1, 0) != -1)
|
||||||
{
|
{
|
||||||
//ptrace(PTRACE_DETACH, 0, 1, 0);
|
//ptrace(PTRACE_DETACH, 0, 1, 0);
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
|
|
||||||
USING_NS_BF;
|
USING_NS_BF;
|
||||||
|
|
||||||
|
#ifndef NOT_IMPL
|
||||||
#define NOT_IMPL throw "Not implemented"
|
#define NOT_IMPL throw "Not implemented"
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma comment(lib, "SDL2.lib")
|
#pragma comment(lib, "SDL2.lib")
|
||||||
|
|
||||||
|
@ -138,7 +140,7 @@ static void CreateOrthographicOffCenter(float left, float right, float bottom, f
|
||||||
|
|
||||||
GLShaderParam::GLShaderParam()
|
GLShaderParam::GLShaderParam()
|
||||||
{
|
{
|
||||||
mGLVariable = NULL;
|
mGLVariable = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLShaderParam::~GLShaderParam()
|
GLShaderParam::~GLShaderParam()
|
||||||
|
@ -229,9 +231,6 @@ GLDrawBatch::GLDrawBatch() : DrawBatch()
|
||||||
|
|
||||||
GLDrawBatch::~GLDrawBatch()
|
GLDrawBatch::~GLDrawBatch()
|
||||||
{
|
{
|
||||||
delete mVertices;
|
|
||||||
delete mIndices;
|
|
||||||
//mGLBuffer->Release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int gBFDrawBatchCount;
|
extern int gBFDrawBatchCount;
|
||||||
|
@ -311,60 +310,6 @@ void GLDrawLayer::SetShaderConstantData(int usageIdx, int slotIdx, void* constDa
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*void GLDrawLayer::FreeBatch(DrawBatch* drawBatch)
|
|
||||||
{
|
|
||||||
//delete drawBatch;
|
|
||||||
|
|
||||||
GLDrawBatch* batch = (GLDrawBatch*) drawBatch;
|
|
||||||
batch->Clear();
|
|
||||||
|
|
||||||
//GLDrawBatchVector* pool = &((GLRenderDevice*) gBFApp->mRenderDevice)->mDrawBatchPool;
|
|
||||||
//pool->push_back(batch);
|
|
||||||
GLRenderDevice* glRenderDevice = (GLRenderDevice*)gBFApp->mRenderDevice;
|
|
||||||
drawBatch->mNext = glRenderDevice->mFreeBatchHead;
|
|
||||||
glRenderDevice->mFreeBatchHead = batch;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//void GLRenderDevice::PhysSetShader(Shader* shader)
|
|
||||||
//{
|
|
||||||
// GLRenderDevice* aRenderDevice = (GLRenderDevice*) gBFApp->mRenderDevice;
|
|
||||||
//
|
|
||||||
// //TODO: Cache more
|
|
||||||
//
|
|
||||||
// GLShader* glShader = (GLShader*)shader;
|
|
||||||
//
|
|
||||||
// GLfloat matrix[4][4];
|
|
||||||
// CreateOrthographicOffCenter(0.0f, (float)mPhysRenderWindow->mWidth, (float)mPhysRenderWindow->mHeight, 0.0f, -100.0f, 100.0f, matrix);
|
|
||||||
// GLint matrixLoc = bf_glGetUniformLocation(glShader->mGLProgram, "screenMatrix");
|
|
||||||
// //BF_ASSERT(matrixLoc >= 0);
|
|
||||||
// if (matrixLoc >= 0)
|
|
||||||
// bf_glUniformMatrix4fv(matrixLoc, 1, false, (float*)matrix);
|
|
||||||
//
|
|
||||||
// /*mPhysShaderPass = shaderPass;
|
|
||||||
// GLShaderPass* dXShaderPass = (GLShaderPass*) mPhysShaderPass;
|
|
||||||
// mGLDevice->IASetInputLayout(dXShaderPass->mGLLayout);
|
|
||||||
//
|
|
||||||
// if (mCurShader->mLastResizeCount != mCurRenderTarget->mResizeNum)
|
|
||||||
// {
|
|
||||||
// ShaderParam* shaderParam = mCurShader->GetShaderParam(L"WindowSize");
|
|
||||||
// if (shaderParam != NULL)
|
|
||||||
// {
|
|
||||||
// shaderParam->SetFloat2((float) mCurRenderTarget->mWidth, (float) mCurRenderTarget->mHeight);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// mCurShader->mLastResizeCount = mCurRenderTarget->mResizeNum;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// GLCHECK(dXShaderPass->mGLEffectPass->Apply(0));*/
|
|
||||||
//
|
|
||||||
// /*GLfloat matrix[4][4];
|
|
||||||
// CreateOrthographicOffCenter(0.0f, (float)mPhysRenderWindow->mWidth, (float)mPhysRenderWindow->mHeight, 0.0f, -100.0f, 100.0f, matrix);
|
|
||||||
// GLint uniformLocation = bf_glGetUniformLocation(((GLShader*)shaderPass->mTechnique->mShader)->mGLProgram, "screenMatrix");
|
|
||||||
// if (uniformLocation != -1)
|
|
||||||
// bf_glUniformMatrix4fv(uniformLocation, 1, false, (GLfloat*)matrix);*/
|
|
||||||
//}
|
|
||||||
|
|
||||||
void GLRenderDevice::PhysSetRenderWindow(RenderWindow* renderWindow)
|
void GLRenderDevice::PhysSetRenderWindow(RenderWindow* renderWindow)
|
||||||
{
|
{
|
||||||
mCurRenderTarget = renderWindow;
|
mCurRenderTarget = renderWindow;
|
||||||
|
|
|
@ -117,9 +117,6 @@ class GLRenderWindow : public RenderWindow
|
||||||
public:
|
public:
|
||||||
SDL_Window* mSDLWindow;
|
SDL_Window* mSDLWindow;
|
||||||
GLRenderDevice* mRenderDevice;
|
GLRenderDevice* mRenderDevice;
|
||||||
//IGLGISwapChain* mGLSwapChain;
|
|
||||||
//IGL10Texture2D* mGLBackBuffer;
|
|
||||||
//IGL10RenderTargetView* mGLRenderTargetView;
|
|
||||||
bool mResizePending;
|
bool mResizePending;
|
||||||
int mPendingWidth;
|
int mPendingWidth;
|
||||||
int mPendingHeight;
|
int mPendingHeight;
|
||||||
|
@ -138,18 +135,9 @@ public:
|
||||||
void CopyBitsTo(uint32* dest, int width, int height);
|
void CopyBitsTo(uint32* dest, int width, int height);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::vector<GLDrawBatch*> GLDrawBatchVector;
|
|
||||||
|
|
||||||
class GLRenderDevice : public RenderDevice
|
class GLRenderDevice : public RenderDevice
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//IGLGIFactory* mGLGIFactory;
|
|
||||||
//IGL10Device* mGLDevice;
|
|
||||||
//IGL10BlendState* mGLNormalBlendState;
|
|
||||||
//IGL10BlendState* mGLAdditiveBlendState;
|
|
||||||
//IGL10RasterizerState* mGLRasterizerStateClipped;
|
|
||||||
//IGL10RasterizerState* mGLRasterizerStateUnclipped;
|
|
||||||
|
|
||||||
GLuint mGLVAO;
|
GLuint mGLVAO;
|
||||||
GLuint mGLVertexBuffer;
|
GLuint mGLVertexBuffer;
|
||||||
GLuint mGLIndexBuffer;
|
GLuint mGLIndexBuffer;
|
||||||
|
@ -158,7 +146,6 @@ public:
|
||||||
|
|
||||||
bool mHasVSync;
|
bool mHasVSync;
|
||||||
|
|
||||||
GLDrawBatchVector mDrawBatchPool;
|
|
||||||
GLDrawBatch* mFreeBatchHead;
|
GLDrawBatch* mFreeBatchHead;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -24,13 +24,21 @@ SdlBFWindow::SdlBFWindow(BFWindow* parent, const StringImpl& title, int x, int y
|
||||||
|
|
||||||
mSDLWindow = SDL_CreateWindow(title.c_str(), x, y, width, height, sdlWindowFlags);
|
mSDLWindow = SDL_CreateWindow(title.c_str(), x, y, width, height, sdlWindowFlags);
|
||||||
|
|
||||||
|
#ifndef BF_PLATFORM_OPENGL_ES2
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!SDL_GL_CreateContext(mSDLWindow))
|
if (!SDL_GL_CreateContext(mSDLWindow))
|
||||||
{
|
{
|
||||||
BF_FATAL(StrFormat("Unable to create OpenGL context: %s", SDL_GetError()).c_str());
|
BF_FATAL(StrFormat(
|
||||||
|
#ifdef BF_PLATFORM_OPENGL_ES2
|
||||||
|
"Unable to create OpenGLES context: %s"
|
||||||
|
#else
|
||||||
|
"Unable to create OpenGL context: %s"
|
||||||
|
#endif
|
||||||
|
, SDL_GetError()).c_str());
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
@ -324,7 +332,7 @@ void SdlBFWindow::SetAlpha(float alpha, uint32 destAlphaSrcMask, bool isMouseVis
|
||||||
|
|
||||||
uint32 SdlBFApp::GetClipboardFormat(const StringImpl& format)
|
uint32 SdlBFApp::GetClipboardFormat(const StringImpl& format)
|
||||||
{
|
{
|
||||||
return CF_TEXT;
|
return /*CF_TEXT*/1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* SdlBFApp::GetClipboardData(const StringImpl& format, int* size)
|
void* SdlBFApp::GetClipboardData(const StringImpl& format, int* size)
|
||||||
|
|
|
@ -6,8 +6,8 @@ if(NOT CMAKE_BUILD_TYPE)
|
||||||
message(STATUS "Build type not specified: Use Debug by default.")
|
message(STATUS "Build type not specified: Use Debug by default.")
|
||||||
endif(NOT CMAKE_BUILD_TYPE)
|
endif(NOT CMAKE_BUILD_TYPE)
|
||||||
|
|
||||||
add_subdirectory(extern/hunspell)
|
add_subdirectory(BeefRT)
|
||||||
add_subdirectory(BeefySysLib)
|
add_subdirectory(BeefySysLib)
|
||||||
|
add_subdirectory(extern/hunspell)
|
||||||
add_subdirectory(IDEHelper)
|
add_subdirectory(IDEHelper)
|
||||||
add_subdirectory(BeefBoot)
|
add_subdirectory(BeefBoot)
|
||||||
add_subdirectory(BeefRT)
|
|
||||||
|
|
|
@ -195,9 +195,16 @@ namespace IDE
|
||||||
gApp.GetProjectBuildDir(project, projectBuildDir);
|
gApp.GetProjectBuildDir(project, projectBuildDir);
|
||||||
File.WriteAll(scope $"{projectBuildDir}/ObjectArgs.txt", .((.)objectsArg.Ptr, objectsArg.Length)).IgnoreError();
|
File.WriteAll(scope $"{projectBuildDir}/ObjectArgs.txt", .((.)objectsArg.Ptr, objectsArg.Length)).IgnoreError();
|
||||||
|
|
||||||
String arCmds = scope String(""); //-O2 -Rpass=inline
|
String arCmds = null; //-O2 -Rpass=inline
|
||||||
//(doClangCPP ? "-lc++abi " : "") +
|
//(doClangCPP ? "-lc++abi " : "") +
|
||||||
|
|
||||||
|
String arArgs = scope .();
|
||||||
|
|
||||||
|
bool useArCmds = false;
|
||||||
|
|
||||||
|
if (useArCmds)
|
||||||
|
{
|
||||||
|
arCmds = scope:: String("");
|
||||||
arCmds.AppendF("CREATE {}\n", targetPath);
|
arCmds.AppendF("CREATE {}\n", targetPath);
|
||||||
|
|
||||||
void AddObject(StringView obj)
|
void AddObject(StringView obj)
|
||||||
|
@ -239,6 +246,40 @@ namespace IDE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
arCmds.AppendF("SAVE\n");
|
arCmds.AppendF("SAVE\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
arArgs.AppendF($"-qc {targetPath}");
|
||||||
|
|
||||||
|
void AddObject(StringView obj)
|
||||||
|
{
|
||||||
|
if (obj.IsEmpty)
|
||||||
|
return;
|
||||||
|
|
||||||
|
arArgs.Append(" ");
|
||||||
|
arArgs.Append(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool inQuote = false;
|
||||||
|
int lastEnd = -1;
|
||||||
|
for (int i < objectsArg.Length)
|
||||||
|
{
|
||||||
|
var c = objectsArg[i];
|
||||||
|
if (c == '"')
|
||||||
|
{
|
||||||
|
if (inQuote)
|
||||||
|
AddObject(objectsArg.Substring(lastEnd + 1, i - lastEnd - 1));
|
||||||
|
inQuote = !inQuote;
|
||||||
|
lastEnd = i;
|
||||||
|
}
|
||||||
|
else if ((c == ' ') && (!inQuote))
|
||||||
|
{
|
||||||
|
AddObject(objectsArg.Substring(lastEnd + 1, i - lastEnd - 1));
|
||||||
|
lastEnd = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AddObject(objectsArg.Substring(lastEnd + 1));
|
||||||
|
}
|
||||||
|
|
||||||
UpdateCacheStr(project, "", workspaceOptions, options, null, null);
|
UpdateCacheStr(project, "", workspaceOptions, options, null, null);
|
||||||
|
|
||||||
|
@ -275,12 +316,14 @@ namespace IDE
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
String cmdLine = scope .();
|
|
||||||
cmdLine.AppendF("-M");
|
|
||||||
|
|
||||||
var runCmd = gApp.QueueRun(arPath, cmdLine, workingDir, .UTF8);
|
if (arCmds != null)
|
||||||
|
arArgs.Append("-M");
|
||||||
|
|
||||||
|
var runCmd = gApp.QueueRun(arPath, arArgs, workingDir, .UTF8);
|
||||||
runCmd.mReference = new String(project.mProjectName);
|
runCmd.mReference = new String(project.mProjectName);
|
||||||
runCmd.mOnlyIfNotFailed = true;
|
runCmd.mOnlyIfNotFailed = true;
|
||||||
|
if (arCmds != null)
|
||||||
runCmd.mStdInData = new .(arCmds);
|
runCmd.mStdInData = new .(arCmds);
|
||||||
var tagetCompletedCmd = new IDEApp.TargetCompletedCmd(project);
|
var tagetCompletedCmd = new IDEApp.TargetCompletedCmd(project);
|
||||||
tagetCompletedCmd.mOnlyIfNotFailed = true;
|
tagetCompletedCmd.mOnlyIfNotFailed = true;
|
||||||
|
|
|
@ -8547,14 +8547,14 @@ namespace IDE
|
||||||
if (executionInstance.mProcess.AttachStandardInput(fileStream) case .Err)
|
if (executionInstance.mProcess.AttachStandardInput(fileStream) case .Err)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
while (!executionInstance.mStdInData.IsEmpty)
|
WriteLoop: while (!executionInstance.mStdInData.IsEmpty)
|
||||||
{
|
{
|
||||||
switch (fileStream.TryWrite(.((.)executionInstance.mStdInData.Ptr, executionInstance.mStdInData.Length)))
|
switch (fileStream.TryWrite(.((.)executionInstance.mStdInData.Ptr, executionInstance.mStdInData.Length)))
|
||||||
{
|
{
|
||||||
case .Ok(int len):
|
case .Ok(int len):
|
||||||
executionInstance.mStdInData.Remove(0, len);
|
executionInstance.mStdInData.Remove(0, len);
|
||||||
case .Err:
|
case .Err:
|
||||||
break;
|
break WriteLoop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8712,6 +8712,8 @@ namespace IDE
|
||||||
|
|
||||||
if ((mVerbosity >= .Diagnostic) && (useArgsFile != .None))
|
if ((mVerbosity >= .Diagnostic) && (useArgsFile != .None))
|
||||||
OutputLine("Arg file contents: {0}", args);
|
OutputLine("Arg file contents: {0}", args);
|
||||||
|
if ((mVerbosity >= .Diagnostic) && (stdInData != null))
|
||||||
|
OutputLine("StdIn data: {0}", stdInData);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
OutputLine("Executing: {0}", showArgs);
|
OutputLine("Executing: {0}", showArgs);
|
||||||
|
|
|
@ -523,7 +523,7 @@ namespace Tests
|
||||||
iSer.Serialize(serCtx);
|
iSer.Serialize(serCtx);
|
||||||
Test.Assert(serCtx.mStr == "x 10\ny 2\n");
|
Test.Assert(serCtx.mStr == "x 10\ny 2\n");
|
||||||
|
|
||||||
Test.Assert(cTest0 == "Test\n0");
|
Test.Assert(cTest0 == "Test\n0" || cTest0 == "Test\r\n0");
|
||||||
Test.Assert(cTest1 == "AAAAAAAAAAAA");
|
Test.Assert(cTest1 == "AAAAAAAAAAAA");
|
||||||
Test.Assert((Object)cTest1 == (Object)"AAAAAAAAAAAA");
|
Test.Assert((Object)cTest1 == (Object)"AAAAAAAAAAAA");
|
||||||
Test.Assert((cTest0Binary[0] == (.)'T') && ((cTest0Binary.Count == 6) || (cTest0Binary.Count == 7)));
|
Test.Assert((cTest0Binary[0] == (.)'T') && ((cTest0Binary.Count == 6) || (cTest0Binary.Count == 7)));
|
||||||
|
|
25
bin/build.sh
25
bin/build.sh
|
@ -7,11 +7,26 @@ ROOTPATH="$(dirname "$SCRIPTPATH")"
|
||||||
echo Building from $SCRIPTPATH
|
echo Building from $SCRIPTPATH
|
||||||
cd $SCRIPTPATH
|
cd $SCRIPTPATH
|
||||||
|
|
||||||
if [[ $1 == "clean" ]]; then
|
for i in "$@"
|
||||||
|
do
|
||||||
|
if [[ $i == "clean" ]]; then
|
||||||
|
echo "Cleaning..."
|
||||||
rm -rf ../jbuild
|
rm -rf ../jbuild
|
||||||
rm -rf ../jbuild_d
|
rm -rf ../jbuild_d
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $i == "sdl" ]]; then
|
||||||
|
echo "Using SDL"
|
||||||
|
USE_SDL="-DBF_ENABLE_SDL=1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $i == "no_ffi" ]]; then
|
||||||
|
echo "Disabling FFI"
|
||||||
|
USE_FFI="-DBF_DISABLE_FFI=1"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if command -v ninja >/dev/null 2>&1 ; then
|
if command -v ninja >/dev/null 2>&1 ; then
|
||||||
CAN_USE_NINJA=1
|
CAN_USE_NINJA=1
|
||||||
if [ -d ../jbuild_d ] && [ ! -f ../jbuild_d/build.ninja ]; then
|
if [ -d ../jbuild_d ] && [ ! -f ../jbuild_d/build.ninja ]; then
|
||||||
|
@ -55,11 +70,15 @@ if [ ! -d jbuild_d ]; then
|
||||||
mkdir jbuild_d
|
mkdir jbuild_d
|
||||||
mkdir jbuild
|
mkdir jbuild
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd jbuild_d
|
cd jbuild_d
|
||||||
cmake $USE_NINJA -DCMAKE_BUILD_TYPE=Debug ../
|
|
||||||
|
echo cmake $USE_NINJA $USE_SDL -DCMAKE_BUILD_TYPE=Debug ../
|
||||||
|
|
||||||
|
cmake $USE_NINJA $USE_SDL $USE_FFI -DCMAKE_BUILD_TYPE=Debug ../
|
||||||
cmake --build .
|
cmake --build .
|
||||||
cd ../jbuild
|
cd ../jbuild
|
||||||
cmake $USE_NINJA -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
|
cmake $USE_NINJA $USE_SDL $USE_FFI -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
|
||||||
cmake --build .
|
cmake --build .
|
||||||
|
|
||||||
cd ../IDE/dist
|
cd ../IDE/dist
|
||||||
|
|
66
bin/build_sdl.sh
Normal file
66
bin/build_sdl.sh
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/bash
|
||||||
|
echo Starting build.sh
|
||||||
|
|
||||||
|
PATH=/usr/local/bin:$PATH:$HOME/bin
|
||||||
|
SCRIPTPATH=$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
|
||||||
|
ROOTPATH="$(dirname "$SCRIPTPATH")"
|
||||||
|
echo Building from $SCRIPTPATH
|
||||||
|
cd $SCRIPTPATH
|
||||||
|
|
||||||
|
if [[ $1 == "clean" ]]; then
|
||||||
|
rm -rf ../jbuild_sdl
|
||||||
|
rm -rf ../jbuild_sdl_d
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 == "sdl" ]]; then
|
||||||
|
echo "Using SDL"
|
||||||
|
USE_SDL="-DBF_ENABLE_SDL=1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v ninja >/dev/null 2>&1 ; then
|
||||||
|
CAN_USE_NINJA=1
|
||||||
|
if [ -d ../jbuild_sdl_d ] && [ ! -f ../jbuild_sdl_d/build.ninja ]; then
|
||||||
|
CAN_USE_NINJA=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $CAN_USE_NINJA == 1 ]; then
|
||||||
|
echo "Ninja is enabled for this build."
|
||||||
|
USE_NINJA="-GNinja"
|
||||||
|
else
|
||||||
|
echo "Ninja couldn't be enabled for this build, consider doing a clean build to start using Ninja for faster build speeds."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Ninja isn't installed, consider installing it for faster build speeds."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# exit when any command fails
|
||||||
|
set -e
|
||||||
|
|
||||||
|
### Dependencies ###
|
||||||
|
|
||||||
|
if [ ! -f ../BeefySysLib/third_party/libffi/Makefile ]; then
|
||||||
|
echo Building libffi...
|
||||||
|
cd ../BeefySysLib/third_party/libffi
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
cd $SCRIPTPATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
### LIBS ###
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
if [ ! -d jbuild_sdl_d ]; then
|
||||||
|
mkdir jbuild_sdl_d
|
||||||
|
mkdir jbuild_sdl
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd jbuild_sdl_d
|
||||||
|
|
||||||
|
echo cmake $USE_NINJA $USE_SDL -DCMAKE_BUILD_TYPE=Debug ../
|
||||||
|
|
||||||
|
cmake $USE_NINJA -DBF_ENABLE_SDL=1 -DCMAKE_BUILD_TYPE=Debug ../
|
||||||
|
cmake --build .
|
||||||
|
cd ../jbuild_sdl
|
||||||
|
cmake $USE_NINJA -DBF_ENABLE_SDL=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
|
||||||
|
cmake --build .
|
Loading…
Add table
Add a link
Reference in a new issue