LibreSplit/Makefile

78 lines
2.5 KiB
Makefile
Raw Permalink Normal View History

2024-04-09 16:40:56 +01:00
BIN := libresplit
2024-03-21 02:44:38 +00:00
INC := `pkg-config --cflags gtk+-3.0 x11 jansson luajit`
2024-03-13 22:39:20 +00:00
CFLAGS := -std=gnu99 -O2 -pthread -Wall -Wno-unused-parameter
2024-03-21 02:44:38 +00:00
LDFLAGS := `pkg-config --libs gtk+-3.0 x11 jansson luajit`
2023-05-19 22:24:43 +01:00
SRC_DIR := ./src
OBJ_DIR := ./obj
2023-06-13 11:06:40 +01:00
# Obtain list of source files and create list of object files
SOURCES := $(wildcard $(SRC_DIR)/*.c)
2024-04-09 16:40:56 +01:00
COMPONENTS := $(wildcard $(SRC_DIR)/component/*.c)
OBJECTS := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SOURCES)) \
2024-04-09 16:40:56 +01:00
$(patsubst $(SRC_DIR)/component/%.c, $(OBJ_DIR)/%.o, $(COMPONENTS))
2024-03-26 02:19:47 +00:00
DESTDIR :=
PREFIX := /usr/local
2024-04-09 16:40:56 +01:00
APP := libresplit.desktop
ICON := libresplit
SCHEMA := libresplit.gschema.xml
ifdef DESTDIR
update_icon_cache :=
compile_schemas :=
else
update_icon_cache := gtk-update-icon-cache -f -t $(PREFIX)/share/icons/hicolor
compile_schemas := glib-compile-schemas $(PREFIX)/share/glib-2.0/schemas
endif
2024-04-27 14:10:26 +01:00
all: main.h $(BIN)
2023-06-30 19:11:22 +01:00
# Rule to link object files to create executable
2024-03-26 02:19:47 +00:00
$(BIN): $(OBJECTS)
2023-11-24 09:45:22 +00:00
gcc $(CFLAGS) $^ $(LDFLAGS) -o $@
# Rule to compile C source files to object files
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
2023-07-07 18:06:40 +01:00
gcc $(INC) $(CFLAGS) -c -o $@ $<
# Rule to compile C component source files to object files
2024-04-09 16:40:56 +01:00
$(OBJ_DIR)/%.o: $(SRC_DIR)/component/%.c | $(OBJ_DIR)
2023-07-07 18:06:40 +01:00
gcc $(INC) $(CFLAGS) -c -o $@ $<
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
2024-04-27 14:10:26 +01:00
main.h: $(SRC_DIR)/main.css
xxd --include $(SRC_DIR)/main.css > $(SRC_DIR)/main.h || ($(RM) $(SRC_DIR)/main.h; false)
install: all
2024-03-26 02:19:47 +00:00
install -Dm755 $(BIN) $(DESTDIR)$(PREFIX)/bin/$(BIN)
install -Dm644 $(APP) $(DESTDIR)$(PREFIX)/share/applications/$(APP)
for size in 16 22 24 32 36 48 64 72 96 128 256 512; do \
2024-03-26 02:19:47 +00:00
mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/"$$size"x"$$size"/apps ; \
rsvg-convert -w "$$size" -h "$$size" -f png -o $(DESTDIR)$(PREFIX)/share/icons/hicolor/"$$size"x"$$size"/apps/$(ICON).png $(ICON).svg ; \
done
$(update_icon_cache)
2024-04-27 14:18:53 +01:00
install -Dm644 $(SCHEMA) $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/$(SCHEMA)
$(compile_schemas)
uninstall:
2024-04-09 02:33:49 +01:00
$(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
$(RM) $(DESTDIR)$(PREFIX)/share/applications/$(APP)
for size in 16 22 24 32 36 48 64 72 96 128 256 512; do \
2024-04-09 02:33:49 +01:00
$(RM) $(DESTDIR)$(PREFIX)/share/icons/hicolor/"$$size"x"$$size"/apps/$(ICON).png ; \
done
remove-schema:
2024-04-09 02:33:49 +01:00
$(RM) $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/$(SCHEMA)
$(compile_schemas)
clean:
2024-04-27 14:10:26 +01:00
$(RM) -r $(BIN) $(OBJ_DIR) $(SRC_DIR)/main.h
2024-06-02 22:10:49 +01:00
format:
clang-format -i $(SOURCES) $(COMPONENTS) $(SRC_DIR)/*.h $(SRC_DIR)/component/*.h
2024-04-27 14:10:26 +01:00
.PHONY: all main.h install uninstall remove-schema clean