diff options
-rwxr-xr-x | .github/calcrom/calcrom.pl (renamed from .travis/calcrom/calcrom.pl) | 0 | ||||
-rwxr-xr-x | .github/calcrom/webhook.sh (renamed from .travis/calcrom/webhook.sh) | 7 | ||||
-rw-r--r-- | .github/workflows/build.yml | 47 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .travis.yml | 46 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | berry_fix/Makefile | 30 | ||||
-rw-r--r-- | berry_fix/payload/Makefile | 35 | ||||
-rw-r--r-- | include/config.h | 5 | ||||
-rw-r--r-- | ld_script_modern.txt | 7 |
10 files changed, 114 insertions, 67 deletions
diff --git a/.travis/calcrom/calcrom.pl b/.github/calcrom/calcrom.pl index fb0a9df8c..fb0a9df8c 100755 --- a/.travis/calcrom/calcrom.pl +++ b/.github/calcrom/calcrom.pl diff --git a/.travis/calcrom/webhook.sh b/.github/calcrom/webhook.sh index 86da74c87..2a3015969 100755 --- a/.travis/calcrom/webhook.sh +++ b/.github/calcrom/webhook.sh @@ -1,10 +1,5 @@ #!/bin/bash -ex -# Only run this script if it's the master branch build. -if [[ "$TRAVIS_BRANCH" != "master" || "$TRAVIS_PULL_REQUEST" != "false" ]]; then - exit 0 -fi - build_name=$1 map_file=$build_name.map if [ ! -f $map_file ]; then @@ -13,4 +8,4 @@ if [ ! -f $map_file ]; then fi output=$(perl $(dirname "$0")/calcrom.pl $build_name.map | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g') -curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL +curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST "$CALCROM_DISCORD_WEBHOOK_URL" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..f8ad97065 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + +jobs: + build: + runs-on: ubuntu-18.04 + steps: + - name: Checkout + uses: actions/checkout@master + + - name: Install binutils + run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi + # build-essential, git, and libpng-dev are already installed + # gcc-arm-none-eabi is only needed for the modern build + # as an alternative to dkP + + - name: Install agbcc + run: | + git clone https://github.com/pret/agbcc.git + cd agbcc + ./build.sh + ./install.sh ../ + + - name: Compare FireRed + run: | + make -j${nproc} compare_firered + make -j${nproc} compare_firered_rev1 + + - name: Compare LeafGreen + run: | + make -j${nproc} compare_leafgreen + make -j${nproc} compare_leafgreen_rev1 + + - name: Modern + run: make -j${nproc} modern + + - name: Webhook + if: ${{ github.event_name == 'push' }} + env: + CALCROM_DISCORD_WEBHOOK_USERNAME: OK + CALCROM_DISCORD_WEBHOOK_AVATAR_URL: https://i.imgur.com/38BQHdd.png + CALCROM_DISCORD_WEBHOOK_URL: ${{ secrets.CALCROM_DISCORD_WEBHOOK_URL }} + run: sh .github/calcrom/webhook.sh pokefirered diff --git a/.gitignore b/.gitignore index af2644ade..a5dc2b2a4 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,7 @@ tags tools/agbcc tools/binutils types_*.taghl -!.travis/calcrom/calcrom.pl +!.github/calcrom/calcrom.pl !sound/programmable_wave_samples/*.pcm _Deparsed_XSubs.pm porymap.project.cfg diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2f9187233..000000000 --- a/.travis.yml +++ /dev/null @@ -1,46 +0,0 @@ -language: generic -dist: bionic -os: linux -env: - global: - - DEVKITPRO=$HOME - - DEVKITARM=$DEVKITPRO/devkitARM -addons: - apt: - packages: - - gcc-multilib - - linux-libc-dev - - zlib-dev -cache: - apt: true -install: - - pushd $HOME - - travis_retry wget https://github.com/devkitPro/buildscripts/releases/download/devkitARM_r52/devkitARM_r52-linux.tar.xz - - tar xJf devkitARM*.tar.xz - - travis_retry wget https://github.com/devkitPro/devkitarm-rules/releases/download/v1.0.0/devkitarm-rules-1.0.0.tar.xz - - tar xJf devkitarm-rules-*.tar.xz -C $DEVKITARM - - travis_retry git clone https://github.com/pret/agbcc.git - - cd agbcc && sh build.sh && sh install.sh $TRAVIS_BUILD_DIR - - popd -jobs: - include: - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: _="Build" - script: - - make tools CXX=g++-7 - - make -j2 compare - - make -j2 compare_leafgreen - - make -j2 compare_firered_rev1 - - make -j2 compare_leafgreen_rev1 - - make -j2 modern - - make -j2 leafgreen_modern - - make -j2 firered_rev1_modern - - make -j2 leafgreen_rev1_modern -after_success: - - .travis/calcrom/webhook.sh pokefirered @@ -266,7 +266,7 @@ $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I . $(DATA_ASM_SUBDIR)/ endif berry_fix: - @$(MAKE) -C berry_fix COMPARE=$(COMPARE) + @$(MAKE) -C berry_fix COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) berry_fix/berry_fix.gba: berry_fix diff --git a/berry_fix/Makefile b/berry_fix/Makefile index 1e0f3ee25..a63941494 100644 --- a/berry_fix/Makefile +++ b/berry_fix/Makefile @@ -1,8 +1,29 @@ -include $(DEVKITARM)/base_tools +TOOLCHAIN := $(DEVKITARM) COMPARE ?= 0 -CPP := $(CC) -E -LD := $(DEVKITARM)/bin/arm-none-eabi-ld +ifeq ($(CC),) +HOSTCC := gcc +else +HOSTCC := $(CC) +endif + +ifeq ($(CXX),) +HOSTCXX := g++ +else +HOSTCXX := $(CXX) +endif + +ifneq (,$(wildcard $(TOOLCHAIN)/base_tools)) +include $(TOOLCHAIN)/base_tools +else +export PATH := $(TOOLCHAIN)/bin:$(PATH) +PREFIX := arm-none-eabi- +OBJCOPY := $(PREFIX)objcopy +export CC := $(PREFIX)gcc +export AS := $(PREFIX)as +endif +export CPP := $(PREFIX)cpp +export LD := $(PREFIX)ld ifeq ($(OS),Windows_NT) EXE := .exe @@ -145,7 +166,7 @@ $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) endif payload: - @$(MAKE) -C payload COMPARE=$(COMPARE) + @$(MAKE) -C payload COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) payload/payload.gba: payload @@ -164,4 +185,3 @@ $(ELF): ld_script.txt $(OBJS) $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent - diff --git a/berry_fix/payload/Makefile b/berry_fix/payload/Makefile index c87a06c41..a852c52dc 100644 --- a/berry_fix/payload/Makefile +++ b/berry_fix/payload/Makefile @@ -1,8 +1,29 @@ -include $(DEVKITARM)/base_tools +TOOLCHAIN := $(DEVKITARM) COMPARE ?= 0 -CPP := $(CC) -E -LD := $(DEVKITARM)/bin/arm-none-eabi-ld +ifeq ($(CC),) +HOSTCC := gcc +else +HOSTCC := $(CC) +endif + +ifeq ($(CXX),) +HOSTCXX := g++ +else +HOSTCXX := $(CXX) +endif + +ifneq (,$(wildcard $(TOOLCHAIN)/base_tools)) +include $(TOOLCHAIN)/base_tools +else +export PATH := $(TOOLCHAIN)/bin:$(PATH) +PREFIX := arm-none-eabi- +OBJCOPY := $(PREFIX)objcopy +export CC := $(PREFIX)gcc +export AS := $(PREFIX)as +endif +export CPP := $(PREFIX)cpp +export LD := $(PREFIX)ld ifeq ($(OS),Windows_NT) EXE := .exe @@ -56,7 +77,7 @@ FIX := ../../tools/gbafix/gbafix$(EXE) # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: rom clean compare tidy +.PHONY: all rom clean compare tidy C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c) C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS)) @@ -95,8 +116,7 @@ ifeq ($(COMPARE),1) endif # For contributors to make sure a change didn't affect the contents of the ROM. -compare: - @$(MAKE) COMPARE=1 +compare: ; @$(MAKE) COMPARE=1 clean: tidy rm -f sound/direct_sound_samples/*.bin @@ -158,7 +178,7 @@ $(OBJ_DIR)/sym_bss.ld: sym_bss.txt $(RAMSCRGEN) .bss $< ENGLISH > $@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt) - $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms,../../tools/agbcc/lib > $@ + $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt $(RAMSCRGEN) ewram_data $< ENGLISH > $@ @@ -171,4 +191,3 @@ $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ - diff --git a/include/config.h b/include/config.h index bdad6bb28..4bb35c764 100644 --- a/include/config.h +++ b/include/config.h @@ -38,7 +38,12 @@ // Crashes may occur due to section reordering in the modern build, // so we force BUGFIX here. #if MODERN +#ifndef BUGFIX #define BUGFIX +#endif // BUGFIX +#ifndef NONMATCHING +#define NONMATCHING +#endif // NONMATCHING #endif // MODERN #endif // GUARD_CONFIG_H diff --git a/ld_script_modern.txt b/ld_script_modern.txt index 588685112..9f1508067 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.txt @@ -41,6 +41,13 @@ SECTIONS { *(.text*); } =0 + .text.unlikely : + ALIGN(4) + { + src/crt0.o(.text.unlikely); + *(.text.unlikely*); + } =0 + script_data : ALIGN(4) { |