You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							465 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
	
	
							465 lines
						
					
					
						
							15 KiB
						
					
					
				#
 | 
						|
# Makefile for NetSurf
 | 
						|
#
 | 
						|
# Copyright 2007 Daniel Silverstone <dsilvers@netsurf-browser.org>
 | 
						|
# Copyright 2008 Rob Kendrick <rjek@netsurf-browser.org>
 | 
						|
# Copyright 2024 Vincent Sanders <vince@netsurf-browser.org>
 | 
						|
#
 | 
						|
# Trivially, invoke as:
 | 
						|
#   make
 | 
						|
# to build native, or:
 | 
						|
#   make TARGET=riscos
 | 
						|
# to cross-build for RO.
 | 
						|
#
 | 
						|
# Look at Makefile.config for configuration options.
 | 
						|
#
 | 
						|
# Best results obtained building on unix platforms cross compiling for others
 | 
						|
#
 | 
						|
# To clean, invoke as above, with the 'clean' target
 | 
						|
#
 | 
						|
# To build developer Doxygen generated documentation, invoke as above,
 | 
						|
# with the 'docs' target:
 | 
						|
#   make docs
 | 
						|
#
 | 
						|
 | 
						|
.PHONY: all
 | 
						|
 | 
						|
all: all-program
 | 
						|
 | 
						|
# default values for base variables
 | 
						|
 | 
						|
# Resources executable target depends upon
 | 
						|
RESOURCES=
 | 
						|
# Messages executable target depends on
 | 
						|
MESSAGES:=
 | 
						|
 | 
						|
# The filter applied to the fat (full) messages to generate split messages
 | 
						|
MESSAGES_FILTER=any
 | 
						|
# The languages in the fat messages to convert
 | 
						|
MESSAGES_LANGUAGES=de en fr it nl zh_CN
 | 
						|
# The target directory for the split messages
 | 
						|
MESSAGES_TARGET=resources
 | 
						|
 | 
						|
# build verbosity
 | 
						|
ifeq ($(V),1)
 | 
						|
  Q:=
 | 
						|
else
 | 
						|
  Q=@
 | 
						|
endif
 | 
						|
VQ=@
 | 
						|
 | 
						|
# compute HOST, TARGET and SUBTARGET
 | 
						|
include frontends/Makefile.hts
 | 
						|
 | 
						|
# tools used in builds
 | 
						|
include Makefile.tools
 | 
						|
 | 
						|
# Target paths
 | 
						|
OBJROOT = build/$(HOST)-$(TARGET)$(SUBTARGET)
 | 
						|
DEPROOT := $(OBJROOT)/deps
 | 
						|
TOOLROOT := $(OBJROOT)/tools
 | 
						|
 | 
						|
# keep C flags from environment
 | 
						|
CFLAGS_ENV := $(CFLAGS)
 | 
						|
CXXFLAGS_ENV := $(CXXFLAGS)
 | 
						|
 | 
						|
# library and feature building macros
 | 
						|
include Makefile.macros
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# General flag setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
# host compiler flags
 | 
						|
BUILD_CFLAGS = -g -W -Wall -Wundef -Wpointer-arith -Wcast-align \
 | 
						|
	-Wwrite-strings -Wmissing-declarations -Wuninitialized \
 | 
						|
	-Wno-unused-parameter
 | 
						|
 | 
						|
# Set up the warning flags here so that they can be overridden in the
 | 
						|
#   Makefile.config
 | 
						|
COMMON_WARNFLAGS = -W -Wall -Wundef -Wpointer-arith -Wcast-align \
 | 
						|
	-Wwrite-strings -Wmissing-declarations -Wuninitialized
 | 
						|
 | 
						|
ifneq ($(CC_MAJOR),2)
 | 
						|
  COMMON_WARNFLAGS += -Wno-unused-parameter
 | 
						|
endif
 | 
						|
 | 
						|
# deal with lots of unwanted warnings from javascript
 | 
						|
