1# 2# This file and its contents are supplied under the terms of the 3# Common Development and Distribution License ("CDDL"), version 1.0. 4# You may only use this file in accordance with the terms of version 5# 1.0 of the CDDL. 6# 7# A full copy of the text of the CDDL should have accompanied this 8# source. A copy of the CDDL is also available via the Internet at 9# http://www.illumos.org/license/CDDL. 10# 11 12# 13# Copyright 2011 Nexenta Systems, Inc. All rights reserved. 14# Copyright (c) 2019, Joyent, Inc. 15# 16 17LIBMDIR = $(SRC)/lib/libm 18 19LIBMSRC = $(LIBMDIR)/common 20 21CPP_CMD = $(CC) -E -Xs 22 23ASSUFFIX_sparc = S 24ASSUFFIX_i386 = s 25ASSUFFIX = $(ASSUFFIX_$(MACH)) 26 27# With studio CSTD of neither enabled nor disabled is "no_lib", whereby we 28# expect C99-the-language, but don't modify the behaviour of library routines. 29# This is VERY IMPORTANT, as $(CSTD_GNU99), for instance, would link us with 30# values-xpg6, which would introduce an __xpg6 to our object with the C99 31# flags set, causing us to default C99 libm behaviour on, breaking 32# compatibility. 33# 34# We must then, unfortunately, defeat the GNU compiler _defaulting_ to C99, by 35# in that case setting it back to gnu89, which _also_ accepts C99 syntax as 36# far as is important. 37CSTD = 38CFLAGS += -_gcc=-std=gnu89 39CFLAGS64 += -_gcc=-std=gnu89 40 41M4FLAGS = -D__STDC__ -DPIC 42 43LDBLDIR_sparc = Q 44LDBLDIR_i386 = LD 45LDBLDIR = $(LDBLDIR_$(MACH)) 46 47CFLAGS += $(C_PICFLAGS) $(XSTRCONST) 48CFLAGS64 += $(C_PICFLAGS) $(XSTRCONST) 49sparc_CFLAGS += -Wa,-xarch=v8plus 50 51CPPFLAGS += -I$(LIBMSRC)/C \ 52 -I$(LIBMSRC)/$(LDBLDIR) -I$(LIBMDIR)/$(TARGET_ARCH)/src 53$(RELEASE_BUILD)CPPFLAGS += -DNDEBUG 54 55# GCC needs __C99FEATURES__ such that the implementations of isunordered, 56# isgreaterequal, islessequal, etc, exist. This is basically equivalent to 57# providing no -xc99 to Studio, in that it gets us the C99 language features, 58# but not values-xpg6, the reason for which is outlined with CSTD. 59CFLAGS += -_gcc=-D__C99FEATURES__ 60CFLAGS64 += -_gcc=-D__C99FEATURES__ 61 62# libm depends on integer overflow characteristics 63CFLAGS += -_gcc=-fno-strict-overflow 64CFLAGS64 += -_gcc=-fno-strict-overflow 65 66# sparse currently has no _Complex support 67CFLAGS += -_smatch=off 68CFLAGS64 += -_smatch=off 69 70$(DYNLIB) := LDLIBS += -lc 71 72 73CLEANFILES += pics/*.s pics/*.S 74 75FPDEF_amd64 = -DARCH_amd64 76FPDEF_sparc = -DCG89 -DARCH_v8plus -DFPADD_TRAPS_INCOMPLETE_ON_NAN 77FPDEF_sparcv9 = -DARCH_v9 -DFPADD_TRAPS_INCOMPLETE_ON_NAN 78FPDEF = $(FPDEF_$(TARGET_ARCH)) 79 80ASFLAGS = -P -D_ASM $(FPDEF) 81 82XARCH_sparc = v8plus 83XARCH_sparcv9 = v9 84XARCH_i386 = f80387 85XARCH_amd64 = amd64 86XARCH = $(XARCH_$(TARGET_ARCH)) 87 88ASOPT_sparc = -xarch=$(XARCH) $(AS_PICFLAGS) 89ASOPT_sparcv9 = -xarch=$(XARCH) $(AS_PICFLAGS) 90ASOPT_i386 = 91ASOPT_amd64 = -xarch=$(XARCH) $(AS_PICFLAGS) 92ASOPT = $(ASOPT_$(TARGET_ARCH)) 93 94ASFLAGS += $(ASOPT) 95 96CPPFLAGS_sparc = -DFPADD_TRAPS_INCOMPLETE_ON_NAN \ 97 -DFDTOS_TRAPS_INCOMPLETE_IN_FNS_MODE 98 99CPPFLAGS += $(CPPFLAGS_$(MACH)) 100ASFLAGS += $(CPPFLAGS) 101