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 16 LIBMDIR = $(SRC)/lib/libm 17 18 LIBMSRC = $(LIBMDIR)/common 19 20 CPP_CMD = $(CC) -E -Xs 21 22 ASSUFFIX_sparc = S 23 ASSUFFIX_i386 = s 24 ASSUFFIX = $(ASSUFFIX_$(MACH)) 25 26 # With studio C99MODE of neither enabled nor disabled is "no_lib", whereby we 27 # expect C99-the-language, but don't modify the behaviour of library routines. 28 # This 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. 32 # 33 # We must then, unfortunately, defeat the GNU compiler _defaulting_ to C99, by 34 # in that case setting it back to gnu89, which _also_ accepts C99 syntax as 35 # far as is important. 36 C99MODE = 37 CFLAGS += -_gcc=-std=gnu89 38 CFLAGS64 += -_gcc=-std=gnu89 39 40 M4FLAGS = -D__STDC__ -DPIC 41 42 LDBLDIR_sparc = Q 43 LDBLDIR_i386 = LD 44 LDBLDIR = $(LDBLDIR_$(MACH)) 45 46 LM_IL = $(LIBMDIR)/$(TARGET_ARCH)/src/locallibm.il 47 48 CFLAGS += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 49 CFLAGS64 += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 50 sparc_CFLAGS += -Wa,-xarch=v8plus 51 52 CPPFLAGS += -I$(LIBMSRC)/C \ 53 -I$(LIBMSRC)/$(LDBLDIR) -I$(LIBMDIR)/$(TARGET_ARCH)/src 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 C99MODE. 59 CFLAGS += -_gcc=-D__C99FEATURES__ 60 CFLAGS64 += -_gcc=-D__C99FEATURES__ 61 62 # libm depends on integer overflow characteristics 63 CFLAGS += -_gcc=-fno-strict-overflow 64 CFLAGS64 += -_gcc=-fno-strict-overflow 65 66 $(DYNLIB) := LDLIBS += -lc 67 68 $(LINTLIB) := SRCS = $(LIBMSRC)/$(LINTSRC) 69 70 CLEANFILES += pics/*.s pics/*.S 71 72 FPDEF_amd64 = -DARCH_amd64 73 FPDEF_sparc = -DCG89 -DARCH_v8plus -DFPADD_TRAPS_INCOMPLETE_ON_NAN 74 FPDEF_sparcv9 = -DARCH_v9 -DFPADD_TRAPS_INCOMPLETE_ON_NAN 75 FPDEF = $(FPDEF_$(TARGET_ARCH)) 76 77 ASFLAGS = -P -D_ASM $(FPDEF) 78 79 XARCH_sparc = v8plus 80 XARCH_sparcv9 = v9 81 XARCH_i386 = f80387 82 XARCH_amd64 = amd64 83 XARCH = $(XARCH_$(TARGET_ARCH)) 84 85 ASOPT_sparc = -xarch=$(XARCH) $(AS_PICFLAGS) 86 ASOPT_sparcv9 = -xarch=$(XARCH) $(AS_PICFLAGS) 87 ASOPT_i386 = 88 ASOPT_amd64 = -xarch=$(XARCH) $(AS_PICFLAGS) 89 ASOPT = $(ASOPT_$(TARGET_ARCH)) 90 91 ASFLAGS += $(ASOPT) 92 93 CPPFLAGS_sparc = -DFPADD_TRAPS_INCOMPLETE_ON_NAN \ 94 -DFDTOS_TRAPS_INCOMPLETE_IN_FNS_MODE 95 96 CPPFLAGS += $(CPPFLAGS_$(MACH)) 97 ASFLAGS += $(CPPFLAGS)