ifeq ($(call cc_ver_ge,4,6),1)
 | 
						|
  COMMON_WARNFLAGS += -Wno-unused-but-set-variable
 | 
						|
endif
 | 
						|
 | 
						|
ifeq ($(TOOLCHAIN),gcc)
 | 
						|
  # Implicit fallthrough warnings
 | 
						|
  ifeq ($(call cc_ver_ge,7,1),1)
 | 
						|
    COMMON_WARNFLAGS += -Wimplicit-fallthrough=5
 | 
						|
  endif
 | 
						|
else
 | 
						|
  # non gcc has different warning syntax
 | 
						|
  COMMON_WARNFLAGS += -Wimplicit-fallthrough
 | 
						|
endif
 | 
						|
 | 
						|
# deal with chaging warning flags for different platforms
 | 
						|
ifeq ($(HOST),OpenBSD)
 | 
						|
  # OpenBSD headers are not compatible with redundant declaration warning
 | 
						|
  COMMON_WARNFLAGS += -Wno-redundant-decls
 | 
						|
else
 | 
						|
  COMMON_WARNFLAGS += -Wredundant-decls
 | 
						|
endif
 | 
						|
 | 
						|
# c++ default warning flags
 | 
						|
CXXWARNFLAGS :=
 | 
						|
 | 
						|
# C default warning flags
 | 
						|
CWARNFLAGS := -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
 | 
						|
 | 
						|
# Pull in the default configuration
 | 
						|
include Makefile.defaults
 | 
						|
 | 
						|
# Pull in the user configuration
 | 
						|
-include Makefile.config
 | 
						|
 | 
						|
# libraries enabled by feature switch without pkgconfig file 
 | 
						|
$(eval $(call feature_switch,JPEG,JPEG (libjpeg),-DWITH_JPEG,-ljpeg,-UWITH_JPEG,))
 | 
						|
$(eval $(call feature_switch,HARU_PDF,PDF export (haru),-DWITH_PDF_EXPORT,-lhpdf -lpng,-UWITH_PDF_EXPORT,))
 | 
						|
$(eval $(call feature_switch,LIBICONV_PLUG,glibc internal iconv,-DLIBICONV_PLUG,,-ULIBICONV_PLUG,-liconv))
 | 
						|
$(eval $(call feature_switch,DUKTAPE,Javascript (Duktape),,,,,))
 | 
						|
 | 
						|
# Common libraries with pkgconfig
 | 
						|
$(eval $(call pkg_config_find_and_add,libcss,CSS))
 | 
						|
$(eval $(call pkg_config_find_and_add,libdom,DOM))
 | 
						|
$(eval $(call pkg_config_find_and_add,libnsutils,nsutils))
 | 
						|
 | 
						|
# Common libraries without pkg-config support
 | 
						|
LDFLAGS += -lz
 | 
						|
 | 
						|
# Optional libraries with pkgconfig
 | 
						|
 | 
						|
# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs
 | 
						|
# We only need to define the ones where the feature name doesn't exactly
 | 
						|
# match the WITH_FEATURE flag
 | 
						|
NETSURF_FEATURE_NSSVG_CFLAGS := -DWITH_NS_SVG
 | 
						|
NETSURF_FEATURE_ROSPRITE_CFLAGS := -DWITH_NSSPRITE
 | 
						|
 | 
						|
# libcurl and openssl ordering matters as if libcurl requires ssl it
 | 
						|
#  needs to come first in link order to ensure its symbols can be
 | 
						|
#  resolved by the subsequent openssl
 | 
						|
 | 
						|
# freemint does not support pkg-config for libcurl
 | 
						|
ifeq ($(HOST),mint)
 | 
						|
    CFLAGS += $(shell curl-config --cflags)
 | 
						|
    LDFLAGS += $(shell curl-config --libs)
 | 
						|
else
 | 
						|
    $(eval $(call pkg_config_find_and_add_enabled,CURL,libcurl,Curl))
 | 
						|
