• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2#PIN_ROOT is taken from env var.
3PIN_BIN=${PIN_ROOT}/pin
4
5INLINE=
6OPTLEVEL=-O3
7CXXFLAGS_L=$(OPTLEVEL) $(INLINE) -Wall -Werror -Wno-unknown-pragmas -g -fno-omit-frame-pointer -fno-strict-aliasing -fPIC
8CXXFLAGS_L64=-DBIGARRAY_MULTIPLIER=1 -DUSING_XED  -DTARGET_IA32E -DHOST_IA32E  -DTARGET_LINUX
9CXXFLAGS_L32=-DBIGARRAY_MULTIPLIER=1 -DUSING_XED  -DTARGET_IA32  -DHOST_IA32   -DTARGET_LINUX
10INCLUDES_L64=-I..  -I$(PIN_ROOT)/extras/xed2-intel64/include -I$(PIN_ROOT)/source/include -I$(PIN_ROOT)/source/include/gen
11INCLUDES_L32=-I..  -I$(PIN_ROOT)/extras/xed2-ia32/include -I$(PIN_ROOT)/source/include -I$(PIN_ROOT)/source/include/gen
12LIBPATHS_L64=-L$(PIN_ROOT)/extras/xed2-intel64/lib -L$(PIN_ROOT)/intel64/lib -L$(PIN_ROOT)/intel64/lib-ext
13LIBPATHS_L32=-L$(PIN_ROOT)/extras/xed2-ia32/lib -L$(PIN_ROOT)/ia32/lib -L$(PIN_ROOT)/ia32/lib-ext
14LDFLAGS_L=-g -shared -Wl,-Bsymbolic -Wl,--version-script=$(PIN_ROOT)/source/include/pintool.ver
15LIBS_L= -lpin  -lxed -ldwarf -lelf -ldl -lpthread
16
17
18ifeq ($(OS), l)
19  SO=so
20  OBJ=o
21  CXX=g++
22  LD=g++
23  LIBS=$(LIBS_L)
24  ifeq ($(B), 64)
25    CXXFLAGS=$(CXXFLAGS_L) $(CXXFLAGS_L64) $(INCLUDES_L64) -m64
26    LDFLAGS=$(LDFLAGS_L) $(LIBPATHS_L64) -m64
27  else
28    CXXFLAGS=$(CXXFLAGS_L) $(CXXFLAGS_L32) $(INCLUDES_L32) -m32
29    LDFLAGS=$(LDFLAGS_L) $(LIBPATHS_L32) -m32
30  endif
31else ifeq ($(OS), w)
32  SO=dll
33  OBJ=obj
34  CXX=cl
35  LD=link
36  CXXFLAGS=/c /MT /EHs- /EHa- /wd4530  /DTARGET_WINDOWS /DBIGARRAY_MULTIPLIER=1 /DUSING_XED /D_CRT_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /nologo /Gy /O2 /DTARGET_IA32 /DHOST_IA32 \
37	   /I.. /I$(PIN_ROOT)/source/include /I$(PIN_ROOT)/source/include/gen   /I$(PIN_ROOT)/extras/xed2-ia32/include
38  LDFLAGS=/DLL /EXPORT:main /NODEFAULTLIB  /NOLOGO /INCREMENTAL:NO  /OPT:REF  /MACHINE:x86 /ENTRY:Ptrace_DllMainCRTStartup@12 /BASE:0x55000000    \
39	  /LIBPATH:$(PIN_ROOT)/ia32/lib /LIBPATH:$(PIN_ROOT)/ia32/lib-ext  /LIBPATH:$(PIN_ROOT)/extras/xed2-ia32/lib
40  LIBS=pin.lib libxed.lib libcpmt.lib libcmt.lib pinvm.lib kernel32.lib ntdll-32.lib
41else
42
43endif
44
45ifeq ($(DEBUG), 1)
46  BUILD_SUFIX=_deb
47  DEFINES=-DDEBUG=1
48else
49  BUILD_SUFIX=_opt
50  DEFINES=-DINCLUDE_THREAD_SANITIZER_CC=1
51endif
52
53
54SUFIX=_${OS}$(B)$(BUILD_SUFIX)
55
56ALL_OBJECTS=ts_pin$(SUFIX).$(OBJ) ts_util$(SUFIX).$(OBJ) thread_sanitizer$(SUFIX).$(OBJ)
57
58all:
59
60pintool: ts_pin$(SUFIX).$(SO)
61
62l: l32 l64
63l64: l64o l64d
64l32: l32o l32d
65ld: l64d l32d
66lo: l64o l32o
67
68l64d:
69	$(MAKE) pintool OS=l B=64  DEBUG=1
70l64o:
71	$(MAKE) pintool OS=l B=64  DEBUG=0
72
73l32d:
74	$(MAKE) pintool OS=l B=32  DEBUG=1
75l32o:
76	$(MAKE) pintool OS=l B=32  DEBUG=0
77
78w32d:
79	$(MAKE) pintool OS=w B=32  DEBUG=1
80
81
82
83
84ts_pin$(SUFIX).so: $(ALL_OBJECTS)
85	$(LD) $(LDFLAGS) $(LIBPATHS) -o $@ $^  $(LIBS)
86
87ts_pin$(SUFIX).dll: $(ALL_OBJECTS)
88	$(LD) $(LDFLAGS) $(LIBPATHS)  /IMPLIB:ts_pin$(SUFIX).lib /PDB:ts_pin$(SUFIX).pdb /OUT:$@  $^  $(LIBS)
89
90HEADERS=../thread_sanitizer.h ../ts_util.h
91
92
93%$(SUFIX).o: %.cc $(HEADERS)
94	$(CXX) $(CXXFLAGS) -o $@ -c $< $(DEFINES)
95%$(SUFIX).o: ../%.cc $(HEADERS)
96	$(CXX) $(CXXFLAGS) -o $@ -c $< $(DEFINES)
97
98%$(SUFIX).obj: %.cc $(HEADERS)
99	$(CXX) $(CXXFLAGS) /Fo$@ -c $< $(DEFINES)
100%$(SUFIX).obj: ../%.cc $(HEADERS)
101	$(CXX) $(CXXFLAGS) /Fo$@ -c $< $(DEFINES)
102
103
104#all_tests: simple_pin_test.so detach_example.so
105#%.so: %.$(OBJ)
106#	$(CXX) $(LDFLAGS) $(LIBPATHS) -o $@ $<  $(LIBS)
107#
108#
109win_test.exe: win_test.cpp
110	cl /Zi $<
111
112
113clean:
114	rm -fv *.so *.o *.obj *.dll core* pintool.log* pin.log *.exp *.lib *.pdb *.ilk  *.exe
115