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# 15 16LIBMDIR = $(SRC)/lib/libm 17 18LIBMSRC = $(LIBMDIR)/common 19 20CPP_CMD = $(CC) -E -Xs 21 22ASSUFFIX_sparc = S 23ASSUFFIX_i386 = s 24ASSUFFIX = $(ASSUFFIX_$(MACH)) 25 26# C99MODE of neither enabled nor disabled is "no_lib", whereby we expect 27# C99-the-language, but don't modify the behaviour of library routines. This 28# is VERY IMPORTANT, as -xc99=%all, for instance, would link us with 29# values-xpg6, which would introduce an __xpg6 to our object with the C99 30# flags set, causing us to default C99 libm behaviour on, breaking 31# compatibility. 32C99MODE = 33 34M4FLAGS = -D__STDC__ -DPIC 35 36LDBLDIR_sparc = Q 37LDBLDIR_i386 = LD 38LDBLDIR = $(LDBLDIR_$(MACH)) 39 40LM_IL = $(LIBMDIR)/$(TARGET_ARCH)/src/locallibm.il 41 42CFLAGS += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 43CFLAGS64 += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 44sparc_CFLAGS += -Wa,-xarch=v8plus 45 46CPPFLAGS += -I$(LIBMSRC)/C \ 47 -I$(LIBMSRC)/$(LDBLDIR) -I$(LIBMDIR)/$(TARGET_ARCH)/src 48 49# GCC needs __C99FEATURES__ such that the implementations of isunordered, 50# isgreaterequal, islessequal, etc, exist. This is basically equivalent to 51# providing no -xc99 to Studio, in that it gets us the C99 language features, 52# but not values-xpg6, the reason for which is outline with C99MODE. 53CFLAGS += -_gcc=-D__C99FEATURES__ 54CFLAGS64 += -_gcc=-D__C99FEATURES__ 55 56# libm depends on integer overflow characteristics 57CFLAGS += -_gcc=-fno-strict-overflow 58CFLAGS64 += -_gcc=-fno-strict-overflow 59 60$(DYNLIB) := LDLIBS += -lc 61 62$(LINTLIB) := SRCS = $(LIBMSRC)/$(LINTSRC) 63 64CLEANFILES += pics/*.s pics/*.S 65 66FPDEF_amd64 = -DARCH_amd64 67FPDEF_sparc = -DCG89 -DARCH_v8plus -DFPADD_TRAPS_INCOMPLETE_ON_NAN 68FPDEF_sparcv9 = -DARCH_v9 -DFPADD_TRAPS_INCOMPLETE_ON_NAN 69FPDEF = $(FPDEF_$(TARGET_ARCH)) 70 71ASFLAGS = -P -D_ASM $(FPDEF) 72 73XARCH_sparc = v8plus 74XARCH_sparcv9 = v9 75XARCH_i386 = f80387 76XARCH_amd64 = amd64 77XARCH = $(XARCH_$(TARGET_ARCH)) 78 79ASOPT_sparc = -xarch=$(XARCH) $(AS_PICFLAGS) 80ASOPT_sparcv9 = -xarch=$(XARCH) $(AS_PICFLAGS) 81ASOPT_i386 = 82ASOPT_amd64 = -xarch=$(XARCH) $(AS_PICFLAGS) 83ASOPT = $(ASOPT_$(TARGET_ARCH)) 84 85ASFLAGS += $(ASOPT) 86 87CPPFLAGS_sparc = -DFPADD_TRAPS_INCOMPLETE_ON_NAN \ 88 -DFDTOS_TRAPS_INCOMPLETE_IN_FNS_MODE 89 90CPPFLAGS += $(CPPFLAGS_$(MACH)) 91ASFLAGS += $(CPPFLAGS) 92