ru_tts-for-nvda

Форк
0
/
Makefile 
107 строк · 4.2 Кб
1
# Makefile for ru_tts for NVDA
2
#
3
# Copyright (C) 2023 Alexander Linkov <kvark128@yandex.ru>
4

5
TARGET = i686-w64-mingw32
6
CC = gcc
7
EXTROOT = extroot
8
TARGET_CC = $(TARGET)-$(CC)
9
TARGET_EXTROOT = $(EXTROOT)/$(TARGET)
10

11
SRC_PREFIX = $(EXTROOT)/src
12
CFLAGS = -Wall -Wextra -Werror -Wno-unused-parameter -Wno-sign-compare -Wno-implicit-fallthrough -O3 -DPCRE2_STATIC
13
LDFLAGS = -static -s
14
RULEX_LIBS = -ldb -lpthread -lpcre2-posix -lpcre2-8
15
RU_TTS_OBJS = utterance.o transcription.o time_planner.o text2speech.o synth.o speechrate_control.o soundproducer.o sink.o numerics.o male.o intonator.o female.o
16
LEXHOLDER = $(EXTROOT)/bin/lexholder
17
PO_FILES = $(wildcard locale/*/LC_MESSAGES/nvda.po)
18
MO_FILES = $(addsuffix .mo, $(basename $(PO_FILES)))
19
MANIFESTS = manifest.ini $(wildcard locale/*/manifest.ini)
20
SYNTH_DIR = synthDrivers/ru_tts
21
PY_FILES = $(wildcard $(SYNTH_DIR)/*.py)
22
LICENSES = $(wildcard $(SYNTH_DIR)/LICENSES/*.txt) $(SYNTH_DIR)/COPYING.txt
23
ADDON_FILES = ru_tts.dll config.spec $(MANIFESTS) $(PY_FILES) $(PO_FILES) $(MO_FILES) $(LICENSES)
24

25
EXT_DIR = ../external
26
LEXICON_DIR = $(EXT_DIR)/rulex/data
27
LEXICON_DATA = $(addprefix $(LEXICON_DIR)/, explicit.dict implicit.dict general.rules lexicon.rules prefix.rules correction.rules)
28
VPATH = $(EXT_DIR)/ru_tts/src $(EXT_DIR)/sonic $(EXT_DIR)/rulex/src $(SYNTH_DIR)
29

30
ifdef WITH_RULEX
31
override ADDON_FILES += rulex.dll rulex.db
32
endif
33

34
all: ru_tts.nvda-addon
35

36
pot: ru_tts.pot
37

38
.SILENT: clean
39
clean:
40
	rm -f *.o *.nvda-addon *.pot
41
	cd $(SYNTH_DIR) && rm -f *.dll *.db
42
	rm -f $(MO_FILES)
43

44
clean-all: clean
45
	rm -rf $(EXTROOT) $(TARGET_EXTROOT)
46

47
%.o: %.c
48
	$(TARGET_CC) -c -I$(EXT_DIR)/ru_tts/src -I$(EXT_DIR)/sonic -I$(TARGET_EXTROOT)/include $(CFLAGS) -o $@ $<
49

50
%.mo: %.po
51
	msgfmt -o $@ $<
52

53
ru_tts.pot: $(PY_FILES)
54
	xgettext --package-name ru_tts -o $@ $^
55

56
$(TARGET_EXTROOT)/done:
57
	$(MAKE) PREFIX=$(CURDIR)/$(TARGET_EXTROOT) TARGET=$(TARGET) MINGW=true CC=$(TARGET_CC) CFLAGS="-Wno-implicit-function-declaration -O3" SRC_PREFIX=$(CURDIR)/$(SRC_PREFIX) -C db
58
	$(MAKE) PREFIX=$(CURDIR)/$(TARGET_EXTROOT) TARGET=$(TARGET) CC=$(TARGET_CC) CFLAGS="-O3" SRC_PREFIX=$(CURDIR)/$(SRC_PREFIX) -C pcre2
59
	touch $@
60

61
$(EXTROOT)/done:
62
	$(MAKE) PREFIX=$(CURDIR)/$(EXTROOT) CC=$(CC) CFLAGS="-Wno-implicit-function-declaration -O3" SRC_PREFIX=$(CURDIR)/$(SRC_PREFIX) -C db
63
	$(MAKE) PREFIX=$(CURDIR)/$(EXTROOT) CC=$(CC) CFLAGS="-O3" SRC_PREFIX=$(CURDIR)/$(SRC_PREFIX) -C pcre2
64
	touch $@
65

66
$(LEXHOLDER): lexholder.c lexdb.c coder.c $(EXTROOT)/done
67
	mkdir -p $(dir $@)
68
	$(CC) $(CFLAGS) -I$(EXTROOT)/include -o $@ $(filter %.c,$^) -L$(EXTROOT)/lib $(LDFLAGS) $(RULEX_LIBS)
69

70
$(SYNTH_DIR)/ru_tts.dll: ru_tts_nvda.o sonic.o $(RU_TTS_OBJS)
71
	$(TARGET_CC) -shared -o $@ $^ $(LDFLAGS)
72

73
$(SYNTH_DIR)/rulex.dll: lexdb.c coder.c $(TARGET_EXTROOT)/done
74
	$(TARGET_CC) $(CFLAGS) -I$(TARGET_EXTROOT)/include -shared -o $@ $(filter %.c,$^) -L$(TARGET_EXTROOT)/lib $(LDFLAGS) $(RULEX_LIBS)
75

76
$(SYNTH_DIR)/rulex.db: $(LEXHOLDER) $(LEXICON_DATA)
77
	@rm -f $@
78
	@echo "Inserting explicit dictionary:"
79
	$(LEXHOLDER) -f $(LEXICON_DIR)/explicit.dict -X $@
80
	@echo "Inserting implicit dictionary:"
81
	$(LEXHOLDER) -f $(LEXICON_DIR)/implicit.dict -M $@
82
	@echo "Inserting lexical classifiers:"
83
	$(LEXHOLDER) -f $(LEXICON_DIR)/lexicon.rules -L $@
84
	@echo "Inserting general rules:"
85
	$(LEXHOLDER) -f $(LEXICON_DIR)/general.rules -G $@
86
	@echo "Inserting prefix rules:"
87
	$(LEXHOLDER) -f $(LEXICON_DIR)/prefix.rules -P $@
88
	@echo "Inserting correction rules:"
89
	$(LEXHOLDER) -f $(LEXICON_DIR)/correction.rules -C $@
90

91
ru_tts.nvda-addon: $(ADDON_FILES)
92
	7z a -tzip -mx=7 $@ $^
93

94
synth.o: synth.c synth.h transcription.h soundscript.h ru_tts.h
95
numerics.o: numerics.c numerics.h transcription.h sink.h synth.h ru_tts.h
96
transcription.o: transcription.c transcription.h numerics.h sink.h
97
utterance.o: utterance.c soundscript.h transcription.h
98
time_planner.o: time_planner.c soundscript.h transcription.h
99
speechrate_control.o: speechrate_control.c timing.h soundscript.h transcription.h
100
intonator.o: intonator.c transcription.h soundscript.h modulation.h
101
soundproducer.o: soundproducer.c sink.h soundscript.h voice.h
102
sink.o: sink.c sink.h ru_tts.h
103
male.o: male.c voice.h
104
female.o: female.c voice.h
105
text2speech.o: text2speech.c ru_tts.h sink.h transcription.h synth.h timing.h modulation.h
106
sonic.o: sonic.c sonic.h
107
ru_tts_nvda.o: ru_tts_nvda.c ru_tts_nvda.h
108

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

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

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

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