endif
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,OPENSSL,openssl,OpenSSL))
 | 
						|
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,UTF8PROC,libutf8proc,utf8))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,JPEGXL,libjxl,JPEGXL))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,WEBP,libwebp,WEBP))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,ROSPRITE,librosprite,Sprite))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,NSPSL,libnspsl,PSL))
 | 
						|
$(eval $(call pkg_config_find_and_add_enabled,NSLOG,libnslog,LOG))
 | 
						|
 | 
						|
# List of directories in which headers are searched for
 | 
						|
INCLUDE_DIRS :=. include $(OBJROOT)
 | 
						|
 | 
						|
# export the user agent format
 | 
						|
CFLAGS += -DNETSURF_UA_FORMAT_STRING=\"$(NETSURF_UA_FORMAT_STRING)\"
 | 
						|
CXXFLAGS += -DNETSURF_UA_FORMAT_STRING=\"$(NETSURF_UA_FORMAT_STRING)\"
 | 
						|
 | 
						|
# set the default homepage to use
 | 
						|
CFLAGS += -DNETSURF_HOMEPAGE=\"$(NETSURF_HOMEPAGE)\"
 | 
						|
CXXFLAGS += -DNETSURF_HOMEPAGE=\"$(NETSURF_HOMEPAGE)\"
 | 
						|
 | 
						|
# set the logging level
 | 
						|
CFLAGS += -DNETSURF_LOG_LEVEL=$(NETSURF_LOG_LEVEL)
 | 
						|
CXXFLAGS += -DNETSURF_LOG_LEVEL=$(NETSURF_LOG_LEVEL)
 | 
						|
 | 
						|
# If we're building the sanitize goal, override things
 | 
						|
ifneq ($(filter-out sanitize,$(MAKECMDGOALS)),$(MAKECMDGOALS))
 | 
						|
override NETSURF_USE_SANITIZER := YES
 | 
						|
override NETSURF_RECOVER_SANITIZERS := NO
 | 
						|
endif
 | 
						|
 | 
						|
# If we're going to use the sanitizer set it up
 | 
						|
ifeq ($(NETSURF_USE_SANITIZER),YES)
 | 
						|
SAN_FLAGS := -fsanitize=address -fsanitize=undefined
 | 
						|
ifeq ($(NETSURF_RECOVER_SANITIZERS),NO)
 | 
						|
SAN_FLAGS += -fno-sanitize-recover
 | 
						|
endif
 | 
						|
else
 | 
						|
SAN_FLAGS :=
 | 
						|
endif
 | 
						|
CFLAGS += $(SAN_FLAGS)
 | 
						|
CXXFLAGS += $(SAN_FLAGS)
 | 
						|
LDFLAGS += $(SAN_FLAGS)
 | 
						|
 | 
						|
# and the logging filter
 | 
						|
CFLAGS += -DNETSURF_BUILTIN_LOG_FILTER=\"$(NETSURF_BUILTIN_LOG_FILTER)\"
 | 
						|
CXXFLAGS += -DNETSURF_BUILTIN_LOG_FILTER=\"$(NETSURF_BUILTIN_LOG_FILTER)\"
 | 
						|
# and the verbose logging filter
 | 
						|
CFLAGS += -DNETSURF_BUILTIN_VERBOSE_FILTER=\"$(NETSURF_BUILTIN_VERBOSE_FILTER)\"
 | 
						|
CXXFLAGS += -DNETSURF_BUILTIN_VERBOSE_FILTER=\"$(NETSURF_BUILTIN_VERBOSE_FILTER)\"
 | 
						|
 | 
						|
# Determine if the C compiler supports statement expressions
 | 
						|
# This is needed to permit certain optimisations in our library headers
 | 
						|
ifneq ($(shell $(CC) -dM -E - < /dev/null | grep __GNUC__),)
 | 
						|
CFLAGS += -DSTMTEXPR=1
 | 
						|
CXXFLAGS += -DSTMTEXPR=1
 | 
						|
