Files
macdev 6e4dc5ae6b
Test / Test (pull_request) Has been cancelled
Initial commit
2026-05-31 01:55:36 +02:00

86 lines
3.3 KiB
Makefile

CC=gcc
# GStreamer est optionnel — détecté automatiquement
GST_OK := $(shell pkg-config --exists gstreamer-1.0 gstreamer-app-1.0 gstreamer-video-1.0 2>/dev/null && echo yes || echo no)
ifeq ($(GST_OK),yes)
GST_CFLAGS := $(shell pkg-config --cflags gstreamer-1.0 gstreamer-app-1.0 gstreamer-video-1.0) -DHAVE_GSTREAMER
GST_LIBS := $(shell pkg-config --libs gstreamer-1.0 gstreamer-app-1.0 gstreamer-video-1.0)
$(info GStreamer détecté — décodage vidéo activé)
else
GST_CFLAGS :=
GST_LIBS :=
$(info GStreamer non trouvé — décodage vidéo désactivé)
endif
FLAGS=`pkg-config --cflags gtk+-3.0 libsoup-2.4 rtaudio json-glib-1.0 opus libsodium libsecret-1` $(GST_CFLAGS)
LIBS=`pkg-config --libs gtk+-3.0 libsoup-2.4 rtaudio json-glib-1.0 opus libsodium libsecret-1` -lleveldb -lm $(GST_LIBS) -lwinmm -lmsacm32
PREFIX=/usr
BUILD_DIR=build
SRCS = $(shell find ./src/*.c | grep -v updater.c)
# Ressource Windows (icône)
RC_OBJ = $(BUILD_DIR)/nightcord_rc.o
OBJS = $(patsubst %.c, $(BUILD_DIR)/%.o, $(SRCS))
OPTS=-O3
ifdef CACHE
OPTS+= -D USE_CACHE
endif
RTAUDIO_BELOW_6_0 := $(shell pkg-config --atleast-version=6.0.0 rtaudio && echo no || echo yes)
ifeq ($(RTAUDIO_BELOW_6_0), yes)
OPTS+= -D RTAUDIO_BELOW_6_0
endif
all: $(BUILD_DIR)/nightcord $(BUILD_DIR)/updater.exe
$(BUILD_DIR)/assets/: assets/
mkdir -p $(dir $@)
cp -r assets/* $(dir $@)
$(BUILD_DIR)/sounds/: assets/sounds/
mkdir -p $(BUILD_DIR)/sounds
cp assets/sounds/*.wav $(BUILD_DIR)/sounds/
$(BUILD_DIR)/themes/: themes/
mkdir -p $(BUILD_DIR)/themes
cp themes/*.css $(BUILD_DIR)/themes/
$(BUILD_DIR)/assets/gschemas.compiled: $(BUILD_DIR)/assets/
glib-compile-schemas $(dir $@)
$(BUILD_DIR)/resources.c: resources.xml $(BUILD_DIR)/assets/gschemas.compiled
glib-compile-resources --sourcedir=$(BUILD_DIR)/assets/ $< --target=$@ --generate-source
$(BUILD_DIR)/resources.o: $(BUILD_DIR)/resources.c
$(CC) -c -o $@ $^ $(FLAGS) $(OPTS)
# Compiler les ressources Windows (.rc → .o)
$(BUILD_DIR)/nightcord_rc.o: nightcord.rc assets/nightcord.ico
mkdir -p $(BUILD_DIR)
windres nightcord.rc -o $@
$(BUILD_DIR)/%.o: %.c
mkdir -p $(dir $@)
$(CC) -c -o $@ $(FLAGS) $< -Wall -Wno-unused-function -Wno-misleading-indentation $(OPTS)
$(BUILD_DIR)/nightcord: $(OBJS) $(BUILD_DIR)/resources.o $(RC_OBJ) $(BUILD_DIR)/themes/ $(BUILD_DIR)/sounds/
$(CC) -o $@ $(OBJS) $(BUILD_DIR)/resources.o $(RC_OBJ) $(LIBS) -liphlpapi -lcrypt32 $(OPTS) -mwindows
# ── Updater ──────────────────────────────────────────────────────────────
$(BUILD_DIR)/updater.exe: src/updater.c
$(CC) -o $@ $< `pkg-config --cflags --libs gtk+-3.0 libsoup-2.4 json-glib-1.0` -lm $(OPTS) -mwindows
clean:
rm -rf build
uninstall:
rm -f $(PREFIX)/share/applications/nightcord.desktop
rm -f $(PREFIX)/share/pixmaps/nightcord.png
rm -f $(PREFIX)/share/pixmaps/nightcord.svg
rm -f $(PREFIX)/bin/nightcord
install: uninstall
cp nightcord.desktop $(PREFIX)/share/applications/nightcord.desktop
cp assets/icon.svg $(PREFIX)/share/pixmaps/nightcord.svg
cp $(BUILD_DIR)/nightcord $(PREFIX)/bin/nightcord
run: all
cp assets/nightcord.gschema.xml $(BUILD_DIR)/assets/nightcord.gschema.xml
glib-compile-schemas $(BUILD_DIR)/assets/
./build/nightcord