91 lines
4.5 KiB
Makefile
91 lines
4.5 KiB
Makefile
NAME := git
|
|
GIT_VERSION := 2.46.0
|
|
|
|
# The download URL should point to a tar archive of some sort.
|
|
# On most systems, tar will handle most compression formats, so
|
|
# tar/gzip, tar/bzip2, etc, are fine. If the archive is in a different
|
|
# format, a recipe to create $(SRC) will need to be provided.
|
|
GIT_URL := https://github.com/git/git/archive/refs/tags/v$(GIT_VERSION).tar.gz
|
|
|
|
# The list of all programs that the package builds.
|
|
# These targets can be called and built from the command line.
|
|
# If the package provides no programs, leave this list empty.
|
|
GIT_PROGRAMS := git git.tar.gz
|
|
|
|
|
|
# The list of library names that the package builds.
|
|
# If the package provides no libraries, leave this list empty.
|
|
# Libraries will be represented as variables so that other packages may use them.
|
|
# For example, libsomething.a will be available as $$(libsomething).
|
|
# GIT_LIBRARIES := libexample.a
|
|
|
|
# Allow the user to add any make, autoconf, or configure options that they want.
|
|
# Feel free to put any reasonable default values here.
|
|
GIT_CONFIG = INSTALL_SYMLINKS=1
|
|
|
|
# This creates the recipe chain that downloads, extracts, builds, and strips
|
|
# the binaries created by this package. This makes it so that only the main
|
|
# build recipe's contents need to be provided by the package author.
|
|
$(eval $(call create_recipes, \
|
|
$(NAME), \
|
|
$(GIT_VERSION), \
|
|
$(GIT_URL), \
|
|
$(GIT_PROGRAMS), \
|
|
$(GIT_LIBRARIES), \
|
|
))
|
|
GIT_WOLFSSL_PATCH := $(src)/.wolfssl
|
|
|
|
# This is the main build recipe!
|
|
# Using $(BUILD_FLAG) as a target, it must compile the sources in $(SRC) and
|
|
# install the resulting programs and libraries into $(SYSROOT). If the package
|
|
# depends on any libraries, add their variable representations to this target's
|
|
# dependency list. For example, if the package depends on libsomething.a,
|
|
# add $$(libsomething) to $(BUILD_FLAG)'s dependencies.
|
|
$(GIT_WOLFSSL_PATCH): $(src)
|
|
cd "$(SRC)" && patch -N -p1 < $(MAKEFILE_DIR)/include/git-wolfssl.patch
|
|
touch $(GIT_WOLFSSL_PATCH)
|
|
|
|
TOOLS = AR=$(SYSROOT)/bin/$(TARGET)-ar AS=$(SYSROOT)/bin/$(TARGET)-as CC=$(SYSROOT)/bin/$(TARGET)-cc CXX=$(SYSROOT)/bin/$(TARGET)-g++ LD=$(SYSROOT)/bin/$(TARGET)-ld NM=$(SYSROOT)/bin/$(TARGET)-nm OBJCOPY=$(SYSROOT)/bin/$(TARGET)-objcopy OBJDUMP=$(SYSROOT)/bin/$(TARGET)-objdump RANLIB=$(SYSROOT)/bin/$(TARGET)-ranlib READELF=$(SYSROOT)/bin/$(TARGET)-readelf STRIP=$(SYSROOT)/bin/$(TARGET)-strip prefix="$(SYSROOT)"
|
|
|
|
$(BUILD_FLAG): $$(libz) $$(libcurl) $$(libssl) $$(openssl) $$(curl) $(libexpat) $(GIT_WOLFSSL_PATCH)
|
|
# This activates the cross-compiler toolchain by setting/exporting a lot of variables.
|
|
# Without this, builds would default to the system's compilers and libraries.
|
|
$(eval $(call activate_toolchain,$@))
|
|
# The configure step defines what features should be enabled for the program.
|
|
# If available, the --host and --prefix values should always be the values below.
|
|
# Try to only hard-code the flags that are critical to a successful static build.
|
|
# Optional flags should be put in GIT_CONFIG so the user can override them.
|
|
|
|
$(MAKE) -C "$(SRC)" clean
|
|
- $(RM) -rf /tmp/git
|
|
$(MAKE) -C "$(SRC)" V=1 $(TOOLS) \
|
|
NO_REGEX=YesPlease NO_ICONV=YesPlease NO_GETTEXT=YesPlease NO_TCLTK=YesPlease NO_PERL=1 $(SSL_FLAGS) \
|
|
CURL_LDFLAGS="-L/build/sysroot/aarch64-linux-musl/lib -lcurl $(SSL_CURL_FLAGS) -lm -lz" \
|
|
CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(GIT_CONFIG)
|
|
$(MAKE) -C "$(SRC)" $(TOOLS) prefix="$(SYSROOT)" \
|
|
NO_REGEX=YesPlease NO_ICONV=YesPlease NO_GETTEXT=YesPlease NO_TCLTK=YesPlease NO_PERL=1 $(SSL_FLAGS) \
|
|
CURL_LDFLAGS="-L/build/sysroot/aarch64-linux-musl/lib -lcurl $(SSL_CURL_FLAGS) -lm -lz" \
|
|
CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(GIT_CONFIG) install
|
|
$(MAKE) -C "$(SRC)" $(TOOLS) prefix="/" \
|
|
NO_REGEX=YesPlease NO_ICONV=YesPlease NO_GETTEXT=YesPlease NO_TCLTK=YesPlease NO_PERL=1 $(SSL_FLAGS) \
|
|
CURL_LDFLAGS="-L/build/sysroot/aarch64-linux-musl/lib -lcurl $(SSL_CURL_FLAGS) -lm -lz" \
|
|
CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(GIT_CONFIG) DESTDIR=/tmp/git install
|
|
cd /tmp/git && tar czf $(SYSROOT)/bin/git.tar.gz *
|
|
cd "$(SRC)" && patch -R -p1 < $(MAKEFILE_DIR)/include/git-wolfssl.patch
|
|
|
|
SSL_FLAGS :=
|
|
SSL_CURL_FLAGS := -lssl -lcrypto
|
|
ifeq (wolfssl,$(LIB_SSL))
|
|
SSL_FLAGS := USE_WOLFSSL=1 OPENSSL_SHA1=1 OPENSSL_SHA256=1 WOLFSSSLDIR="$(SYSROOT)"
|
|
SSL_CURL_FLAGS := -lwolfssl
|
|
|
|
else ifeq (wolfssl,$(CURL_SSL))
|
|
SSL_CURL_FLAGS := $(SSL_CURL_FLAGS) -lwolfssl
|
|
endif
|
|
|
|
# All programs should add themselves to the ALL_PROGRAMS list.
|
|
ALL_PROGRAMS += $(GIT_PROGRAMS)
|
|
|
|
# Only programs that most users would want should be added to DEFAULT_PROGRAMS.
|
|
DEFAULT_PROGRAMS += $(GIT_PROGRAMS)
|