endif
 | 
						|
 | 
						|
# We trace during link so that we can determine if a libary changes under us in
 | 
						|
# order to re-link.  This *may* be gcc specific, so may need tweaks in future.
 | 
						|
LDFLAGS += -Wl,--trace
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# General make rules
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
$(OBJROOT)/created:
 | 
						|
	$(VQ)echo "   MKDIR: $(OBJROOT)"
 | 
						|
	$(Q)$(MKDIR) -p $(OBJROOT)
 | 
						|
	$(Q)$(TOUCH) $(OBJROOT)/created
 | 
						|
 | 
						|
$(DEPROOT)/created: $(OBJROOT)/created
 | 
						|
	$(VQ)echo "   MKDIR: $(DEPROOT)"
 | 
						|
	$(Q)$(MKDIR) -p $(DEPROOT)
 | 
						|
	$(Q)$(TOUCH) $(DEPROOT)/created
 | 
						|
 | 
						|
$(TOOLROOT)/created: $(OBJROOT)/created
 | 
						|
	$(VQ)echo "   MKDIR: $(TOOLROOT)"
 | 
						|
	$(Q)$(MKDIR) -p $(TOOLROOT)
 | 
						|
	$(Q)$(TOUCH) $(TOOLROOT)/created
 | 
						|
 | 
						|
CLEANS :=
 | 
						|
POSTEXES :=
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Target specific setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
include frontends/Makefile
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Build tools setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
include tools/Makefile
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# General source file setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
# Content sources
 | 
						|
include content/Makefile
 | 
						|
 | 
						|
# utility sources
 | 
						|
include utils/Makefile
 | 
						|
 | 
						|
# http utility sources
 | 
						|
include utils/http/Makefile
 | 
						|
 | 
						|
# nsurl utility sources
 | 
						|
include utils/nsurl/Makefile
 | 
						|
 | 
						|
# Desktop sources
 | 
						|
include desktop/Makefile
 | 
						|
 | 
						|
# S_COMMON are sources common to all builds
 | 
						|
S_COMMON := \
 | 
						|
	$(S_CONTENT) \
 | 
						|
	$(S_FETCHERS) \
 | 
						|
	$(S_UTILS) \
 | 
						|
	$(S_HTTP) \
 | 
						|
	$(S_NSURL) \
 | 
						|
	$(S_DESKTOP) \
 | 
						|
	$(S_JAVASCRIPT_BINDING)
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Message targets
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
# generate the message file rules
 | 
						|
$(eval $(foreach LANG,$(MESSAGES_LANGUAGES), \
 | 
						|
	$(call split_messages,$(LANG))))
 | 
						|
 | 
						|
clean-messages:
 | 
						|
	$(VQ)echo "   CLEAN: $(CLEAN_MESSAGES)"
 | 
						|
	$(Q)$(RM) $(CLEAN_MESSAGES)
 | 
						|
CLEANS += clean-messages
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Source file setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
# Force exapnsion of source file list
 | 
						|
SOURCES := $(SOURCES)
 | 
						|
 | 
						|
ifeq ($(SOURCES),)
 | 
						|
$(error Unable to build NetSurf, could not determine set of sources to build)
 | 
						|
endif
 | 
						|
 | 
						|
OBJECTS := $(sort $(addprefix $(OBJROOT)/,$(subst /,_,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(patsubst %.m,%.o,$(patsubst %.s,%.o,$(SOURCES))))))))
 | 
						|
 | 
						|
# Include directory flags
 | 
						|
IFLAGS = $(addprefix -I,$(INCLUDE_DIRS))
 | 
						|
 | 
						|
$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES) tools/linktrace-to-depfile.pl
 | 
						|
	$(VQ)echo "    LINK: $(EXETARGET)"
 | 
						|
ifneq ($(TARGET),riscos)
 | 
						|
	$(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS) > $(DEPROOT)/link-raw.d
 | 
						|
