Support fat macos binaries; rudimentary support for ios

This commit is contained in:
John Alanbrook 2023-11-11 15:56:57 +00:00
parent 8265eb658f
commit 21464c44fb
4 changed files with 42 additions and 45 deletions

View file

@ -61,48 +61,53 @@ else
endif
endif
PTYPE != uname -m
CFLAGS += -DHAVE_CEIL -DCP_USE_CGTYPES=0 -DHAVE_FLOOR -DHAVE_FMOD -DHAVE_LRINT -DHAVE_LRINTF $(includeflag) -MD $(WARNING_FLAGS) -I. -DVER=\"$(VER)\" -DINFO=\"$(INFO)\"
PKGCMD = tar --directory $(BIN) --exclude="./*.a" --exclude="./obj" -czf $(DISTDIR)/$(DIST) .
ZIP = .tar.gz
UNZIP = cp $(DISTDIR)/$(DIST) $(DESTDIR) && tar xzf $(DESTDIR)/$(DIST) -C $(DESTDIR) && rm $(DESTDIR)/$(DIST)
ARCH = x64
ifeq ($(ARCH),)
ARCH != uname -m
endif
ifeq ($(OS), Windows_NT)
LDFLAGS += -mwin32 -static -g
CFLAGS += -mwin32 -g
LDLIBS += mingw32 kernel32 d3d11 user32 shell32 dxgi gdi32 ws2_32 ole32 winmm setupapi m
EXT = .exe
PLAT = w64
ARCH := x86_64
PKGCMD = cd $(BIN); zip -q -r $(MAKEDIR)/$(DISTDIR)/$(DIST) . -x \*.a ./obj/\*
ZIP = .zip
UNZIP = unzip -o -q $(DISTDIR)/$(DIST) -d $(DESTDIR)
else ifeq ($(OS), ios)
TTARGET = arm64-apple-ios13.1
SYSRT := /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
CFLAGS += --target=$(TTARGET) -isysroot $(SYSRT) -DTARGET_OS_IPHONE -x objective-c
LDFLAGS += --target=$(TTARGET) -isysroot $(SYSRT) -framework Foundation -framework UIKit -framework Metal -framework MetalKit -framework AudioToolbox -framework AVFoundation
else ifeq ($(CC), emcc)
OS := Web
LDFLAGS += -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 -pthread -sTOTAL_MEMORY=450MB
CFLAGS += -pthread
LDLIBS += pthread quickjs GL openal c m dl
CC = emcc
EXT = .html
PLAT = html5
else
UNAME != uname -s
ifeq ($(UNAME), Linux)
OS := Linux
LDFLAGS += -pthread -rdynamic
LDLIBS += GL pthread c m dl X11 Xi Xcursor EGL asound
PLAT = linux-$(ARCH)$(INFO)
endif
ifeq ($(UNAME), Darwin)
CFLAGS += -x objective-c
LDFLAGS += -framework Cocoa -framework QuartzCore -framework AudioToolbox -framework Metal -framework MetalKit
PLAT = osx-$(ARCH)$(INFO)
OS := macos
CFLAGS += -arch $(ARCH) -x objective-c
LDFLAGS += -arch $(ARCH) -framework Cocoa -framework QuartzCore -framework AudioToolbox -framework Metal -framework MetalKit
endif
endif
BIN = bin/$(CC)/$(INFO)
BIN = bin/$(OS)/$(ARCH)$(INFO)
OBJDIR = $(BIN)/obj
@ -113,7 +118,7 @@ OBJS := $(addprefix $(BIN)/obj/, $(OBJS))
engineincs != find source/engine -maxdepth 1 -type d
includeflag != find source -type d -name include
includeflag += $(engineincs) source/engine/thirdparty/Nuklear source/engine/thirdparty/tinycdb source/shaders
includeflag += $(engineincs) source/engine/thirdparty/tinycdb source/shaders
includeflag := $(addprefix -I, $(includeflag))
WARNING_FLAGS = -Wno-incompatible-function-pointer-types -Wno-incompatible-pointer-types -Wno-unused-function -Wno-unused-const-variable
@ -128,9 +133,7 @@ LDLIBS := $(addprefix -l, $(LDLIBS))
DEPENDS = $(OBJS:.o=.d)
-include $(DEPENDS)
MYTAG = $(VER)_$(PTYPE)_$(INFO)
DIST = yugine-$(PLAT)-$(COM)$(ZIP)
DIST = yugine-$(OS)$(ARCH)$(INFO)-$(COM)$(ZIP)
DISTDIR = ./dist
.DEFAULT_GOAL := all
@ -195,7 +198,7 @@ input.md: $(INPUTMD)
$(BIN)/libquickjs.a:
make -C quickjs clean
make -C quickjs DBG=$(DBG) OPT=$(OPT) HOST_CC=$(CC) AR=$(AR) libquickjs.a libquickjs.lto.a CC=$(CC)
make -C quickjs SYSRT=$(SYSRT) TTARGET=$(TTARGET) ARCH=$(ARCH) DBG=$(DBG) OPT=$(OPT) HOST_CC=$(CC) AR=$(AR) libquickjs.a libquickjs.lto.a CC=$(CC)
@mkdir -p $(BIN)
cp -rf quickjs/libquickjs.* $(BIN)
@ -209,7 +212,7 @@ shaders: $(SHADERS)
%.sglsl.h:%.sglsl
@echo Creating shader $^
@./sokol-shdc --ifdef -i $^ --slang=glsl330:hlsl5:metal_macos:glsl300es -o $@
@./sokol-shdc --ifdef -i $^ --slang=glsl330:hlsl5:metal_macos:metal_ios:metal_sim:glsl300es -o $@
cdb: tools/cdb.c tools/libcdb.a
cc $^ -I$(CDB) -o cdb
@ -249,6 +252,13 @@ WINCC = x86_64-w64-mingw32-gcc
crosswin:
make CC=$(WINCC) OS=Windows_NT
crossmac:
make ARCH=arm64
mv primum primum_arm64
make ARCH=x86_64
mv primum primum_x86_64
lipo primum_arm64 primum_x86_64 -create -output primum
clean:
@echo Cleaning project
@rm -rf bin dist

