diff --git a/.github/scripts/install.sh b/.github/scripts/install.sh deleted file mode 100755 index 9d94c494..00000000 --- a/.github/scripts/install.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -install -d /usr/local/bin/ /usr/local/share/man/man1/ /usr/local/share/man/man5/ /usr/local/share/man/man7/ -install -s -m 755 rgbasm rgblink rgbfix rgbgfx /usr/local/bin/ -install -m 644 rgbasm.1 rgblink.1 rgbfix.1 rgbgfx.1 /usr/local/share/man/man1/ -install -m 644 rgbds.5 rgbasm.5 rgblink.5 rgbasm-old.5 /usr/local/share/man/man5/ -install -m 644 rgbds.7 gbz80.7 /usr/local/share/man/man7/ diff --git a/.github/workflows/create-release-artifacts.yml b/.github/workflows/create-release-artifacts.yml index d5457768..2871db17 100644 --- a/.github/workflows/create-release-artifacts.yml +++ b/.github/workflows/create-release-artifacts.yml @@ -70,9 +70,12 @@ jobs: strip rgb{asm,link,fix,gfx} env: LDFLAGS: -fuse-ld=lld # cmake/macos-static.cmake comments explain why we use lld. + - name: Create install script + run: | + make install.sh - name: Package binaries run: | - zip --junk-paths rgbds-macos.zip rgb{asm,link,fix,gfx} man/* .github/scripts/install.sh + zip --junk-paths rgbds-macos.zip rgb{asm,link,fix,gfx} man/* install.sh - name: Upload macOS binaries uses: actions/upload-artifact@v7 with: @@ -92,9 +95,12 @@ jobs: run: | make -kj WARNFLAGS="-Wall -Wextra -pedantic -static" PKG_CONFIG="pkg-config --static" Q= strip rgb{asm,link,fix,gfx} + - name: Create install script + run: | + make install.sh Q= - name: Package binaries run: | - tar caf rgbds-linux-x86_64.tar.xz --transform='s#.*/##' rgb{asm,link,fix,gfx} man/* .github/scripts/install.sh + tar caf rgbds-linux-x86_64.tar.xz --transform='s#.*/##' rgb{asm,link,fix,gfx} man/* install.sh - name: Upload Linux binaries uses: actions/upload-artifact@v7 with: diff --git a/.gitignore b/.gitignore index be15d21b..f53fd04a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /rgblink /rgbfix /rgbgfx +/install.sh /rgbshim.sh /coverage/ *.o diff --git a/Dockerfile b/Dockerfile index 2b44fbba..ca8d2080 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,13 @@ RUN apt-get update && \ RUN ./.github/scripts/install_deps.sh debian RUN make -j CXXFLAGS="-O3 -flto -DNDEBUG -static" PKG_CONFIG="pkg-config --static" Q= -# Create an archive with the compiled executables and all the necessary to install it, +# Create the install script +RUN make install.sh Q= + +# Create an archive with the compiled executables, man pages, and install script, # so it can be copied outside of the container and installed/used in another system -RUN tar caf rgbds-linux-x86_64.tar.xz --transform='s#.*/##' rgbasm rgblink rgbfix rgbgfx man/* .github/scripts/install.sh +RUN tar caf rgbds-linux-x86_64.tar.xz --transform='s#.*/##' rgbasm rgblink rgbfix rgbgfx man/* install.sh # Install RGBDS on the container so all the executables will be available in the PATH RUN cp man/* . -RUN ./.github/scripts/install.sh +RUN make install Q= diff --git a/Makefile b/Makefile index ac0f0ac9..5e3ec98c 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ SUFFIX := STRIP := -s BINMODE := 755 MANMODE := 644 +MANSRC := man/ # Other variables @@ -184,6 +185,11 @@ src/gfx/rgba.o: src/gfx/rgba.cpp .cpp.o: $Q${CXX} ${REALCXXFLAGS} -c -o $@ $< +install.sh: + $Qecho '#!/usr/bin/env bash' > $@ + $Q${MAKE} -s -n install MANSRC= >> $@ + $Qchmod +x $@ + # Target used to remove all files generated by other Makefile targets clean: $Q${RM} rgbasm rgbasm.exe @@ -192,7 +198,7 @@ clean: $Q${RM} rgbgfx rgbgfx.exe $Qfind src/ -name "*.o" -exec rm {} \; $Qfind . -type f \( -name "*.gcno" -o -name "*.gcda" -o -name "*.gcov" \) -exec rm {} \; - $Q${RM} rgbshim.sh + $Q${RM} install.sh rgbshim.sh $Q${RM} src/asm/parser.cpp src/asm/parser.hpp src/asm/stack.hh $Q${RM} src/link/script.cpp src/link/script.hpp src/link/stack.hh $Q${RM} test/gfx/randtilegen test/gfx/rgbgfx_test @@ -204,9 +210,9 @@ install: all $Qinstall ${STRIP} -m ${BINMODE} rgblink ${DESTDIR}${bindir}/rgblink${SUFFIX} $Qinstall ${STRIP} -m ${BINMODE} rgbfix ${DESTDIR}${bindir}/rgbfix${SUFFIX} $Qinstall ${STRIP} -m ${BINMODE} rgbgfx ${DESTDIR}${bindir}/rgbgfx${SUFFIX} - $Qinstall -m ${MANMODE} man/rgbasm.1 man/rgblink.1 man/rgbfix.1 man/rgbgfx.1 ${DESTDIR}${mandir}/man1/ - $Qinstall -m ${MANMODE} man/rgbds.5 man/rgbasm.5 man/rgbasm-old.5 man/rgblink.5 ${DESTDIR}${mandir}/man5/ - $Qinstall -m ${MANMODE} man/rgbds.7 man/gbz80.7 ${DESTDIR}${mandir}/man7/ + $Qinstall -m ${MANMODE} ${MANSRC}rgbasm.1 ${MANSRC}rgblink.1 ${MANSRC}rgbfix.1 ${MANSRC}rgbgfx.1 ${DESTDIR}${mandir}/man1/ + $Qinstall -m ${MANMODE} ${MANSRC}rgbds.5 ${MANSRC}rgbasm.5 ${MANSRC}rgbasm-old.5 ${MANSRC}rgblink.5 ${DESTDIR}${mandir}/man5/ + $Qinstall -m ${MANMODE} ${MANSRC}rgbds.7 ${MANSRC}gbz80.7 ${DESTDIR}${mandir}/man7/ # Target used to check for suspiciously missing changed files. checkdiff: