diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 47e8e8a..438ec65 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,16 +3,12 @@ name: Z64 Video on: push: paths-ignore: - - '**/*.md' - '.{gitattributes,gitignore,travis.yml}' - - 'appveyor.yml,README' + - '*.md,appveyor.yml,README' pull_request: paths-ignore: - - '**/*.md' - '.{gitattributes,gitignore,travis.yml}' - - 'appveyor.yml,README' - schedule: - - cron: '5 14 21 * *' + - '*.md,appveyor.yml,README' workflow_dispatch: jobs: @@ -23,83 +19,38 @@ jobs: matrix: include: - cc: GCC - platform: x64 - bits: 64 + arch: x64 - cc: GCC - platform: x86 - bits: 32 + arch: x86 - cc: Clang - platform: x64 - bits: 64 + arch: x64 - cc: Clang - platform: x86 - bits: 32 - name: Linux / ${{ matrix.cc }} / ${{ matrix.platform }} + arch: x86 + name: Linux / ${{ matrix.cc }} / ${{ matrix.arch }} runs-on: ubuntu-22.04 - if: (github.event_name == 'schedule' && github.repository == 'mupen64plus/mupen64plus-video-z64') || (github.event_name != 'schedule') steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Get build dependencies and arrange the environment run: | - echo "G_REV=$(git rev-parse --short HEAD)" >> "${GITHUB_ENV}" - if [[ ${{ matrix.bits }} -eq 32 ]]; then sudo dpkg --add-architecture i386; fi - sudo apt-get update - sudo apt-get -y install libgl1-mesa-dev libglew-dev libglu1-mesa-dev libsdl1.2-dev libsdl2-dev libx11-dev - if [[ ${{ matrix.bits }} -eq 32 ]]; then - sudo apt-get --reinstall -y install gcc-multilib g++-multilib libc6 libc6-dev-i386 libatomic1:i386 libgcc-s1:i386 libstdc++6:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 libsdl1.2-dev:i386 libsdl2-dev:i386 libx11-dev:i386 - echo "" - echo "NOTE: There is no native \"libglew-dev:i386\" in Ubuntu 22.04, we will use Debian ones..." - echo "" - DEBSOURCE="http://http.us.debian.org/debian/pool/main/g/glew/" - PKGVER_LS="$(curl -sS ${DEBSOURCE} | grep 'dev_2.2' | grep 'amd64' | cut -d '_' -f2 | sort)" - if [[ "${PKGVER_LS}" != "" ]]; then - for VER in ${PKGVER_LS}; do PKGVER="${VER}"; done - cd /tmp - for DEB in libglew-dev libglew2.2; do - curl -L -O "${DEBSOURCE}${DEB}_${PKGVER}_amd64.deb" - curl -L -O "${DEBSOURCE}${DEB}_${PKGVER}_i386.deb" - done - sudo dpkg -i libglew*${PKGVER}*.deb - fi - fi - sudo ldconfig + git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core + export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12" + export PATH="$(pwd)/../mupen64plus-core/.github/workflows/scripts:${PATH}" + export BUILD_DEPS="libgl1-mesa-dev libglew-dev libglu1-mesa-dev libsdl1.2-dev libsdl2-dev libx11-dev" + ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }} + if [[ "${{ matrix.arch }}" == "x86" ]]; then ci_get_libglew_i386.sh; fi - name: Build and related stuff, backup binaries run: | - if [[ ${{ matrix.bits }} -eq 32 ]]; then export PIC="1" CPU_TUNE="-msse2 -mtune=pentium4"; else CPU_TUNE="-mtune=core2"; fi - export OPTFLAGS="-O2 -flto ${CPU_TUNE}" - ORIG="$(pwd)" - CC="gcc" - CXX="g++" - if [[ "${{ matrix.cc }}" != "GCC" ]]; then - CC="clang" - CXX="clang++" - fi - ${CC} --version - echo "" - git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core - MSG="1.2" - mkdir pkg - for SDL in sdl sdl2; do - echo "" - echo ":: ${{ matrix.cc }} ${{ matrix.platform }} / SDL${MSG} ::" - echo "" - make -C projects/unix clean - echo "" - make CC="${CC}" CXX="${CXX}" BITS="${{ matrix.bits }}" SDL_CONFIG="${SDL}-config" -C projects/unix all -j4 - echo "" - make -C projects/unix install DESTDIR="${ORIG}/pkg/" - echo "" - ls -gG pkg/usr/local/lib/mupen64plus/*.so - echo "" - ldd pkg/usr/local/lib/mupen64plus/mupen64plus-video-z64.so - MSG="2" - done - tar cvzf pkg/mupen64plus-video-z64-linux-${{ matrix.platform }}-g${{ env.G_REV }}.tar.gz -C pkg/ "usr" + export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12" + export PATH="$(pwd)/../mupen64plus-core/.github/workflows/scripts:${PATH}" + export CONFIG_OVERRIDE="SDL_CONFIG="sdl-config"" + ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} + export CONFIG_OVERRIDE="SDL_CONFIG="sdl2-config"" + ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg - name: Upload artifact if: matrix.cc == 'GCC' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: mupen64plus-video-z64-linux-${{ matrix.platform }}-g${{ env.G_REV }} + name: ${{ env.PKG_NAME }} path: pkg/*.tar.gz MSYS2: @@ -108,24 +59,23 @@ jobs: matrix: include: - cc: GCC - platform: x64 + arch: x64 cross: x86_64 - bits: 64 + env: MINGW64 - cc: GCC - platform: x86 + arch: x86 cross: i686 - bits: 32 - name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.platform }} + env: MINGW32 + name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.arch }} runs-on: windows-2022 - if: (github.event_name == 'schedule' && github.repository == 'mupen64plus/mupen64plus-video-z64') || (github.event_name != 'schedule') defaults: run: shell: msys2 {0} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: msys2/setup-msys2@v2 with: - msystem: MINGW${{ matrix.bits }} + msystem: ${{ matrix.env }} update: true install: >- git @@ -134,42 +84,19 @@ jobs: mingw-w64-${{ matrix.cross }}-gcc mingw-w64-${{ matrix.cross }}-toolchain mingw-w64-${{ matrix.cross }}-glew + mingw-w64-${{ matrix.cross }}-ntldd mingw-w64-${{ matrix.cross }}-SDL2 - name: Build and related stuff, backup binaries run: | - echo "G_REV=$(git rev-parse --short HEAD)" >> "${GITHUB_ENV}" - if [[ ${{ matrix.bits }} -eq 32 ]]; then CPU_TUNE="-msse2 -mtune=pentium4"; else CPU_TUNE="-mtune=core2"; fi - export OPTFLAGS="-O2 -flto ${CPU_TUNE}" - ORIG="$(pwd)" - CC="gcc" - CXX="g++" - ${CC} --version - echo "" git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core - mkdir pkg - echo "" - echo ":: ${{ matrix.cc }} ${{ matrix.platform }} / SDL2 ::" - echo "" - make -C projects/unix clean - echo "" - make CC="${CC}" CXX="${CXX}" BITS="${{ matrix.bits }}" -C projects/unix all -j4 - echo "" - make -C projects/unix install PLUGINDIR="" SHAREDIR="" BINDIR="" MANDIR="" LIBDIR="" APPSDIR="" ICONSDIR="icons" INCDIR="api" LDCONFIG="true" DESTDIR="${ORIG}/pkg/" - echo "" - ls -gG pkg/*.dll - echo "" - ldd pkg/mupen64plus-video-z64.dll + ./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} - name: Backup dependencies, etc... run: | - if [[ ${{ matrix.bits }} -eq 32 ]]; then LIBGCC="libgcc_s_dw2-1"; else LIBGCC="libgcc_s_seh-1"; fi - for LIB in glew32 ${LIBGCC} libwinpthread-1 SDL2; do - echo ":: Copying ${LIB}.dll" - cp "/mingw${{ matrix.bits }}/bin/${LIB}.dll" pkg/ - done + ./../mupen64plus-core/.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }} - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: mupen64plus-video-z64-msys2-${{ matrix.platform }}-g${{ env.G_REV }} + name: ${{ env.PKG_NAME }} path: pkg/* Nightly-build: @@ -177,57 +104,19 @@ jobs: if: github.ref_name == 'master' needs: [Linux, MSYS2] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: path: binaries - name: Get some tools run: | + git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core sudo apt-get update sudo apt-get -y install hashdeep - name: Creating new artifacts and update nightly-build run: | - mkdir pkg - cd binaries - for BIN in *; do - cd "${BIN}" - if [[ "${BIN:22:4}" == "msys" ]]; then - echo ":: Creating ${BIN}.zip" - zip -r "../../pkg/${BIN}.zip" * - else - echo ":: Recovering ${BIN}.tar.gz" - mv *.tar.gz ../../pkg/ - fi - cd .. - done - cd ../pkg - echo "" - for BIN in *; do - ls -gG ${BIN} - tigerdeep -lz ${BIN} >> ../${BIN:0:21}.tiger.txt - sha256sum ${BIN} >> ../${BIN:0:21}.sha256.txt - sha512sum ${BIN} >> ../${BIN:0:21}.sha512.txt - b2sum ${BIN} >> ../${BIN:0:21}.blake2.txt - done - mv ../*.tiger.txt . - mv ../*.sha*.txt . - mv ../*.blake2.txt . - echo "" - echo "TIGER:" - cat *.tiger.txt - echo "" - echo "SHA256:" - cat *.sha256.txt - echo "" - echo "SHA512:" - cat *.sha512.txt - echo "" - echo "BLAKE2:" - cat *.blake2.txt - echo "" - git tag -f nightly-build - git push -f origin nightly-build + ./../mupen64plus-core/.github/workflows/scripts/ci_nightly_artifacts.sh - name: Nightly-build uses: ncipollo/release-action@v1 with: diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml new file mode 100644 index 0000000..c7580c2 --- /dev/null +++ b/.github/workflows/schedule.yml @@ -0,0 +1,123 @@ +name: Z64 Video - Scheduled + +on: + schedule: + - cron: '5 14 21 * *' + +jobs: + + Linux: + strategy: + fail-fast: false + matrix: + include: + - cc: GCC + arch: x64 + - cc: GCC + arch: x86 + - cc: Clang + arch: x64 + - cc: Clang + arch: x86 + name: Linux / ${{ matrix.cc }} / ${{ matrix.arch }} + runs-on: ubuntu-22.04 + if: github.repository == 'mupen64plus/mupen64plus-video-z64' + steps: + - uses: actions/checkout@v4 + - name: Get build dependencies and arrange the environment + run: | + git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core + export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12" + export PATH="$(pwd)/../mupen64plus-core/.github/workflows/scripts:${PATH}" + export BUILD_DEPS="libgl1-mesa-dev libglew-dev libglu1-mesa-dev libsdl1.2-dev libsdl2-dev libx11-dev" + ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }} + if [[ "${{ matrix.arch }}" == "x86" ]]; then ci_get_libglew_i386.sh; fi + - name: Build and related stuff, backup binaries + run: | + export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12" + export PATH="$(pwd)/../mupen64plus-core/.github/workflows/scripts:${PATH}" + export CONFIG_OVERRIDE="SDL_CONFIG="sdl-config"" + ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} + export CONFIG_OVERRIDE="SDL_CONFIG="sdl2-config"" + ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg + - name: Upload artifact + if: matrix.cc == 'GCC' + uses: actions/upload-artifact@v4 + with: + name: ${{ env.PKG_NAME }} + path: pkg/*.tar.gz + + MSYS2: + strategy: + fail-fast: false + matrix: + include: + - cc: GCC + arch: x64 + cross: x86_64 + env: MINGW64 + - cc: GCC + arch: x86 + cross: i686 + env: MINGW32 + name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.arch }} + runs-on: windows-2022 + if: github.repository == 'mupen64plus/mupen64plus-video-z64' + defaults: + run: + shell: msys2 {0} + steps: + - uses: actions/checkout@v4 + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{ matrix.env }} + update: true + install: >- + git + libtool + make + mingw-w64-${{ matrix.cross }}-gcc + mingw-w64-${{ matrix.cross }}-toolchain + mingw-w64-${{ matrix.cross }}-glew + mingw-w64-${{ matrix.cross }}-ntldd + mingw-w64-${{ matrix.cross }}-SDL2 + - name: Build and related stuff, backup binaries + run: | + git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core + ./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} + - name: Backup dependencies, etc... + run: | + ./../mupen64plus-core/.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }} + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.PKG_NAME }} + path: pkg/* + + Nightly-build: + runs-on: ubuntu-latest + if: github.ref_name == 'master' + needs: [Linux, MSYS2] + steps: + - uses: actions/checkout@v4 + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: binaries + - name: Get some tools + run: | + git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core + sudo apt-get update + sudo apt-get -y install hashdeep + - name: Creating new artifacts and update nightly-build + run: | + ./../mupen64plus-core/.github/workflows/scripts/ci_nightly_artifacts.sh + - name: Nightly-build + uses: ncipollo/release-action@v1 + with: + prerelease: true + allowUpdates: true + removeArtifacts: true + replacesArtifacts: false + tag: nightly-build + artifacts: pkg/* diff --git a/projects/unix/Makefile b/projects/unix/Makefile index 7f71f32..cfd2144 100755 --- a/projects/unix/Makefile +++ b/projects/unix/Makefile @@ -117,6 +117,9 @@ ifeq ("$(CPU)","NONE") $(error CPU type "$(HOST_CPU)" not supported. Please file bug report at 'https://github.com/mupen64plus/mupen64plus-core/issues') endif +SRCDIR = ../../src +OBJDIR = _obj$(POSTFIX) + # base CFLAGS, LDLIBS, and LDFLAGS OPTFLAGS ?= -O3 -flto WARNFLAGS ?= -Wall @@ -161,6 +164,10 @@ endif ifeq ($(OS), LINUX) # only export api symbols LDFLAGS += -Wl,-version-script,$(SRCDIR)/video_api_export.ver + LDLIBS += -ldl +endif +ifeq ($(OS), FREEBSD) + LDLIBS += -lc endif ifeq ($(OS), OSX) # Select the proper SDK @@ -187,12 +194,6 @@ ifeq ($(OS), OSX) endif endif endif -ifeq ($(OS), LINUX) - LDLIBS += -ldl -endif -ifeq ($(OS), FREEBSD) - LDLIBS += -lc -endif # test for essential build dependencies ifeq ($(origin PKG_CONFIG), undefined) @@ -310,9 +311,6 @@ endif ifeq ($(PREFIX),) PREFIX := /usr/local endif -ifeq ($(SHAREDIR),) - SHAREDIR := $(PREFIX)/share/mupen64plus -endif ifeq ($(LIBDIR),) LIBDIR := $(PREFIX)/lib endif @@ -320,9 +318,6 @@ ifeq ($(PLUGINDIR),) PLUGINDIR := $(LIBDIR)/mupen64plus endif -SRCDIR = ../../src -OBJDIR = _obj$(POSTFIX) - # list of source files to compile SOURCE = \ $(SRCDIR)/rgl.cpp \ @@ -369,7 +364,6 @@ targets: @echo " POSTFIX=name == String added to the name of the the build (default: '')" @echo " Install Options:" @echo " PREFIX=path == install/uninstall prefix (default: /usr/local)" - @echo " SHAREDIR=path == path to install shared data files (default: PREFIX/share/mupen64plus)" @echo " LIBDIR=path == library prefix (default: PREFIX/lib)" @echo " PLUGINDIR=path == path to install plugin libraries (default: LIBDIR/mupen64plus)" @echo " DESTDIR=path == path to prepend to all installation paths (only for packagers)" @@ -382,7 +376,6 @@ all: $(TARGET) install: $(TARGET) $(INSTALL) -d "$(DESTDIR)$(PLUGINDIR)" $(INSTALL) -m 0644 $(INSTALL_STRIP_FLAG) $(TARGET) "$(DESTDIR)$(PLUGINDIR)" - $(INSTALL) -d "$(DESTDIR)$(SHAREDIR)" uninstall: $(RM) "$(DESTDIR)$(PLUGINDIR)/$(TARGET)"