else
 | 
						|
	@# RISC OS targets are a bit special: we need to convert ELF -> AIF
 | 
						|
  ifeq ($(SUBTARGET),-aof)
 | 
						|
	$(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS) > $(DEPROOT)/link-raw.d
 | 
						|
  else
 | 
						|
	$(Q)$(CXX) -o $(EXETARGET:,ff8=,e1f) $(OBJECTS) $(LDFLAGS) > $(DEPROOT)/link-raw.d
 | 
						|
	$(Q)$(ELF2AIF) $(EXETARGET:,ff8=,e1f) $(EXETARGET)
 | 
						|
	$(Q)$(RM) $(EXETARGET:,ff8=,e1f)
 | 
						|
  endif
 | 
						|
endif
 | 
						|
	$(VQ)echo "LINKDEPS: $(EXETARGET)"
 | 
						|
	$(Q)echo -n "$(EXETARGET) $(DEPROOT)/link.d: " > $(DEPROOT)/link.d
 | 
						|
	$(Q)$(PERL) tools/linktrace-to-depfile.pl < $(DEPROOT)/link-raw.d >> $(DEPROOT)/link.d
 | 
						|
ifeq ($(NETSURF_STRIP_BINARY),YES)
 | 
						|
	$(VQ)echo "   STRIP: $(EXETARGET)"
 | 
						|
	$(Q)$(STRIP) $(EXETARGET)
 | 
						|
endif
 | 
						|
ifeq ($(TARGET),beos)
 | 
						|
	$(VQ)echo "    XRES: $(EXETARGET)"
 | 
						|
	$(Q)$(BEOS_XRES) -o $(EXETARGET) $(RSRC_BEOS)
 | 
						|
	$(VQ)echo "  SETVER: $(EXETARGET)"
 | 
						|
	$(Q)$(BEOS_SETVER) $(EXETARGET) \
 | 
						|
                -app $(VERSION_MAJ) $(VERSION_MIN) 0 d 0 \
 | 
						|
                -short "NetSurf $(VERSION_FULL)" \
 | 
						|
                -long "NetSurf $(VERSION_FULL) © 2003 - 2021 The NetSurf Developers"
 | 
						|
	$(VQ)echo " MIMESET: $(EXETARGET)"
 | 
						|
	$(Q)$(BEOS_MIMESET) $(EXETARGET)
 | 
						|
endif
 | 
						|
 | 
						|
clean-target:
 | 
						|
	$(VQ)echo "   CLEAN: $(EXETARGET)"
 | 
						|
	$(Q)$(RM) $(EXETARGET)
 | 
						|
CLEANS += clean-target
 | 
						|
 | 
						|
 | 
						|
clean-builddir:
 | 
						|
	$(VQ)echo "   CLEAN: $(OBJROOT)"
 | 
						|
	$(Q)$(RM) -r $(OBJROOT)
 | 
						|
CLEANS += clean-builddir
 | 
						|
 | 
						|
 | 
						|
.PHONY: all-program
 | 
						|
 | 
						|
all-program: $(EXETARGET) $(POSTEXES)
 | 
						|
 | 
						|
.SUFFIXES:
 | 
						|
 | 
						|
DEPFILES :=
 | 
						|
 | 
						|
# Rules to construct dep lines for each object...
 | 
						|
$(eval $(foreach SOURCE,$(filter %.c,$(SOURCES)), \
 | 
						|
	$(call dependency_generate_c,$(SOURCE),$(subst /,_,$(SOURCE:.c=.d)),$(subst /,_,$(SOURCE:.c=.o)))))
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.cpp,$(SOURCES)), \
 | 
						|
	$(call dependency_generate_c,$(SOURCE),$(subst /,_,$(SOURCE:.cpp=.d)),$(subst /,_,$(SOURCE:.cpp=.o)))))
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.m,$(SOURCES)), \
 | 
						|
	$(call dependency_generate_c,$(SOURCE),$(subst /,_,$(SOURCE:.m=.d)),$(subst /,_,$(SOURCE:.m=.o)))))
 | 
						|
 | 
						|
