2024-04-09 16:40:56 +01:00
|
|
|
BIN := libresplit
|
2023-06-29 13:52:03 +01:00
|
|
|
|
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
|
|
|
|
2023-07-17 02:53:49 +01:00
|
|
|
SRC_DIR := ./src
|
|
|
|
|
OBJ_DIR := ./obj
|
2023-06-13 11:06:40 +01:00
|
|
|
|
2023-06-13 10:54:13 +01:00
|
|
|
# Obtain list of source files and create list of object files
|
2023-07-17 02:53:49 +01:00
|
|
|
SOURCES := $(wildcard $(SRC_DIR)/*.c)
|
2024-04-09 16:40:56 +01:00
|
|
|
COMPONENTS := $(wildcard $(SRC_DIR)/component/*.c)
|
2023-07-17 02:53:49 +01:00
|
|
|
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))
|
2023-06-28 19:21:02 +01:00
|
|
|
|
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
|
2023-06-14 14:02:10 +01:00
|
|
|
|
2024-03-27 01:11:28 +00:00
|
|
|
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
|
|
|
|
2023-06-13 10:54:13 +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 $@
|
2023-06-28 19:21:02 +01:00
|
|
|
|
|
|
|
|
# Rule to compile C source files to object files
|
2023-06-29 13:52:03 +01:00
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
|
2023-07-07 18:06:40 +01:00
|
|
|
gcc $(INC) $(CFLAGS) -c -o $@ $<
|
2023-06-28 19:21:02 +01:00
|
|
|
|
|
|
|
|
# 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 $@ $<
|
2023-06-13 10:54:13 +01:00
|
|
|
|
2023-06-29 13:52:03 +01:00
|
|
|
$(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)
|
2023-06-30 22:29:04 +01:00
|
|
|
|
2024-03-26 01:09:33 +00:00
|
|
|
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)
|
2023-06-29 13:52:03 +01:00
|
|
|
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 ; \
|
2024-03-26 02:22:04 +00:00
|
|
|
rsvg-convert -w "$$size" -h "$$size" -f png -o $(DESTDIR)$(PREFIX)/share/icons/hicolor/"$$size"x"$$size"/apps/$(ICON).png $(ICON).svg ; \
|
2023-06-29 13:52:03 +01:00
|
|
|
done
|
2024-03-27 01:11:28 +00:00
|
|
|
$(update_icon_cache)
|
2024-04-27 14:18:53 +01:00
|
|
|
install -Dm644 $(SCHEMA) $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/$(SCHEMA)
|
2024-03-27 01:11:28 +00:00
|
|
|
$(compile_schemas)
|
2023-06-29 13:52:03 +01:00
|
|
|
uninstall:
|
2024-04-09 02:33:49 +01:00
|
|
|
$(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
|
|
|
|
|
$(RM) $(DESTDIR)$(PREFIX)/share/applications/$(APP)
|
2023-06-29 13:52:03 +01:00
|
|
|
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 ; \
|
2023-06-29 13:52:03 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
remove-schema:
|
2024-04-09 02:33:49 +01:00
|
|
|
$(RM) $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/$(SCHEMA)
|
2024-03-27 01:11:28 +00:00
|
|
|
$(compile_schemas)
|
2023-06-14 13:02:45 +01:00
|
|
|
|
2023-06-13 10:54:13 +01:00
|
|
|
clean:
|
2024-04-27 14:10:26 +01:00
|
|
|
$(RM) -r $(BIN) $(OBJ_DIR) $(SRC_DIR)/main.h
|
2023-06-13 10:54:13 +01:00
|
|
|
|
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
|