pax_global_header00006660000000000000000000000064141310506150014506gustar00rootroot0000000000000052 comment=dac554d62d514b202174506995afc0e109ef3fea OpenCSD-1.2.0/000077500000000000000000000000001413105061500127415ustar00rootroot00000000000000OpenCSD-1.2.0/.gitignore000066400000000000000000000025351413105061500147360ustar00rootroot00000000000000# Object files *.o *.ko *.obj *.elf # Precompiled Headers *.gch *.pch # Libraries *.lib *.a *.la *.lo # gcc dependency files *.d # Shared objects (inc. Windows DLLs) *.dll *.so *.so.* *.dylib # Executables *.exe *.out *.app *.i*86 *.x86_64 *.hex # Debug files *.dSYM/ # Vc++ build files *tlog Debug/ ipch/ *.opensdf *.sdf *.suo *.user *.idb *.pdb *.exp *.ilk # ignore emacs backup saves *~ # ignore bin test directory bin/ *.log ref_trace_decoder/build/win/rctdl_c_api_lib/Release/* ref_trace_decoder/build/win/rctdl_c_api_lib/x64/Release/* ref_trace_decoder/build/win/ref_trace_decode_lib/Release/* ref_trace_decoder/build/win/ref_trace_decode_lib/x64/Release/* ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/Release/* ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/x64/Release/* *.lastbuildstate *.manifest *.cache ref_trace_decoder/docs/html/* ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/Debug-dll/* ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/x64/Debug-dll/* ref_trace_decoder/tests/build/win/trc_pkt_lister/Debug-dll/* ref_trace_decoder/tests/build/win/trc_pkt_lister/Release-dll/* ref_trace_decoder/tests/build/win/trc_pkt_lister/x64/Debug-dll/* ref_trace_decoder/tests/build/win/trc_pkt_lister/x64/Release-dll/* *.bak *.orig decoder/docs/html/* *.orig *.VC.db *.VC.VC.opendb *.iobj *.ipdb decoder/tests/results*OpenCSD-1.2.0/HOWTO.md000066400000000000000000000742331413105061500141740ustar00rootroot00000000000000HOWTO - using the library with perf {#howto_perf} =================================== @brief Using command line perf and OpenCSD to collect and decode trace. This HOWTO explains how to use the perf cmd line tools and the openCSD library to collect and extract program flow traces generated by the CoreSight IP blocks on a Linux system. The examples have been generated using an aarch64 Juno-r0 platform. On Target Trace Acquisition - Perf Record ----------------------------------------- Compile the perf tool from the same kernel source code version you are using with: make -C tools/perf This will yield a `perf` executable that will support CoreSight trace collection. *Note:* If traces are to be decompressed **off** target, there is no need to download and compile the openCSD library (on the target). If you are instead planning to use perf to record and decode the trace on the target, compile the perf tool linking against the openCSD library, in the following way: make -C tools/perf VF=1 CORESIGHT=1 Further information on the needed build environments and options are detailed later in the section **Off Target Perf Tools Compilation**. Before launching a trace run a sink that will collect trace data needs to be identified. All CoreSight blocks identified by the framework are registed in sysFS: linaro@linaro-nano:~$ ls /sys/bus/coresight/devices/ etm0 etm2 etm4 etm6 funnel0 funnel2 funnel4 stm0 tmc_etr0 etm1 etm3 etm5 etm7 funnel1 funnel3 replicator0 tmc_etf0 CoreSight blocks are listed in the device tree for a specific system and discovered at boot time. Since tracers can be linked to more than one sink, the sink that will recieve trace data needs to be identified and given as an option on the perf command line. Once a sink has been identify trace collection can start. An easy and yet interesting example is the `uname` command: linaro@linaro-nano:~/kernel$ ./tools/perf/perf record -e cs_etm/@tmc_etr0/ --per-thread uname This will generate a `perf.data` file where execution has been traced for both user and kernel space. To narrow the field to either user or kernel space the `u` and `k` options can be specified. For example the following will limit traces to user space: linaro@linaro-nano:~/kernel$ ./tools/perf/perf record -vvv -e cs_etm/@tmc_etr0/u --per-thread uname Problems setting modules path maps, continuing anyway... ----------------------------------------------------------- perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1 ------------------------------------------------------------ sys_perf_event_open: pid 11375 cpu -1 group_fd -1 flags 0x8 ------------------------------------------------------------ perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1 ------------------------------------------------------------ sys_perf_event_open: pid 11375 cpu -1 group_fd -1 flags 0x8 mmap size 266240B AUX area mmap length 131072 perf event ring buffer mmapped per thread Synthesizing auxtrace information Linux auxtrace idx 0 old 0 head 0x11ea0 diff 0x11ea0 [ perf record: Woken up 1 times to write data ] overlapping maps: 7f99daf000-7f99db0000 0 [vdso] 7f99d84000-7f99db3000 0 /lib/aarch64-linux-gnu/ld-2.21.so 7f99d84000-7f99daf000 0 /lib/aarch64-linux-gnu/ld-2.21.so 7f99db0000-7f99db3000 0 /lib/aarch64-linux-gnu/ld-2.21.so failed to write feature 8 failed to write feature 9 failed to write feature 14 [ perf record: Captured and wrote 0.072 MB perf.data ] linaro@linaro-nano:~/kernel$ ls -l ~/.debug/ perf.data _-rw------- 1 linaro linaro 77888 Mar 2 20:41 perf.data /home/linaro/.debug/: total 16 drwxr-xr-x 2 linaro linaro 4096 Mar 2 20:40 [kernel.kallsyms] drwxr-xr-x 2 linaro linaro 4096 Mar 2 20:40 [vdso] drwxr-xr-x 3 linaro linaro 4096 Mar 2 20:40 bin drwxr-xr-x 3 linaro linaro 4096 Mar 2 20:40 lib Trace data filtering -------------------- The amount of traces generated by CoreSight tracers is staggering, event for the most simple trace scenario. Reducing trace generation to specific areas of interest is desirable to save trace buffer space and avoid getting lost in the trace data that isn't relevant. Supplementing the 'k' and 'u' options described above is the notion of address filters. On CoreSight two types of address filter have been implemented - address range and start/stop filter: **Address range filters:** With address range filters traces are generated if the instruction pointer falls within the specified range. Any work done by the CPU outside of that range will not be traced. Address range filters can be specified for both user and kernel space session: perf record -e cs_etm/@tmc_etr0/k --filter 'filter 0xffffff8008562d0c/0x48' --per-thread uname perf record -e cs_etm/@tmc_etr0/u --filter 'filter 0x72c/0x40@/opt/lib/libcstest.so.1.0' --per-thread ./main When dealing with kernel space trace addresses are typically taken in the 'System.map' file. In user space addresses are relocatable and can be extracted from an objdump output: $ aarch64-linux-gnu-objdump -d libcstest.so.1.0 ... ... 000000000000072c : <------------ Beginning of traces 72c: d10083ff sub sp, sp, #0x20 730: b9000fe0 str w0, [sp,#12] 734: b9001fff str wzr, [sp,#28] 738: 14000007 b 754 73c: b9400fe0 ldr w0, [sp,#12] 740: 11000800 add w0, w0, #0x2 744: b9000fe0 str w0, [sp,#12] 748: b9401fe0 ldr w0, [sp,#28] 74c: 11000400 add w0, w0, #0x1 750: b9001fe0 str w0, [sp,#28] 754: b9401fe0 ldr w0, [sp,#28] 758: 7100101f cmp w0, #0x4 75c: 54ffff0d b.le 73c 760: b9400fe0 ldr w0, [sp,#12] 764: 910083ff add sp, sp, #0x20 768: d65f03c0 ret ... ... Following the address the amount of byte is specified and if tracing in user space, the full path to the binary (or library) being traced. **Start/Stop filters:** With start/stop filters traces are generated when the instruction pointer is equal to the start address. Incidentally traces stop being generated when the insruction pointer is equal to the stop address. Anything that happens between there to events is traced: perf record -e cs_etm/@tmc_etr0/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0' --per-thread uname perf record -vvv -e cs_etm/@tmc_etr0/u --filter 'start 0x72c@/opt/lib/libcstest.so.1.0, \ stop 0x40082c@/home/linaro/main' \ --per-thread ./main **Limitation on address filters:** The only limitation on address filters is the amount of address comparator found on an implementation and the mutual exclusion between range and start stop filters. As such the following example would _not_ work: perf record -e cs_etm/@tmc_etr0/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0, \ // start/stop filter 0x72c/0x40@/opt/lib/libcstest.so.1.0' \ // address range --per-thread uname Additional Trace Options ------------------------ Additional options can be used during trace collection that add information to the captured trace. - Timestamps: These packets are added to the trace streams to allow correlation of different sources where tools support this. - Cycle Counts: These packets are added to get a count of cycles for blocks of executed instructions. Adding cycle counts will considerably increase the amount of generated trace. The relationship between cycle counts and executed instructions differs according to the trace protocol. For example, the ETMv4 protocol will emit counts for groups of instructions according to a minimum count threshold. Presently this threshold is fixed at 256 cycles for `perf record`. Command line options in `perf record` to use these features are part of the options for the `cs_etm` event: perf record -e cs_etm/timestamp,cycacc,@tmc_etr0/ --per-thread uname At current version, `perf record` and `perf script` do not use this additional information. The cs_etm perf event --------------------- System information for this perf pmu event can be found at: /sys/devices/cs_etm This contains internal format of the parameters described above: root@linaro-developer:~# ls /sys/devices/cs_etm/format contextid cycacc retstack sinkid timestamp and names of registered sinks: root@linaro-developer:~# ls /sys/devices/cs_etm/sinks tmc_etf0 tmc_etr0 tpiu0 Note: The `sinkid` parameter is there to document the usage of a 32-bit internal parameter to pass the sink name used in the cs_etm/@sink/ command to the kernel drivers. It can be used directly as cs_etm/sinkid=/ but this is not recommended as the values used are considered opaque and subject to changes. On Target Trace Collection -------------------------- The entire program flow will have been recorded in the `perf.data` file. Information about libraries and executable is stored under `$HOME/.debug`: linaro@linaro-nano:~/kernel$ tree ~/.debug .debug ├── [kernel.kallsyms] │   └── 0542921808098d591a7acba5a1163e8991897669 │   └── kallsyms ├── [vdso] │   └── 551fbbe29579eb63be3178a04c16830b8d449769 │   └── vdso ├── bin │   └── uname │   └── ed95e81f97c4471fb2ccc21e356b780eb0c92676 │   └── elf └── lib └── aarch64-linux-gnu ├── ld-2.21.so │   └── 94912dc5a1dc8c7ef2c4e4649d4b1639b6ebc8b7 │   └── elf └── libc-2.21.so └── 169a143e9c40cfd9d09695333e45fd67743cd2d6 └── elf 13 directories, 5 files linaro@linaro-nano:~/kernel$ All this information needs to be collected in order to successfully decode traces off target: linaro@linaro-nano:~/kernel$ tar czf uname.trace.tgz perf.data ~/.debug Note that file `vmlinux` should also be added to the bundle if kernel traces have also been collected. Off Target OpenCSD Compilation ------------------------------ The openCSD library is not part of the perf tools. It is available on [github][1] and needs to be compiled before the perf tools. Checkout the required branch/tag version into a local directory. linaro@t430:~/linaro/coresight$ git clone https://github.com/Linaro/OpenCSD.git my-opencsd Cloning into 'OpenCSD'... remote: Counting objects: 2063, done. remote: Total 2063 (delta 0), reused 0 (delta 0), pack-reused 2063 Receiving objects: 100% (2063/2063), 2.51 MiB | 1.24 MiB/s, done. Resolving deltas: 100% (1399/1399), done. Checking connectivity... done. linaro@t430:~/linaro/coresight$ ls my-opencsd decoder LICENSE README.md HOWTO.md TODO Once the source code has been acquired compilation of the openCSD library can take place. For Linux two options are available, LINUX and LINUX64, based on the host's (which has nothing to do with the target) architecture: linaro@t430:~/linaro/coresight/$ cd my-opencsd/decoder/build/linux/ linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls makefile rctdl_c_api_lib ref_trace_decode_lib linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ make LINUX64=1 DEBUG=1 ... ... linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls ../../lib/linux64/dbg/ libopencsd.a libopencsd_c_api.a libopencsd_c_api.so libopencsd.so From there the header file and libraries need to be installed on the system, something that requires root privileges. The default installation path is /usr/include/opencsd for the header files and /usr/lib/ for the libraries: linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ sudo make install linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls -l /usr/include/opencsd total 60 drwxr-xr-x 2 root root 4096 Dec 12 10:19 c_api drwxr-xr-x 2 root root 4096 Dec 12 10:19 etmv3 drwxr-xr-x 2 root root 4096 Dec 12 10:19 etmv4 -rw-r--r-- 1 root root 28049 Dec 12 10:19 ocsd_if_types.h drwxr-xr-x 2 root root 4096 Dec 12 10:19 ptm drwxr-xr-x 2 root root 4096 Dec 12 10:19 stm -rw-r--r-- 1 root root 7264 Dec 12 10:19 trc_gen_elem_types.h -rw-r--r-- 1 root root 3972 Dec 12 10:19 trc_pkt_types.h linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls -l /usr/lib/libopencsd* -rw-r--r-- 1 root root 598720 Dec 12 10:19 /usr/lib/libopencsd_c_api.so -rw-r--r-- 1 root root 4692200 Dec 12 10:19 /usr/lib/libopencsd.so A "clean_install" target is also available so that openCSD installed files can be removed from a system. Going forward the goal is to have the openCSD library packaged as a Debian or RPM archive so that it can be installed from a distribution without having to be compiled. Off Target Perf Tools Compilation --------------------------------- As mentioned above the openCSD library is not part of the perf tools' code base and needs to be installed on a system prior to compilation. Information about the status of the openCSD library on a system is given at compile time by the perf tools build script: linaro@t430:~/linaro/linux-kernel$ make CORESIGHT=1 VF=1 -C tools/perf Auto-detecting system features: ... dwarf: [ on ] ... dwarf_getlocations: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ OFF ] ... libelf: [ on ] ... libnuma: [ OFF ] ... numa_num_possible_cpus: [ OFF ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ] ... libcrypto: [ on ] ... libunwind: [ OFF ] ... libdw-dwarf-unwind: [ on ] ... zlib: [ on ] ... lzma: [ OFF ] ... get_cpuid: [ on ] ... bpf: [ on ] ... libopencsd: [ on ] <------- At the end of the compilation a new perf binary is available in `tools/perf/`: linaro@t430:~/linaro/linux-kernel$ ldd tools/perf/perf linux-vdso.so.1 => (0x00007fff135db000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f15f9176000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f15f8f6e000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f15f8c64000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f15f8a60000) libopencsd_c_api.so => /usr/lib/libopencsd_c_api.so (0x00007f15f884e000) <------- libelf.so.1 => /usr/lib/x86_64-linux-gnu/libelf.so.1 (0x00007f15f8635000) libdw.so.1 => /usr/lib/x86_64-linux-gnu/libdw.so.1 (0x00007f15f83ec000) libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f15f81c5000) libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x00007f15f7e38000) libperl.so.5.22 => /usr/lib/x86_64-linux-gnu/libperl.so.5.22 (0x00007f15f7a5d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f15f7693000) libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f15f7104000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f15f6eea000) /lib64/ld-linux-x86-64.so.2 (0x0000559b88038000) libopencsd.so => /usr/lib/libopencsd.so (0x00007f15f6c62000) <------- libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f15f68df000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f15f66c9000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f15f64a6000) libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f15f6296000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f15f605e000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f15f5e5a000) Additional debug output from the decoder can be compiled in by setting the `CSTRACE_RAW` environment variable. Setting this to `packed` gets trace frame output as follows:- Frame Data; Index 576; RAW_PACKED; d6 d6 d6 d6 d6 d6 d6 d6 fc fb d6 d6 d6 d6 e0 7f Frame Data; Index 576; ID_DATA[0x14]; d7 d6 d7 d6 d7 d6 d7 d6 fd fb d7 d6 d7 d6 e0 Set to any other value will remove the RAW_PACKED lines. Working with an alternate version of the openCSD library -------------------------------------------------------- When compiling the perf tools it is possible to reference another version of the openCSD library than the one installed on the system. This is useful when working with multiple development trees or having the desire to keep system libraries intact. Two environment variable are available to tell the perf tools build script where to get the header file and libraries, namely CSINCLUDES and CSLIBS: linaro@t430:~/linaro/linux-kernel$ export CSINCLUDES=~/linaro/coresight/my-opencsd/decoder/include/ linaro@t430:~/linaro/linux-kernel$ export CSLIBS=~/linaro/coresight/my-opencsd/decoder/lib/builddir/ linaro@t430:~/linaro/linux-kernel$ make CORESIGHT=1 VF=1 -C tools/perf This will have the effect of compiling and linking against the provided library. Since the system's openCSD library is in the loader's search patch the LD_LIBRARY_PATH environment variable needs to be set. linaro@t430:~/linaro/linux-kernel$ export LD_LIBRARY_PATH=$CSLIBS Trace Decoding with Perf Report ------------------------------- Before working with custom traces it is suggested to use a trace bundle that is known to be working properly. A sample bundle has been made available here [2]. Trace bundles can be extracted anywhere and have no dependencies on where the perf tools and openCSD library have been compiled. linaro@t430:~/linaro/coresight$ mkdir sept20 linaro@t430:~/linaro/coresight$ cd sept20 linaro@t430:~/linaro/coresight/sept20$ wget http://people.linaro.org/~mathieu.poirier/openCSD/uname.v4.user.sept20.tgz linaro@t430:~/linaro/coresight/sept20$ md5sum uname.v4.user.sept20.tgz f53f11d687ce72bdbe9de2e67e960ec6 uname.v4.user.sept20.tgz linaro@t430:~/linaro/coresight/sept20$ tar xf uname.v4.user.sept20.tgz linaro@t430:~/linaro/coresight/sept20$ ls -la total 1312 drwxrwxr-x 3 linaro linaro 4096 Mar 3 10:26 . drwxrwxr-x 5 linaro linaro 4096 Mar 3 10:13 .. drwxr-xr-x 7 linaro linaro 4096 Feb 24 12:21 .debug -rw------- 1 linaro linaro 78016 Feb 24 12:21 perf.data -rw-rw-r-- 1 linaro linaro 1245881 Feb 24 12:25 uname.v4.user.sept20.tgz Perf is expecting files related to the trace capture (`perf.data`) to be located in the `buildid` directory. By default this is under `~/.debug`. Alternatively the default `buildid` directory can be changed using the command: perf config --system buildid.dir=/my/own/buildid/dir This example will remove the current `~/.debug` directory to be sure everything is clean. linaro@t430:~/linaro/coresight/sept20$ rm -rf ~/.debug linaro@t430:~/linaro/coresight/sept20$ cp -dpR .debug ~/ linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf report --stdio # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 0 of event 'cs_etm//u' # Event count (approx.): 0 # # Children Self Command Shared Object Symbol # ........ ........ ....... ............. ...... # # Samples: 0 of event 'dummy:u' # Event count (approx.): 0 # # Children Self Command Shared Object Symbol # ........ ........ ....... ............. ...... # # Samples: 115K of event 'instructions:u' # Event count (approx.): 522009 # # Children Self Command Shared Object Symbol # ........ ........ ....... ................ ...................... # 4.13% 4.13% uname libc-2.21.so [.] 0x0000000000078758 3.81% 3.81% uname libc-2.21.so [.] 0x0000000000078e50 2.06% 2.06% uname libc-2.21.so [.] 0x00000000000fcaf4 1.65% 1.65% uname libc-2.21.so [.] 0x00000000000fcae4 1.59% 1.59% uname ld-2.21.so [.] 0x000000000000a7f4 1.50% 1.50% uname libc-2.21.so [.] 0x0000000000078e40 1.43% 1.43% uname libc-2.21.so [.] 0x00000000000fcac4 1.31% 1.31% uname libc-2.21.so [.] 0x000000000002f0c0 1.26% 1.26% uname ld-2.21.so [.] 0x0000000000016888 1.24% 1.24% uname libc-2.21.so [.] 0x0000000000078e7c 1.24% 1.24% uname libc-2.21.so [.] 0x00000000000fcab8 ... Additional data can be obtained, which contains a dump of the trace packets received using the command mjl@ubuntu-vbox:./perf-opencsd-master/coresight/tools/perf/perf report --stdio --dump resulting a large amount of data, trace looking like:- 0x618 [0x30]: PERF_RECORD_AUXTRACE size: 0x11ef0 offset: 0 ref: 0x4d881c1f13216016 idx: 0 tid: 15244 cpu: -1 . ... CoreSight ETM Trace data: size 73456 bytes 0: I_ASYNC : Alignment Synchronisation. 12: I_TRACE_INFO : Trace Info. 17: I_TRACE_ON : Trace On. 18: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F24D80; Ctxt: AArch64,EL0, NS; 28: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE 29: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE 30: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE 32: I_ATOM_F6 : Atom format 6.; EEEEN 33: I_ATOM_F1 : Atom format 1.; E 34: I_EXCEPT : Exception.; Data Fault; Ret Addr Follows; 36: I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000007F89F2832C; 45: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0xFFFFFFC000083400; Ctxt: AArch64,EL1, NS; 56: I_TRACE_ON : Trace On. 57: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F2832C; Ctxt: AArch64,EL0, NS; 68: I_ATOM_F3 : Atom format 3.; NEE 69: I_ATOM_F3 : Atom format 3.; NEN 70: I_ATOM_F3 : Atom format 3.; NNE 71: I_ATOM_F5 : Atom format 5.; ENENE 72: I_ATOM_F5 : Atom format 5.; NENEN 73: I_ATOM_F5 : Atom format 5.; ENENE 74: I_ATOM_F5 : Atom format 5.; NENEN 75: I_ATOM_F5 : Atom format 5.; ENENE 76: I_ATOM_F3 : Atom format 3.; NNE 77: I_ATOM_F3 : Atom format 3.; NNE 78: I_ATOM_F3 : Atom format 3.; NNE 80: I_ATOM_F3 : Atom format 3.; NNE 81: I_ATOM_F3 : Atom format 3.; ENN 82: I_EXCEPT : Exception.; Data Fault; Ret Addr Follows; 84: I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000007F89F283F0; 93: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0xFFFFFFC000083400; Ctxt: AArch64,EL1, NS; 104: I_TRACE_ON : Trace On. 105: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F283F0; Ctxt: AArch64,EL0, NS; 116: I_ATOM_F5 : Atom format 5.; NNNNN 117: I_ATOM_F5 : Atom format 5.; NNNNN Trace Decoding with Perf Script ------------------------------- Working with perf scripts needs more command line options but yields interesting results. linaro@t430:~/linaro/coresight/sept20$ export EXEC_PATH=/home/linaro/coresight/perf-opencsd-master/tools/perf/ linaro@t430:~/linaro/coresight/sept20$ export SCRIPT_PATH=$EXEC_PATH/scripts/python/ linaro@t430:~/linaro/coresight/sept20$ export XTOOL_PATH=/your/aarch64/toolchain/path/bin/ linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf --exec-path=${EXEC_PATH} script --script=python:${SCRIPT_PATH}/cs-trace-disasm.py -- -d ${XTOOL_PATH}/aarch64-linux-gnu-objdump 7f89f24d80: 910003e0 mov x0, sp 7f89f24d84: 94000d53 bl 7f89f282d0 7f89f282d0: d11203ff sub sp, sp, #0x480 7f89f282d4: a9ba7bfd stp x29, x30, [sp,#-96]! 7f89f282d8: 910003fd mov x29, sp 7f89f282dc: a90363f7 stp x23, x24, [sp,#48] 7f89f282e0: 9101e3b7 add x23, x29, #0x78 7f89f282e4: a90573fb stp x27, x28, [sp,#80] 7f89f282e8: a90153f3 stp x19, x20, [sp,#16] 7f89f282ec: aa0003fb mov x27, x0 7f89f282f0: 910a82e1 add x1, x23, #0x2a0 7f89f282f4: a9025bf5 stp x21, x22, [sp,#32] 7f89f282f8: a9046bf9 stp x25, x26, [sp,#64] 7f89f282fc: 910102e0 add x0, x23, #0x40 7f89f28300: f800841f str xzr, [x0],#8 7f89f28304: eb01001f cmp x0, x1 7f89f28308: 54ffffc1 b.ne 7f89f28300 7f89f28300: f800841f str xzr, [x0],#8 7f89f28304: eb01001f cmp x0, x1 7f89f28308: 54ffffc1 b.ne 7f89f28300 7f89f28300: f800841f str xzr, [x0],#8 7f89f28304: eb01001f cmp x0, x1 7f89f28308: 54ffffc1 b.ne 7f89f28300 Kernel Trace Decoding --------------------- When dealing with kernel space traces the vmlinux file has to be communicated explicitely to perf using the "--vmlinux" command line option: linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf report --stdio --vmlinux=./vmlinux ... ... linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf script --vmlinux=./vmlinux When using scripts things get a little more convoluted. Using the same example an above but for traces but for kernel traces, the command line becomes: linaro@t430:~/linaro/coresight/sept20$ export EXEC_PATH=/home/linaro/coresight/perf-opencsd-master/tools/perf/ linaro@t430:~/linaro/coresight/sept20$ export SCRIPT_PATH=$EXEC_PATH/scripts/python/ linaro@t430:~/linaro/coresight/sept20$ export XTOOL_PATH=/your/aarch64/toolchain/path/bin/ linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf --exec-path=${EXEC_PATH} script \ --vmlinux=./vmlinux \ --script=python:${SCRIPT_PATH}/cs-trace-disasm.py -- \ -d ${XTOOLS_PATH}/aarch64-linux-gnu-objdump \ -k ./vmlinux ... ... The option "--vmlinux=./vmlinux" is interpreted by the "perf script" command the same way it if for "perf report". The option "-k ./vmlinux" is dependant on the script being executed and has no related to the "--vmlinux", though it is highly advised to keep them synchronized. Perf Test Environment Scripts ----------------------------- The decoder library comes with a number of `bash` scripts that ease the setting up of the offline build and test environment for perf, and executing tests. These scripts can be found in decoder/tests/perf-test-scripts There are three scripts provided: - `perf-setup-env.bash` : this sets up all the environment variables mentioned above. - `perf-test-report.bash` : this runs `perf report` - using the environment setup by `perf-setup-env.bash` - `perf-test-script.bash` : this runs `perf script` - using the environment setup by `perf-setup-env.bash` Use as follows:- 1. Prior to building perf, edit `perf-setup-env.bash` to conform to your environment. There are four lines at the top of the file that will require editing. 2. Execute the script using the command: source perf-setup-env.bash This will set up a perf execute environment for using the perf report and script commands. Alternatively use the command: source perf-setup-env.base buildenv This will add in the build environment variables mentioned in the sections on building above alongside the environment for using the used by the `perf-test...` scripts to run the tests. 3. Build perf as described above. 4. Follow the instructions for downloading the test capture, or create a capture from your target. 5. Copy the `perf-test...` scripts into the capture data directory -> the one that contains `perf.data`. 6. The scripts can now be run. No options are required for the default operation, but any command line options will be added to the perf report / perf script command line. e.g. ./perf-test-report.bash --dump will add the --dump option to the end of the command line and run ${PERF_EXEC_PATH}/perf report --stdio --dump Generating coverage files for Feedback Directed Optimization: AutoFDO --------------------------------------------------------------------- See autofdo.md (@ref AutoFDO) for details and scripts. The Linaro CoreSight Team ------------------------- - Mike Leach - Mathieu Poirier One Last Thing -------------- We welcome help on this project. If you would like to add features or help improve the way things work, we want to hear from you. Best regards, *The Linaro CoreSight Team* -------------------------------------- [1]: https://github.com/Linaro/OpenCSD [2]: http://people.linaro.org/~mathieu.poirier/openCSD/uname.v4.user.sept20.tgz OpenCSD-1.2.0/LICENSE000066400000000000000000000027101413105061500137460ustar00rootroot00000000000000 BSD 3Clause License http://directory.fsf.org/wiki/License:BSD_3Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. (3)The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. OpenCSD-1.2.0/README.md000066400000000000000000000353511413105061500142270ustar00rootroot00000000000000OpenCSD - An open source CoreSight(tm) Trace Decode library {#mainpage} =========================================================== This library provides an API suitable for the decode of ARM(r) CoreSight(tm) trace streams. The library will decode formatted trace in three stages: 1. *Frame Deformatting* : Removal CoreSight frame formatting from individual trace streams. 2. *Packet Processing* : Separate individual trace streams into discrete packets. 3. *Packet Decode* : Convert the packets into fully decoded trace describing the program flow on a core. The library is implemented in C++ with an optional "C" API. Library Versioning ------------------ From version 0.4, library versioning will use a semantic versioning format (per http://semver.org) of the form _Major.minor.patch_ (M.m.p). Internal library version calls, documentation and git repository will use this format moving forwards. Where a patch version is not quoted, or quoted as .x then comments will apply to the entire release. Releases will be at M.m.0, with patch version incremented for bugfixes or documentation updates. Releases will appear on the master branch in the git repository with an appropriate version tag. CoreSight Trace Component Support. ---------------------------------- _Current Version 1.2.0_ ### Current support: - ETE (v1.1) instruction trace - packet processing and packet decode. - ETMv4 (v4.6 [A/R profile] v4.4 [M profile]) instruction trace - packet processing and packet decode. - PTM (v1.1) instruction trace - packet processing and packet decode. - ETMv3 (v3.5) instruction trace - packet processing and packet decode. - ETMv3 (v3.5) data trace - packet processing. - STM (v1.1) software trace - packet processing and packet decode. - External Decoders - support for addition of external / custom decoders into the library. ### Support to be added: - ITM software trace - packet processing and decode. - ETMv3 data trace - packet decode. - ETMv4 data trace - packet processing and decode. Note: for ITM and STM, packet decode is combining Master+Channel+Marker+Payload packets into a single generic output packet. Note on the Git Repository. --------------------------- This git repository for OpenCSD contains only source for the OpenCSD decoder library. From version 0.4, releases appear as versioned tags on the master branch. CoreSight kernel drivers and perf suport for CoreSight trace is maintained in the latest upstream kernel versions. One exception is a minor patch required for autoFDO support. See [autofdo.md](@ref AutoFDO). Documentation ------------- API Documentation is provided inline in the source header files, which use the __doxygen__ standard mark-up. Run `doxygen` on the `./doxygen_config.dox` file located in the `./docs` directory.. doxygen ./doxygen_config.dox This will produce the documentation in the `./docs/html` directory. The doxygen configuration also includes the `*.md` files as part of the documentation. Application Programming using the Library ----------------------------------------- See the [programmers guide](@ref prog_guide) for details on usage of the library in custom applications. (`./docs/prog_guide/prog_guide_main.md`). Building and Installing the Library ----------------------------------- See [build_libs.md](@ref build_lib) in the `./docs` directory for build details. The linux build makefile now contains options to install the library for a linux environment. How the Library is used in Linux `perf` --------------------------------------- The library and additional infrastructure for programming CoreSight components has been integrated with the standard linux perfomance analysis tool `perf`. See [HOWTO.md](@ref howto_perf) for details. How to use the Library, perf and Trace for AutoFDO -------------------------------------------------- Capturing trace using perf and decoding using the library can generate profiles for AutoFDO. See [autofdo.md](@ref AutoFDO) for details and scripts. (`./tests/auto-fdo/autofdo.md`). Version and Modification Information ==================================== - _Version 0.001_: Library development - tested with `perf` tools integration - BKK16, 8th March 2016 - _Version 0.002_: Library development - added in PTM decoder support. Restructure header dir, replaced ARM rctdl prefix with opencsd/ocsd. - _Version 0.003_: Library development - added in ETMv3 instruction decoder support. - _Version 0.4_ : Library development - updated decode tree and C-API for generic decoder handling. Switch to semantic versioning. - _Version 0.4.1_: Minor Update & Bugfixes - fix to PTM decoder, ID checking on test program, adds NULL_TS support in STM packet processor. - _Version 0.4.2_: Minor Update - Update to documentation for perf usage in 4.8 kernel branch. - _Version 0.5.0_: Library Development - external decoder support. STM full decode. - _Version 0.5.1_: Minor Update & Bugfixes - Update HOWTO for kernel 4.9. Build fixes for parallel builds - _Version 0.5.2_: Minor Update & Bugfixes - Update trace info packet string o/p + Cycle count packet bugfixes. - _Version 0.5.3_: Doc update for using AutoFDO with ETM and additional timestamp and cycle count options. - _Version 0.5.4_: Updates: X-compile for arm/arm64. Remove deprecated VS2010 builds. Bugfix: GCC inline semantics in debug build. - _Version 0.6.0_: Packet printers moved from tests into the main library. C++ and C APIs updated to allow clients to use them. Update to allow perf to insert barrier packets (4xFSYNC) which the decoder can be made to use to reset the decode state. - _Version 0.6.1_: Bugfix: instruction follower bug on A32 branch to T32. - _Version 0.7.0_: Add handling for trace return stack feature to ETMv4 and PTM trace. - _Version 0.7.1_: Bugfix: ETMv3 packet processor. - _Version 0.7.2_: Bugfix: ETMv4 decoder - fix exact match packet address follower. - _Version 0.7.3_: Bugfix: PTM decoder - issues with initialisation and ASYNC detection. - _Version 0.7.4_: Notification of change of repository for perf extensions. gcc 6.x build fixes. - _Version 0.7.5_: Bugfix: ETMv4 decoder memory leak. Linux build update - header dependencies force rebuild. - _Version 0.8.0_: Header restructure and build update to enable linux version to install library and C-API headers in standard locations. Library output naming changed from 'cstraced' to 'opencsd'. - _Version 0.8.1_: Minor updates: Use install tool to copy headers. Changes to HOWTO for perf usage. - _Version 0.8.2_: Bugfix: C++ init errors fixed for CLANG build process. - _Version 0.8.3_: Bugfix: ETMv4 decoder issues fixed. - _Version 0.8.4_: build: makefile updates and improvements to get build process compatible with Debian packaging. - _Version 0.9.0_: Performance improvements for perf: Additional info in instruction range output packet. Caching memory accesses. Added Programmers guide to documentation. - _Version 0.9.1_: Bugfix: Crash during decode when first memory access is to address where no image provided. - _Version 0.9.2_: Bugfix: ETMv4: Incorrect Exception number output for Genric exception packets. AutoFDO: update documentation for AutoFDO usage and add in "record.sh" script - _Version 0.9.3_: Bugfix: Test snapshot library not handling 'offset' parameters in dump file sections. Install: ocsd_if_version.h moved to opencsd/include to allow installation on OS & use in compiling client apps. - _Version 0.10.0_: - __Updates__: Add additional information about the last instruction to the generic output packet. - __Docs__: update docs for updated output packet. - __Bugfix__: typecast removed from OCSD_VER_NUM in ocsd_if_version.h to allow use in C pre-processor. - __Bugfix__: ETMV4: Interworking ISA change between A32-T32 occasionally missed during instruction decode. - _Version 0.10.1_: - __Updates__: Build update - allow multi-thread make (make -j). - __Docs__: Minor update to AutoFDO documentation. - _Version 0.11.0_: - __Update__: ETM v4 decoder updated to support ETM version up to v4.4 - __Update__: Memory access callback function - added new callback signature to provide TraceID to client when requesting memory. - __Update__: Created new example program to demonstrate using memory buffer in APIs. - __Bugfix__: Typos in docs and source. - __Bugfix__: Memory accessor - validate callback return values. - _Version 0.11.1_: - __Update__: build:- change -fpic to -fPIC to allow Debian build on sparc. - __Bugfix__: build:- remove unused variable - _Version 0.11.2_: - __Update__: docs:- HOWTO.md update to match new perf build requirements. - __Bugfix__: Minor spelling typos fixed. - _Version 0.12.0_: - __Update__: Frame deformatter - TPIU FSYNC and HSYNC support added. - __Update__: ETM v4: Bugfix & clarification on Exception trace handling. Where exception occurs at a branch target before any instructions have been executed, the preferred return address is also the target address of the branch instruction. This case now includes as specific flag in the packet. Additionally any context change associated with this target address was being applied incorrectly. - _Update__: Core / Architecture mapping to core names as used by test programs / snapshots updated to include additional recent ARM cores. - __Update__: Docs: Update to reflect new exception flag. Update test program example to reflect latest output. - __Bugfix__: ETM v4: Valid trace info packet was not handled correctly (0x01, 0x00). - __Bugfix__: ETM v4: Error messaging on commit stack overflow. - _Version 0.12.1_: - __Update__: build: remove -g option from release build. - __Update__: tests: Snapshots can now use generic arch+profile names rather than core names, e.g. ARMv8-A - __Bugfix__: Instruction decode - v8.3 B[L]A{A|B}[Z] instructions mis-identified. -__Bugfix__: Transition from A64 to A32 can be mis-decoded if the trace implementation represents the transition as an individual address packet followed by a context packet. - _Version 0.12.2_: - __Bugfix__: Clean up memory leaks. - __Bugfix__: ETMv4: Ensure addressing history zeroed after TINFO. - __Update__: Allow GCC version to be included in build output path. - __Bugfix__: Packet printing update when WFI/WFE is P0 element. - _Version 0.13.x_ : Intermediate development version. - _Version 0.14.0_: - __Update__: ETMv4 - decoder update & simplification to handle advanced trace features. - __Update__: ETMv4 - decoder support for speculative trace. - __Update__: Generic Elements: Additional information in EOT, UNSYNC, ON packets to give reason. - __Update__: Memaccess: Add EL2 secure memory space flag. - __Update__: Documentation: Updated for release changes and to reflect latest kernel version support for CoreSight. - __Update__: Perf helper scripts updated to reflect latest build flow. - __Bugfix__: Fix for component operational flag inputs. - _Version 0.14.1_: - __Update__: ETMv4 - Add support for Q elements. - __Bugfix__: build: fix logic issue for && operator. (github issue #23, sumitted by yabinc) - _Version 0.14.2_: - __Update__: Architecture versioning. Set enum tag values to make conversion to numeric version easier. - __Update__: I-decode: remove global temporary decode state data and replace with local instance data to make library more easily usable in multi-threaded programs. - __Bugfix__: I-decode: Some Thumb instructions not correctly reported as implied returns. (github issue #24, submitted by kongy). - _Version 0.14.3_: - __Update__: Fix makefile to be compliant with RPM base distros. (github issue #26, submitted by jlinton) - __Update__: Add section to autofdo document. - __Bugfix__: STM: fix bug that was missing ASYNC packets. (github issue #27, reported by subhasish Karmakar) - _Version 0.14.4_: - __Update__: makefile: Add DESTDIR to install targets. (github issue #30) - __Update__: tests: add script to run single test only. - __Update__: docs: update to location of ARM coresight driver backports directory. - __Bugfix__: ETMv3: Fix missing comma in string list. (github issue #31) - __Bugfix__: makefile: tests: Fix build race problem (github issue #32) - __Bugfix__: tests: fix ignore tpiu command line options (github issue #28) - _Version 1.0.0_: - __New Decode Protocol__: Support added for the ETE protocol, used by ARM PEs that implement the FEAT_ETE feature. Supports new architectural features in this trace, including FEAT_TME. - __Update__: Output Elememts: New protocol defines two new output elements. - __Update__: Add support for WFIT / WFET instructions traced as P0 elements. - __Update__: Architecture versioning. Arch v8 + PEs may add features in a flexible manner, and ARM also declares future features ahead of architecture versions to allow support to be added. APIs requiring an architecture version can now use ARCH_AA64 to declare a version of v8.3 + additional features. This relaxes the strict versionnig rules that the decoder uses when looking for Opcodes as trace waypoints. - __Update__: docs: Add linux 'man' file and installation. - __Bugfix__: build: Fix clean install, and remove static lib build test from main makefile to dev makefile only. (github issue #33) - _Version 1.1.0_: - __Update__: ETM v4.6 support. - __Update__: C-API - add API functions to get last error and convert error code to string. - __Bugfix__: ETMv4/ETE - fix loop problem in commit elements. - __Bugfix__: ETMv4/ETE - make error handling consistent. - __Bugfix__: Add Pull request #36 from github (Ross Burton) - __Bugfix__: Add Pull request #37 from github (Ian Rogers) - _Version 1.1.1_: - __Bugfix__: Fix include and install for ETE decoder headers. - _Version 1.2.0_: - __Update__: Add API for counting packet decode statistics, and Frame debmux statistics. - __Update__: Update test scripts to allow additional command line options to be passed. - __Bugfix__: Fix various build warnings. - __Bugfix__: Remove unused variable (github issue #38 from Yi Kong) - __Bugfix__: Remove noisy printf (James Clark) - __Bugfix__: Fix documentation issues (github issues #39 & #40 from rbresalier) Licence Information =================== This library is licensed under the [BSD three clause licence.](http://directory.fsf.org/wiki/License:BSD_3Clause) A copy of this license is in the `LICENCE` file included with the source code. Contact ======= Using the github site: https://github.com/Linaro/OpenCSD Mailing list: coresight@lists.linaro.org OpenCSD-1.2.0/TODO000066400000000000000000000020461413105061500134330ustar00rootroot00000000000000* ETMv4/PTM - decoder updates to handle advanced configuration. -> Certain (currently unused by perf / current hardware) configuration settings can alter the format of the trace output. One example is Return Stack - settable in the control registers for PTM/ETMv4, and removes some inline addresses. Decoder must use a follower to correctly trace when this is set. * ITM packet processing and decode. -> ITM is primarily an M class SW trace module. I wouldn't expect to see it on systems with STM, unless a companion M class was present. *Data trace - ETMv4 / ETMv3 -> Differing solutions to data trace in v4/v3 - v4 is separate trace stream completely, output at trace ID +1. ETMv3 is inline with the instruction trace. Cortex-A cores do not support this architecturally. On R and M profile cores it is an option. There are scenarios in future that could see linux on R cores, plus on something like Juno it is possible to switch on trace for the SCP (M class processor). So at some point data trace may be required. OpenCSD-1.2.0/decoder/000077500000000000000000000000001413105061500143465ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/000077500000000000000000000000001413105061500154455ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/linux/000077500000000000000000000000001413105061500166045ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/linux/makefile000066400000000000000000000167321413105061500203150ustar00rootroot00000000000000######################################################## # Copyright 2015 ARM Limited. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ################################################################################# # OpenCSD - master makefile for libraries and tests # # command line options # DEBUG=1 create a debug build # # Set project root - relative to build makefile ifeq ($(OCSD_ROOT),) OCSD_ROOT := $(shell echo $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) | sed 's,/build/linux.*,,') export OCSD_ROOT endif # library names LIB_BASE_NAME=opencsd export LIB_BASE_NAME LIB_CAPI_NAME=$(LIB_BASE_NAME)_c_api export LIB_CAPI_NAME # source root directories export OCSD_LIB_ROOT=$(OCSD_ROOT)/lib export OCSD_INCLUDE=$(OCSD_ROOT)/include export OCSD_SOURCE=$(OCSD_ROOT)/source export OCSD_TESTS=$(OCSD_ROOT)/tests export LIB_UAPI_INC_DIR=opencsd # tools export MASTER_CC=$(CROSS_COMPILE)gcc export MASTER_CXX=$(CROSS_COMPILE)g++ export MASTER_LINKER=$(CROSS_COMPILE)g++ export MASTER_LIB=$(CROSS_COMPILE)ar export INSTALL=install # installation directory PREFIX ?=/usr LIB_PATH ?= lib INSTALL_LIB_DIR=$(DESTDIR)$(PREFIX)/$(LIB_PATH) INSTALL_BIN_DIR=$(DESTDIR)$(PREFIX)/bin export INSTALL_INCLUDE_DIR=$(DESTDIR)$(PREFIX)/include/ INSTALL_MAN_DIR=$(DESTDIR)$(PREFIX)/share/man/man1 # compile flags CFLAGS += $(CPPFLAGS) -c -Wall -DLINUX -Wno-switch -Wlogical-op -fPIC CXXFLAGS += $(CPPFLAGS) -c -Wall -DLINUX -Wno-switch -Wlogical-op -fPIC -std=c++11 LDFLAGS += -Wl,-z,defs ARFLAGS ?= rcs # debug variant ifdef DEBUG CFLAGS += -g -O0 -DDEBUG CXXFLAGS += -g -O0 -DDEBUG BUILD_VARIANT=dbg else CFLAGS += -O2 -DNDEBUG CXXFLAGS += -O2 -DNDEBUG BUILD_VARIANT=rel endif # export build flags export CFLAGS export CXXFLAGS export LDFLAGS export ARFLAGS # target directories - fixed for default packaging build PLAT_DIR ?= builddir export PLAT_DIR export LIB_TARGET_DIR=$(OCSD_LIB_ROOT)/$(PLAT_DIR) export LIB_TEST_TARGET_DIR=$(OCSD_TESTS)/lib/$(PLAT_DIR) export BIN_TEST_TARGET_DIR=$(OCSD_TESTS)/bin/$(PLAT_DIR) # Fish version out of header file (converting from hex) getver:=printf "%d" $$(awk '/\#define VARNAME/ { print $$3 }' $(OCSD_ROOT)/include/opencsd/ocsd_if_version.h) export SO_MAJOR_VER := $(shell $(subst VARNAME,OCSD_VER_MAJOR,$(getver))) SO_MINOR_VER := $(shell $(subst VARNAME,OCSD_VER_MINOR,$(getver))) SO_PATCH_VER := $(shell $(subst VARNAME,OCSD_VER_PATCH,$(getver))) export SO_VER := $(SO_MAJOR_VER).$(SO_MINOR_VER).$(SO_PATCH_VER) ########################################################### # build targets all: libs tests libs: $(LIB_BASE_NAME)_lib $(LIB_CAPI_NAME)_lib DEF_SO_PERM ?= 644 install: libs tests mkdir -p $(INSTALL_LIB_DIR) $(INSTALL_INCLUDE_DIR) $(INSTALL_BIN_DIR) cp -d $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so $(INSTALL_LIB_DIR)/ cp -d $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so.$(SO_MAJOR_VER) $(INSTALL_LIB_DIR)/ $(INSTALL) --mode=$(DEF_SO_PERM) $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so.$(SO_VER) $(INSTALL_LIB_DIR)/ cp -d $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so $(INSTALL_LIB_DIR)/ cp -d $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so.$(SO_MAJOR_VER) $(INSTALL_LIB_DIR)/ $(INSTALL) --mode=$(DEF_SO_PERM) $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so.$(SO_VER) $(INSTALL_LIB_DIR)/ ifndef DISABLE_STATIC $(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a $(INSTALL_LIB_DIR)/ $(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a $(INSTALL_LIB_DIR)/ endif cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make install_inc $(INSTALL) --mode=755 $(BIN_TEST_TARGET_DIR)/trc_pkt_lister $(INSTALL_BIN_DIR)/ install_man: mkdir -p $(INSTALL_MAN_DIR) $(INSTALL) --mode=644 $(OCSD_ROOT)/docs/man/trc_pkt_lister.1 $(INSTALL_MAN_DIR)/ ################################ # build OpenCSD trace decode library # $(LIB_BASE_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so: $(LIB_BASE_NAME)_all $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a: $(LIB_BASE_NAME)_all # single command builds both .a and .so targets in sub-makefile $(LIB_BASE_NAME)_all: mkdir -p $(LIB_TARGET_DIR) cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && $(MAKE) ################################ # build OpenCSD trace decode C API library # $(LIB_CAPI_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so: $(LIB_CAPI_NAME)_all $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a: $(LIB_CAPI_NAME)_all # single command builds both .a and .so targets in sub-makefile $(LIB_CAPI_NAME)_all: $(LIB_BASE_NAME)_lib mkdir -p $(LIB_TARGET_DIR) cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && $(MAKE) ################################# # build tests .PHONY: tests tests: libs cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && $(MAKE) cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && $(MAKE) cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && $(MAKE) cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE) cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE) # # build docs .PHONY: docs docs: (cd $(OCSD_ROOT)/docs; doxygen doxygen_config.dox) ############################################################# # clean targets # clean: clean_libs clean_tests clean_docs .PHONY: clean_libs clean_tests clean_docs clean_install clean_libs: cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && $(MAKE) clean cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && $(MAKE) clean clean_tests: cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && $(MAKE) clean cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && $(MAKE) clean cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && $(MAKE) clean cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE) clean cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE) clean -rmdir $(OCSD_TESTS)/lib clean_docs: -rm -r $(OCSD_ROOT)/docs/html clean_install: -rm $(INSTALL_LIB_DIR)/lib$(LIB_BASE_NAME).* -rm $(INSTALL_LIB_DIR)/lib$(LIB_CAPI_NAME).* -rm -r $(INSTALL_INCLUDE_DIR)/$(LIB_UAPI_INC_DIR) -rm $(INSTALL_BIN_DIR)/trc_pkt_lister -rm $(INSTALL_MAN_DIR)/trc_pkt_lister.1 OpenCSD-1.2.0/decoder/build/linux/makefile.dev000066400000000000000000000050751413105061500210700ustar00rootroot00000000000000######################################################## # Copyright 2018 ARM Limited. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ################################################################################# ## Set up some addtional parameters for development environment builds. ## ## define arch/build sub-dirs for non installed dev builds ifndef ARCH ARCH := $(shell dpkg-architecture -q DEB_HOST_GNU_CPU || echo not) endif # platform bit size variant ifeq ($(ARCH),x86) MFLAG:="-m32" BIT_VARIANT=32 else ifeq ($(ARCH),x86_64) MFLAG:="-m64" BIT_VARIANT=64 else ifeq ($(ARCH),arm) BIT_VARIANT=-arm else ifeq ($(ARCH),arm64) BIT_VARIANT=-arm64 else ifeq ($(ARCH),aarch64) BIT_VARIANT=-arm64 else ifeq ($(ARCH),aarch32) BIT_VARIANT=-arm endif CXXFLAGS += $(MFLAG) CFLAGS += $(MFLAG) LDFLAGS += $(MFLAG) ifdef GCCDIR GCCVER:= $(shell $(CROSS_COMPILE)gcc -dumpversion | cut -c 1-3) PLAT_DIR=builddir/linux$(BIT_VARIANT)/GCC_$(GCCVER) else PLAT_DIR=linux$(BIT_VARIANT)/$(BUILD_VARIANT) endif # for dev env, enable static link build test export TEST_STATIC_LINKING=1 # include the main makefile include makefile OpenCSD-1.2.0/decoder/build/linux/rctdl_c_api_lib/000077500000000000000000000000001413105061500216755ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/linux/rctdl_c_api_lib/makefile000066400000000000000000000116031413105061500233760ustar00rootroot00000000000000######################################################## # Copyright 2015 ARM Limited. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ################################################################################# # OpenCSD - makefile for C API wrapper library # CXX := $(MASTER_CXX) LINKER := $(MASTER_LINKER) LIB := $(MASTER_LIB) LIB_NAME = lib$(LIB_CAPI_NAME) SO_LIB_DEPS= -L$(LIB_TARGET_DIR) -l$(LIB_BASE_NAME) BUILD_DIR=./$(PLAT_DIR) VPATH= $(OCSD_SOURCE)/c_api CXX_INCLUDES= \ -I$(OCSD_INCLUDE) \ -I$(OCSD_SOURCE)/c_api OBJECTS=$(BUILD_DIR)/ocsd_c_api.o \ $(BUILD_DIR)/ocsd_c_api_custom_obj.o INST_INC_SRC=$(OCSD_INCLUDE)/$(LIB_UAPI_INC_DIR) INST_INC_DST=$(INSTALL_INCLUDE_DIR)/$(LIB_UAPI_INC_DIR) all: links links: $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER) $(LIB_TARGET_DIR)/$(LIB_NAME).so .PHONY: links LIBS:= $(LIB_TARGET_DIR)/$(LIB_NAME).a $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER) $(LIB_TARGET_DIR): mkdir -p $(LIB_TARGET_DIR) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(LIB_TARGET_DIR)/$(LIB_NAME).a: $(OBJECTS) | $(BUILD_DIR) $(LIB_TARGET_DIR) $(LIB) $(ARFLAGS) $(LIB_TARGET_DIR)/$(LIB_NAME).a $(OBJECTS) $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER): $(OBJECTS) | $(BUILD_DIR) $(LIB_TARGET_DIR) $(LINKER) $(LDFLAGS) -shared -o $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER) -Wl,-soname,$(LIB_NAME).so.$(SO_MAJOR_VER) $(OBJECTS) $(SO_LIB_DEPS) $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER): $(LIBS) | $(LIB_TARGET_DIR) ( cd $(LIB_TARGET_DIR); ln -sf $(LIB_NAME).so.$(SO_VER) $(LIB_NAME).so.$(SO_MAJOR_VER) ) $(LIB_TARGET_DIR)/$(LIB_NAME).so: $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER) | $(LIB_TARGET_DIR) ( cd $(LIB_TARGET_DIR); ln -sf $(LIB_NAME).so.$(SO_MAJOR_VER) $(LIB_NAME).so ) ##### build rules ## object dependencies DEPS := $(OBJECTS:%.o=%.d) -include $(DEPS) ## object compile $(BUILD_DIR)/%.o : %.cpp | $(BUILD_DIR) $(CXX) $(CXXFLAGS) $(CXX_INCLUDES) -MMD $< -o $@ #### clean .PHONY: clean clean: rm -f $(OBJECTS) rm -f $(DEPS) rm -f $(LIB_TARGET_DIR)/$(LIB_NAME).a rm -f $(LIB_TARGET_DIR)/$(LIB_NAME).so* -rmdir $(BUILD_DIR) #### install the necessary include files for the c-api library on linux install_inc: $(INSTALL) -d --mode=0755 $(INST_INC_DST)/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/trc_gen_elem_types.h $(INST_INC_DST)/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/ocsd_if_types.h $(INST_INC_DST)/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/ocsd_if_version.h $(INST_INC_DST)/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/trc_pkt_types.h $(INST_INC_DST)/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/ptm $(INSTALL) --mode=0644 $(INST_INC_SRC)/ptm/trc_pkt_types_ptm.h $(INST_INC_DST)/ptm/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/stm $(INSTALL) --mode=0644 $(INST_INC_SRC)/stm/trc_pkt_types_stm.h $(INST_INC_DST)/stm/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/etmv3 $(INSTALL) --mode=0644 $(INST_INC_SRC)/etmv3/trc_pkt_types_etmv3.h $(INST_INC_DST)/etmv3/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/etmv4 $(INSTALL) --mode=0644 $(INST_INC_SRC)/etmv4/trc_pkt_types_etmv4.h $(INST_INC_DST)/etmv4/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/ete $(INSTALL) --mode=0644 $(INST_INC_SRC)/ete/trc_pkt_types_ete.h $(INST_INC_DST)/ete/ $(INSTALL) -d --mode=0755 $(INST_INC_DST)/c_api $(INSTALL) --mode=0644 $(INST_INC_SRC)/c_api/ocsd_c_api_types.h $(INST_INC_DST)/c_api/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/c_api/opencsd_c_api.h $(INST_INC_DST)/c_api/ $(INSTALL) --mode=0644 $(INST_INC_SRC)/c_api/ocsd_c_api_custom.h $(INST_INC_DST)/c_api/ OpenCSD-1.2.0/decoder/build/linux/ref_trace_decode_lib/000077500000000000000000000000001413105061500226675ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/linux/ref_trace_decode_lib/makefile000066400000000000000000000122471413105061500243750ustar00rootroot00000000000000######################################################## # Copyright 2015 ARM Limited. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ################################################################################# # OpenCSD - makefile for main trace decode library # CXX := $(MASTER_CXX) LINKER := $(MASTER_LINKER) LIB := $(MASTER_LIB) LIB_NAME= lib$(LIB_BASE_NAME) BUILD_DIR=./$(PLAT_DIR) VPATH= $(OCSD_SOURCE) \ $(OCSD_SOURCE)/etmv3 \ $(OCSD_SOURCE)/etmv4 \ $(OCSD_SOURCE)/ete \ $(OCSD_SOURCE)/ptm \ $(OCSD_SOURCE)/i_dec \ $(OCSD_SOURCE)/mem_acc \ $(OCSD_SOURCE)/stm \ $(OCSD_SOURCE)/pkt_printers CXX_INCLUDES= \ -I$(OCSD_INCLUDE) \ -I$(OCSD_SOURCE) ETMV3OBJ= $(BUILD_DIR)/trc_cmp_cfg_etmv3.o \ $(BUILD_DIR)/trc_pkt_decode_etmv3.o \ $(BUILD_DIR)/trc_pkt_elem_etmv3.o \ $(BUILD_DIR)/trc_pkt_proc_etmv3.o \ $(BUILD_DIR)/trc_pkt_proc_etmv3_impl.o ETMV4OBJ= $(BUILD_DIR)/trc_cmp_cfg_etmv4.o \ $(BUILD_DIR)/trc_etmv4_stack_elem.o \ $(BUILD_DIR)/trc_pkt_proc_etmv4i.o \ $(BUILD_DIR)/trc_pkt_decode_etmv4i.o \ $(BUILD_DIR)/trc_pkt_elem_etmv4i.o \ $(BUILD_DIR)/trc_cmp_cfg_ete.o PTMOBJ= $(BUILD_DIR)/trc_cmp_cfg_ptm.o \ $(BUILD_DIR)/trc_pkt_elem_ptm.o \ $(BUILD_DIR)/trc_pkt_proc_ptm.o \ $(BUILD_DIR)/trc_pkt_decode_ptm.o IDECOBJ= $(BUILD_DIR)/trc_i_decode.o \ $(BUILD_DIR)/trc_idec_arminst.o MEMACCOBJ= $(BUILD_DIR)/trc_mem_acc_mapper.o \ $(BUILD_DIR)/trc_mem_acc_bufptr.o \ $(BUILD_DIR)/trc_mem_acc_file.o \ $(BUILD_DIR)/trc_mem_acc_base.o \ $(BUILD_DIR)/trc_mem_acc_cb.o \ $(BUILD_DIR)/trc_mem_acc_cache.o STMOBJ= $(BUILD_DIR)/trc_pkt_elem_stm.o \ $(BUILD_DIR)/trc_pkt_proc_stm.o \ $(BUILD_DIR)/trc_pkt_decode_stm.o PKTPRNTOBJ= $(BUILD_DIR)/raw_frame_printer.o \ $(BUILD_DIR)/trc_print_fact.o OBJECTS=$(BUILD_DIR)/ocsd_code_follower.o \ $(BUILD_DIR)/ocsd_dcd_tree.o \ $(BUILD_DIR)/ocsd_error.o \ $(BUILD_DIR)/ocsd_error_logger.o \ $(BUILD_DIR)/ocsd_gen_elem_list.o \ $(BUILD_DIR)/ocsd_gen_elem_stack.o \ $(BUILD_DIR)/ocsd_lib_dcd_register.o \ $(BUILD_DIR)/ocsd_msg_logger.o \ $(BUILD_DIR)/ocsd_version.o \ $(BUILD_DIR)/trc_component.o \ $(BUILD_DIR)/trc_core_arch_map.o \ $(BUILD_DIR)/trc_frame_deformatter.o \ $(BUILD_DIR)/trc_gen_elem.o \ $(BUILD_DIR)/trc_printable_elem.o \ $(BUILD_DIR)/trc_ret_stack.o \ $(ETMV3OBJ) \ $(ETMV4OBJ) \ $(IDECOBJ) \ $(MEMACCOBJ) \ $(STMOBJ) \ $(PTMOBJ) \ $(PKTPRNTOBJ) all: links links: $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER) $(LIB_TARGET_DIR)/$(LIB_NAME).so .PHONY: links LIBS:= $(LIB_TARGET_DIR)/$(LIB_NAME).a $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER) $(LIB_TARGET_DIR): mkdir -p $(LIB_TARGET_DIR) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(LIB_TARGET_DIR)/$(LIB_NAME).a: $(OBJECTS) | $(BUILD_DIR) $(LIB_TARGET_DIR) $(LIB) $(ARFLAGS) $(LIB_TARGET_DIR)/$(LIB_NAME).a $(OBJECTS) $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER): $(OBJECTS) | $(BUILD_DIR) $(LIB_TARGET_DIR) $(LINKER) $(LDFLAGS) -shared -o $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_VER) -Wl,-soname,$(LIB_NAME).so.$(SO_MAJOR_VER) $(OBJECTS) $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER): $(LIBS) | $(LIB_TARGET_DIR) ( cd $(LIB_TARGET_DIR); ln -sf $(LIB_NAME).so.$(SO_VER) $(LIB_NAME).so.$(SO_MAJOR_VER) ) $(LIB_TARGET_DIR)/$(LIB_NAME).so: $(LIB_TARGET_DIR)/$(LIB_NAME).so.$(SO_MAJOR_VER) | $(LIB_TARGET_DIR) ( cd $(LIB_TARGET_DIR); ln -sf $(LIB_NAME).so.$(SO_MAJOR_VER) $(LIB_NAME).so ) ##### build rules ## object dependencies DEPS := $(OBJECTS:%.o=%.d) -include $(DEPS) ## object compile $(BUILD_DIR)/%.o : %.cpp | $(BUILD_DIR) $(CXX) $(CXXFLAGS) $(CXX_INCLUDES) -MMD $< -o $@ #### clean .PHONY: clean clean: rm -f $(OBJECTS) rm -f $(DEPS) rm -f $(LIB_TARGET_DIR)/$(LIB_NAME).a rm -f $(LIB_TARGET_DIR)/$(LIB_NAME).so* -rmdir $(BUILD_DIR) OpenCSD-1.2.0/decoder/build/win-vs2015/000077500000000000000000000000001413105061500172005ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/win-vs2015/opencsd.props000066400000000000000000000013011413105061500217130ustar00rootroot00000000000000 opencsd opencsd_c_api $(LIB_BASE_NAME) true $(LIB_CAPI_NAME) true OpenCSD-1.2.0/decoder/build/win-vs2015/rctdl_c_api_lib/000077500000000000000000000000001413105061500222715ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj000066400000000000000000000421201413105061500267760ustar00rootroot00000000000000 Debug-dll Win32 Debug-dll x64 Debug Win32 Debug x64 Release-dll Win32 Release-dll x64 Release Win32 Release x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3} Win32Proj rctdl_c_api_lib ocsd_c_api_lib StaticLibrary true MultiByte v140 DynamicLibrary true MultiByte v140 StaticLibrary true MultiByte v140 DynamicLibrary true MultiByte v140 StaticLibrary false true MultiByte v140 DynamicLibrary false true MultiByte v140 StaticLibrary false true MultiByte v140 DynamicLibrary false true MultiByte v140 ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_CAPI_NAME) ..\..\..\lib\win$(PlatformArchitecture)\rel\ $(Platform)\$(Configuration)\ $(LIB_CAPI_NAME) ..\..\..\lib\win$(PlatformArchitecture)\dbg\ lib$(LIB_CAPI_NAME) ..\..\..\lib\win$(PlatformArchitecture)\dbg\ $(LIB_CAPI_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\dbg\ lib$(LIB_CAPI_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\dbg\ $(LIB_CAPI_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_CAPI_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\rel\ $(Platform)\$(Configuration)\ $(LIB_CAPI_NAME) Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_USRDLL;_OCSD_C_API_DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true {7f500891-cc76-405f-933f-f682bc39f923} OpenCSD-1.2.0/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters000066400000000000000000000037321413105061500304530ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms Header Files Header Files Source Files Header Files Source Files Header Files Header Files Source Files Source Files OpenCSD-1.2.0/decoder/build/win-vs2015/ref_trace_decode_lib/000077500000000000000000000000001413105061500232635ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln000066400000000000000000000255241413105061500300740ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencsd_lib", "ref_trace_decode_lib.vcxproj", "{7F500891-CC76-405F-933F-F682BC39F923}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ocsd_c_api_lib", "..\rctdl_c_api_lib\rctdl_c_api_lib.vcxproj", "{533F929A-A73B-46B6-9D5F-FFCD62F734E3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "snapshot_parser_lib", "..\..\..\tests\build\win-vs2015\snapshot_parser_lib\snapshot_parser_lib.vcxproj", "{DE1F395D-4F53-42FB-8AEF-993A4BF7E411}" ProjectSection(ProjectDependencies) = postProject {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "trc_pkt_lister", "..\..\..\tests\build\win-vs2015\trc_pkt_lister\trc_pkt_lister.vcxproj", "{18ABC652-AB11-4993-9491-1A7FB7117339}" ProjectSection(ProjectDependencies) = postProject {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "c_api_pkt_print_test", "..\..\..\tests\build\win-vs2015\c_api_pkt_print_test\c_api_pkt_print_test.vcxproj", "{3AC169DA-E156-4D16-95DF-73D7302A5606}" ProjectSection(ProjectDependencies) = postProject {46219A32-8178-41C1-B3B1-B5A6E547515F} = {46219A32-8178-41C1-B3B1-B5A6E547515F} {533F929A-A73B-46B6-9D5F-FFCD62F734E3} = {533F929A-A73B-46B6-9D5F-FFCD62F734E3} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ext_dcd_echo_test", "..\..\..\tests\build\win-vs2015\ext_dcd_echo_test\ext_dcd_echo_test.vcxproj", "{46219A32-8178-41C1-B3B1-B5A6E547515F}" ProjectSection(ProjectDependencies) = postProject {533F929A-A73B-46B6-9D5F-FFCD62F734E3} = {533F929A-A73B-46B6-9D5F-FFCD62F734E3} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mem-buffer-eg", "..\..\..\tests\build\win-vs2015\mem-buffer-eg\mem-buffer-eg.vcxproj", "{BC090130-2C53-4CF6-8AD4-37BF72B8D01A}" ProjectSection(ProjectDependencies) = postProject {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Debug-dll|Win32 = Debug-dll|Win32 Debug-dll|x64 = Debug-dll|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 Release-dll|Win32 = Release-dll|Win32 Release-dll|x64 = Release-dll|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {7F500891-CC76-405F-933F-F682BC39F923}.Debug|Win32.ActiveCfg = Debug|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Debug|Win32.Build.0 = Debug|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Debug|x64.ActiveCfg = Debug|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Debug|x64.Build.0 = Debug|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|Win32.Build.0 = Debug-dll|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|x64.ActiveCfg = Debug-dll|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|x64.Build.0 = Debug-dll|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Release|Win32.ActiveCfg = Release|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Release|Win32.Build.0 = Release|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Release|x64.ActiveCfg = Release|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Release|x64.Build.0 = Release|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|Win32.ActiveCfg = Release-dll|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|Win32.Build.0 = Release-dll|Win32 {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|x64.ActiveCfg = Release-dll|x64 {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|x64.Build.0 = Release-dll|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|Win32.ActiveCfg = Debug|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|Win32.Build.0 = Debug|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|x64.ActiveCfg = Debug|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|x64.Build.0 = Debug|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|Win32.Build.0 = Debug-dll|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|x64.ActiveCfg = Debug-dll|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|x64.Build.0 = Debug-dll|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|Win32.ActiveCfg = Release|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|Win32.Build.0 = Release|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|x64.ActiveCfg = Release|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|x64.Build.0 = Release|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|Win32.ActiveCfg = Release-dll|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|Win32.Build.0 = Release-dll|Win32 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|x64.ActiveCfg = Release-dll|x64 {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|x64.Build.0 = Release-dll|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|Win32.ActiveCfg = Debug|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|Win32.Build.0 = Debug|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|x64.ActiveCfg = Debug|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|x64.Build.0 = Debug|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug-dll|x64.ActiveCfg = Debug-dll|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|Win32.ActiveCfg = Release|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|Win32.Build.0 = Release|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|x64.ActiveCfg = Release|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|x64.Build.0 = Release|x64 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release-dll|Win32.ActiveCfg = Release-dll|Win32 {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release-dll|x64.ActiveCfg = Release-dll|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|Win32.ActiveCfg = Debug|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|Win32.Build.0 = Debug|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|x64.ActiveCfg = Debug|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|x64.Build.0 = Debug|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug-dll|x64.ActiveCfg = Debug-dll|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|Win32.ActiveCfg = Release|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|Win32.Build.0 = Release|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|x64.ActiveCfg = Release|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|x64.Build.0 = Release|x64 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release-dll|Win32.ActiveCfg = Release-dll|Win32 {18ABC652-AB11-4993-9491-1A7FB7117339}.Release-dll|x64.ActiveCfg = Release-dll|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|Win32.ActiveCfg = Debug|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|Win32.Build.0 = Debug|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|x64.ActiveCfg = Debug|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|x64.Build.0 = Debug|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|Win32.Build.0 = Debug-dll|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|x64.ActiveCfg = Debug-dll|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|x64.Build.0 = Debug-dll|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|Win32.ActiveCfg = Release|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|Win32.Build.0 = Release|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|x64.ActiveCfg = Release|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|x64.Build.0 = Release|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|Win32.ActiveCfg = Release-dll|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|Win32.Build.0 = Release-dll|Win32 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|x64.ActiveCfg = Release-dll|x64 {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|x64.Build.0 = Release-dll|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|Win32.ActiveCfg = Debug|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|Win32.Build.0 = Debug|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|x64.ActiveCfg = Debug|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|x64.Build.0 = Debug|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|Win32.ActiveCfg = Debug|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|Win32.Build.0 = Debug|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|x64.ActiveCfg = Debug|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|x64.Build.0 = Debug|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|Win32.ActiveCfg = Release|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|Win32.Build.0 = Release|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|x64.ActiveCfg = Release|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|x64.Build.0 = Release|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|Win32.ActiveCfg = Release|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|Win32.Build.0 = Release|Win32 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|x64.ActiveCfg = Release|x64 {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|x64.Build.0 = Release|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|Win32.ActiveCfg = Debug|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|Win32.Build.0 = Debug|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|x64.ActiveCfg = Debug|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|x64.Build.0 = Debug|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|Win32.ActiveCfg = Debug|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|Win32.Build.0 = Debug|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|x64.ActiveCfg = Debug|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|x64.Build.0 = Debug|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|Win32.ActiveCfg = Release|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|Win32.Build.0 = Release|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|x64.ActiveCfg = Release|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|x64.Build.0 = Release|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|Win32.ActiveCfg = Release|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|Win32.Build.0 = Release|Win32 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|x64.ActiveCfg = Release|x64 {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal OpenCSD-1.2.0/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj000066400000000000000000000644501413105061500307740ustar00rootroot00000000000000 Debug-dll Win32 Debug-dll x64 Debug Win32 Debug x64 Release-dll Win32 Release-dll x64 Release Win32 Release x64 {7F500891-CC76-405F-933F-F682BC39F923} Win32Proj ref_trace_decode_lib opencsd_lib 8.1 StaticLibrary true MultiByte v140 StaticLibrary true MultiByte v140 StaticLibrary true MultiByte v140 StaticLibrary true MultiByte v140 StaticLibrary false true MultiByte v140 StaticLibrary false true MultiByte v140 StaticLibrary false true MultiByte v140 StaticLibrary false true MultiByte v140 ..\..\..\lib\win$(PlatformArchitecture)\dbg\ lib$(LIB_BASE_NAME) ..\..\..\lib\win$(PlatformArchitecture)\dbg\ lib$(LIB_BASE_NAME) ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_BASE_NAME) ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_BASE_NAME) ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_BASE_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\rel\ lib$(LIB_BASE_NAME) $(Platform)\$(Configuration)\ ..\..\..\lib\win$(PlatformArchitecture)\dbg\ $(Platform)\$(Configuration)\ lib$(LIB_BASE_NAME) ..\..\..\lib\win$(PlatformArchitecture)\dbg\ lib$(LIB_BASE_NAME) $(Platform)\$(Configuration)\ .lib Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions); ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 Disabled WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions); ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true Level3 MaxSpeed true true WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) ..\..\..\include;%(AdditionalIncludeDirectories) $(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb Windows true true true OpenCSD-1.2.0/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters000066400000000000000000000526101413105061500324360ustar00rootroot00000000000000 {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms {80012968-9f0d-4623-901a-c2fa5f1c0890} {98cd2a71-b44f-4884-bb8a-56c851cc8321} {dd155712-7990-4cdd-b9b0-299d97f625e4} {9ec501e2-9ba4-4bad-a3d3-cdb604cc38b4} {23a35c62-e38f-43f6-a03b-6f1287478a69} {f550018a-8974-4f8b-975a-bd8b86ae418f} {2c796b59-81f6-49c9-88cf-e90ed2e741a3} {5ea7e02d-0667-4d2d-8c3d-039daf112edc} {2aa8a97b-13da-4bd1-bdb5-02f3e1cf030b} {ff9157b6-ef07-41e4-8ff4-322c50ea6665} {0c2ba881-cc82-4567-ab59-d2363b4c3d1b} {73a56760-b7ff-4d56-88f0-13249201081c} {cb3682ee-abbd-44c3-a175-4522d76e2d68} {eb9beab1-99c6-4eaa-88c0-893b05b2e673} {58d2398e-efdd-45d9-b7be-fc6096f3bec2} {0e6e1f5d-465e-4f91-88a3-479952bbd316} {baf047d0-0ff7-4502-b42b-4f1fda94d54b} {3d119e90-c89b-4f27-8163-305924453e1f} {8cfdb19c-28fc-4e79-b8d5-4e54907b1f82} docs-files docs-files docs-files docs-files docs-files docs-files docs-files docs-files Source Files interfaces interfaces interfaces interfaces interfaces interfaces interfaces interfaces interfaces interfaces Header Files\etmv3 Header Files\etmv3 Header Files\etmv3 Header Files\etmv3 Header Files\etmv3 Header Files\etmv4 Header Files\etmv4 Header Files\etmv4 Header Files\etmv4 Header Files\etmv4 Header Files\etmv4 Header Files\ptm Header Files\ptm Header Files\ptm Header Files\ptm Header Files\ptm Header Files\mem_acc Header Files\mem_acc Header Files\mem_acc Header Files\mem_acc Header Files\i_dec Header Files\i_dec Header Files\etmv4 Header Files\mem_acc Header Files\stm Header Files\stm Header Files\stm Header Files\stm Header Files\stm Header Files\etmv3 Header Files\mem_acc Header Files\mem_acc Header Files\ptm Source Files\etmv3 Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common Header Files\common interfaces Header Files\etmv4 Source Files\etmv3 Header Files\ptm Header Files\stm Header Files\common Header Files\stm Header Files\pkt_printers Header Files\pkt_printers Header Files\pkt_printers Header Files\pkt_printers Header Files\pkt_printers Header Files\pkt_printers Header Files\common Header Files\etmv4 Header Files Header Files Header Files Header Files\mem_acc Header Files Header Files\common Header Files\ete Header Files\ete Header Files\ete Header Files\ete Header Files\etmv4 Source Files Source Files Source Files Source Files Source Files Source Files\ptm Source Files\ptm Source Files\ptm Source Files\etmv4 Source Files\etmv4 Source Files\etmv3 Source Files\etmv3 Source Files\etmv3 Source Files\etmv3 Source Files\etmv3 Source Files\etmv4 Source Files\ptm Source Files\stm Source Files\stm Source Files\i_dec Source Files\i_dec Source Files\mem_acc Source Files\mem_acc Source Files\mem_acc Source Files\mem_acc Source Files\mem_acc Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files\stm Source Files\pkt_printers Source Files\pkt_printers Source Files Source Files\etmv4 Source Files\mem_acc Source Files\etmv4 Source Files Source Files\ete OpenCSD-1.2.0/decoder/docs/000077500000000000000000000000001413105061500152765ustar00rootroot00000000000000OpenCSD-1.2.0/decoder/docs/build_libs.md000066400000000000000000000171441413105061500177370ustar00rootroot00000000000000Building and using the Library {#build_lib} ============================== @brief How to build the library and test programs and include the library in an application Platform Support ---------------- The current makefiles and build projects support building the library on: - Linux and Windows, x86 or x64 hosts. - ARM linux - AArch32 and AArch64 - ARM aarch32 and aarch64 libs, x-compiled on x86/64 hosts. In addition to building the library from the project, the library may be installed into the standard `/usr/lib/` area in Linux, and will soon be available as a package from Linux Distros. Building the Library -------------------- The library and test programs are built from the library `./build/` directory, where is either 'linux' or 'win-vs2015' See [`./docs/test_progs.md`](@ref test_progs) for further information on use of the test programs. ### Linux x86/x64/ARM ### Libraries are built into a . This is used as the final output directory for the libraries in `decoder/lib/`, and also as a sub-directory of the build process for intermediate files - `decoder/build/linux/ref_trace_decode_lib/`. For a standard build, go to the `./build/linux/` and run `make` in that directory. This will set to `builddir` for all build variants of the library. Using this only one variant of the library can be built at any one time. For development, alternatively use `make -f makefile.dev` This will set to `linux/` and therefore build libraries into the `decoder/lib/linux/` directories, allowing multiple variants of the library to be present during development. e.g. `./lib/linux64/rel` will contain the linux 64 bit release libraries. `./lib/linux-arm64/dbg` will contain the linux aarch 64 debug libraries for ARM. Options to pass to both makefiles are:- - `DEBUG=1` : build the debug version of the library. Options to pass to makefile.dev are:- - ARCH= : sets the bit variant in the delivery directories. Set if cross compilation for ARCH other than host. Otherwise ARCH is auto-detected. can be x86, x86_64, arm, arm64, aarch64, aarch32 For cross compilation, set the environment variable `CROSS_COMPILE` to the name path/prefix for the compiler to use. The following would set the environment to cross-compile for ARM export PATH=$PATH:~/work/gcc-x-aarch64-6.2/bin export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- The makefile will scan the `ocsd_if_version.h` to get the library version numbers and use these in the form Major.minor.patch when naming the output .so files. Main C++ library names: - `libcstraced.so.M.m.p` : shared library containing the main C++ based decoder library - `libcstrace.so.M` : symbolic link name to library - major version only. - `libcstrace.so` : symbolic link name to library - no version. C API wrapper library names: - `libcstraced_c_api.so.M.m.p` : shared library containing the C-API wrapper library. Dependent on `libcstraced.so.M` - `libcstraced_c_api.so.M` : symbolic link name to library - major version only. - `libcstraced_c_api.so` : symbolic link name to library - no version. Static versions of the libraries: - `libcstraced.a` : static library containing the main C++ based decoder library. - `libcstraced_c_api.a` : static library containing the C-API wrapper library. Test programs are delivered to the `./tests/bin/` directories. The test programs are built to used the .so versions of the libraries. - `trc_pkt_lister` - dependent on `libcstraced.so`. - `simple_pkt_print_c_api` - dependent on `libcstraced_c_api.so` & hence `libcstraced.so`. The test program build for `trc_pkt_lister` also builds an auxiliary library used by this program for test purposes only. This is the `libsnapshot_parser.a` library, delivered to the `./tests/lib/` directories. __Installing on Linux__ The libraries can be installed on linux using the `make install` command. This will usually require root privileges. Installation will be the version in the `./lib/` directory, according to options chosen. e.g. ` make -f makefile.dev DEBUG=1 install` will install from `./lib/linux64/dbg` The libraries `libopencsd` and `libopencsd_c_api` are installed to `/usr/lib`. Sufficient header files to build using the C-API library will be installed to `/usr/include/opencsd`. The installation can be removed using `make clean_install`. No additional options are necessary. ### Windows (x86/x64) ### Use the `.\build\win\ref_trace_decode_lib\ref_trace_decode_lib.sln` file to load a solution which contains all library and test build projects. Libraries are delivered to the `./lib/win/` directories. e.g. `./lib/win64/rel` will contain the windows 64 bit release libraries. The solution contains four configurations:- - *Debug* : builds debug versions of static C++ main library and C-API libraries, test programs linked to the static library. - *Debug-dll* : builds debug versions of static main library and C-API DLL. C-API statically linked to the main library. C-API test built as `simple_pkt_print_c_api-dl.exe` and linked against the DLL version of the C-API library. - *Release* : builds release static library versions, test programs linked to static libraries. - *Release-dll* : builds release C-API DLL, static main library. _Note_: Currently there is no Windows DLL version of the main C++ library. This may follow once the project is nearer completion with further decode protocols, and the classes requiring export are established.. Libraries built are:- - `libcstraced.lib` : static main C++ decoder library. - `cstraced_c_api.dll` : C-API DLL library. Statically linked against `libcstraced.lib` at .DLL build time. - `libcstraced_c_api.lib` : C-API static library. There is also a project file to build an auxiliary library used `trc_pkt_lister` for test purposes only. This is the `snapshot_parser_lib.lib` library, delivered to the `./tests/lib/win/` directories. ### Additional Build Options ### __Library Virtual Address Size__ The ocsd_if_types.h file includes a #define that controls the size of the virtual addresses used within the library. By default this is a 64 bit `uint64_t` value. When building for ARM architectures that have only a 32 bit Virtual Address, and building on 32 bit ARM architectures it may be desirable to build a library that uses a v-addr size of 32 bits. Define `USE_32BIT_V_ADDR` to enable this option Including the Library in an Application --------------------------------------- The user source code includes a header according to the API to be used:- - Main C++ decoder library - include `opencsd.h`. Link to C++ library. - C-API library - include `opencsd_c_api.h`. Link to C-API library. ### Linux build ### By default linux builds will link against the .so versions of the library. Using the C-API library will also introduce a dependency on the main C++ decoder .so. Ensure that the library paths and link commands are part of the application makefile. To use the static versions use appropriate linker options. ### Windows build ### To link against the C-API DLL, include the .DLL name as a dependency in the application project options. To link against the C-API static library, include the library name in the dependency list, and define the macro `OCSD_USE_STATIC_C_API` in the preprocessor definitions. This ensures that the correct static bindings are declared in the header file. Also link against the main C++ library. To link against the main C++ library include the library name in the dependency list. OpenCSD-1.2.0/decoder/docs/doxygen_config.dox000066400000000000000000003247431413105061500210310ustar00rootroot00000000000000# Doxyfile 1.8.12 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = "OpenCSD - CoreSight Trace Decode Library" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = 1.2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = ./. # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. # Minimum value: 0, maximum value: 99, default value: 0. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 0 # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # If one adds a struct or class to a group and this option is enabled, then also # any nested class or struct is added to the same group. By default this option # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. GROUP_NESTED_COMPOUNDS = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO, these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. # The default value is: NO. WARN_AS_ERROR = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. INPUT = ../include \ ../include/interfaces \ ../include/opencsd/etmv3 \ ../include/opencsd/etmv4 \ ../include/opencsd/ptm \ ../include/opencsd/c_api \ ../include/opencsd/stm \ ../include/mem_acc \ ../../README.md \ . \ ../../HOWTO.md \ ../include/common \ ./prog_guide \ ../include/opencsd \ ../include \ ../tests/auto-fdo/autofdo.md \ ../include/opencsd/ete # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # read by doxygen. # # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.idl \ *.ddl \ *.odl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.cs \ *.d \ *.php \ *.php4 \ *.php5 \ *.phtml \ *.inc \ *.m \ *.markdown \ *.md \ *.mm \ *.dox \ *.py \ *.f90 \ *.f \ *.for \ *.tcl \ *.vhd \ *.vhdl \ *.ucf \ *.qsf \ *.as \ *.js # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = * # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = prog_guide # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # generated with the -Duse-libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /