OnlineLibrary
/
Makefile
56 строк · 1.4 Кб
1# Makefile for OnlineLibrary
2#
3# Copyright (C) 2024 Alexander Linkov <kvark128@yandex.ru>
4
5ARCH = amd64
6CC = x86_64-w64-mingw32-gcc
7CFLAGS = -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare -O3
8MANIFEST_FILE = OnlineLibrary.exe.manifest
9SYSO_FILE = rsrc_windows_$(ARCH).syso
10
11ifeq ($(ARCH), 386)
12CC = i686-w64-mingw32-gcc
13endif
14
15ifeq ($(ARCH), arm64)
16CC = aarch64-w64-mingw32-gcc
17endif
18
19BUILD_DIR = .build/$(ARCH)
20INCLUDE_DIR = $(BUILD_DIR)/include
21LIB_DIR = $(BUILD_DIR)/lib
22SONIC_DIR = external/sonic
23MINIMP3_DIR = external/minimp3
24VPATH = $(SONIC_DIR) $(MINIMP3_DIR) $(BUILD_DIR) $(INCLUDE_DIR) $(LIB_DIR)
25
26.SILENT:
27main: libs headers $(SYSO_FILE)
28env GOOS=windows GOARCH=$(ARCH) \
29CGO_ENABLED=1 CC=$(CC) \
30CGO_CFLAGS="-I$(shell pwd)/$(INCLUDE_DIR) $(CFLAGS)" \
31CGO_LDFLAGS="-L$(LIB_DIR) -lsonic" \
32go build -ldflags "-s -H=windowsgui"
33
34clean:
35rm -r -f ./.build
36rm -f *.exe *.syso
37
38$(SYSO_FILE): $(MANIFEST_FILE) $(wildcard cmd/rsrc/*.go) $(wildcard internal/config/*.go)
39go run cmd/rsrc/rsrc.go -arch $(ARCH) -manifest $(MANIFEST_FILE) -o $@
40
41$(LIB_DIR)/libsonic.a: sonic.o
42mkdir -p $(LIB_DIR)
43ar rcs $@ $^
44
45$(BUILD_DIR)/sonic.o: sonic.c sonic.h
46mkdir -p $(BUILD_DIR)
47$(CC) $(CFLAGS) -c -o $@ $<
48
49$(INCLUDE_DIR)/sonic.h:
50install -D -p $(SONIC_DIR)/sonic.h $@
51
52$(INCLUDE_DIR)/minimp3.h:
53install -D -p $(MINIMP3_DIR)/minimp3.h $@
54
55headers: $(INCLUDE_DIR)/sonic.h $(INCLUDE_DIR)/minimp3.h
56libs: libsonic.a
57