mailing list of musl libc
 help / color / mirror / code / Atom feed
d7e9f22b754cb7acf7f3010a582dcee9a2e4f36e blob 6910 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
 

OUTPUT = $(CURDIR)/output

LLVM_SRCDIR = LLVM_SRCDIR_not_set
MUSL_SRCDIR = MUSL_SRCDIR_not_set

TARGETS = \
	aarch64-linux-musleabi \
	armv7-linux-musleabi \
	armv7-linux-musleabihf \
	armv7m-linux-musleabi \
	armv7m-linux-musleabihf \
	x86_64-linux-musl \
	# end

DEFAULT_TARGET = x86_64-linux-musl

TOOLS = \
	llvm-ar \
	llvm-nm \
	llvm-objcopy \
	llvm-objdump \
	llvm-ranlib \
	llvm-size \
	llvm-strip \
	# end

-include config.mak

# TODO: determine LLVM_TARGETS_TO_BUILD from TARGETS?
FULL_LLVM_CONFIG = $(LLVM_CONFIG) \
	-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
	-DCLANG_DEFAULT_LINKER=lld \
	-DCLANG_DEFAULT_OBJCOPY=llvm-objcopy \
	-DCLANG_DEFAULT_RTLIB=compiler-rt \
	-DCMAKE_BUILD_TYPE=MinSizeRel \
	-DCMAKE_INSTALL_PREFIX=/clang \
	-DDEFAULT_SYSROOT=../../TARGET \
	-DLLVM_BUILTIN_TARGETS='$(subst $(subst ,, ),;,$(TARGETS))' \
	-DLLVM_DEFAULT_TARGET_TRIPLE=$(DEFAULT_TARGET) \
	-DLLVM_DISTRIBUTION_COMPONENTS='clang;lld;LTO;$(subst $(subst ,, ),;,$(TOOLS))' \
	-DLLVM_ENABLE_PROJECTS='clang;lld' \
	-DLLVM_ENABLE_RUNTIMES='compiler-rt;libcxx;libcxxabi;libunwind' \
	-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \
	-DLLVM_RUNTIME_TARGETS='$(subst $(subst ,, ),;,$(TARGETS))' \
	-DLLVM_TARGETS_TO_BUILD='AArch64;ARM;Mips;PowerPC;X86' \
	$(foreach t,$(TARGETS),-DBUILTINS_$(t)_CMAKE_SYSROOT=$(CURDIR)/obj_sysroot/$(t)) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_CMAKE_CXX_FLAGS='-L$(CURDIR)/obj_musl/$(t)/lib -B$(CURDIR)/obj_musl/$(t)/lib -Qunused-arguments') \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_CMAKE_C_FLAGS='-L$(CURDIR)/obj_musl/$(t)/lib -B$(CURDIR)/obj_musl/$(t)/lib -Qunused-arguments') \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_CMAKE_SYSROOT=$(CURDIR)/obj_sysroot/$(t)) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_COMPILER_RT_BUILD_LIBFUZZER=OFF) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_COMPILER_RT_BUILD_SANITIZERS=OFF) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_COMPILER_RT_BUILD_XRAY=OFF) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_LIBCXXABI_USE_COMPILER_RT=ON) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_LIBCXXABI_USE_LLVM_UNWINDER=ON) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_LIBCXX_HAS_MUSL_LIBC=ON) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_LIBCXX_USE_COMPILER_RT=ON) \
	$(foreach t,$(TARGETS),-DRUNTIMES_$(t)_LIBUNWIND_USE_COMPILER_RT=ON) \
	# end

all: llvm musl

install: install-llvm install-musl install-kernel-headers install-configs install-symlinks

llvm: | obj_llvm/.lc_built_3
musl: | $(foreach t,$(TARGETS),obj_musl/$(t)/.lc_built)
install-musl: $(foreach t,$(TARGETS),install-musl_$(t))
install-kernel-headers: $(foreach t,$(TARGETS),install-kernel-headers_$(t))
install-configs: $(foreach t,$(TARGETS),install-configs_$(t))
install-symlinks: $(foreach t,$(TARGETS),install-symlinks_$(t))

.PHONY: all llvm musl install-llvm install-musl install-kernel-headers install-configs install-symlinks clean

src_llvm: | $(LLVM_SRCDIR)
	ln -sf $(LLVM_SRCDIR) $@

src_musl: | $(MUSL_SRCDIR)
	ln -sf $(MUSL_SRCDIR) $@

src_kernel_headers: | $(LINUX_SRCDIR)
	ln -sf "$(LINUX_SRCDIR)" $@

%/:
	mkdir -p $@

obj_llvm/.lc_configured: | obj_llvm/ src_llvm
	cd obj_llvm && cmake -G "Unix Makefiles" $(FULL_LLVM_CONFIG) ../src_llvm/llvm
	touch $@

obj_llvm/.lc_built_1: | obj_llvm/.lc_configured
	cd obj_llvm && $(MAKE) distribution
	touch $@

obj_musl/%/.lc_configured: | obj_musl/%/ src_musl obj_llvm/.lc_built_1
	cd obj_musl/$* && ../../src_musl/configure \
		--prefix= \
		--target=$* \
		--disable-wrapper \
		LIBCC=../../obj_llvm/lib/clang/$(LLVM_VER)/lib/$*/libclang_rt.builtins.a \
		CC="../../obj_llvm/bin/clang --target=$*" \
		$(MUSL_CONFIG)
	touch $@

obj_sysroot/%/.lc_headers: | obj_sysroot/ obj_musl/%/.lc_configured
	cd obj_musl/$* && $(MAKE) DESTDIR=$(CURDIR)/obj_sysroot/$* install-headers
	touch $@

