cosmopolitan/libc/crt/crt.mk
Justine Tunney 9f68d6eee9 Fix link order in cosmopolitan.a
It turned out that the linker was doing the wrong with the amalgamation
library concerning weak stubs. A regression test has been added and new
binaries have been uploaded to https://justine.lol/cosmopolitan/

Ideally this should be fixed by building a tool that turns multiple .a
files into a single .a file with deduplication. As a workaround for now
the cosmopolitan.a build is restructured to not include LIBC_STUBS which
meant technical debt needed to be paid off where non-stub interfaces
were moved to LIBC_INTRIN and LIBC_NEXGEN32E.

Thank @PerfectProductions in #31 for the report!
2021-01-16 12:05:41 -08:00

30 lines
1 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
#
# SYNOPSIS
#
# Cosmopolitan C Runtime.
#
# OVERVIEW
#
# This is a special object library defining the Cosmopolitan SysV
# userspace runtime entrypoint, i.e. _start(). The $(CRT) argument
# should come first in the link order when building ELF binaries;
# becauseo it's the lowest level function; it wraps main(); and it
# decides which runtime support libraries get schlepped into builds.
#
# Please note that, when building an αcτµαlly pδrταblε εxεcµταblε,
# lower-level entrypoints exist and as such, $(CRT) will generally
# come second in link-order after $(APE).
PKGS += CRT
CRT_ARTIFACTS += CRT
CRT = o/$(MODE)/libc/crt/crt.o
CRT_FILES = libc/crt/crt.S
CRT_SRCS = libc/crt/crt.S
CRT_OBJS = o/$(MODE)/libc/crt/crt.o
$(CRT_OBJS): $(BUILD_FILES) libc/crt/crt.mk
.PHONY: o/$(MODE)/libc/crt
o/$(MODE)/libc/crt: $(CRT)