| rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame] | 1 |  | 
|  | 2 | 1) perf build | 
|  | 3 | ============= | 
|  | 4 | The perf build process consists of several separated building blocks, | 
|  | 5 | which are linked together to form the perf binary: | 
|  | 6 | - libperf library (static) | 
|  | 7 | - perf builtin commands | 
|  | 8 | - traceevent library (static) | 
|  | 9 | - GTK ui library | 
|  | 10 |  | 
|  | 11 | Several makefiles govern the perf build: | 
|  | 12 |  | 
|  | 13 | - Makefile | 
|  | 14 | top level Makefile working as a wrapper that calls the main | 
|  | 15 | Makefile.perf with a -j option to do parallel builds. | 
|  | 16 |  | 
|  | 17 | - Makefile.perf | 
|  | 18 | main makefile that triggers build of all perf objects including | 
|  | 19 | installation and documentation processing. | 
|  | 20 |  | 
|  | 21 | - tools/build/Makefile.build | 
|  | 22 | main makefile of the build framework | 
|  | 23 |  | 
|  | 24 | - tools/build/Build.include | 
|  | 25 | build framework generic definitions | 
|  | 26 |  | 
|  | 27 | - Build makefiles | 
|  | 28 | makefiles that defines build objects | 
|  | 29 |  | 
|  | 30 | Please refer to tools/build/Documentation/Build.txt for more | 
|  | 31 | information about build framework. | 
|  | 32 |  | 
|  | 33 |  | 
|  | 34 | 2) perf build | 
|  | 35 | ============= | 
|  | 36 | The Makefile.perf triggers the build framework for build objects: | 
|  | 37 | perf, libperf, gtk | 
|  | 38 |  | 
|  | 39 | resulting in following objects: | 
|  | 40 | $ ls  *-in.o | 
|  | 41 | gtk-in.o  libperf-in.o  perf-in.o | 
|  | 42 |  | 
|  | 43 | Those objects are then used in final linking: | 
|  | 44 | libperf-gtk.so <- gtk-in.o  libperf-in.o | 
|  | 45 | perf           <- perf-in.o libperf-in.o | 
|  | 46 |  | 
|  | 47 |  | 
|  | 48 | NOTE this description is omitting other libraries involved, only | 
|  | 49 | focusing on build framework outcomes |