mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2024-08-31 06:26:04 +02:00
88 lines
2.5 KiB
Makefile
88 lines
2.5 KiB
Makefile
STRGEN = !!STRGEN!!
|
|
ENDIAN_CHECK = !!ENDIAN_CHECK!!
|
|
SRC_DIR = !!SRC_DIR!!
|
|
LANG_DIR = !!LANG_DIR!!
|
|
BIN_DIR = !!BIN_DIR!!
|
|
LANGS_SRC = $(shell ls $(LANG_DIR)/*.txt)
|
|
LANGS = $(LANGS_SRC:$(LANG_DIR)/%.txt=%.lng)
|
|
CXX_BUILD = !!CXX_BUILD!!
|
|
CFLAGS_BUILD = !!CFLAGS_BUILD!!
|
|
STRGEN_FLAGS = !!STRGEN_FLAGS!!
|
|
STAGE = !!STAGE!!
|
|
LANG_SUPPRESS= !!LANG_SUPPRESS!!
|
|
LANG_OBJS_DIR= !!LANG_OBJS_DIR!!
|
|
|
|
ifeq ($(LANG_SUPPRESS), yes)
|
|
LANG_ERRORS = >/dev/null 2>&1
|
|
endif
|
|
|
|
# Make sure endian_host.h is reasable as if it was in the src/ dir
|
|
CFLAGS_BUILD += -I $(LANG_OBJS_DIR)
|
|
|
|
ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK)
|
|
|
|
# Check if we want to show what we are doing
|
|
ifdef VERBOSE
|
|
Q =
|
|
E = @true
|
|
else
|
|
Q = @
|
|
E = @echo
|
|
endif
|
|
|
|
RES := $(shell mkdir -p $(BIN_DIR)/lang )
|
|
|
|
all: table/strings.h $(LANGS)
|
|
|
|
strgen.o: $(SRC_DIR)/strgen/strgen.cpp endian_host.h $(SRC_DIR)/table/control_codes.h
|
|
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
|
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
|
|
|
string.o: $(SRC_DIR)/string.cpp endian_host.h
|
|
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
|
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
|
|
|
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h
|
|
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
|
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
|
|
|
lang/english.txt: $(LANG_DIR)/english.txt
|
|
$(Q)mkdir -p lang
|
|
$(Q)cp $(LANG_DIR)/english.txt lang/english.txt
|
|
|
|
$(STRGEN): alloc_func.o string.o strgen.o
|
|
$(E) '$(STAGE) Compiling and Linking $@'
|
|
$(Q)$(CXX_BUILD) $^ -o $@
|
|
|
|
table/strings.h: lang/english.txt $(STRGEN)
|
|
$(E) '$(STAGE) Generating $@'
|
|
@mkdir -p table
|
|
$(Q)./$(STRGEN) -s $(LANG_DIR) -d table
|
|
|
|
$(LANGS): %.lng: $(LANG_DIR)/%.txt $(STRGEN) lang/english.txt
|
|
$(E) '$(STAGE) Compiling language $(*F)'
|
|
$(Q)./$(STRGEN) $(STRGEN_FLAGS) -s $(LANG_DIR) -d $(LANG_OBJS_DIR) $< $(LANG_ERRORS) && cp $@ $(BIN_DIR)/lang || true # Do not fail all languages when one fails
|
|
|
|
# The targets to compile the endian-code
|
|
|
|
endian_host.h: $(ENDIAN_CHECK)
|
|
$(E) '$(STAGE) Testing endianness for host'
|
|
$(Q)./$(ENDIAN_CHECK) > $@
|
|
|
|
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
|
$(E) '$(STAGE) Compiling and Linking $@'
|
|
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $< -o $@
|
|
|
|
depend:
|
|
|
|
clean:
|
|
$(E) '$(STAGE) Cleaning up language files'
|
|
$(Q)rm -f strgen.o string.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.* $(ENDIAN_TARGETS)
|
|
|
|
mrproper: clean
|
|
|
|
%.lng:
|
|
@echo '$(STAGE) No such language: $(@:%.lng=%)'
|
|
|
|
.PHONY: all mrproper depend clean
|