View file

@ -76,6 +76,11 @@ ifdef CONFIG_CLANG
CFLAGS += -Wwrite-strings
CFLAGS += -Wchar-subscripts -funsigned-char
CFLAGS += -MMD -MF $(OBJDIR)/$(@F).d
CFLAGS += -arch $(ARCH)
ifneq ($(TTARGET),)
CFLAGS += --target=$(TTARGET)
CFLAGS += -isysroot $(SYSRT)
endif
ifdef CONFIG_DEFAULT_AR
AR=$(CROSS_PREFIX)ar
else

View file

@ -1102,7 +1102,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
case 143:
str = JS_ToCString(js, argv[1]);
system(str);
// system(str);
break;
case 144:

View file

@ -17,17 +17,9 @@ https://github.com/edubart/sokol_gp
#include <stdbool.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
SOKOL_GFX_API_DECL void sg_query_image_pixels(sg_image img_id, sg_sampler smp_id, void* pixels, int size);
SOKOL_GFX_API_DECL void sg_query_pixels(int x, int y, int w, int h, bool origin_top_left, void *pixels, int size);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // SOKOL_GFX_EXT_INCLUDED
#ifdef SOKOL_GFX_EXT_IMPL
@ -88,43 +80,23 @@ static void _sg_gl_query_pixels(int x, int y, int w, int h, bool origin_top_left
#elif defined(SOKOL_D3D11)
static inline void _sgext_d3d11_Texture2D_GetDesc(ID3D11Texture2D* self, D3D11_TEXTURE2D_DESC* pDesc) {
#if defined(__cplusplus)
self->GetDesc(pDesc);
#else
self->lpVtbl->GetDesc(self, pDesc);
#endif
}
static inline void _sgext_d3d11_SamplerState_GetDesc(ID3D11SamplerState* self, D3D11_SAMPLER_DESC* pDesc) {
#if defined(__cplusplus)
self->GetDesc(pDesc);
#else
self->lpVtbl->GetDesc(self, pDesc);
#endif
}
static inline void _sgext_d3d11_CopySubresourceRegion(ID3D11DeviceContext* self, ID3D11Resource *pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D11Resource *pSrcResource, UINT SrcSubresource, const D3D11_BOX *pSrcBox) {
#if defined(__cplusplus)
self->CopySubresourceRegion(pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox);
#else
self->lpVtbl->CopySubresourceRegion(self, pDstResource, DstSubresource, DstX, DstY, DstZ, pSrcResource, SrcSubresource, pSrcBox);
#endif
}
static inline void _sgext_d3d11_OMGetRenderTargets(ID3D11DeviceContext* self, UINT NumViews, ID3D11RenderTargetView **ppRenderTargetViews, ID3D11DepthStencilView **ppDepthStencilView) {
#if defined(__cplusplus)
self->OMGetRenderTargets(NumViews, ppRenderTargetViews, ppDepthStencilView);
#else
self->lpVtbl->OMGetRenderTargets(self, NumViews, ppRenderTargetViews, ppDepthStencilView);
#endif
}
static inline void _sgext_d3d11_RenderTargetView_GetResource(ID3D11RenderTargetView* self, ID3D11Resource** ppResource) {
#if defined(__cplusplus)
self->GetResource(ppResource);
#else
self->lpVtbl->GetResource(self, ppResource);
#endif
}
static void _sg_d3d11_query_image_pixels(_sg_image_t* img, void* pixels) {
@ -232,6 +204,15 @@ static void _sg_d3d11_query_pixels(int x, int y, int w, int h, bool origin_top_l
#elif defined(SOKOL_METAL)
#ifdef TARGET_OS_IPHONE
static void _sg_metal_commit_command_buffer(){};
static void _sg_metal_encode_texture_pixels(int x, int y, int w, int h, bool origin_top_left, id<MTLTexture> mtl_src_texture, void* pixels) {};
static void _sg_metal_query_image_pixels(_sg_image_t* img, void* pixels) {};
static void _sg_metal_query_pixels(int x, int y, int w, int h, bool origin_top_left, void *pixels) {};
#else
#import <Metal/Metal.h>
#import <QuartzCore/CAMetalLayer.h>
@ -287,6 +268,7 @@ static void _sg_metal_query_pixels(int x, int y, int w, int h, bool origin_top_l
_sg_metal_encode_texture_pixels(x, y, w, h, origin_top_left, mtl_drawable.texture, pixels);
}
#endif
#endif
void sg_query_image_pixels(sg_image img_id, sg_sampler smp_id, void* pixels, int size) {