src/share/tools/hsdis/Makefile

changeset 1155
67a2f5ba5582
parent 535
c7c777385a15
child 1279
bd02caa94611
equal deleted inserted replaced
1147:6e33bfd4139b 1155:67a2f5ba5582
20 # CA 95054 USA or visit www.sun.com if you need additional information or 20 # CA 95054 USA or visit www.sun.com if you need additional information or
21 # have any questions. 21 # have any questions.
22 # 22 #
23 # 23 #
24 24
25 # Single gnu makefile for solaris, linux and windows (windows requires mks or 25 # Single gnu makefile for solaris, linux and windows (windows requires cygwin and mingw)
26 # cygwin).
27
28 ifeq ($(BINUTILS),)
29 # Pop all the way out of the workspace to look for binutils.
30 # ...You probably want to override this setting.
31 BINUTILS = $(shell cd ../../../../..;pwd)/binutils-2.17-$(LIBARCH)
32 endif
33 26
34 # Default arch; it is changed below as needed. 27 # Default arch; it is changed below as needed.
35 ARCH = i386 28 ARCH = i386
36 OS = $(shell uname) 29 OS = $(shell uname)
37 30
38 CPPFLAGS += -I$(BINUTILS)/include -I$(BINUTILS)/bfd
39 CPPFLAGS += -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\" -DLIBARCH_$(LIBARCH)
40 CPPFLAGS += -DHOTSPOT_OS=\"$(OS)\" -DOS_$(OS)
41
42 ## OS = SunOS ## 31 ## OS = SunOS ##
43 ifeq ($(OS),SunOS) 32 ifeq ($(OS),SunOS)
44 ARCH = $(shell uname -p) 33 CPU = $(shell uname -p)
34 ARCH1=$(CPU:i586=i386)
35 ARCH=$(ARCH1:i686=i386)
45 OS = solaris 36 OS = solaris
46 CC = cc 37 CC = cc
47 CCFLAGS += -Kpic -g 38 CFLAGS += -KPIC
48 CCFLAGS/amd64 += -xarch=amd64 39 ifdef LP64
49 CCFLAGS/sparcv9 += -xarch=v9 40 ifeq ($(ARCH),sparc)
50 CCFLAGS += $(CCFLAGS/$(LIBARCH)) 41 ARCH = sparcv9
42 endif
43 ifeq ($(ARCH),i386)
44 ARCH = amd64
45 endif
46 endif
47 CFLAGS/sparcv9 += -xarch=v9
48 CFLAGS/amd64 += -m64
49 CFLAGS += $(CFLAGS/$(ARCH))
51 DLDFLAGS += -G 50 DLDFLAGS += -G
51 LDFLAGS += -ldl
52 OUTFLAGS += -o $@ 52 OUTFLAGS += -o $@
53 LIB_EXT = .so 53 LIB_EXT = .so
54 else 54 else
55 ## OS = Linux ## 55 ## OS = Linux ##
56 ifeq ($(OS),Linux) 56 ifeq ($(OS),Linux)
57 ifneq ($(MINGW),)
58 LIB_EXT = .dll
59 CPPFLAGS += -I$(TARGET_DIR)/include
60 LDFLAGS += -L$(TARGET_DIR)/lib
61 OS=windows
62 ifneq ($(findstring x86_64-,$(MINGW)),)
63 ARCH=amd64
64 else
65 ARCH=i386
66 endif
67 CC = $(MINGW)-gcc
68 CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
69 else
57 CPU = $(shell uname -m) 70 CPU = $(shell uname -m)
58 ifeq ($(CPU),ia64) 71 ARCH1=$(CPU:x86_64=amd64)
59 ARCH = ia64 72 ARCH=$(ARCH1:i686=i386)
60 else 73 CFLAGS/i386 += -m32
61 ifeq ($(CPU),x86_64) 74 CFLAGS/sparc += -m32
62 CCFLAGS += -fPIC 75 CFLAGS/sparcv9 += -m64
63 endif # x86_64 76 CFLAGS/amd64 += -m64
64 endif # ia64 77 CFLAGS += $(CFLAGS/$(ARCH))
78 CFLAGS += -fPIC
65 OS = linux 79 OS = linux
80 LIB_EXT = .so
66 CC = gcc 81 CC = gcc
67 CCFLAGS += -O 82 endif
83 CFLAGS += -O
68 DLDFLAGS += -shared 84 DLDFLAGS += -shared
85 LDFLAGS += -ldl
69 OUTFLAGS += -o $@ 86 OUTFLAGS += -o $@
70 LIB_EXT = .so
71 CPPFLAGS += -Iinclude -Iinclude/$(OS)_$(ARCH)/
72 ## OS = Windows ## 87 ## OS = Windows ##
73 else # !SunOS, !Linux => Windows 88 else # !SunOS, !Linux => Windows
74 OS = win 89 OS = windows
75 CC = cl 90 CC = gcc
76 #CPPFLAGS += /D"WIN32" /D"_WINDOWS" /D"DEBUG" /D"NDEBUG" 91 #CPPFLAGS += /D"WIN32" /D"_WINDOWS" /D"DEBUG" /D"NDEBUG"
77 CCFLAGS += /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi- 92 CFLAGS += /nologo /MD /W3 /WX /O2 /Fo$(@:.dll=.obj) /Gi-
78 CCFLAGS += -Iinclude -Iinclude/gnu -Iinclude/$(OS)_$(ARCH) 93 CFLAGS += LIBARCH=\"$(LIBARCH)\""
79 CCFLAGS += /D"HOTSPOT_LIB_ARCH=\"$(LIBARCH)\""
80 DLDFLAGS += /dll /subsystem:windows /incremental:no \ 94 DLDFLAGS += /dll /subsystem:windows /incremental:no \
81 /export:decode_instruction 95 /export:decode_instruction
82 OUTFLAGS += /link /out:$@ 96 OUTFLAGS += /link /out:$@
83 LIB_EXT = .dll 97 LIB_EXT = .dll
84 endif # Linux 98 endif # Linux
92 ifneq ($(LIBARCH64),) 106 ifneq ($(LIBARCH64),)
93 LIBARCH = $(LIBARCH64) 107 LIBARCH = $(LIBARCH64)
94 endif # LIBARCH64/$(ARCH) 108 endif # LIBARCH64/$(ARCH)
95 endif # LP64 109 endif # LP64
96 110
97 TARGET_DIR = bin/$(OS) 111 JDKARCH=$(LIBARCH:i386=i586)
112
113 ifeq ($(BINUTILS),)
114 # Pop all the way out of the workspace to look for binutils.
115 # ...You probably want to override this setting.
116 BINUTILSDIR = $(shell cd build/binutils;pwd)
117 else
118 BINUTILSDIR = $(shell cd $(BINUTILS);pwd)
119 endif
120
121 CPPFLAGS += -I$(BINUTILSDIR)/include -I$(BINUTILS)/bfd -I$(TARGET_DIR)/bfd
122 CPPFLAGS += -DLIBARCH_$(LIBARCH) -DLIBARCH=\"$(LIBARCH)\" -DLIB_EXT=\"$(LIB_EXT)\"
123
124 TARGET_DIR = build/$(OS)-$(JDKARCH)
98 TARGET = $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT) 125 TARGET = $(TARGET_DIR)/hsdis-$(LIBARCH)$(LIB_EXT)
99 126
100 SOURCE = hsdis.c 127 SOURCE = hsdis.c
101 128
102 LIBRARIES = $(BINUTILS)/bfd/libbfd.a \ 129 LIBRARIES = $(TARGET_DIR)/bfd/libbfd.a \
103 $(BINUTILS)/opcodes/libopcodes.a \ 130 $(TARGET_DIR)/opcodes/libopcodes.a \
104 $(BINUTILS)/libiberty/libiberty.a 131 $(TARGET_DIR)/libiberty/libiberty.a
105 132
106 DEMO_TARGET = $(TARGET_DIR)/hsdis-demo-$(LIBARCH) 133 DEMO_TARGET = $(TARGET_DIR)/hsdis-demo
107 DEMO_SOURCE = hsdis-demo.c 134 DEMO_SOURCE = hsdis-demo.c
108 135
109 .PHONY: all clean demo both 136 .PHONY: all clean demo both
110 137
111 all: $(TARGET) demo 138 all: $(TARGET)
112 139
113 both: all all64 140 both: all all64
114 141
115 %64: 142 %64:
116 $(MAKE) LP64=1 ${@:%64=%} 143 $(MAKE) LP64=1 ${@:%64=%}
117 144
118 demo: $(TARGET) $(DEMO_TARGET) 145 demo: $(TARGET) $(DEMO_TARGET)
119 146
120 $(LIBRARIES): 147 $(LIBRARIES): $(TARGET_DIR) $(TARGET_DIR)/Makefile
121 @echo "*** Please build binutils first; see ./README: ***" 148 if [ ! -f $@ ]; then cd $(TARGET_DIR); make all-opcodes; fi
122 @sed < ./README '1,/__________/d' | head -20 149
123 @echo "..."; exit 1 150 $(TARGET_DIR)/Makefile:
151 (cd $(TARGET_DIR); CC=$(CC) CFLAGS="$(CFLAGS)" $(BINUTILSDIR)/configure --disable-nls $(CONFIGURE_ARGS))
124 152
125 $(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR) 153 $(TARGET): $(SOURCE) $(LIBS) $(LIBRARIES) $(TARGET_DIR)
126 $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES) 154 $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES)
127 155
128 $(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR) 156 $(DEMO_TARGET): $(DEMO_SOURCE) $(TARGET) $(TARGET_DIR)
129 $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CCFLAGS) $(DEMO_SOURCE) $(LDFLAGS) 157 $(CC) $(OUTFLAGS) -DTARGET_DIR=\"$(TARGET_DIR)\" $(CPPFLAGS) -g $(CFLAGS/$(ARCH)) $(DEMO_SOURCE) $(LDFLAGS)
130 158
131 $(TARGET_DIR): 159 $(TARGET_DIR):
132 [ -d $@ ] || mkdir -p $@ 160 [ -d $@ ] || mkdir -p $@
133 161
134 clean: 162 clean:

mercurial