obj_llvm/.lc_built_2: | $(foreach t,$(TARGETS),obj_sysroot/$(t)/.lc_headers)
	cd obj_llvm && $(MAKE) builtins
	touch $@

obj_musl/%/.lc_built: | obj_musl/%/.lc_configured obj_llvm/.lc_built_2
	cd obj_musl/$* && $(MAKE) AR=../../obj_llvm/bin/llvm-ar \
				  RANLIB=../../obj_llvm/bin/llvm-ranlib
	touch $@

obj_sysroot/%/.lc_crt_workaround:
	# Some configure tests for llvm runtimes fail without crtbegin and
	# crtend files in the sysroot. The runtimes build generates these files
	# leading to a chicken-egg problem.
	mkdir -p obj_sysroot/$*/lib
	cd obj_sysroot/$*/lib && touch crtbeginT.o crtbeginS.o crtbegin.o crtend.o crtendS.o
	touch $@

obj_kernel_headers/%/.lc_built: | src_kernel_headers
	mkdir -p $(CURDIR)/obj_kernel_headers/$*/staged
	cd src_kernel_headers && $(MAKE) ARCH=$(call fn_linux_arch,$*) O=$(CURDIR)/obj_kernel_headers/$* INSTALL_HDR_PATH=$(CURDIR)/obj_kernel_headers/$*/staged headers_install
	find obj_kernel_headers/$*/staged/include '(' -name .install -o -name ..install.cmd ')' -exec rm {} +
	touch $@

obj_sysroot/%/.lc_linux_headers: | obj_kernel_headers/%/.lc_built
	mkdir -p obj_sysroot/$*/include
	cp -R obj_kernel_headers/$*/staged/include/* obj_sysroot/$*/include

obj_llvm/.lc_built_3: | $(foreach t,$(TARGETS),obj_musl/$(t)/.lc_built \
					       obj_sysroot/$(t)/.lc_crt_workaround \
					       obj_sysroot/$(t)/.lc_linux_headers)
	cd obj_llvm && $(MAKE) runtimes
	touch $@

install-llvm: | obj_llvm/.lc_built_3
	# -j1 because there's a broken dependency in the llvm build somewhere
	#  which often results in missing c++ libraries for some targets
	cd obj_llvm && $(MAKE) -j1 DESTDIR=$(DESTDIR)$(OUTPUT) install-distribution install-builtins install-runtimes

install-musl_%: | obj_musl/%/.lc_built
	cd obj_musl/$* && $(MAKE) $(MUSL_VARS) DESTDIR=$(DESTDIR)$(OUTPUT)/$* install

install-kernel-headers_%: | obj_kernel_headers/%/.lc_built
	mkdir -p $(DESTDIR)$(OUTPUT)/$*/include
	cp -R obj_kernel_headers/$*/staged/include/* $(DESTDIR)$(OUTPUT)/$*/include

install-configs_%: | $(DESDIR)$(OUTPUT)/clang/bin/
	echo "--target=$*" > $(DESTDIR)$(OUTPUT)/clang/bin/$*-clang.cfg
	echo "--target=$* -lc++abi -lunwind" > $(DESTDIR)$(OUTPUT)/clang/bin/$*-clang++.cfg

install-symlinks_%: | $(DESTDIR)$(OUTPUT)/bin/
	cd $(DESTDIR)$(OUTPUT)/bin && ln -sf ../clang/bin/clang $*-clang
	cd $(DESTDIR)$(OUTPUT)/bin && ln -sf ../clang/bin/clang++ $*-clang++
	cd $(DESTDIR)$(OUTPUT)/bin && ln -sf ../clang/bin/clang-cpp $*-clang-cpp
	cd $(DESTDIR)$(OUTPUT)/bin && ln -sf ../clang/bin/ld.lld $*-ld
	$(foreach t,$(TOOLS),cd $(DESTDIR)$(OUTPUT)/bin && ln -sf ../clang/bin/$(t) $*-$(subst llvm-,,$(t);))

clean:
	rm -rf src_* obj_*

# $(call fn_linux_arch,target-triple)
#     Determine linux architecture from target triple
ifeq ($(LINUX_SRCDIR),)
$(error LINUX_SRCDIR is required for llvm libc++ build)
endif
LINUX_ARCH_LIST := $(sort $(notdir $(wildcard $(LINUX_SRCDIR)/arch/*)))
fn_target_arch = $(firstword $(subst -, ,$(1)))
fn_target_arch_mangled = $(patsubst i%86,x86,$(patsubst aarch64%,arm64%,$(call fn_target_arch,$(1))))
fn_linux_arch = $(lastword $(foreach a,$(LINUX_ARCH_LIST),$(if $(filter $(a)%,$(call fn_target_arch_mangled,$(1))),$(a))))

.SECONDARY:
debug log:

solving d7e9f22 ...
found d7e9f22 in https://inbox.vuxu.org/musl/CAEg67G=3RVgfYKVjaAiCfGxGeB+TxQ3A6u=XFmuWYhsKvpRAPQ@mail.gmail.com/

applying [1/1] https://inbox.vuxu.org/musl/CAEg67G=3RVgfYKVjaAiCfGxGeB+TxQ3A6u=XFmuWYhsKvpRAPQ@mail.gmail.com/
diff --git a/litecross/Makefile.clang b/litecross/Makefile.clang
new file mode 100644
index 0000000..d7e9f22

Checking patch litecross/Makefile.clang...
Applied patch litecross/Makefile.clang cleanly.

index at:
100644 d7e9f22b754cb7acf7f3010a582dcee9a2e4f36e	litecross/Makefile.clang

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).