OnlineLibrary

Форк
0
/
Makefile 
56 строк · 1.4 Кб
1
# Makefile for OnlineLibrary
2
#
3
# Copyright (C) 2024 Alexander Linkov <kvark128@yandex.ru>
4

5
ARCH = amd64
6
CC = x86_64-w64-mingw32-gcc
7
CFLAGS = -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare -O3
8
MANIFEST_FILE = OnlineLibrary.exe.manifest
9
SYSO_FILE = rsrc_windows_$(ARCH).syso
10

11
ifeq ($(ARCH), 386)
12
CC = i686-w64-mingw32-gcc
13
endif
14

15
ifeq ($(ARCH), arm64)
16
CC = aarch64-w64-mingw32-gcc
17
endif
18

19
BUILD_DIR = .build/$(ARCH)
20
INCLUDE_DIR = $(BUILD_DIR)/include
21
LIB_DIR = $(BUILD_DIR)/lib
22
SONIC_DIR = external/sonic
23
MINIMP3_DIR = external/minimp3
24
VPATH = $(SONIC_DIR) $(MINIMP3_DIR) $(BUILD_DIR) $(INCLUDE_DIR) $(LIB_DIR)
25

26
.SILENT:
27
main: libs headers $(SYSO_FILE)
28
	env GOOS=windows GOARCH=$(ARCH) \
29
	CGO_ENABLED=1 CC=$(CC) \
30
	CGO_CFLAGS="-I$(shell pwd)/$(INCLUDE_DIR) $(CFLAGS)" \
31
	CGO_LDFLAGS="-L$(LIB_DIR) -lsonic" \
32
	go build -ldflags "-s -H=windowsgui"
33

34
clean:
35
	rm -r -f ./.build
36
	rm -f *.exe *.syso
37

38
$(SYSO_FILE): $(MANIFEST_FILE) $(wildcard cmd/rsrc/*.go) $(wildcard internal/config/*.go)
39
	go run cmd/rsrc/rsrc.go -arch $(ARCH) -manifest $(MANIFEST_FILE) -o $@
40

41
$(LIB_DIR)/libsonic.a: sonic.o
42
	mkdir -p $(LIB_DIR)
43
	ar rcs $@ $^
44

45
$(BUILD_DIR)/sonic.o: sonic.c sonic.h
46
	mkdir -p $(BUILD_DIR)
47
	$(CC) $(CFLAGS) -c -o $@ $<
48

49
$(INCLUDE_DIR)/sonic.h:
50
	install -D -p $(SONIC_DIR)/sonic.h $@
51

52
$(INCLUDE_DIR)/minimp3.h:
53
	install -D -p $(MINIMP3_DIR)/minimp3.h $@
54

55
headers: $(INCLUDE_DIR)/sonic.h $(INCLUDE_DIR)/minimp3.h
56
libs: libsonic.a
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.