# Cannot currently generate dep files for S files because they're objasm
 | 
						|
# when we move to gas format, we will be able to.
 | 
						|
 | 
						|
#$(eval $(foreach SOURCE,$(filter %.s,$(SOURCES)), \
 | 
						|
#	$(call dependency_generate_s,$(SOURCE),$(subst /,_,$(SOURCE:.s=.d)),$(subst /,_,$(SOURCE:.s=.o)))))
 | 
						|
 | 
						|
ifeq ($(filter $(MAKECMDGOALS),clean test coverage),)
 | 
						|
-include $(sort $(addprefix $(DEPROOT)/,$(DEPFILES)))
 | 
						|
-include $(DEPROOT)/link.d
 | 
						|
endif
 | 
						|
 | 
						|
# And rules to build the objects themselves...
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.c,$(SOURCES)), \
 | 
						|
	$(call compile_target_c,$(SOURCE),$(subst /,_,$(SOURCE:.c=.o)),$(subst /,_,$(SOURCE:.c=.d)))))
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.cpp,$(SOURCES)), \
 | 
						|
	$(call compile_target_cpp,$(SOURCE),$(subst /,_,$(SOURCE:.cpp=.o)),$(subst /,_,$(SOURCE:.cpp=.d)))))
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.m,$(SOURCES)), \
 | 
						|
	$(call compile_target_c,$(SOURCE),$(subst /,_,$(SOURCE:.m=.o)),$(subst /,_,$(SOURCE:.m=.d)))))
 | 
						|
 | 
						|
$(eval $(foreach SOURCE,$(filter %.s,$(SOURCES)), \
 | 
						|
	$(call compile_target_s,$(SOURCE),$(subst /,_,$(SOURCE:.s=.o)),$(subst /,_,$(SOURCE:.s=.d)))))
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Test setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
include test/Makefile
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Clean setup
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
.PHONY: clean
 | 
						|
 | 
						|
clean: $(CLEANS)
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# build distribution package
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
.PHONY: package-$(TARGET) package
 | 
						|
 | 
						|
package: all-program package-$(TARGET)
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# local install on the host system
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
.PHONY: install install-$(TARGET)
 | 
						|
 | 
						|
install: all-program install-$(TARGET)
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Documentation build
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
.PHONY: docs
 | 
						|
 | 
						|
docs: docs/Doxyfile
 | 
						|
	doxygen $<
 | 
						|
 | 
						|
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
# Transifex message processing
 | 
						|
# ----------------------------------------------------------------------------
 | 
						|
 | 
						|
.PHONY: messages-split-tfx messages-fetch-tfx messages-import-tfx
 | 
						|
 | 
						|
# split fat messages into properties files suitable for uploading to transifex
 | 
						|
messages-split-tfx:
 | 
						|
	for splitlang in $(FAT_LANGUAGES);do $(PERL) ./utils/split-messages.pl -l $${splitlang} -f transifex -p any -o Messages.any.$${splitlang}.tfx resources/FatMessages;done
 | 
						|
 | 
						|
# download property files from transifex
 | 
						|
messages-fetch-tfx:
 | 
						|
	for splitlang in $(FAT_LANGUAGES);do $(RM) Messages.any.$${splitlang}.tfx ; $(PERL) ./utils/fetch-transifex.pl -w insecure -l $${splitlang} -o Messages.any.$${splitlang}.tfx ;done
 | 
						|
 | 
						|
# merge property files into fat messages
 | 
						|
messages-import-tfx: messages-fetch-tfx
 | 
						|
	for tfxlang in $(FAT_LANGUAGES);do $(PERL) ./utils/import-messages.pl -l $${tfxlang} -p any -f transifex -o resources/FatMessages -i resources/FatMessages -I Messages.any.$${tfxlang}.tfx ; $(RM) Messages.any.$${tfxlang}.tfx; done
 | 
						|
 |