From c1d1062e3192043f4ffb3c558a5ad40b3aa85e98 Mon Sep 17 00:00:00 2001 From: Zlika Date: Sun, 12 May 2019 23:02:26 +0200 Subject: [PATCH] build: Dependencies and Dockerfile cleanup --- Config.in | 1 - Dockerfile | 27 +- configs/recalbox-odroidc2_defconfig | 2 + configs/recalbox-odroidxu4_defconfig | 2 + configs/recalbox-rpi1_defconfig | 2 + configs/recalbox-rpi2_defconfig | 2 + configs/recalbox-rpi3_defconfig | 2 + configs/recalbox-x86_64_defconfig | 3 + configs/recalbox-x86_defconfig | 3 + package/dosbox/dosbox.mk | 30 +- package/gsplus/gsplus.mk | 2 +- package/hhpc/hhpc.mk | 9 +- package/libretro-sameboy/0001-makefile.patch | 31 -- package/libretro-sameboy/Config.in | 3 +- package/libretro-sameboy/Makefile | 356 ------------------ package/libretro-sameboy/libretro-sameboy.mk | 22 +- package/re2c/re2c.hash | 2 + package/re2c/re2c.mk | 12 + .../recalbox-romfs/recalbox-romfs.mk | 3 +- package/rgbds/Config.in | 10 - package/rgbds/rgbds.hash | 2 + package/rgbds/rgbds.mk | 30 +- 22 files changed, 97 insertions(+), 459 deletions(-) delete mode 100644 package/libretro-sameboy/0001-makefile.patch delete mode 100644 package/libretro-sameboy/Makefile create mode 100644 package/re2c/re2c.hash create mode 100644 package/re2c/re2c.mk delete mode 100644 package/rgbds/Config.in create mode 100644 package/rgbds/rgbds.hash diff --git a/Config.in b/Config.in index 80cd56d3c0..9e38dadadf 100644 --- a/Config.in +++ b/Config.in @@ -187,7 +187,6 @@ menu "Utils" source "$BR2_EXTERNAL_RECALBOX_PATH/package/libcapsimage/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/libretro-cheats/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/hhpc/Config.in" - source "$BR2_EXTERNAL_RECALBOX_PATH/package/rgbds/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/nanoarch/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/libpcap-overriden/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/kernelfirmwares/Config.in" diff --git a/Dockerfile b/Dockerfile index 4bc22c7ccd..ebc53511d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,29 +2,40 @@ FROM ubuntu:18.04 LABEL maintainer="digitalLumberjack " ENV TERM xterm +ENV DEBIAN_FRONTEND=noninteractive ENV ARCH '' ENV RECALBOX_VERSION 'development' ENV RECALBOX_CCACHE_ENABLED '' ENV PACKAGE '' # Install dependencies -# needed ? xterm RUN apt-get update -y && \ +# Configure time zone as UTC apt-get install -y tzdata && \ -ln -fs /usr/share/zoneinfo/Europe/Paris /etc/localtime && \ +ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ dpkg-reconfigure --frontend noninteractive tzdata && \ -apt-get -y install build-essential git libncurses5-dev qt5-default qttools5-dev-tools \ -mercurial libdbus-glib-1-dev texinfo zip openssh-client libxml2-utils libpng-dev \ -software-properties-common wget cpio bc locales rsync imagemagick bison flex bsdmainutils \ -nano vim automake mtools dosfstools subversion openjdk-8-jdk libssl-dev libelf-dev \ -graphviz python-matplotlib python-numpy re2c && \ +# Buildroot mandatory dependencies +apt-get -y install sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget \ +# Buildroot optional dependencies: source fetching tools +git mercurial subversion openjdk-8-jdk \ +# Buildroot optional dependencies: java (kodi selects BR2_NEEDS_JAVA_HOST) +openjdk-8-jdk \ +# Buildroot optional dependencies: graph generation tools +graphviz python-matplotlib \ +# Imagemagik is used in the post-build script +imagemagick \ +# To set the locale needed by the toochain +locales && \ +# Clean-up apt cache +apt-get clean && \ rm -rf /var/lib/apt/lists/* +# Default time zone is UTC: nothing to do + # Set the locale needed by toolchain RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen RUN locale-gen -RUN mkdir -p /work WORKDIR /work CMD echo ">>> Setting recalbox version to ${RECALBOX_VERSION}" && echo "${RECALBOX_VERSION}" > board/recalbox/fsoverlay/recalbox/recalbox.version && \ diff --git a/configs/recalbox-odroidc2_defconfig b/configs/recalbox-odroidc2_defconfig index de73a94360..2cc550a805 100644 --- a/configs/recalbox-odroidc2_defconfig +++ b/configs/recalbox-odroidc2_defconfig @@ -171,7 +171,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit -b 4096 -U 9c7b2218-a4be-431c-900c-733cb0382b28" BR2_TARGET_ROOTFS_TAR_XZ=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_C2=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-odroidxu4_defconfig b/configs/recalbox-odroidxu4_defconfig index e5e825889d..0647f0e206 100644 --- a/configs/recalbox-odroidxu4_defconfig +++ b/configs/recalbox-odroidxu4_defconfig @@ -179,7 +179,9 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit -b 4096 -U 9c7b2218-a4be-431c-900c-733cb0382b28" BR2_TARGET_ROOTFS_TAR_XZ=y BR2_PACKAGE_UBOOT_XU4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_XU4=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-rpi1_defconfig b/configs/recalbox-rpi1_defconfig index dc76e0c9ff..4dce82b28a 100644 --- a/configs/recalbox-rpi1_defconfig +++ b/configs/recalbox-rpi1_defconfig @@ -173,7 +173,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit -b 4096 -U 9c7b2218-a4be-431c-900c-733cb0382b28" BR2_TARGET_ROOTFS_TAR_XZ=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_RPI1=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-rpi2_defconfig b/configs/recalbox-rpi2_defconfig index 2bdd73bfb0..75e117090a 100644 --- a/configs/recalbox-rpi2_defconfig +++ b/configs/recalbox-rpi2_defconfig @@ -174,7 +174,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit -b 4096 -U 9c7b2218-a4be-431c-900c-733cb0382b28" BR2_TARGET_ROOTFS_TAR_XZ=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-rpi3_defconfig b/configs/recalbox-rpi3_defconfig index 7dfe35ca34..a65639c0c0 100644 --- a/configs/recalbox-rpi3_defconfig +++ b/configs/recalbox-rpi3_defconfig @@ -177,7 +177,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit -b 4096 -U 9c7b2218-a4be-431c-900c-733cb0382b28" BR2_TARGET_ROOTFS_TAR_XZ=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_RPI3=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 6b2d84628c..fa136c2eb7 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -28,6 +28,7 @@ BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/x86/kernel_patches_4.14" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/x86/kernel-x86_64-4.14-defconfig.config" +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config" BR2_PACKAGE_ALSA_UTILS=y BR2_PACKAGE_ALSA_UTILS_AMIXER=y @@ -222,7 +223,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_TAR_XZ=y BR2_TARGET_GRUB2=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_X86_64=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/configs/recalbox-x86_defconfig b/configs/recalbox-x86_defconfig index 3050f39078..e193c2de82 100644 --- a/configs/recalbox-x86_defconfig +++ b/configs/recalbox-x86_defconfig @@ -28,6 +28,7 @@ BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/x86/kernel_patches_4.14" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/x86/kernel-x86-4.14-defconfig.config" +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config" BR2_PACKAGE_ALSA_UTILS=y BR2_PACKAGE_ALSA_UTILS_AMIXER=y @@ -225,7 +226,9 @@ BR2_TARGET_ROOTFS_EXT2_LABEL="RECALBOX" BR2_TARGET_ROOTFS_EXT2_SIZE="2G" BR2_TARGET_ROOTFS_TAR_XZ=y BR2_TARGET_GRUB2=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_RECALBOX_SYSTEM=y BR2_PACKAGE_RECALBOX_TARGET_X86=y BR2_PACKAGE_RECALBOX_THEMES=y diff --git a/package/dosbox/dosbox.mk b/package/dosbox/dosbox.mk index a9a62a54c5..f95b4aa6a4 100644 --- a/package/dosbox/dosbox.mk +++ b/package/dosbox/dosbox.mk @@ -11,26 +11,16 @@ DOSBOX_SITE_METHOD = svn DOSBOX_LICENSE = GPL2 DOSBOX_LICENSE_FILES = COPYING DOSBOX_DEPENDENCIES = sdl2 zlib libpng libogg libvorbis sdl_sound sdl2_net +DOSBOX_AUTORECONF = YES +DOSBOX_AUTORECONF_OPTS = -i +DOSBOX_CONF_OPTS += --host="$(GNU_TARGET_NAME)" --enable-core-inline --prefix=/usr \ + --enable-dynrec --enable-unaligned_memory --disable-opengl \ + --with-sdl=sdl2 --with-sdl-prefix="$(STAGING_DIR)/usr" +DOSBOX_CONF_OPTS += LIBS="-lvorbisfile -lvorbis -logg" -DOSBOX_LDFLAGS = -L$(STAGING_DIR)/usr/lib -DOSBOX_CFLAGS = -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/SDL2 - -define DOSBOX_CONFIGURE_CMDS - (cd $(@D); \ - ./autogen.sh; \ - $(TARGET_CONFIGURE_ARGS) $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS) $(DOSBOX_CFLAGS) $(COMPILER_COMMONS_CFLAGS_NOLTO)" \ - CXXFLAGS="$(TARGET_CXXFLAGS) $(DOSBOX_CFLAGS) $(COMPILER_COMMONS_CXXFLAGS_NOLTO)" \ - CPPFLAGS="$(TARGET_CPPFLAGS) $(DOSBOX_CFLAGS) $(COMPILER_COMMONS_CXXFLAGS_NOLTO)" \ - LDFLAGS="$(TARGET_LDFLAGS) $(DOSBOX_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_NOLTO)" \ - CROSS_COMPILE="$(HOST_DIR)/usr/bin/" \ - LIBS="-lvorbisfile -lvorbis -logg" \ - ./configure --host="$(GNU_TARGET_NAME)" \ - --enable-core-inline --prefix=/usr \ - --enable-dynrec --enable-unaligned_memory \ - --disable-opengl --with-sdl=sdl2 \ - --with-sdl-prefix="$(STAGING_DIR)/usr"; \ - ) -endef +DOSBOX_CFLAGS = -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/SDL2 $(COMPILER_COMMONS_CFLAGS_NOLTO) +DOSBOX_CXXFLAGS = -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/SDL2 $(COMPILER_COMMONS_CXXFLAGS_NOLTO) +DOSBOX_CPPFLAGS = -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/SDL2 $(COMPILER_COMMONS_CXXFLAGS_NOLTO) +DOSBOX_LDFLAGS = -L$(STAGING_DIR)/usr/lib $(COMPILER_COMMONS_LDFLAGS_NOLTO) $(eval $(autotools-package)) diff --git a/package/gsplus/gsplus.mk b/package/gsplus/gsplus.mk index 3d518c77de..ab9265308c 100644 --- a/package/gsplus/gsplus.mk +++ b/package/gsplus/gsplus.mk @@ -6,7 +6,7 @@ GSPLUS_VERSION = 480572054518112647c8fae5d7ea7046a6d6ecfb GSPLUS_SITE = $(call github,digarok,gsplus,$(GSPLUS_VERSION)) -GSPLUS_DEPENDENCIES = sdl2 sdl2_image freetype libpcap +GSPLUS_DEPENDENCIES = sdl2 sdl2_image freetype libpcap host-re2c define GSPLUS_INSTALL_TARGET_CMDS $(INSTALL) -D $(@D)/bin/GSplus \ diff --git a/package/hhpc/hhpc.mk b/package/hhpc/hhpc.mk index a7be55026d..303ec99cdc 100644 --- a/package/hhpc/hhpc.mk +++ b/package/hhpc/hhpc.mk @@ -7,16 +7,15 @@ HHPC_VERSION = e8803cd5c2b51f340fbb76c3ace87ad1c932161b HHPC_SITE = $(call github,aktau,hhpc,$(HHPC_VERSION)) HHPC_LICENSE = BSD-3c -HHPC_DEPENDENCIES = xserver_xorg-server +HHPC_DEPENDENCIES = xserver_xorg-server host-pkgconf define HHPC_BUILD_CMDS - CFLAGS="$(TARGET_CFLAGS)" CXXFLAGS="$(TARGET_CXXFLAGS)" \ - $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C $(@D) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C $(@D) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" endef define HHPC_INSTALL_TARGET_CMDS - $(INSTALL) -D $(@D)/hhpc \ - $(TARGET_DIR)/usr/bin/hhpc + $(INSTALL) -D $(@D)/hhpc $(TARGET_DIR)/usr/bin/hhpc endef $(eval $(generic-package)) diff --git a/package/libretro-sameboy/0001-makefile.patch b/package/libretro-sameboy/0001-makefile.patch deleted file mode 100644 index b595745e74..0000000000 --- a/package/libretro-sameboy/0001-makefile.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/Makefile 2019-07-12 15:54:42.424872304 +0200 -+++ b/Makefile 2019-07-12 15:53:37.460267465 +0200 -@@ -324,13 +324,15 @@ - - $(OBJ)/%.1bpp: %.png - -@$(MKDIR) -p $(dir $@) -- rgbgfx -d 1 -h -o $@ $< -+ $(RGBDS_DIR)/rgbgfx -d 1 -h -o $@ $< - - $(OBJ)/BootROMs/SameBoyLogo.rle: $(OBJ)/BootROMs/SameBoyLogo.1bpp build/logo-compress - ./build/logo-compress < $< > $@ - -+logo-compress: build/logo-compress -+ - build/logo-compress: BootROMs/logo-compress.c -- $(CC) $< -o $@ -+ $(HOST_CC) $< -o $@ - - $(BIN)/BootROMs/agb_boot.bin: BootROMs/cgb_boot.asm - $(BIN)/BootROMs/cgb_boot_fast.bin: BootROMs/cgb_boot.asm -@@ -338,8 +340,8 @@ - - $(BIN)/BootROMs/%.bin: BootROMs/%.asm $(OBJ)/BootROMs/SameBoyLogo.rle - -@$(MKDIR) -p $(dir $@) -- rgbasm -i $(OBJ)/BootROMs/ -i BootROMs/ -o $@.tmp $< -- rgblink -o $@.tmp2 $@.tmp -+ $(RGBDS_DIR)/rgbasm -i $(OBJ)/BootROMs/ -i BootROMs/ -o $@.tmp $< -+ $(RGBDS_DIR)/rgblink -o $@.tmp2 $@.tmp - dd if=$@.tmp2 of=$@ count=1 bs=$(if $(findstring dmg,$@)$(findstring sgb,$@),256,2304) - @rm $@.tmp $@.tmp2 - diff --git a/package/libretro-sameboy/Config.in b/package/libretro-sameboy/Config.in index 99ebaef316..b0a99cc7d5 100644 --- a/package/libretro-sameboy/Config.in +++ b/package/libretro-sameboy/Config.in @@ -2,7 +2,6 @@ config BR2_PACKAGE_LIBRETRO_SAMEBOY bool "libretro-sameboy" depends on BR2_PACKAGE_RETROARCH depends on BR2_INSTALL_LIBSTDCPP - select BR2_PACKAGE_RGBDS select BR2_PACKAGE_RECALBOX_ROMFS_GB select BR2_PACKAGE_RECALBOX_ROMFS_GBC help @@ -10,5 +9,5 @@ config BR2_PACKAGE_LIBRETRO_SAMEBOY http://www.libretro.com -comment "LIBRETRO_TGBDUAL needs a toolchain w/ C++" +comment "LIBRETRO_SAMEBOY needs a toolchain w/ C++" depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/libretro-sameboy/Makefile b/package/libretro-sameboy/Makefile deleted file mode 100644 index 2339409fa5..0000000000 --- a/package/libretro-sameboy/Makefile +++ /dev/null @@ -1,356 +0,0 @@ -# Make hacks -.INTERMEDIATE: - -# Set target, configuration, version and destination folders - -PLATFORM := $(shell uname -s) -ifneq ($(findstring MINGW,$(PLATFORM)),) -PLATFORM := windows32 -USE_WINDRES := true -endif - -ifneq ($(findstring MSYS,$(PLATFORM)),) -PLATFORM := windows32 -endif - -ifeq ($(PLATFORM),windows32) -_ := $(shell chcp 65001) -endif - -ifeq ($(PLATFORM),Darwin) -DEFAULT := cocoa -else -DEFAULT := sdl -endif - -default: $(DEFAULT) - -ifeq ($(MAKECMDGOALS),) -MAKECMDGOALS := $(DEFAULT) -endif - -VERSION := 0.12 -export VERSION -CONF ?= debug - -BIN := build/bin -OBJ := build/obj -BOOTROMS_DIR ?= $(BIN)/BootROMs - -ifdef DATA_DIR -CFLAGS += -DDATA_DIR="\"$(DATA_DIR)\"" -endif - -# Set tools - -# Use clang if it's available. -ifeq ($(origin CC),default) -ifneq (, $(shell which clang)) -CC := clang -endif -endif - -ifeq ($(PLATFORM),windows32) -# To force use of the Unix version instead of the Windows version -MKDIR := $(shell which mkdir) -else -MKDIR := mkdir -endif - -ifeq ($(CONF),native_release) -override CONF := release -LDFLAGS += -march=native -mtune=native -CFLAGS += -march=native -mtune=native -endif - -# Set compilation and linkage flags based on target, platform and configuration - -OPEN_DIALOG = OpenDialog/gtk.c - -ifeq ($(PLATFORM),windows32) -OPEN_DIALOG = OpenDialog/windows.c -endif - -ifeq ($(PLATFORM),Darwin) -OPEN_DIALOG = OpenDialog/cocoa.m -endif - - -CFLAGS += -Wall -Wno-strict-aliasing -Wno-unknown-warning -Wno-unknown-warning-option -Wno-multichar -Wno-int-in-bool-context -std=gnu11 -D_GNU_SOURCE -DVERSION="$(VERSION)" -I. -D_USE_MATH_DEFINES -SDL_LDFLAGS := -lSDL2 -lGL -ifeq ($(PLATFORM),windows32) -CFLAGS += -IWindows -Drandom=rand -LDFLAGS += -lmsvcrt -lcomdlg32 -lSDL2main -Wl,/MANIFESTFILE:NUL -SDL_LDFLAGS := -lSDL2 -lopengl32 -else -LDFLAGS += -lc -lm -ldl -endif - -ifeq ($(PLATFORM),Darwin) -SYSROOT := $(shell xcodebuild -sdk macosx -version Path 2> /dev/null) -CFLAGS += -F/Library/Frameworks -OCFLAGS += -x objective-c -fobjc-arc -Wno-deprecated-declarations -isysroot $(SYSROOT) -mmacosx-version-min=10.9 -LDFLAGS += -framework AppKit -framework PreferencePanes -framework Carbon -framework QuartzCore -weak_framework Metal -weak_framework MetalKit -SDL_LDFLAGS := -F/Library/Frameworks -framework SDL2 -framework OpenGL -endif -CFLAGS += -Wno-deprecated-declarations -ifeq ($(PLATFORM),windows32) -CFLAGS += -Wno-deprecated-declarations # Seems like Microsoft deprecated every single LIBC function -LDFLAGS += -Wl,/NODEFAULTLIB:libcmt.lib -endif - -ifeq ($(CONF),debug) -CFLAGS += -g -else ifeq ($(CONF), release) -CFLAGS += -O3 -DNDEBUG -ifneq ($(PLATFORM),windows32) -LDFLAGS += -flto -CFLAGS += -flto -endif -else -$(error Invalid value for CONF: $(CONF). Use "debug", "release" or "native_release") -endif - -# Define our targets - -ifeq ($(PLATFORM),windows32) -SDL_TARGET := $(BIN)/SDL/sameboy.exe $(BIN)/SDL/sameboy_debugger.exe $(BIN)/SDL/SDL2.dll -TESTER_TARGET := $(BIN)/tester/sameboy_tester.exe -else -SDL_TARGET := $(BIN)/SDL/sameboy -TESTER_TARGET := $(BIN)/tester/sameboy_tester -endif - -cocoa: $(BIN)/SameBoy.app -quicklook: $(BIN)/SameBoy.qlgenerator -sdl: $(SDL_TARGET) $(BIN)/SDL/dmg_boot.bin $(BIN)/SDL/cgb_boot.bin $(BIN)/SDL/agb_boot.bin $(BIN)/SDL/sgb_boot.bin $(BIN)/SDL/sgb2_boot.bin $(BIN)/SDL/LICENSE $(BIN)/SDL/registers.sym $(BIN)/SDL/background.bmp $(BIN)/SDL/Shaders -bootroms: $(BIN)/BootROMs/agb_boot.bin $(BIN)/BootROMs/cgb_boot.bin $(BIN)/BootROMs/dmg_boot.bin $(BIN)/BootROMs/sgb_boot.bin $(BIN)/BootROMs/sgb2_boot.bin -tester: $(TESTER_TARGET) $(BIN)/tester/dmg_boot.bin $(BIN)/tester/cgb_boot.bin $(BIN)/tester/agb_boot.bin $(BIN)/tester/sgb_boot.bin $(BIN)/tester/sgb2_boot.bin -all: cocoa sdl tester libretro - -# Get a list of our source files and their respective object file targets - -CORE_SOURCES := $(shell ls Core/*.c) -SDL_SOURCES := $(shell ls SDL/*.c) $(OPEN_DIALOG) -TESTER_SOURCES := $(shell ls Tester/*.c) - -ifeq ($(PLATFORM),Darwin) -COCOA_SOURCES := $(shell ls Cocoa/*.m) $(shell ls HexFiend/*.m) -QUICKLOOK_SOURCES := $(shell ls QuickLook/*.m) $(shell ls QuickLook/*.c) -endif - -ifeq ($(PLATFORM),windows32) -CORE_SOURCES += $(shell ls Windows/*.c) -endif - -CORE_OBJECTS := $(patsubst %,$(OBJ)/%.o,$(CORE_SOURCES)) -COCOA_OBJECTS := $(patsubst %,$(OBJ)/%.o,$(COCOA_SOURCES)) -QUICKLOOK_OBJECTS := $(patsubst %,$(OBJ)/%.o,$(QUICKLOOK_SOURCES)) -SDL_OBJECTS := $(patsubst %,$(OBJ)/%.o,$(SDL_SOURCES)) -TESTER_OBJECTS := $(patsubst %,$(OBJ)/%.o,$(TESTER_SOURCES)) - -# Automatic dependency generation - -ifneq ($(filter-out clean bootroms libretro %.bin, $(MAKECMDGOALS)),) --include $(CORE_OBJECTS:.o=.dep) -ifneq ($(filter $(MAKECMDGOALS),sdl),) --include $(SDL_OBJECTS:.o=.dep) -endif -ifneq ($(filter $(MAKECMDGOALS),tester),) --include $(TESTER_OBJECTS:.o=.dep) -endif -ifneq ($(filter $(MAKECMDGOALS),cocoa),) --include $(COCOA_OBJECTS:.o=.dep) -endif -endif - -$(OBJ)/%.dep: % - -@$(MKDIR) -p $(dir $@) - $(CC) $(CFLAGS) -MT $(OBJ)/$^.o -M $^ -c -o $@ - -# Compilation rules - -$(OBJ)/Core/%.c.o: Core/%.c - -@$(MKDIR) -p $(dir $@) - $(CC) $(CFLAGS) -DGB_INTERNAL -c $< -o $@ - -$(OBJ)/%.c.o: %.c - -@$(MKDIR) -p $(dir $@) - $(CC) $(CFLAGS) -c $< -o $@ - -# HexFiend requires more flags -$(OBJ)/HexFiend/%.m.o: HexFiend/%.m - -@$(MKDIR) -p $(dir $@) - $(CC) $(CFLAGS) $(OCFLAGS) -c $< -o $@ -fno-objc-arc -include HexFiend/HexFiend_2_Framework_Prefix.pch - -$(OBJ)/%.m.o: %.m - -@$(MKDIR) -p $(dir $@) - $(CC) $(CFLAGS) $(OCFLAGS) -c $< -o $@ - -# Cocoa Port - -$(BIN)/SameBoy.app: $(BIN)/SameBoy.app/Contents/MacOS/SameBoy \ - $(shell ls Cocoa/*.icns Cocoa/*.png) \ - Cocoa/License.html \ - Cocoa/Info.plist \ - Misc/registers.sym \ - $(BIN)/SameBoy.app/Contents/Resources/dmg_boot.bin \ - $(BIN)/SameBoy.app/Contents/Resources/cgb_boot.bin \ - $(BIN)/SameBoy.app/Contents/Resources/agb_boot.bin \ - $(BIN)/SameBoy.app/Contents/Resources/sgb_boot.bin \ - $(BIN)/SameBoy.app/Contents/Resources/sgb2_boot.bin \ - $(patsubst %.xib,%.nib,$(addprefix $(BIN)/SameBoy.app/Contents/Resources/Base.lproj/,$(shell cd Cocoa;ls *.xib))) \ - $(BIN)/SameBoy.qlgenerator \ - Shaders - $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Resources - cp Cocoa/*.icns Cocoa/*.png Misc/registers.sym $(BIN)/SameBoy.app/Contents/Resources/ - sed s/@VERSION/$(VERSION)/ < Cocoa/Info.plist > $(BIN)/SameBoy.app/Contents/Info.plist - cp Cocoa/License.html $(BIN)/SameBoy.app/Contents/Resources/Credits.html - $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Resources/Shaders - cp Shaders/*.fsh Shaders/*.metal $(BIN)/SameBoy.app/Contents/Resources/Shaders - $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Library/QuickLook/ - cp -rf $(BIN)/SameBoy.qlgenerator $(BIN)/SameBoy.app/Contents/Library/QuickLook/ - -$(BIN)/SameBoy.app/Contents/MacOS/SameBoy: $(CORE_OBJECTS) $(COCOA_OBJECTS) - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) -framework OpenGL -framework AudioUnit -framework AVFoundation -framework CoreVideo -framework CoreMedia -framework IOKit -ifeq ($(CONF), release) - strip $@ -endif - -$(BIN)/SameBoy.app/Contents/Resources/Base.lproj/%.nib: Cocoa/%.xib - ibtool --compile $@ $^ - -# Quick Look generator - -$(BIN)/SameBoy.qlgenerator: $(BIN)/SameBoy.qlgenerator/Contents/MacOS/SameBoyQL \ - $(shell ls QuickLook/*.png) \ - QuickLook/Info.plist \ - $(BIN)/SameBoy.qlgenerator/Contents/Resources/cgb_boot_fast.bin - $(MKDIR) -p $(BIN)/SameBoy.qlgenerator/Contents/Resources - cp QuickLook/*.png $(BIN)/SameBoy.qlgenerator/Contents/Resources/ - sed s/@VERSION/$(VERSION)/ < QuickLook/Info.plist > $(BIN)/SameBoy.qlgenerator/Contents/Info.plist - -# Currently, SameBoy.app includes two "copies" of each Core .o file once in the app itself and -# once in the QL Generator. It should probably become a dylib instead. -$(BIN)/SameBoy.qlgenerator/Contents/MacOS/SameBoyQL: $(CORE_OBJECTS) $(QUICKLOOK_OBJECTS) - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) -bundle -framework Cocoa -framework Quicklook -ifeq ($(CONF), release) - strip -u -r -s QuickLook/exports.sym $@ -endif - -# cgb_boot_fast.bin is not a standard boot ROM, we don't expect it to exist in the user-provided -# boot ROM directory. -$(BIN)/SameBoy.qlgenerator/Contents/Resources/cgb_boot_fast.bin: $(BIN)/BootROMs/cgb_boot_fast.bin - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -# SDL Port - -# Unix versions build only one binary -$(BIN)/SDL/sameboy: $(CORE_OBJECTS) $(SDL_OBJECTS) - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) $(SDL_LDFLAGS) -ifeq ($(CONF), release) - strip $@ -endif - -# Windows version builds two, one with a conole and one without it -$(BIN)/SDL/sameboy.exe: $(CORE_OBJECTS) $(SDL_OBJECTS) $(OBJ)/Windows/resources.o - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) $(SDL_LDFLAGS) -Wl,/subsystem:windows - -$(BIN)/SDL/sameboy_debugger.exe: $(CORE_OBJECTS) $(SDL_OBJECTS) $(OBJ)/Windows/resources.o - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) $(SDL_LDFLAGS) -Wl,/subsystem:console - -ifneq ($(USE_WINDRES),) -$(OBJ)/%.o: %.rc - -@$(MKDIR) -p $(dir $@) - windres --preprocessor cpp -DVERSION=\"$(VERSION)\" $^ $@ -else -$(OBJ)/%.res: %.rc - -@$(MKDIR) -p $(dir $@) - rc /fo $@ /dVERSION=\"$(VERSION)\" $^ - -%.o: %.res - cvtres /OUT:"$@" $^ -endif - -# We must provide SDL2.dll with the Windows port. -$(BIN)/SDL/SDL2.dll: - @$(eval MATCH := $(shell where $$LIB:SDL2.dll)) - cp "$(MATCH)" $@ - -# Tester - -$(BIN)/tester/sameboy_tester: $(CORE_OBJECTS) $(TESTER_OBJECTS) - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) -ifeq ($(CONF), release) - strip $@ -endif - -$(BIN)/tester/sameboy_tester.exe: $(CORE_OBJECTS) $(SDL_OBJECTS) - -@$(MKDIR) -p $(dir $@) - $(CC) $^ -o $@ $(LDFLAGS) -Wl,/subsystem:console - -$(BIN)/SDL/%.bin $(BIN)/tester/%.bin: $(BOOTROMS_DIR)/%.bin - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -$(BIN)/SameBoy.app/Contents/Resources/%.bin: $(BOOTROMS_DIR)/%.bin - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -$(BIN)/SDL/LICENSE: LICENSE - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -$(BIN)/SDL/registers.sym: Misc/registers.sym - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -$(BIN)/SDL/background.bmp: SDL/background.bmp - -@$(MKDIR) -p $(dir $@) - cp -f $^ $@ - -$(BIN)/SDL/Shaders: Shaders - -@$(MKDIR) -p $@ - cp -rf Shaders/*.fsh $@ - -# Boot ROMs - -$(OBJ)/%.1bpp: %.png - -@$(MKDIR) -p $(dir $@) - $(RGBDS_DIR)/rgbgfx -d 1 -h -o $@ $< - -$(OBJ)/BootROMs/SameBoyLogo.rle: $(OBJ)/BootROMs/SameBoyLogo.1bpp build/logo-compress - ./build/logo-compress < $< > $@ - -logo-compress: build/logo-compress - -build/logo-compress: BootROMs/logo-compress.c - $(HOST_CC) $< -o $@ - -$(BIN)/BootROMs/agb_boot.bin: BootROMs/cgb_boot.asm -$(BIN)/BootROMs/cgb_boot_fast.bin: BootROMs/cgb_boot.asm -$(BIN)/BootROMs/sgb2_boot: BootROMs/sgb_boot.asm - -$(BIN)/BootROMs/%.bin: BootROMs/%.asm $(OBJ)/BootROMs/SameBoyLogo.rle - -@$(MKDIR) -p $(dir $@) - $(RGBDS_DIR)/rgbasm -i $(OBJ)/BootROMs/ -i BootROMs/ -o $@.tmp $< - $(RGBDS_DIR)/rgblink -o $@.tmp2 $@.tmp - dd if=$@.tmp2 of=$@ count=1 bs=$(if $(findstring dmg,$@)$(findstring sgb,$@),256,2304) - @rm $@.tmp $@.tmp2 - -# Libretro Core (uses its own build system) -libretro: - $(MAKE) -C libretro - -# Clean -clean: - rm -rf build - -.PHONY: libretro diff --git a/package/libretro-sameboy/libretro-sameboy.mk b/package/libretro-sameboy/libretro-sameboy.mk index 3a9db3cbf8..181f3f00fa 100644 --- a/package/libretro-sameboy/libretro-sameboy.mk +++ b/package/libretro-sameboy/libretro-sameboy.mk @@ -6,26 +6,22 @@ LIBRETRO_SAMEBOY_VERSION = fc754112163a2f6157c56092ea6e1fd64500c4cc LIBRETRO_SAMEBOY_SITE = $(call github,libretro,SameBoy,$(LIBRETRO_SAMEBOY_VERSION)) -LIBRETRO_SAMEBOY_DEPENDENCIES = rgbds - -#define LIBRETRO_SAMEBOY_PATH_TO_RGBDS -# # Missing variable definition to rgb* tools - Use a brutal SED for now -# $(SED) "s|rgbasm|$(HOST_DIR)/usr/bin/rgbasm|g" $(@D)/Makefile -# $(SED) "s|rgblink|$(HOST_DIR)/usr/bin/rgblink|g" $(@D)/Makefile -# $(SED) "s|rgbgfx|$(HOST_DIR)/usr/bin/rgbgfx|g" $(@D)/Makefile -#endef -#LIBRETRO_SAMEBOY_POST_EXTRACT_HOOKS += LIBRETRO_SAMEBOY_PATH_TO_RGBDS +# host-util-linux is required because sameboy's makefile uses hexdump +LIBRETRO_SAMEBOY_DEPENDENCIES = host-rgbds host-util-linux define LIBRETRO_SAMEBOY_BUILD_CMDS $(SED) "s|-O2|-O3|g" $(@D)/Makefile # Haha... when using -Werror you should ensure there are actually *NO* warning at all :) $(SED) "s|-Werror||g" $(@D)/Makefile - $(MAKE) HOST_CC="gcc" -C $(@D) logo-compress - CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ + $(MAKE) CC="$(HOSTCC)" -C $(@D) build/logo-compress + $(TARGET_MAKE_ENV) CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ + CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ + $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" -C $(@D) platform="unix" libretro + $(TARGET_MAKE_ENV) CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ - RGBDS_DIR="$(STAGING_DIR)/usr/bin" \ - $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" -C $(@D) platform="unix" libretro bootroms + $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" -C $(@D) platform="unix" bootroms endef define LIBRETRO_SAMEBOY_INSTALL_TARGET_CMDS diff --git a/package/re2c/re2c.hash b/package/re2c/re2c.hash new file mode 100644 index 0000000000..c310047e07 --- /dev/null +++ b/package/re2c/re2c.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 856597337ea00b24ce91f549f79e6eece1b92ba5f8b63292cad66c14ac7451cf re2c-1.1.1.tar.gz diff --git a/package/re2c/re2c.mk b/package/re2c/re2c.mk new file mode 100644 index 0000000000..c1b74f6276 --- /dev/null +++ b/package/re2c/re2c.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# re2c +# +################################################################################ + +RE2C_VERSION = 1.1.1 +RE2C_SITE = https://github.com/skvadrik/re2c/releases/download/$(RE2C_VERSION) +RE2C_LICENSE = PUBLIC DOMAIN +RE2C_LICENSE_FILES = LICENSE + +$(eval $(host-autotools-package)) diff --git a/package/recalbox-romfs/recalbox-romfs/recalbox-romfs.mk b/package/recalbox-romfs/recalbox-romfs/recalbox-romfs.mk index 4dac4428b9..dc7bcd622c 100644 --- a/package/recalbox-romfs/recalbox-romfs/recalbox-romfs.mk +++ b/package/recalbox-romfs/recalbox-romfs/recalbox-romfs.mk @@ -7,6 +7,7 @@ RECALBOX_ROMFS_SOURCE = RECALBOX_ROMFS_SITE = RECALBOX_ROMFS_INSTALL_STAGING = NO +RECALBOX_ROMFS_DEPENDENCIES = host-libxml2 ES_SYSTEMS = $(@D)/es_systems.cfg ES_SYSTEMS_TMP = $(ES_SYSTEMS).tmp @@ -120,7 +121,7 @@ define RECALBOX_ROMFS_ES_SYSTEMS "\tfavorites\n" \ "\n" \ '' >> $(ES_SYSTEMS_TMP) - xmllint --format $(ES_SYSTEMS_TMP) > $(ES_SYSTEMS) + $(HOST_DIR)/bin/xmllint --format $(ES_SYSTEMS_TMP) > $(ES_SYSTEMS) endef RECALBOX_ROMFS_CONFIGURE_CMDS += $(RECALBOX_ROMFS_ES_SYSTEMS) diff --git a/package/rgbds/Config.in b/package/rgbds/Config.in deleted file mode 100644 index fa40d87b8c..0000000000 --- a/package/rgbds/Config.in +++ /dev/null @@ -1,10 +0,0 @@ -config BR2_PACKAGE_RGBDS - bool "rgbds" - depends on BR2_INSTALL_LIBSTDCPP - help - A z80 compiler - - https://github.com/rednex/rgbds - -comment "RGBDS needs a toolchain w/ C++" - depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/rgbds/rgbds.hash b/package/rgbds/rgbds.hash new file mode 100644 index 0000000000..3ea35a42df --- /dev/null +++ b/package/rgbds/rgbds.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 264f5e98ccdccb51b05dac80d9d37ddae769863c97f726b87be692edd5612256 rgbds-v0.3.8.tar.gz diff --git a/package/rgbds/rgbds.mk b/package/rgbds/rgbds.mk index 88c24f27cd..219e4846cc 100644 --- a/package/rgbds/rgbds.mk +++ b/package/rgbds/rgbds.mk @@ -6,19 +6,27 @@ RGBDS_VERSION = v0.3.8 RGBDS_SITE = $(call github,rednex,rgbds,$(RGBDS_VERSION)) -RGBDS_DEPENDENCIES = libpng -RGBDS_INSTALL_TARGET = NO -RGBDS_INSTALL_STAGING = YES +RGBDS_LICENSE = MIT +RGBDS_LICENSE_FILES = LICENSE +RGBDS_HOST_DEPENDENCIES = host-bison host-flex host-pkgconf host-libpng -define RGBDS_BUILD_CMDS - $(MAKE) -C $(@D) +# Workaround for hand-written Makefile that has no way to specify actual +# LDFLAGS. It happens though that CFLAGS are also used at link time in the +# Makefile, so we can hijack them. LDFLAGS will be ignored when doing +# compilation. +HOST_RGBDS_CFLAGS = $(HOST_CFLAGS) $(HOST_LDFLAGS) + +define HOST_RGBDS_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) CFLAGS="$(HOST_RGBDS_CFLAGS)" \ + YACC="$(HOST_DIR)/bin/bison" \ + LEX="$(HOST_DIR)/bin/flex" \ + -C $(@D) endef -define RGBDS_INSTALL_STAGING_CMDS - $(INSTALL) -D $(@D)/rgbasm $(STAGING_DIR)/usr/bin/ - $(INSTALL) -D $(@D)/rgbfix $(STAGING_DIR)/usr/bin/ - $(INSTALL) -D $(@D)/rgbgfx $(STAGING_DIR)/usr/bin/ - $(INSTALL) -D $(@D)/rgblink $(STAGING_DIR)/usr/bin/ +define HOST_RGBDS_INSTALL_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) CFLAGS="$(HOST_RGBDS_CFLAGS)" \ + -C $(@D) PREFIX=$(HOST_DIR) \ + install endef -$(eval $(generic-package)) +$(eval $(host-generic-package)) -- GitLab