src/share/tools/hsdis/Makefile

Tue, 08 Aug 2017 15:57:29 +0800

author
aoqi
date
Tue, 08 Aug 2017 15:57:29 +0800
changeset 6876
710a3c8b516e
parent 6456
c9f0adfb4a8b
parent 0
f90c822e73f8
child 6877
25e95bb91f45
permissions
-rw-r--r--

merge

aoqi@0 1 #
aoqi@0 2 # Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 #
aoqi@0 5 # This code is free software; you can redistribute it and/or modify it
aoqi@0 6 # under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 # published by the Free Software Foundation.
aoqi@0 8 #
aoqi@0 9 # This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 # version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 # accompanied this code).
aoqi@0 14 #
aoqi@0 15 # You should have received a copy of the GNU General Public License version
aoqi@0 16 # 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 #
aoqi@0 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 # or visit www.oracle.com if you need additional information or have any
aoqi@0 21 # questions.
aoqi@0 22 #
aoqi@0 23 #
aoqi@0 24
aoqi@0 25 # Single gnu makefile for solaris, linux and windows (windows requires cygwin and mingw)
aoqi@0 26
aoqi@0 27 # Default arch; it is changed below as needed.
aoqi@0 28 ARCH = i386
aoqi@0 29 OS = $(shell uname)
aoqi@0 30 AR = ar
aoqi@0 31
aoqi@0 32 ## OS = SunOS ##
aoqi@0 33 ifeq ($(OS),SunOS)
aoqi@0 34 CPU = $(shell uname -p)
aoqi@0 35 ARCH1=$(CPU:i586=i386)
aoqi@0 36 ARCH=$(ARCH1:i686=i386)
aoqi@0 37 OS = solaris
aoqi@0 38 CC = cc
aoqi@0 39 CFLAGS += -KPIC
aoqi@0 40 ifdef LP64
aoqi@0 41 ifeq ($(ARCH),sparc)
aoqi@0 42 ARCH = sparcv9
aoqi@0 43 endif
aoqi@0 44 ifeq ($(ARCH),i386)
aoqi@0 45 ARCH = amd64
aoqi@0 46 endif
aoqi@0 47 endif
aoqi@0 48 CFLAGS/sparcv9 += -xarch=v9
aoqi@0 49 CFLAGS/amd64 += -m64
aoqi@0 50 CFLAGS += $(CFLAGS/$(ARCH))
aoqi@0 51 DLDFLAGS += -G
aoqi@0 52 LDFLAGS += -ldl
aoqi@0 53 OUTFLAGS += -o $@
aoqi@0 54 LIB_EXT = .so
aoqi@0 55 else
aoqi@0 56 ## OS = Linux ##
aoqi@0 57 ifeq ($(OS),Linux)
aoqi@0 58 ifneq ($(MINGW),)
aoqi@0 59 LIB_EXT = .dll
aoqi@0 60 CPPFLAGS += -I$(TARGET_DIR)/include
aoqi@0 61 LDFLAGS += -L$(TARGET_DIR)/lib
aoqi@0 62 OS=windows
aoqi@0 63 ifneq ($(findstring x86_64-,$(MINGW)),)
aoqi@0 64 ARCH=amd64
aoqi@0 65 else
aoqi@0 66 ARCH=i386
aoqi@0 67 endif
aoqi@0 68 CC = $(MINGW)-gcc
aoqi@0 69 CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
aoqi@0 70 else #linux
aoqi@0 71 CPU = $(shell uname -m)
aoqi@0 72 ARCH1=$(CPU:x86_64=amd64)
aoqi@0 73 ARCH=$(ARCH1:i686=i386)
aoqi@0 74 ifdef LP64
aoqi@0 75 CFLAGS/sparcv9 += -m64
aoqi@0 76 CFLAGS/amd64 += -m64
aoqi@0 77 CFLAGS/ppc64 += -m64
aoqi@0 78 else
aoqi@0 79 ARCH=$(ARCH1:amd64=i386)
aoqi@0 80 CFLAGS/i386 += -m32
aoqi@0 81 CFLAGS/sparc += -m32
aoqi@0 82 endif
aoqi@0 83 CFLAGS += $(CFLAGS/$(ARCH))
aoqi@0 84 CFLAGS += -fPIC
aoqi@0 85 OS = linux
aoqi@0 86 LIB_EXT = .so
aoqi@0 87 CC = gcc
aoqi@0 88 endif
aoqi@0 89 CFLAGS += -O
aoqi@0 90 DLDFLAGS += -shared
aoqi@0 91 LDFLAGS += -ldl
aoqi@0 92 OUTFLAGS += -o $@
aoqi@0 93 else
aoqi@0 94 ## OS = AIX ##
aoqi@0 95 ifeq ($(OS),AIX)
aoqi@0 96 OS = aix
aoqi@0 97 ARCH = ppc64
aoqi@0 98 CC = xlc_r
aoqi@0 99 CFLAGS += -DAIX -g -qpic=large -q64
aoqi@0 100 CFLAGS/ppc64 += -q64
aoqi@0 101 AR = ar -X64
aoqi@0 102 DLDFLAGS += -qmkshrobj -lz
aoqi@0 103 OUTFLAGS += -o $@
aoqi@0 104 LIB_EXT = .so
aoqi@0 105 else
aoqi@0 106 ## OS = Darwin ##
aoqi@0 107 ifeq ($(OS),Darwin)
aoqi@0 108 CPU = $(shell uname -m)
aoqi@0 109 ARCH1=$(CPU:x86_64=amd64)
aoqi@0 110 ARCH=$(ARCH1:i686=i386)
aoqi@0 111 ifdef LP64
aoqi@0 112 CFLAGS/sparcv9 += -m64
aoqi@0 113 CFLAGS/amd64 += -m64
aoqi@0 114 else
aoqi@0 115 ARCH=$(ARCH1:amd64=i386)
aoqi@0 116 CFLAGS/i386 += -m32
aoqi@0 117 CFLAGS/sparc += -m32
aoqi@0 118 endif # LP64
aoqi@0 119 CFLAGS += $(CFLAGS/$(ARCH))
aoqi@0 120 CFLAGS += -fPIC
aoqi@0 121 OS = macosx
aoqi@0 122 LIB_EXT = .dylib
aoqi@0 123 CC = gcc
aoqi@0 124 CFLAGS += -O
aoqi@0 125 # CFLAGS += -DZ_PREFIX
aoqi@0 126 DLDFLAGS += -shared
aoqi@0 127 DLDFLAGS += -lz
aoqi@0 128 LDFLAGS += -ldl
aoqi@0 129 OUTFLAGS += -o $@
aoqi@0 130 else
aoqi@0 131 ## OS = Windows ##
aoqi@0 132 OS = windows
aoqi@0 133 CC = gcc
aoqi@0 134 CFLAGS += /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
aoqi@0 135 CFLAGS += LIBARCH=\"$(LIBARCH)\"
aoqi@0 136 DLDFLAGS += /dll /subsystem:windows /incremental:no \
aoqi@0 137 /export:decode_instruction
aoqi@0 138 OUTFLAGS += /link /out:$@
aoqi@0 139 LIB_EXT = .dll
aoqi@0 140 endif # Darwin
aoqi@0 141 endif # AIX
aoqi@0 142 endif # Linux
aoqi@0 143 endif # SunOS
aoqi@0 144
aoqi@0 145 LIBARCH = $(ARCH)
aoqi@0 146 ifdef LP64
aoqi@0 147 LIBARCH64/sparc = sparcv9
aoqi@0 148 LIBARCH64/i386 = amd64
aoqi@0 149 LIBARCH64 = $(LIBARCH64/$(ARCH))
aoqi@0 150 ifneq ($(LIBARCH64),)
aoqi@0 151 LIBARCH = $(LIBARCH64)
aoqi@0 152 endif # LIBARCH64/$(ARCH)
aoqi@0 153 endif # LP64
aoqi@0 154
aoqi@0 155 JDKARCH=$(LIBARCH:i386=i586)
aoqi@0 156
aoqi@0 157 ifeq ($(BINUTILS),)
aoqi@0 158 # Pop all the way out of the workspace to look for binutils.
aoqi@0 159 # ...You probably want to override this setting.
aoqi@0 160 BINUTILSDIR = $(shell cd build/binutils;pwd)
aoqi@0 161 else
aoqi@0 162 BINUTILSDIR = $(shell cd $(BINUTILS);pwd)
aoqi@0 163 endif
aoqi@0 164
aoqi@0 165 CPPFLAGS += -I$(BINUTILSDIR)/include -I$(BINUTILSDIR)/bfd -I$(TARGET_DIR)/bfd
aoqi@0 166 CPPFLAGS += -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
aoqi@0 167
aoqi@0 168 TARGET_DIR = build/$(OS)-$(JDKARCH)
aoqi@0 169 TARGET = $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT)
aoqi@0 170
aoqi@0 171 SOURCE = hsdis.c
aoqi@0 172
aoqi@0 173 LIBRARIES = $(TARGET_DIR)/bfd/libbfd.a \
aoqi@0 174 $(TARGET_DIR)/opcodes/libopcodes.a \
aoqi@0 175 $(TARGET_DIR)/libiberty/libiberty.a
aoqi@0 176
aoqi@0 177 DEMO_TARGET = $(TARGET_DIR)/hsdis-demo
aoqi@0 178 DEMO_SOURCE = hsdis-demo.c
aoqi@0 179
aoqi@0 180 .PHONY: all clean demo both
aoqi@0 181
aoqi@0 182 all: $(TARGET)
aoqi@0 183
aoqi@0 184 both: all all64
aoqi@0 185
aoqi@0 186 %64:
aoqi@0 187 $(MAKE) LP64=1 ${@:%64=%}
aoqi@0 188
aoqi@0 189 demo: $(TARGET) $(DEMO_TARGET)
aoqi@0 190
aoqi@0 191 $(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
aoqi@0 192 if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
aoqi@0 193
aoqi@0 194 $(TARGET_DIR)/Makefile:
aoqi@0 195 (cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" AR="$(AR)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
aoqi@0 196
aoqi@0 197 $(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR)
aoqi@0 198 $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
aoqi@0 199
aoqi@0 200 $(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR)
aoqi@0 201 $(CC) $(OUTFLAGS) -DTARGET_DIR=\"$(TARGET_DIR)\" $(CPPFLAGS) -g $(CFLAGS/$(ARCH)) $(DEMO_SOURCE) $(LDFLAGS)
aoqi@0 202
aoqi@0 203 $(TARGET_DIR):
aoqi@0 204 [ -d $@ ] || mkdir -p $@
aoqi@0 205
aoqi@0 206 clean:
aoqi@0 207 rm -rf $(TARGET_DIR)

mercurial