@ -1,26 +1,38 @@
package ( " capstone " )
set_homepage ( " http://www.capstone-engine.org " )
set_description ( " Disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community. " )
add_urls ( " https://github.com/aquynh/capstone/archive/$(version).tar.gz " )
set_description ( " Capstone disassembly/disassembler framework for ARM, ARM64 (ARMv8), Alpha, BPF, Ethereum VM, HPPA, LoongArch, M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86. " )
set_license ( " BSD-3-Clause " )
add_urls ( " https://github.com/capstone-engine/capstone/archive/refs/tags/$(version).tar.gz " ,
" https://github.com/capstone-engine/capstone.git " )
add_versions ( " 5.0.3 " , " 3970c63ca1f8755f2c8e69b41432b710ff634f1b45ee4e5351defec4ec8e1753 " )
add_versions ( " 4.0.2 " , " 7c81d798022f81e7507f1a60d6817f63aa76e489aa4e7055255f21a22f5e526a " )
add_deps ( " cmake " )
on_load ( function ( package )
on_install ( " !iphoneos " , function ( package )
package : addenv ( " PATH " , " bin " )
end )
on_install ( " windows " , " linux " , " macosx " , " iphoneos " , " mingw " , " android " , " msys " , " bsd " , function ( package )
local configs = { " -DCAPSTONE_BUILD_CSTOOL=ON " , " -DCAPSTONE_BUILD_TESTS=OFF " }
table.insert ( configs , " -DCAPSTONE_BUILD_STATIC= " .. ( package : config ( " shared " ) and " OFF " or " ON " ) )
table.insert ( configs , " -DCAPSTONE_BUILD_SHARED= " .. ( package : config ( " shared " ) and " ON " or " OFF " ) )
io.gsub ( " CMakeLists.txt " , " CAPSTONE_BUILD_SHARED AND CAPSTONE_BUILD_CSTOOL " , " CAPSTONE_BUILD_CSTOOL " )
local configs = {
" -DCAPSTONE_BUILD_CSTOOL=ON " ,
" -DCAPSTONE_BUILD_STATIC_RUNTIME=OFF " , -- Use our pass CMAKE_MSVC_RUNTIME_LIBRARY
" -DCAPSTONE_BUILD_LEGACY_TESTS=OFF " ,
" -DCAPSTONE_BUILD_TESTS=OFF " ,
}
table.insert ( configs , " -DCMAKE_BUILD_TYPE= " .. ( package : is_debug ( ) and " Debug " or " Release " ) )
table.insert ( configs , " -DBUILD_SHARED_LIBS= " .. ( package : config ( " shared " ) and " ON " or " OFF " ) )
table.insert ( configs , " -DENABLE_ASAN= " .. ( package : config ( " asan " ) and " ON " or " OFF " ) )
import ( " package.tools.cmake " ) . install ( package , configs )
os.cp ( " include " , package : installdir ( ) )
if package : is_plat ( " windows " ) and package : is_debug ( ) then
local dir = package : installdir ( package : config ( " shared " ) and " bin " or " lib " )
os.trycp ( path.join ( package : buildir ( ) , " capstone.pdb " ) , dir )
os.trycp ( path.join ( package : buildir ( ) , " cstool.pdb " ) , package : installdir ( " bin " ) )
end
end )
on_test ( function ( package )
if package : is_plat ( os.host ( ) ) then
if not package : is_cross ( ) then
os.vrun ( " cstool -v " )
end
assert ( package : has_cfuncs ( " cs_version " , { includes = " capstone/capstone.h " } ) )