mirror of
https://github.com/libretro/ludo.git
synced 2026-11-07 12:15:57 -10:00
* Improve the libretro binding to support GL cores * Start implementing InitFramebuffer * TODO * Try to implement ProcAddress * Fix display of non gl cores * Implement more of InitFramebuffer * Move InitFramebuffer and call HWRenderCallback.ContextReset * Comment * Call vid.InitFramebuffer and Core.HWRenderCallback.ContextReset during LoadGame * Remove useless code * List hardware contexts in the libretro binding * Update dependency for GetProcAddress * Fix framebuffer creation * Fix gl.Clear * Cast C.retro_hw_context_reset_t * Set c.get_current_framebuffer and c.get_proc_address properly * Lint fix * Fix compat with non GL cores * Debug * Fix an important memory bug * Various rendering improvements * Small fix * Active texture fixes * Unbind vertex array * OpenGL core support improvements (#308) * Fix sample batch callback and OpenGL core support * Fix texture/framebuffer allocation and clipping The libretro api requires the framebuffers to be at least as large as max_width/max_height. * Fix context destruction Fixes Flycast * Fix sharp-bilinear and zfast-crt filters (#311) TextureSize uniform was receiving the input size instead of the actual texture size. * Call gl.TexSubImage2D after binding the texture * Fix shader live update * Temporarily fix tests * Fix FBO on OSX (#313) * Fix FBO on OSX * Remove useless code * Use GL v2.1 for fonts drawing * Fix fonts on OSX with GL 2.1 * Rename * Same thing for GenVertexArrays * Make fl0w work on OSX * Implement libretro.EnvironmentGetPrefferedHWRenderer * Uncomment gl.Enable(gl.TEXTURE_2D) * Fixes * Fix * Fix * Forgot to use program before get uniform * Fix swanstation * Start with a clean context * Return the fb from C * Shared context * Reconfigure hints * Harden texture size * Fix fullscreen toggle on flycast * Reduce font.go churn * Reduce font.go churn * Fix cleaning the display after closing the core * Fix order of destoy * Fix dolphin * Launch more GL cores (#591) * lrps2 booting * Fix viewport * Fix sampler * Refactor * Fix screenshots * Fix dolphin screenshots * Fixes * Fix launching swanstation with -L * Isolate core GL contexts * Fix software frame uploads * Fix libco * Simplify screenshot sizing * Add more GL cores * Clean up frame capture * Fix macOS GL profiles * Preserve contexts on fullscreen toggle * Fix screenshot cropping after resize * Fix texture state on core switches * Handle unsupported GL contexts * Save states despite thumbnail errors * Fix core loading error check * Fix notification scaling * Handle empty core options --------- Co-authored-by: Higor Eurípedes <[email protected]>
174 lines
6.7 KiB
Makefile
174 lines
6.7 KiB
Makefile
APP ?= Ludo
|
|
ARCH ?= x86_64
|
|
VERSION ?= dev
|
|
BUNDLENAME = $(APP)-$(OS)-$(ARCH)-$(VERSION)
|
|
DISPDRIVER ?= x11
|
|
|
|
BUILDBOTURL_BASE ?= https://buildbot.libretro.com/nightly
|
|
|
|
ifeq ($(OS), Linux)
|
|
TAGS = -tags=$(DISPDRIVER)
|
|
BUNDLENAME = $(APP)-$(OS)-$(DISPDRIVER)-$(ARCH)-$(VERSION)
|
|
endif
|
|
|
|
CORES = ppsspp dolphin atari800 bluemsx citra swanstation fbneo fceumm flycast gambatte gearsystem genesis_plus_gx handy lutro mednafen_ngp mednafen_pce mednafen_pce_fast mednafen_pcfx mednafen_psx mednafen_saturn mednafen_supergrafx mednafen_vb mednafen_wswan mgba melonds mupen64plus_next np2kai o2em pcsx2 pcsx_rearmed picodrive pokemini prosystem snes9x stella2014 vecx virtualjaguar
|
|
|
|
ifeq ($(ARCH), arm)
|
|
CORES := $(filter-out citra dolphin flycast mednafen_pcfx mednafen_saturn melonds mupen64plus_next pcsx2 ppsspp swanstation,$(CORES))
|
|
endif
|
|
ifeq ($(ARCH), arm64)
|
|
CORES := $(filter-out pcsx2,$(CORES))
|
|
ifeq ($(OS), Linux)
|
|
CORES := $(filter-out mupen64plus_next,$(CORES))
|
|
endif
|
|
endif
|
|
ifeq ($(OS), OSX)
|
|
CORES := $(filter-out pcsx2,$(CORES))
|
|
ifeq ($(ARCH), x86_64)
|
|
CORES := $(filter-out citra,$(CORES))
|
|
endif
|
|
endif
|
|
|
|
DYLIBS = $(addprefix cores/, $(addsuffix _libretro.dylib,$(CORES)))
|
|
DLLS = $(addprefix cores/, $(addsuffix _libretro.dll,$(CORES)))
|
|
SOBJS = $(addprefix cores/, $(addsuffix _libretro.so,$(CORES)))
|
|
|
|
ifeq ($(OS), OSX)
|
|
BUILDBOTURL=$(BUILDBOTURL_BASE)/apple/osx/$(ARCH)/latest
|
|
endif
|
|
ifeq ($(OS), Linux)
|
|
ifeq ($(ARCH), arm)
|
|
BUILDBOTURL=$(BUILDBOTURL_BASE)/linux/armv7-neon-hf/latest
|
|
else ifeq ($(ARCH), arm64)
|
|
BUILDBOTURL=$(BUILDBOTURL_BASE)/linux/aarch64/latest
|
|
else
|
|
BUILDBOTURL=$(BUILDBOTURL_BASE)/linux/$(ARCH)/latest
|
|
endif
|
|
endif
|
|
ifeq ($(OS), Windows)
|
|
BUILDBOTURL=$(BUILDBOTURL_BASE)/windows/$(ARCH)/latest
|
|
endif
|
|
|
|
ludo:
|
|
go build $(TAGS)
|
|
|
|
ludo.exe:
|
|
go build -ldflags '-H=windowsgui'
|
|
|
|
cores/%_libretro.dylib cores/%_libretro.dll:
|
|
mkdir -p cores
|
|
wget -c $(BUILDBOTURL)/$(@F).zip -O $@.zip;\
|
|
unzip $@.zip -d cores
|
|
rm $@.zip
|
|
|
|
cores/%_libretro.so:
|
|
mkdir -p cores
|
|
wget -c $(BUILDBOTURL)/$(@F).zip -O $@.zip;\
|
|
unzip $@.zip -d cores
|
|
rm $@.zip
|
|
|
|
$(APP).app: ludo $(DYLIBS)
|
|
mkdir -p $(APP).app/Contents/MacOS
|
|
mkdir -p $(APP).app/Contents/Resources/$(APP).iconset
|
|
cp pkg/Info.plist $(APP).app/Contents/
|
|
sed -i.bak 's/0.1.0/$(VERSION)/' $(APP).app/Contents/Info.plist
|
|
rm $(APP).app/Contents/Info.plist.bak
|
|
echo "APPL????" > $(APP).app/Contents/PkgInfo
|
|
cp -r database $(APP).app/Contents/Resources
|
|
cp -r assets $(APP).app/Contents/Resources
|
|
cp -r cores $(APP).app/Contents/Resources
|
|
codesign --force --options runtime --verbose --timestamp --sign "Developer ID Application: Jean-Andre Santoni (ZE9XE938Z2)" \
|
|
--entitlements pkg/entitlements.xml $(APP).app/Contents/Resources/cores/*.dylib
|
|
rm -rf $(APP).app/Contents/Resources/database/.git
|
|
rm -rf $(APP).app/Contents/Resources/assets/.git
|
|
sips -z 16 16 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/icon_16x16.png
|
|
sips -z 32 32 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/[email protected]
|
|
sips -z 32 32 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/icon_32x32.png
|
|
sips -z 64 64 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/[email protected]
|
|
sips -z 128 128 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/icon_128x128.png
|
|
sips -z 256 256 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/[email protected]
|
|
sips -z 256 256 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/icon_256x256.png
|
|
sips -z 512 512 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/[email protected]
|
|
sips -z 512 512 assets/icon.png --out $(APP).app/Contents/Resources/$(APP).iconset/icon_512x512.png
|
|
cp ludo $(APP).app/Contents/MacOS
|
|
codesign --force --options runtime --verbose --timestamp --sign "Developer ID Application: Jean-Andre Santoni (ZE9XE938Z2)" \
|
|
--entitlements pkg/entitlements.xml $(APP).app/Contents/MacOS/ludo
|
|
iconutil -c icns -o $(APP).app/Contents/Resources/$(APP).icns $(APP).app/Contents/Resources/$(APP).iconset
|
|
rm -rf $(APP).app/Contents/Resources/$(APP).iconset
|
|
codesign --force --options runtime --verbose --timestamp --sign "Developer ID Application: Jean-Andre Santoni (ZE9XE938Z2)" \
|
|
--entitlements pkg/entitlements.xml $(APP).app
|
|
|
|
empty.sparseimage:
|
|
rm -rf empty.sparseimage
|
|
hdiutil create -fs HFSX -layout SPUD -size 300m empty.sparseimage -type SPARSE -volname $(BUNDLENAME)
|
|
|
|
# For OSX
|
|
dmg: empty.sparseimage $(APP).app
|
|
mkdir -p wc
|
|
hdiutil attach empty.sparseimage -noautoopen -quiet -mountpoint wc
|
|
rm -rf wc/$(APP).app
|
|
ditto -rsrc $(APP).app wc/$(APP).app
|
|
ln -sf /Applications wc/Applications
|
|
WC_DEV=`hdiutil info | grep wc | grep "Apple_HFS" | awk '{print $$1}'` && hdiutil detach $$WC_DEV -quiet -force
|
|
rm -f $(BUNDLENAME)-*.dmg
|
|
hdiutil convert empty.sparseimage -quiet -format UDZO -imagekey zlib-level=9 -o $(BUNDLENAME).dmg
|
|
codesign --force --options runtime --verbose --timestamp --sign "Developer ID Application: Jean-Andre Santoni (ZE9XE938Z2)" \
|
|
--entitlements pkg/entitlements.xml $(BUNDLENAME).dmg
|
|
|
|
# For Windows
|
|
zip: ludo.exe $(DLLS)
|
|
mkdir -p $(BUNDLENAME)/
|
|
./rcedit-x64 ludo.exe --set-icon assets/icon.ico
|
|
cp ludo.exe $(BUNDLENAME)/
|
|
cp -r database $(BUNDLENAME)/
|
|
cp -r assets $(BUNDLENAME)/
|
|
cp -r cores $(BUNDLENAME)/
|
|
7z a $(BUNDLENAME).zip $(BUNDLENAME)\
|
|
|
|
# For Linux
|
|
tar: ludo $(SOBJS)
|
|
mkdir -p $(BUNDLENAME)/
|
|
cp ludo $(BUNDLENAME)/
|
|
cp -r database $(BUNDLENAME)/
|
|
cp -r assets $(BUNDLENAME)/
|
|
cp -r cores $(BUNDLENAME)/
|
|
tar -zcf $(BUNDLENAME).tar.gz $(BUNDLENAME)\
|
|
|
|
# For Debian
|
|
|
|
DEB_ARCH = amd64
|
|
ifeq ($(ARCH), arm)
|
|
DEB_ARCH = armhf
|
|
endif
|
|
ifeq ($(ARCH), arm64)
|
|
DEB_ARCH = arm64
|
|
endif
|
|
DEB_ROOT = ludo-$(DISPDRIVER)_$(VERSION)-1_$(DEB_ARCH)
|
|
|
|
deb: ludo $(SOBJS)
|
|
mkdir -p $(DEB_ROOT)/DEBIAN
|
|
mkdir -p $(DEB_ROOT)/etc
|
|
mkdir -p $(DEB_ROOT)/usr/bin
|
|
mkdir -p $(DEB_ROOT)/usr/lib/ludo
|
|
mkdir -p $(DEB_ROOT)/usr/share/ludo
|
|
mkdir -p $(DEB_ROOT)/usr/share/applications
|
|
mkdir -p $(DEB_ROOT)/usr/share/icons/hicolor/1024x1024/apps/
|
|
touch $(DEB_ROOT)/etc/ludo.toml
|
|
echo "cores_dir = \"/usr/lib/ludo\"" >> $(DEB_ROOT)/etc/ludo.toml
|
|
echo "assets_dir = \"/usr/share/ludo/assets\"" >> $(DEB_ROOT)/etc/ludo.toml
|
|
echo "database_dir = \"/usr/share/ludo/database\"" >> $(DEB_ROOT)/etc/ludo.toml
|
|
cp ludo $(DEB_ROOT)/usr/bin
|
|
cp cores/* $(DEB_ROOT)/usr/lib/ludo
|
|
cp -r assets $(DEB_ROOT)/usr/share/ludo
|
|
cp -r database $(DEB_ROOT)/usr/share/ludo
|
|
cp assets/icon.png $(DEB_ROOT)/usr/share/icons/hicolor/1024x1024/apps/ludo.png
|
|
cp pkg/ludo.desktop $(DEB_ROOT)/usr/share/applications
|
|
cp pkg/control $(DEB_ROOT)/DEBIAN
|
|
sed -i.bak 's/VERSION/$(VERSION)/' $(DEB_ROOT)/DEBIAN/control
|
|
sed -i.bak 's/ARCH/$(DEB_ARCH)/' $(DEB_ROOT)/DEBIAN/control
|
|
rm $(DEB_ROOT)/DEBIAN/control.bak
|
|
dpkg-deb --build $(DEB_ROOT)
|
|
|
|
clean:
|
|
rm -rf Ludo.app ludo wc *.dmg *.sparseimage *.deb $(BUNDLENAME)-* cores/
|