125c28e83SPiotr Jasiukajtis# 225c28e83SPiotr Jasiukajtis# This file and its contents are supplied under the terms of the 325c28e83SPiotr Jasiukajtis# Common Development and Distribution License ("CDDL"), version 1.0. 425c28e83SPiotr Jasiukajtis# You may only use this file in accordance with the terms of version 525c28e83SPiotr Jasiukajtis# 1.0 of the CDDL. 625c28e83SPiotr Jasiukajtis# 725c28e83SPiotr Jasiukajtis# A full copy of the text of the CDDL should have accompanied this 825c28e83SPiotr Jasiukajtis# source. A copy of the CDDL is also available via the Internet at 925c28e83SPiotr Jasiukajtis# http://www.illumos.org/license/CDDL. 1025c28e83SPiotr Jasiukajtis# 1125c28e83SPiotr Jasiukajtis 1225c28e83SPiotr Jasiukajtis# 1325c28e83SPiotr Jasiukajtis# Copyright 2011 Nexenta Systems, Inc. All rights reserved. 1425c28e83SPiotr Jasiukajtis# 1525c28e83SPiotr Jasiukajtis 1625c28e83SPiotr JasiukajtisLIBMDIR = $(SRC)/lib/libm 1725c28e83SPiotr Jasiukajtis 1825c28e83SPiotr JasiukajtisLIBMSRC = $(LIBMDIR)/common 1925c28e83SPiotr Jasiukajtis 2025c28e83SPiotr JasiukajtisCPP_CMD = $(CC) -E -Xs 2125c28e83SPiotr Jasiukajtis 2225c28e83SPiotr JasiukajtisASSUFFIX_sparc = S 2325c28e83SPiotr JasiukajtisASSUFFIX_i386 = s 2425c28e83SPiotr JasiukajtisASSUFFIX = $(ASSUFFIX_$(MACH)) 2525c28e83SPiotr Jasiukajtis 26*7f11fd00SRichard Lowe# With studio C99MODE of neither enabled nor disabled is "no_lib", whereby we 27*7f11fd00SRichard Lowe# expect C99-the-language, but don't modify the behaviour of library routines. 28*7f11fd00SRichard Lowe# This is VERY IMPORTANT, as -xc99=%all, for instance, would link us with 2925c28e83SPiotr Jasiukajtis# values-xpg6, which would introduce an __xpg6 to our object with the C99 3025c28e83SPiotr Jasiukajtis# flags set, causing us to default C99 libm behaviour on, breaking 3125c28e83SPiotr Jasiukajtis# compatibility. 32*7f11fd00SRichard Lowe# 33*7f11fd00SRichard Lowe# We must then, unfortunately, defeat the GNU compiler _defaulting_ to C99, by 34*7f11fd00SRichard Lowe# in that case setting it back to gnu89, which _also_ accepts C99 syntax as 35*7f11fd00SRichard Lowe# far as is important. 3625c28e83SPiotr JasiukajtisC99MODE = 37*7f11fd00SRichard LoweCFLAGS += -_gcc=-std=gnu89 38*7f11fd00SRichard LoweCFLAGS64 += -_gcc=-std=gnu89 3925c28e83SPiotr Jasiukajtis 401ec68d33SRichard LoweM4FLAGS = -D__STDC__ -DPIC 4125c28e83SPiotr Jasiukajtis 4225c28e83SPiotr JasiukajtisLDBLDIR_sparc = Q 4325c28e83SPiotr JasiukajtisLDBLDIR_i386 = LD 4425c28e83SPiotr JasiukajtisLDBLDIR = $(LDBLDIR_$(MACH)) 4525c28e83SPiotr Jasiukajtis 4625c28e83SPiotr JasiukajtisLM_IL = $(LIBMDIR)/$(TARGET_ARCH)/src/locallibm.il 4725c28e83SPiotr Jasiukajtis 481ec68d33SRichard LoweCFLAGS += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 491ec68d33SRichard LoweCFLAGS64 += $(C_PICFLAGS) $(XSTRCONST) $(LM_IL) 5025c28e83SPiotr Jasiukajtissparc_CFLAGS += -Wa,-xarch=v8plus 5125c28e83SPiotr Jasiukajtis 521ec68d33SRichard LoweCPPFLAGS += -I$(LIBMSRC)/C \ 5325c28e83SPiotr Jasiukajtis -I$(LIBMSRC)/$(LDBLDIR) -I$(LIBMDIR)/$(TARGET_ARCH)/src 5425c28e83SPiotr Jasiukajtis 5525c28e83SPiotr Jasiukajtis# GCC needs __C99FEATURES__ such that the implementations of isunordered, 5625c28e83SPiotr Jasiukajtis# isgreaterequal, islessequal, etc, exist. This is basically equivalent to 5725c28e83SPiotr Jasiukajtis# providing no -xc99 to Studio, in that it gets us the C99 language features, 58*7f11fd00SRichard Lowe# but not values-xpg6, the reason for which is outlined with C99MODE. 5925c28e83SPiotr JasiukajtisCFLAGS += -_gcc=-D__C99FEATURES__ 6025c28e83SPiotr JasiukajtisCFLAGS64 += -_gcc=-D__C99FEATURES__ 6125c28e83SPiotr Jasiukajtis 6225c28e83SPiotr Jasiukajtis# libm depends on integer overflow characteristics 6325c28e83SPiotr JasiukajtisCFLAGS += -_gcc=-fno-strict-overflow 6425c28e83SPiotr JasiukajtisCFLAGS64 += -_gcc=-fno-strict-overflow 6525c28e83SPiotr Jasiukajtis 6625c28e83SPiotr Jasiukajtis$(DYNLIB) := LDLIBS += -lc 6725c28e83SPiotr Jasiukajtis 6825c28e83SPiotr Jasiukajtis$(LINTLIB) := SRCS = $(LIBMSRC)/$(LINTSRC) 6925c28e83SPiotr Jasiukajtis 7025c28e83SPiotr JasiukajtisCLEANFILES += pics/*.s pics/*.S 7125c28e83SPiotr Jasiukajtis 7225c28e83SPiotr JasiukajtisFPDEF_amd64 = -DARCH_amd64 7325c28e83SPiotr JasiukajtisFPDEF_sparc = -DCG89 -DARCH_v8plus -DFPADD_TRAPS_INCOMPLETE_ON_NAN 7425c28e83SPiotr JasiukajtisFPDEF_sparcv9 = -DARCH_v9 -DFPADD_TRAPS_INCOMPLETE_ON_NAN 7525c28e83SPiotr JasiukajtisFPDEF = $(FPDEF_$(TARGET_ARCH)) 7625c28e83SPiotr Jasiukajtis 7725c28e83SPiotr JasiukajtisASFLAGS = -P -D_ASM $(FPDEF) 7825c28e83SPiotr Jasiukajtis 7925c28e83SPiotr JasiukajtisXARCH_sparc = v8plus 8025c28e83SPiotr JasiukajtisXARCH_sparcv9 = v9 8125c28e83SPiotr JasiukajtisXARCH_i386 = f80387 8225c28e83SPiotr JasiukajtisXARCH_amd64 = amd64 8325c28e83SPiotr JasiukajtisXARCH = $(XARCH_$(TARGET_ARCH)) 8425c28e83SPiotr Jasiukajtis 8525c28e83SPiotr JasiukajtisASOPT_sparc = -xarch=$(XARCH) $(AS_PICFLAGS) 8625c28e83SPiotr JasiukajtisASOPT_sparcv9 = -xarch=$(XARCH) $(AS_PICFLAGS) 8725c28e83SPiotr JasiukajtisASOPT_i386 = 8825c28e83SPiotr JasiukajtisASOPT_amd64 = -xarch=$(XARCH) $(AS_PICFLAGS) 8925c28e83SPiotr JasiukajtisASOPT = $(ASOPT_$(TARGET_ARCH)) 9025c28e83SPiotr Jasiukajtis 9125c28e83SPiotr JasiukajtisASFLAGS += $(ASOPT) 9225c28e83SPiotr Jasiukajtis 9325c28e83SPiotr JasiukajtisCPPFLAGS_sparc = -DFPADD_TRAPS_INCOMPLETE_ON_NAN \ 9425c28e83SPiotr Jasiukajtis -DFDTOS_TRAPS_INCOMPLETE_IN_FNS_MODE 9525c28e83SPiotr Jasiukajtis 9625c28e83SPiotr JasiukajtisCPPFLAGS += $(CPPFLAGS_$(MACH)) 9725c28e83SPiotr JasiukajtisASFLAGS += $(CPPFLAGS) 98