185f87cf4SRuslan Bukin# Copyright (c) 2013-2019, Intel Corporation 274fe6c29SRuslan Bukin# 374fe6c29SRuslan Bukin# Redistribution and use in source and binary forms, with or without 474fe6c29SRuslan Bukin# modification, are permitted provided that the following conditions are met: 574fe6c29SRuslan Bukin# 674fe6c29SRuslan Bukin# * Redistributions of source code must retain the above copyright notice, 774fe6c29SRuslan Bukin# this list of conditions and the following disclaimer. 874fe6c29SRuslan Bukin# * Redistributions in binary form must reproduce the above copyright notice, 974fe6c29SRuslan Bukin# this list of conditions and the following disclaimer in the documentation 1074fe6c29SRuslan Bukin# and/or other materials provided with the distribution. 1174fe6c29SRuslan Bukin# * Neither the name of Intel Corporation nor the names of its contributors 1274fe6c29SRuslan Bukin# may be used to endorse or promote products derived from this software 1374fe6c29SRuslan Bukin# without specific prior written permission. 1474fe6c29SRuslan Bukin# 1574fe6c29SRuslan Bukin# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1674fe6c29SRuslan Bukin# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1774fe6c29SRuslan Bukin# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1874fe6c29SRuslan Bukin# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1974fe6c29SRuslan Bukin# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2074fe6c29SRuslan Bukin# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2174fe6c29SRuslan Bukin# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2274fe6c29SRuslan Bukin# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2374fe6c29SRuslan Bukin# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2474fe6c29SRuslan Bukin# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2574fe6c29SRuslan Bukin# POSSIBILITY OF SUCH DAMAGE. 2674fe6c29SRuslan Bukin 2774fe6c29SRuslan Bukininclude_directories( 2874fe6c29SRuslan Bukin internal/include 2974fe6c29SRuslan Bukin) 3074fe6c29SRuslan Bukin 3174fe6c29SRuslan Bukinset(LIBIPT_SECTION_FILES 3274fe6c29SRuslan Bukin src/pt_section.c 3374fe6c29SRuslan Bukin src/pt_section_file.c 3474fe6c29SRuslan Bukin) 3574fe6c29SRuslan Bukin 3674fe6c29SRuslan Bukinset(LIBIPT_FILES 3774fe6c29SRuslan Bukin src/pt_error.c 3874fe6c29SRuslan Bukin src/pt_packet_decoder.c 3974fe6c29SRuslan Bukin src/pt_query_decoder.c 4074fe6c29SRuslan Bukin src/pt_encoder.c 4174fe6c29SRuslan Bukin src/pt_sync.c 4274fe6c29SRuslan Bukin src/pt_version.c 4374fe6c29SRuslan Bukin src/pt_last_ip.c 4474fe6c29SRuslan Bukin src/pt_tnt_cache.c 4574fe6c29SRuslan Bukin src/pt_ild.c 4674fe6c29SRuslan Bukin src/pt_image.c 4774fe6c29SRuslan Bukin src/pt_image_section_cache.c 4874fe6c29SRuslan Bukin src/pt_retstack.c 4974fe6c29SRuslan Bukin src/pt_insn_decoder.c 5074fe6c29SRuslan Bukin src/pt_time.c 5174fe6c29SRuslan Bukin src/pt_asid.c 5274fe6c29SRuslan Bukin src/pt_event_queue.c 5374fe6c29SRuslan Bukin src/pt_packet.c 5474fe6c29SRuslan Bukin src/pt_decoder_function.c 5574fe6c29SRuslan Bukin src/pt_config.c 5674fe6c29SRuslan Bukin src/pt_insn.c 5774fe6c29SRuslan Bukin src/pt_block_decoder.c 5874fe6c29SRuslan Bukin src/pt_block_cache.c 5974fe6c29SRuslan Bukin src/pt_msec_cache.c 6074fe6c29SRuslan Bukin) 6174fe6c29SRuslan Bukin 6274fe6c29SRuslan Bukinif (CMAKE_HOST_UNIX) 6374fe6c29SRuslan Bukin include_directories( 6474fe6c29SRuslan Bukin internal/include/posix 6574fe6c29SRuslan Bukin ) 6674fe6c29SRuslan Bukin 6774fe6c29SRuslan Bukin set(LIBIPT_SECTION_FILES ${LIBIPT_SECTION_FILES} src/posix/pt_section_posix.c) 6874fe6c29SRuslan Bukinendif (CMAKE_HOST_UNIX) 6974fe6c29SRuslan Bukin 7074fe6c29SRuslan Bukinif (CMAKE_HOST_WIN32) 7185f87cf4SRuslan Bukin if (BUILD_SHARED_LIBS) 7274fe6c29SRuslan Bukin add_definitions( 7374fe6c29SRuslan Bukin # export libipt symbols 7474fe6c29SRuslan Bukin # 7574fe6c29SRuslan Bukin /Dpt_export=__declspec\(dllexport\) 7674fe6c29SRuslan Bukin ) 7785f87cf4SRuslan Bukin endif (BUILD_SHARED_LIBS) 7874fe6c29SRuslan Bukin 7974fe6c29SRuslan Bukin include_directories( 8074fe6c29SRuslan Bukin internal/include/windows 8174fe6c29SRuslan Bukin ) 8274fe6c29SRuslan Bukin 8374fe6c29SRuslan Bukin set(LIBIPT_SECTION_FILES ${LIBIPT_SECTION_FILES} src/windows/pt_section_windows.c) 8474fe6c29SRuslan Bukinendif (CMAKE_HOST_WIN32) 8574fe6c29SRuslan Bukin 8674fe6c29SRuslan Bukinset(LIBIPT_FILES ${LIBIPT_FILES} ${LIBIPT_SECTION_FILES}) 8774fe6c29SRuslan Bukin 8885f87cf4SRuslan Bukinadd_library(libipt 8974fe6c29SRuslan Bukin ${LIBIPT_FILES} 9074fe6c29SRuslan Bukin) 9174fe6c29SRuslan Bukin 9274fe6c29SRuslan Bukin# put the version into the intel-pt header 9374fe6c29SRuslan Bukin# 9474fe6c29SRuslan Bukinconfigure_file( 9574fe6c29SRuslan Bukin ${CMAKE_CURRENT_SOURCE_DIR}/include/intel-pt.h.in 9674fe6c29SRuslan Bukin ${CMAKE_CURRENT_BINARY_DIR}/include/intel-pt.h 9774fe6c29SRuslan Bukin) 9874fe6c29SRuslan Bukin 9974fe6c29SRuslan Bukinset_target_properties(libipt PROPERTIES 10074fe6c29SRuslan Bukin PREFIX "" 10174fe6c29SRuslan Bukin PUBLIC_HEADER ${CMAKE_CURRENT_BINARY_DIR}/include/intel-pt.h 10274fe6c29SRuslan Bukin VERSION ${PT_VERSION} 10374fe6c29SRuslan Bukin SOVERSION ${PT_VERSION_MAJOR} 10474fe6c29SRuslan Bukin) 10574fe6c29SRuslan Bukin 10674fe6c29SRuslan Bukininstall(TARGETS libipt 10774fe6c29SRuslan Bukin RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 10874fe6c29SRuslan Bukin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 10974fe6c29SRuslan Bukin ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 11074fe6c29SRuslan Bukin PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 11174fe6c29SRuslan Bukin) 11274fe6c29SRuslan Bukin 11374fe6c29SRuslan Bukin 11474fe6c29SRuslan Bukinfunction(add_ptunit_std_test name) 11574fe6c29SRuslan Bukin add_ptunit_c_test(${name} src/pt_${name}.c ${ARGN}) 11674fe6c29SRuslan Bukinendfunction(add_ptunit_std_test) 11774fe6c29SRuslan Bukin 11874fe6c29SRuslan Bukin 11974fe6c29SRuslan Bukinadd_ptunit_std_test(last_ip) 12074fe6c29SRuslan Bukinadd_ptunit_std_test(tnt_cache) 12174fe6c29SRuslan Bukinadd_ptunit_std_test(retstack) 12274fe6c29SRuslan Bukinadd_ptunit_std_test(ild) 12374fe6c29SRuslan Bukinadd_ptunit_std_test(cpu) 12474fe6c29SRuslan Bukinadd_ptunit_std_test(time) 12574fe6c29SRuslan Bukinadd_ptunit_std_test(asid) 12674fe6c29SRuslan Bukinadd_ptunit_std_test(event_queue) 12774fe6c29SRuslan Bukinadd_ptunit_std_test(image src/pt_asid.c) 12874fe6c29SRuslan Bukinadd_ptunit_std_test(sync src/pt_packet.c) 12974fe6c29SRuslan Bukinadd_ptunit_std_test(config) 13074fe6c29SRuslan Bukinadd_ptunit_std_test(image_section_cache) 13174fe6c29SRuslan Bukinadd_ptunit_std_test(block_cache) 13274fe6c29SRuslan Bukinadd_ptunit_std_test(msec_cache) 13374fe6c29SRuslan Bukin 13474fe6c29SRuslan Bukinadd_ptunit_c_test(mapped_section src/pt_asid.c) 13574fe6c29SRuslan Bukinadd_ptunit_c_test(query 13674fe6c29SRuslan Bukin src/pt_encoder.c 13774fe6c29SRuslan Bukin src/pt_last_ip.c 13874fe6c29SRuslan Bukin src/pt_packet_decoder.c 13974fe6c29SRuslan Bukin src/pt_sync.c 14074fe6c29SRuslan Bukin src/pt_tnt_cache.c 14174fe6c29SRuslan Bukin src/pt_time.c 14274fe6c29SRuslan Bukin src/pt_event_queue.c 14374fe6c29SRuslan Bukin src/pt_query_decoder.c 14474fe6c29SRuslan Bukin src/pt_packet.c 14574fe6c29SRuslan Bukin src/pt_decoder_function.c 14674fe6c29SRuslan Bukin src/pt_packet_decoder.c 14774fe6c29SRuslan Bukin src/pt_config.c 14874fe6c29SRuslan Bukin src/pt_time.c 14974fe6c29SRuslan Bukin src/pt_block_cache.c 15074fe6c29SRuslan Bukin) 15174fe6c29SRuslan Bukinadd_ptunit_c_test(section ${LIBIPT_SECTION_FILES}) 15274fe6c29SRuslan Bukinadd_ptunit_c_test(section-file 15374fe6c29SRuslan Bukin test/src/ptunit-section.c 15474fe6c29SRuslan Bukin src/pt_section.c 15574fe6c29SRuslan Bukin src/pt_section_file.c 15674fe6c29SRuslan Bukin) 15774fe6c29SRuslan Bukinadd_ptunit_c_test(packet 15874fe6c29SRuslan Bukin src/pt_encoder.c 15974fe6c29SRuslan Bukin src/pt_packet_decoder.c 16074fe6c29SRuslan Bukin src/pt_sync.c 16174fe6c29SRuslan Bukin src/pt_packet.c 16274fe6c29SRuslan Bukin src/pt_decoder_function.c 16374fe6c29SRuslan Bukin src/pt_config.c 16474fe6c29SRuslan Bukin) 16574fe6c29SRuslan Bukinadd_ptunit_c_test(fetch 16674fe6c29SRuslan Bukin src/pt_decoder_function.c 16774fe6c29SRuslan Bukin src/pt_encoder.c 16874fe6c29SRuslan Bukin src/pt_config.c 16974fe6c29SRuslan Bukin) 17085f87cf4SRuslan Bukinadd_ptunit_c_test(encoder 17185f87cf4SRuslan Bukin src/pt_encoder.c 17285f87cf4SRuslan Bukin src/pt_config.c 17385f87cf4SRuslan Bukin) 17485f87cf4SRuslan Bukinadd_ptunit_c_test(packet_decoder 17585f87cf4SRuslan Bukin src/pt_packet_decoder.c 17685f87cf4SRuslan Bukin src/pt_packet.c 17785f87cf4SRuslan Bukin src/pt_config.c 17885f87cf4SRuslan Bukin src/pt_sync.c 17985f87cf4SRuslan Bukin src/pt_decoder_function.c 18085f87cf4SRuslan Bukin src/pt_query_decoder.c 18185f87cf4SRuslan Bukin src/pt_event_queue.c 18285f87cf4SRuslan Bukin src/pt_last_ip.c 18385f87cf4SRuslan Bukin src/pt_tnt_cache.c 18485f87cf4SRuslan Bukin src/pt_time.c 18585f87cf4SRuslan Bukin) 18685f87cf4SRuslan Bukinadd_ptunit_c_test(insn_decoder ${LIBIPT_FILES}) 18785f87cf4SRuslan Bukinadd_ptunit_c_test(block_decoder ${LIBIPT_FILES}) 18874fe6c29SRuslan Bukin 18974fe6c29SRuslan Bukinadd_ptunit_cpp_test(cpp) 19074fe6c29SRuslan Bukinadd_ptunit_libraries(cpp libipt) 191