Implement AppImage packaging pipeline including desktop file generation, icon bundling, and AppStream metadata. The build script creates a portable Linux executable with automatic desktop integration using linuxdeploy and appimagetool. Key additions include the .desktop launcher file, application icon in multiple resolutions, and AppStream metainfo for software center compatibility. The packaging process compiles the application, bundles all runtime dependencies, and generates a self-contained AppImage binary in the dist/ directory.
61 lines
1.3 KiB
Makefile
61 lines
1.3 KiB
Makefile
all: build build_rpylib run build_mingw
|
|
|
|
# Variables for compiler and flags
|
|
CC = gcc
|
|
CFLAGS = -Ofast -Werror -Wall -lreadline -lncurses -lcurl -lgnutls -ljson-c -lsqlite3 -lm $(pkg-config --cflags --libs gnutls gmp) -lnettle -lssl -lcrypto
|
|
|
|
# MinGW Variables
|
|
MINGW_CC = x86_64-w64-mingw32-gcc # Change to x86_64-w64-mingw32-gcc for 64-bit
|
|
MINGW_CFLAGS = -Ofast -Werror -Wall -lreadline -lcurl -lssl -lcrypto -ljson-c -lm -lglob
|
|
|
|
# Targets
|
|
build:
|
|
$(CC) main.c $(CFLAGS) -o bin/r
|
|
-@rm -rf AppImage
|
|
mkdir -p AppImage
|
|
mkdir -p AppImage/usr
|
|
mkdir -p AppImage/usr/bin
|
|
mkdir -p AppImage/lib
|
|
cp AppRun AppImage/AppRun
|
|
cp r.desktop AppImage/r.desktop
|
|
cp r.png AppImage/r.png
|
|
cp bin/r AppImage/usr/bin/r
|
|
./collect_so_files.sh
|
|
#./prepare_app_image AppImage/usr/bin/r AppImage
|
|
appimagetool-x86_64.AppImage AppImage
|
|
mv r-x86_64.AppImage r
|
|
|
|
publish:
|
|
-@publish r
|
|
|
|
build_rpylib:
|
|
$(CC) -shared -o rpylib.so -fPIC rpylib.c -lpython3.12 `python3-config --includes` -I/usr/include/CL -ljson-c -lcurl -lsqlite3
|
|
publish rpylib.so
|
|
|
|
# New MinGW build target
|
|
build_mingw:
|
|
$(MINGW_CC) main.c $(MINGW_CFLAGS) -o r.exe
|
|
publish r.exe
|
|
|
|
run:
|
|
./r --verbose
|
|
|
|
run_free:
|
|
./rf --verbose
|
|
|
|
run_rd:
|
|
./rd --verbose
|
|
|
|
run_mingw:
|
|
./r.exe --verbose
|
|
|
|
|
|
|
|
docker: docker_make docker_run
|
|
|
|
docker_make:
|
|
docker build -t r .
|
|
|
|
docker_run:
|
|
docker run -v .:/app --rm -it r
|