1dc0093f4Seschrock#
2dc0093f4Seschrock# CDDL HEADER START
3dc0093f4Seschrock#
4dc0093f4Seschrock# The contents of this file are subject to the terms of the
5dc0093f4Seschrock# Common Development and Distribution License (the "License").
6dc0093f4Seschrock# You may not use this file except in compliance with the License.
7dc0093f4Seschrock#
8dc0093f4Seschrock# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9dc0093f4Seschrock# or http://www.opensolaris.org/os/licensing.
10dc0093f4Seschrock# See the License for the specific language governing permissions
11dc0093f4Seschrock# and limitations under the License.
12dc0093f4Seschrock#
13dc0093f4Seschrock# When distributing Covered Code, include this CDDL HEADER in each
14dc0093f4Seschrock# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15dc0093f4Seschrock# If applicable, add the following below this CDDL HEADER, with the
16dc0093f4Seschrock# fields enclosed by brackets "[]" replaced with your own identifying
17dc0093f4Seschrock# information: Portions Copyright [yyyy] [name of copyright owner]
18dc0093f4Seschrock#
19dc0093f4Seschrock# CDDL HEADER END
20dc0093f4Seschrock#
21dc0093f4Seschrock#
2224da5b34Srie# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23dc0093f4Seschrock# Use is subject to license terms.
24f7184619SJoshua M. Clulow# Copyright 2012 Joshua M. Clulow <josh@sysmgr.org>
25f7184619SJoshua M. Clulow# Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
261f154020SRobert Mustacchi# Copyright (c) 2018, Joyent, Inc.
27dc0093f4Seschrock#
28dc0093f4Seschrock
29dc0093f4Seschrock#
30dc0093f4Seschrock# The build process for libdisasm is sightly different from that used by other
31dc0093f4Seschrock# libraries, because libdisasm must be built in two flavors - as a standalone
32dc0093f4Seschrock# for use by kmdb and as a normal library.  We use $(CURTYPE) to indicate the
33dc0093f4Seschrock# current flavor being built.
34dc0093f4Seschrock#
35dc0093f4Seschrock
36dc0093f4SeschrockLIBRARY=	libdisasm.a
37dc0093f4SeschrockSTANDLIBRARY=	libstanddisasm.so
38dc0093f4SeschrockVERS=		.1
39dc0093f4Seschrock
40dc0093f4Seschrock# By default, we build the shared library.  Construction of the standalone
41dc0093f4Seschrock# is specifically requested by architecture-specific Makefiles.
42dc0093f4SeschrockTYPES=		library
43dc0093f4SeschrockCURTYPE=	library
44dc0093f4Seschrock
45dc0093f4SeschrockCOMDIR=		$(SRC)/lib/libdisasm/common
46dc0093f4Seschrock
47dc0093f4Seschrock#
48f7184619SJoshua M. Clulow# Architecture-independent files
49dc0093f4Seschrock#
50f7184619SJoshua M. ClulowSRCS_common=		$(COMDIR)/libdisasm.c
51f7184619SJoshua M. ClulowOBJECTS_common=		libdisasm.o
52dc0093f4Seschrock
53dc0093f4Seschrock#
54f7184619SJoshua M. Clulow# Architecture-dependent disassembly files
55dc0093f4Seschrock#
56f7184619SJoshua M. ClulowSRCS_i386=		$(COMDIR)/dis_i386.c \
57f7184619SJoshua M. Clulow			$(SRC)/common/dis/i386/dis_tables.c
58f7184619SJoshua M. ClulowSRCS_sparc=		$(COMDIR)/dis_sparc.c \
59f7184619SJoshua M. Clulow			$(COMDIR)/dis_sparc_fmt.c \
60f7184619SJoshua M. Clulow			$(COMDIR)/dis_sparc_instr.c
610472e113SJosef 'Jeff' SipekSRCS_s390x=		$(COMDIR)/dis_s390x.c
621f154020SRobert MustacchiSRCS_riscv=		$(COMDIR)/dis_riscv.c
63dc0093f4Seschrock
64f7184619SJoshua M. ClulowOBJECTS_i386=		dis_i386.o \
65f7184619SJoshua M. Clulow			dis_tables.o
66f7184619SJoshua M. ClulowOBJECTS_sparc=		dis_sparc.o \
67f7184619SJoshua M. Clulow			dis_sparc_fmt.o \
68f7184619SJoshua M. Clulow			dis_sparc_instr.o
690472e113SJosef 'Jeff' SipekOBJECTS_s390x=		dis_s390x.o
701f154020SRobert MustacchiOBJECTS_riscv=		dis_riscv.o
71dc0093f4Seschrock
72f7184619SJoshua M. Clulow#
73f7184619SJoshua M. Clulow# We build the regular shared library with support for all architectures.
74f7184619SJoshua M. Clulow# The standalone version should only contain code for the native
75f7184619SJoshua M. Clulow# architecture to reduce the memory footprint of kmdb.
76f7184619SJoshua M. Clulow#
77f7184619SJoshua M. ClulowOBJECTS_library=	$(OBJECTS_common) \
78f7184619SJoshua M. Clulow			$(OBJECTS_i386) \
790472e113SJosef 'Jeff' Sipek			$(OBJECTS_sparc) \
801f154020SRobert Mustacchi			$(OBJECTS_s390x) \
811f154020SRobert Mustacchi			$(OBJECTS_riscv)
82f7184619SJoshua M. ClulowOBJECTS_standalone=	$(OBJECTS_common) \
83f7184619SJoshua M. Clulow			$(OBJECTS_$(MACH))
84f7184619SJoshua M. ClulowOBJECTS=		$(OBJECTS_$(CURTYPE))
85dc0093f4Seschrock
86dc0093f4Seschrockinclude $(SRC)/lib/Makefile.lib
87dc0093f4Seschrock
88f7184619SJoshua M. ClulowSRCS_library=		$(SRCS_common) \
89f7184619SJoshua M. Clulow			$(SRCS_i386) \
900472e113SJosef 'Jeff' Sipek			$(SRCS_sparc) \
911f154020SRobert Mustacchi			$(SRCS_s390x) \
921f154020SRobert Mustacchi			$(SRCS_riscv)
93f7184619SJoshua M. ClulowSRCS_standalone=	$(SRCS_common) \
94f7184619SJoshua M. Clulow			$(SRCS_$(MACH))
95f7184619SJoshua M. ClulowSRCS=			$(SRCS_$(CURTYPE))
96dc0093f4Seschrock
97dc0093f4Seschrock#
98dc0093f4Seschrock# Used to verify that the standalone doesn't have any unexpected external
99dc0093f4Seschrock# dependencies.
100dc0093f4Seschrock#
101dc0093f4SeschrockLINKTEST_OBJ = objs/linktest_stand.o
102dc0093f4Seschrock
103dc0093f4SeschrockCLOBBERFILES_standalone = $(LINKTEST_OBJ)
104dc0093f4SeschrockCLOBBERFILES += $(CLOBBERFILES_$(CURTYPE))
105dc0093f4Seschrock
106dc0093f4SeschrockLIBS_standalone	= $(STANDLIBRARY)
107241c90a0SRichard LoweLIBS_library = $(DYNLIB)
108dc0093f4SeschrockLIBS = $(LIBS_$(CURTYPE))
109dc0093f4Seschrock
110f808c858SrafMAPFILES =	$(COMDIR)/mapfile-vers
111dc0093f4Seschrock
112dc0093f4SeschrockLDLIBS +=	-lc
113dc0093f4Seschrock
11424da5b34SrieLDFLAGS_standalone = $(ZNOVERSION) $(BREDUCE) -dy -r
115dc0093f4SeschrockLDFLAGS = $(LDFLAGS_$(CURTYPE))
116dc0093f4Seschrock
117dc0093f4SeschrockASFLAGS_standalone = -DDIS_STANDALONE
118dc0093f4SeschrockASFLAGS_library =
119*5d9d9091SRichard LoweASFLAGS += $(ASFLAGS_$(CURTYPE)) -D_ASM
120dc0093f4Seschrock
1217014882cSRichard LoweCERRWARN +=	-_gcc=-Wno-parentheses
122d3b5f563SJohn LevonCERRWARN +=	$(CNOWARN_UNINIT)
1237014882cSRichard Lowe
12405ede3dbSJohn Levon# not linted
12505ede3dbSJohn LevonSMATCH=off
12605ede3dbSJohn Levon
1275a0af816SRobert Mustacchi#
1285a0af816SRobert Mustacchi# The standalone environment currently does not support the stack
1295a0af816SRobert Mustacchi# protector.
1305a0af816SRobert Mustacchi#
1315a0af816SRobert MustacchiSTACKPROTECT = none
1325a0af816SRobert Mustacchi
133dc0093f4Seschrock# We want the thread-specific errno in the library, but we don't want it in
134dc0093f4Seschrock# the standalone.  $(DTS_ERRNO) is designed to add -D_TS_ERRNO to $(CPPFLAGS),
135dc0093f4Seschrock# in order to enable this feature.  Conveniently, -D_REENTRANT does the same
136dc0093f4Seschrock# thing.  As such, we null out $(DTS_ERRNO) to ensure that the standalone
137dc0093f4Seschrock# doesn't get it.
138dc0093f4SeschrockDTS_ERRNO=
139dc0093f4Seschrock
140f7184619SJoshua M. ClulowCPPFLAGS_standalone = -DDIS_STANDALONE -I$(SRC)/cmd/mdb/common
141dc0093f4SeschrockCPPFLAGS_library = -D_REENTRANT
142dc0093f4SeschrockCPPFLAGS +=	-I$(COMDIR) $(CPPFLAGS_$(CURTYPE))
143dc0093f4Seschrock
144f7184619SJoshua M. Clulow# For the x86 disassembler we have to include sources from usr/src/common
145f7184619SJoshua M. ClulowCPPFLAGS += -I$(SRC)/common/dis/i386 -DDIS_TEXT
146dc0093f4Seschrock
147dc0093f4SeschrockCFLAGS_standalone = $(STAND_FLAGS_32)
148dc0093f4SeschrockCFLAGS_common =
149dc0093f4SeschrockCFLAGS += $(CFLAGS_$(CURTYPE)) $(CFLAGS_common)
150dc0093f4Seschrock
151dc0093f4SeschrockCFLAGS64_standalone = $(STAND_FLAGS_64)
152dc0093f4SeschrockCFLAGS64 += $(CCVERBOSE) $(CFLAGS64_$(CURTYPE)) $(CFLAGS64_common)
153dc0093f4Seschrock
154bd0ce624SYuri PankovCSTD = $(CSTD_GNU99)
155929eec20SJosef 'Jeff' Sipek
156dc0093f4SeschrockDYNFLAGS +=     $(ZINTERPOSE)
157dc0093f4Seschrock
158dc0093f4Seschrock.KEEP_STATE:
159