asmjit 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/asmjit.gemspec +1 -1
  4. data/ext/asmjit/asmjit/.editorconfig +10 -0
  5. data/ext/asmjit/asmjit/.github/FUNDING.yml +1 -0
  6. data/ext/asmjit/asmjit/.github/workflows/build-config.json +47 -0
  7. data/ext/asmjit/asmjit/.github/workflows/build.yml +156 -0
  8. data/ext/asmjit/asmjit/.gitignore +6 -0
  9. data/ext/asmjit/asmjit/CMakeLists.txt +611 -0
  10. data/ext/asmjit/asmjit/LICENSE.md +17 -0
  11. data/ext/asmjit/asmjit/README.md +69 -0
  12. data/ext/asmjit/asmjit/src/asmjit/a64.h +62 -0
  13. data/ext/asmjit/asmjit/src/asmjit/arm/a64archtraits_p.h +81 -0
  14. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.cpp +5115 -0
  15. data/ext/asmjit/asmjit/src/asmjit/arm/a64assembler.h +72 -0
  16. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.cpp +51 -0
  17. data/ext/asmjit/asmjit/src/asmjit/arm/a64builder.h +57 -0
  18. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.cpp +60 -0
  19. data/ext/asmjit/asmjit/src/asmjit/arm/a64compiler.h +247 -0
  20. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper.cpp +464 -0
  21. data/ext/asmjit/asmjit/src/asmjit/arm/a64emithelper_p.h +50 -0
  22. data/ext/asmjit/asmjit/src/asmjit/arm/a64emitter.h +1228 -0
  23. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter.cpp +298 -0
  24. data/ext/asmjit/asmjit/src/asmjit/arm/a64formatter_p.h +59 -0
  25. data/ext/asmjit/asmjit/src/asmjit/arm/a64func.cpp +189 -0
  26. data/ext/asmjit/asmjit/src/asmjit/arm/a64func_p.h +33 -0
  27. data/ext/asmjit/asmjit/src/asmjit/arm/a64globals.h +1894 -0
  28. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi.cpp +278 -0
  29. data/ext/asmjit/asmjit/src/asmjit/arm/a64instapi_p.h +41 -0
  30. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.cpp +1957 -0
  31. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb.h +74 -0
  32. data/ext/asmjit/asmjit/src/asmjit/arm/a64instdb_p.h +876 -0
  33. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.cpp +85 -0
  34. data/ext/asmjit/asmjit/src/asmjit/arm/a64operand.h +312 -0
  35. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass.cpp +852 -0
  36. data/ext/asmjit/asmjit/src/asmjit/arm/a64rapass_p.h +105 -0
  37. data/ext/asmjit/asmjit/src/asmjit/arm/a64utils.h +179 -0
  38. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter.cpp +143 -0
  39. data/ext/asmjit/asmjit/src/asmjit/arm/armformatter_p.h +44 -0
  40. data/ext/asmjit/asmjit/src/asmjit/arm/armglobals.h +21 -0
  41. data/ext/asmjit/asmjit/src/asmjit/arm/armoperand.h +621 -0
  42. data/ext/asmjit/asmjit/src/asmjit/arm.h +62 -0
  43. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-begin.h +17 -0
  44. data/ext/asmjit/asmjit/src/asmjit/asmjit-scope-end.h +9 -0
  45. data/ext/asmjit/asmjit/src/asmjit/asmjit.h +33 -0
  46. data/ext/asmjit/asmjit/src/asmjit/core/api-build_p.h +55 -0
  47. data/ext/asmjit/asmjit/src/asmjit/core/api-config.h +613 -0
  48. data/ext/asmjit/asmjit/src/asmjit/core/archcommons.h +229 -0
  49. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.cpp +160 -0
  50. data/ext/asmjit/asmjit/src/asmjit/core/archtraits.h +290 -0
  51. data/ext/asmjit/asmjit/src/asmjit/core/assembler.cpp +406 -0
  52. data/ext/asmjit/asmjit/src/asmjit/core/assembler.h +129 -0
  53. data/ext/asmjit/asmjit/src/asmjit/core/builder.cpp +889 -0
  54. data/ext/asmjit/asmjit/src/asmjit/core/builder.h +1391 -0
  55. data/ext/asmjit/asmjit/src/asmjit/core/codebuffer.h +113 -0
  56. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.cpp +1149 -0
  57. data/ext/asmjit/asmjit/src/asmjit/core/codeholder.h +1035 -0
  58. data/ext/asmjit/asmjit/src/asmjit/core/codewriter.cpp +175 -0
  59. data/ext/asmjit/asmjit/src/asmjit/core/codewriter_p.h +179 -0
  60. data/ext/asmjit/asmjit/src/asmjit/core/compiler.cpp +582 -0
  61. data/ext/asmjit/asmjit/src/asmjit/core/compiler.h +737 -0
  62. data/ext/asmjit/asmjit/src/asmjit/core/compilerdefs.h +173 -0
  63. data/ext/asmjit/asmjit/src/asmjit/core/constpool.cpp +363 -0
  64. data/ext/asmjit/asmjit/src/asmjit/core/constpool.h +250 -0
  65. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.cpp +1162 -0
  66. data/ext/asmjit/asmjit/src/asmjit/core/cpuinfo.h +813 -0
  67. data/ext/asmjit/asmjit/src/asmjit/core/emithelper.cpp +323 -0
  68. data/ext/asmjit/asmjit/src/asmjit/core/emithelper_p.h +58 -0
  69. data/ext/asmjit/asmjit/src/asmjit/core/emitter.cpp +333 -0
  70. data/ext/asmjit/asmjit/src/asmjit/core/emitter.h +741 -0
  71. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils.cpp +129 -0
  72. data/ext/asmjit/asmjit/src/asmjit/core/emitterutils_p.h +89 -0
  73. data/ext/asmjit/asmjit/src/asmjit/core/environment.cpp +46 -0
  74. data/ext/asmjit/asmjit/src/asmjit/core/environment.h +508 -0
  75. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.cpp +14 -0
  76. data/ext/asmjit/asmjit/src/asmjit/core/errorhandler.h +228 -0
  77. data/ext/asmjit/asmjit/src/asmjit/core/formatter.cpp +584 -0
  78. data/ext/asmjit/asmjit/src/asmjit/core/formatter.h +247 -0
  79. data/ext/asmjit/asmjit/src/asmjit/core/formatter_p.h +34 -0
  80. data/ext/asmjit/asmjit/src/asmjit/core/func.cpp +286 -0
  81. data/ext/asmjit/asmjit/src/asmjit/core/func.h +1445 -0
  82. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext.cpp +293 -0
  83. data/ext/asmjit/asmjit/src/asmjit/core/funcargscontext_p.h +199 -0
  84. data/ext/asmjit/asmjit/src/asmjit/core/globals.cpp +133 -0
  85. data/ext/asmjit/asmjit/src/asmjit/core/globals.h +393 -0
  86. data/ext/asmjit/asmjit/src/asmjit/core/inst.cpp +113 -0
  87. data/ext/asmjit/asmjit/src/asmjit/core/inst.h +772 -0
  88. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.cpp +1242 -0
  89. data/ext/asmjit/asmjit/src/asmjit/core/jitallocator.h +261 -0
  90. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.cpp +80 -0
  91. data/ext/asmjit/asmjit/src/asmjit/core/jitruntime.h +89 -0
  92. data/ext/asmjit/asmjit/src/asmjit/core/logger.cpp +69 -0
  93. data/ext/asmjit/asmjit/src/asmjit/core/logger.h +198 -0
  94. data/ext/asmjit/asmjit/src/asmjit/core/misc_p.h +33 -0
  95. data/ext/asmjit/asmjit/src/asmjit/core/operand.cpp +132 -0
  96. data/ext/asmjit/asmjit/src/asmjit/core/operand.h +1611 -0
  97. data/ext/asmjit/asmjit/src/asmjit/core/osutils.cpp +84 -0
  98. data/ext/asmjit/asmjit/src/asmjit/core/osutils.h +61 -0
  99. data/ext/asmjit/asmjit/src/asmjit/core/osutils_p.h +68 -0
  100. data/ext/asmjit/asmjit/src/asmjit/core/raassignment_p.h +418 -0
  101. data/ext/asmjit/asmjit/src/asmjit/core/rabuilders_p.h +612 -0
  102. data/ext/asmjit/asmjit/src/asmjit/core/radefs_p.h +1204 -0
  103. data/ext/asmjit/asmjit/src/asmjit/core/ralocal.cpp +1166 -0
  104. data/ext/asmjit/asmjit/src/asmjit/core/ralocal_p.h +254 -0
  105. data/ext/asmjit/asmjit/src/asmjit/core/rapass.cpp +1969 -0
  106. data/ext/asmjit/asmjit/src/asmjit/core/rapass_p.h +1183 -0
  107. data/ext/asmjit/asmjit/src/asmjit/core/rastack.cpp +184 -0
  108. data/ext/asmjit/asmjit/src/asmjit/core/rastack_p.h +171 -0
  109. data/ext/asmjit/asmjit/src/asmjit/core/string.cpp +559 -0
  110. data/ext/asmjit/asmjit/src/asmjit/core/string.h +372 -0
  111. data/ext/asmjit/asmjit/src/asmjit/core/support.cpp +494 -0
  112. data/ext/asmjit/asmjit/src/asmjit/core/support.h +1773 -0
  113. data/ext/asmjit/asmjit/src/asmjit/core/target.cpp +14 -0
  114. data/ext/asmjit/asmjit/src/asmjit/core/target.h +53 -0
  115. data/ext/asmjit/asmjit/src/asmjit/core/type.cpp +74 -0
  116. data/ext/asmjit/asmjit/src/asmjit/core/type.h +419 -0
  117. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.cpp +722 -0
  118. data/ext/asmjit/asmjit/src/asmjit/core/virtmem.h +242 -0
  119. data/ext/asmjit/asmjit/src/asmjit/core/zone.cpp +353 -0
  120. data/ext/asmjit/asmjit/src/asmjit/core/zone.h +615 -0
  121. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.cpp +309 -0
  122. data/ext/asmjit/asmjit/src/asmjit/core/zonehash.h +186 -0
  123. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.cpp +163 -0
  124. data/ext/asmjit/asmjit/src/asmjit/core/zonelist.h +209 -0
  125. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.cpp +176 -0
  126. data/ext/asmjit/asmjit/src/asmjit/core/zonestack.h +239 -0
  127. data/ext/asmjit/asmjit/src/asmjit/core/zonestring.h +120 -0
  128. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.cpp +99 -0
  129. data/ext/asmjit/asmjit/src/asmjit/core/zonetree.h +380 -0
  130. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.cpp +356 -0
  131. data/ext/asmjit/asmjit/src/asmjit/core/zonevector.h +690 -0
  132. data/ext/asmjit/asmjit/src/asmjit/core.h +1861 -0
  133. data/ext/asmjit/asmjit/src/asmjit/x86/x86archtraits_p.h +148 -0
  134. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.cpp +5110 -0
  135. data/ext/asmjit/asmjit/src/asmjit/x86/x86assembler.h +685 -0
  136. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.cpp +52 -0
  137. data/ext/asmjit/asmjit/src/asmjit/x86/x86builder.h +351 -0
  138. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.cpp +61 -0
  139. data/ext/asmjit/asmjit/src/asmjit/x86/x86compiler.h +721 -0
  140. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper.cpp +619 -0
  141. data/ext/asmjit/asmjit/src/asmjit/x86/x86emithelper_p.h +60 -0
  142. data/ext/asmjit/asmjit/src/asmjit/x86/x86emitter.h +4315 -0
  143. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter.cpp +944 -0
  144. data/ext/asmjit/asmjit/src/asmjit/x86/x86formatter_p.h +58 -0
  145. data/ext/asmjit/asmjit/src/asmjit/x86/x86func.cpp +503 -0
  146. data/ext/asmjit/asmjit/src/asmjit/x86/x86func_p.h +33 -0
  147. data/ext/asmjit/asmjit/src/asmjit/x86/x86globals.h +2169 -0
  148. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi.cpp +1732 -0
  149. data/ext/asmjit/asmjit/src/asmjit/x86/x86instapi_p.h +41 -0
  150. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.cpp +4427 -0
  151. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb.h +563 -0
  152. data/ext/asmjit/asmjit/src/asmjit/x86/x86instdb_p.h +311 -0
  153. data/ext/asmjit/asmjit/src/asmjit/x86/x86opcode_p.h +436 -0
  154. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.cpp +231 -0
  155. data/ext/asmjit/asmjit/src/asmjit/x86/x86operand.h +1085 -0
  156. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass.cpp +1509 -0
  157. data/ext/asmjit/asmjit/src/asmjit/x86/x86rapass_p.h +94 -0
  158. data/ext/asmjit/asmjit/src/asmjit/x86.h +93 -0
  159. data/ext/asmjit/asmjit/src/asmjit.natvis +245 -0
  160. data/ext/asmjit/asmjit/test/asmjit_test_assembler.cpp +84 -0
  161. data/ext/asmjit/asmjit/test/asmjit_test_assembler.h +85 -0
  162. data/ext/asmjit/asmjit/test/asmjit_test_assembler_a64.cpp +4006 -0
  163. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x64.cpp +17833 -0
  164. data/ext/asmjit/asmjit/test/asmjit_test_assembler_x86.cpp +8300 -0
  165. data/ext/asmjit/asmjit/test/asmjit_test_compiler.cpp +253 -0
  166. data/ext/asmjit/asmjit/test/asmjit_test_compiler.h +73 -0
  167. data/ext/asmjit/asmjit/test/asmjit_test_compiler_a64.cpp +690 -0
  168. data/ext/asmjit/asmjit/test/asmjit_test_compiler_x86.cpp +4317 -0
  169. data/ext/asmjit/asmjit/test/asmjit_test_emitters.cpp +197 -0
  170. data/ext/asmjit/asmjit/test/asmjit_test_instinfo.cpp +181 -0
  171. data/ext/asmjit/asmjit/test/asmjit_test_misc.h +257 -0
  172. data/ext/asmjit/asmjit/test/asmjit_test_perf.cpp +62 -0
  173. data/ext/asmjit/asmjit/test/asmjit_test_perf.h +61 -0
  174. data/ext/asmjit/asmjit/test/asmjit_test_perf_a64.cpp +699 -0
  175. data/ext/asmjit/asmjit/test/asmjit_test_perf_x86.cpp +5032 -0
  176. data/ext/asmjit/asmjit/test/asmjit_test_unit.cpp +172 -0
  177. data/ext/asmjit/asmjit/test/asmjit_test_x86_sections.cpp +172 -0
  178. data/ext/asmjit/asmjit/test/asmjitutils.h +38 -0
  179. data/ext/asmjit/asmjit/test/broken.cpp +312 -0
  180. data/ext/asmjit/asmjit/test/broken.h +148 -0
  181. data/ext/asmjit/asmjit/test/cmdline.h +61 -0
  182. data/ext/asmjit/asmjit/test/performancetimer.h +41 -0
  183. data/ext/asmjit/asmjit/tools/configure-makefiles.sh +13 -0
  184. data/ext/asmjit/asmjit/tools/configure-ninja.sh +13 -0
  185. data/ext/asmjit/asmjit/tools/configure-sanitizers.sh +13 -0
  186. data/ext/asmjit/asmjit/tools/configure-vs2019-x64.bat +2 -0
  187. data/ext/asmjit/asmjit/tools/configure-vs2019-x86.bat +2 -0
  188. data/ext/asmjit/asmjit/tools/configure-vs2022-x64.bat +2 -0
  189. data/ext/asmjit/asmjit/tools/configure-vs2022-x86.bat +2 -0
  190. data/ext/asmjit/asmjit/tools/configure-xcode.sh +8 -0
  191. data/ext/asmjit/asmjit/tools/enumgen.js +417 -0
  192. data/ext/asmjit/asmjit/tools/enumgen.sh +3 -0
  193. data/ext/asmjit/asmjit/tools/tablegen-arm.js +365 -0
  194. data/ext/asmjit/asmjit/tools/tablegen-arm.sh +3 -0
  195. data/ext/asmjit/asmjit/tools/tablegen-x86.js +2638 -0
  196. data/ext/asmjit/asmjit/tools/tablegen-x86.sh +3 -0
  197. data/ext/asmjit/asmjit/tools/tablegen.js +947 -0
  198. data/ext/asmjit/asmjit/tools/tablegen.sh +4 -0
  199. data/ext/asmjit/asmjit.cc +18 -0
  200. data/lib/asmjit/version.rb +1 -1
  201. metadata +197 -2
@@ -0,0 +1,611 @@
1
+ cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
2
+
3
+ cmake_policy(PUSH)
4
+
5
+ if(POLICY CMP0063)
6
+ cmake_policy(SET CMP0063 NEW) # Honor visibility properties.
7
+ endif()
8
+
9
+ if(POLICY CMP0092)
10
+ cmake_policy(SET CMP0092 NEW) # Don't add -W3 warning level by default.
11
+ endif()
12
+
13
+ # Don't create a project if it was already created by another CMakeLists.txt.
14
+ # This allows one library to embed another library without making a collision.
15
+ if (NOT CMAKE_PROJECT_NAME OR "${CMAKE_PROJECT_NAME}" STREQUAL "asmjit")
16
+ project(asmjit CXX)
17
+ endif()
18
+
19
+ include(CheckCXXCompilerFlag)
20
+ include(GNUInstallDirs)
21
+
22
+ # AsmJit - Deprecated
23
+ # ===================
24
+
25
+ if (DEFINED ASMJIT_BUILD_EMBED)
26
+ message(DEPRECATION "ASMJIT_BUILD_EMBED is deprecated, use ASMJIT_EMBED")
27
+ set(ASMJIT_EMBED "${ASMJIT_BUILD_EMBED}")
28
+ endif()
29
+
30
+ if (DEFINED ASMJIT_BUILD_STATIC)
31
+ message(DEPRECATION "ASMJIT_BUILD_STATIC is deprecated, use ASMJIT_STATIC")
32
+ set(ASMJIT_STATIC "${ASMJIT_BUILD_STATIC}")
33
+ endif()
34
+
35
+ # AsmJit - Configuration
36
+ # ======================
37
+
38
+ if (NOT DEFINED ASMJIT_TEST)
39
+ set(ASMJIT_TEST FALSE)
40
+ endif()
41
+
42
+ if (NOT DEFINED ASMJIT_EMBED)
43
+ set(ASMJIT_EMBED FALSE)
44
+ endif()
45
+
46
+ if (NOT DEFINED ASMJIT_STATIC)
47
+ set(ASMJIT_STATIC ${ASMJIT_EMBED})
48
+ endif()
49
+
50
+ if (NOT DEFINED ASMJIT_SANITIZE)
51
+ set(ASMJIT_SANITIZE FALSE)
52
+ endif()
53
+
54
+ if (NOT DEFINED ASMJIT_NO_X86)
55
+ set(ASMJIT_NO_X86 FALSE)
56
+ endif()
57
+
58
+ if (NOT DEFINED ASMJIT_NO_AARCH32)
59
+ set(ASMJIT_NO_AARCH32 FALSE)
60
+ endif()
61
+
62
+ if (NOT DEFINED ASMJIT_NO_AARCH64)
63
+ set(ASMJIT_NO_AARCH64 FALSE)
64
+ endif()
65
+
66
+ if (NOT DEFINED ASMJIT_NO_FOREIGN)
67
+ set(ASMJIT_NO_FOREIGN FALSE)
68
+ endif()
69
+
70
+ if (NOT DEFINED ASMJIT_NO_NATVIS)
71
+ set(ASMJIT_NO_NATVIS FALSE)
72
+ endif()
73
+
74
+ if (NOT DEFINED ASMJIT_NO_CUSTOM_FLAGS)
75
+ set(ASMJIT_NO_CUSTOM_FLAGS FALSE)
76
+ endif()
77
+
78
+ # EMBED implies STATIC.
79
+ if (ASMJIT_EMBED AND NOT ASMJIT_STATIC)
80
+ set(ASMJIT_STATIC TRUE)
81
+ endif()
82
+
83
+ set(ASMJIT_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Location of 'asmjit'")
84
+ set(ASMJIT_TEST "${ASMJIT_TEST}" CACHE BOOL "Build 'asmjit' test applications")
85
+ set(ASMJIT_EMBED "${ASMJIT_EMBED}" CACHE BOOL "Embed 'asmjit' library (no targets)")
86
+ set(ASMJIT_STATIC "${ASMJIT_STATIC}" CACHE BOOL "Build 'asmjit' library as static")
87
+ set(ASMJIT_SANITIZE "${ASMJIT_SANITIZE}" CACHE STRING "Build with sanitizers: 'address', 'undefined', etc...")
88
+ set(ASMJIT_NO_X86 "${ASMJIT_NO_X86}" CACHE BOOL "Disable X86/X64 backend")
89
+ set(ASMJIT_NO_AARCH32 "${ASMJIT_NO_AARCH32}" CACHE BOOL "Disable AArch32 backend (ARM and THUMB)")
90
+ set(ASMJIT_NO_AARCH64 "${ASMJIT_NO_AARCH64}" CACHE BOOL "Disable AArch64 backend")
91
+ set(ASMJIT_NO_FOREIGN "${ASMJIT_NO_FOREIGN}" CACHE BOOL "Disable all foreign architectures (enables only a native architecture)")
92
+ set(ASMJIT_NO_NATVIS "${ASMJIT_NO_NATVIS}" CACHE BOOL "Disable natvis support (embedding asmjit.natvis in PDB)")
93
+ set(ASMJIT_NO_CUSTOM_FLAGS "${ASMJIT_NO_CUSTOM_FLAGS}" CACHE BOOL "Disable extra compilation flags added by AsmJit to its targets")
94
+
95
+ # AsmJit - Project
96
+ # ================
97
+
98
+ set(ASMJIT_INCLUDE_DIRS "${ASMJIT_DIR}/src") # Include directory is the same as source dir.
99
+ set(ASMJIT_DEPS "") # AsmJit dependencies (libraries) for the linker.
100
+ set(ASMJIT_LIBS "") # Dependencies of libs/apps that want to use AsmJit.
101
+ set(ASMJIT_CFLAGS "") # Public compiler flags.
102
+ set(ASMJIT_PRIVATE_CFLAGS "") # Private compiler flags independent of build type.
103
+ set(ASMJIT_PRIVATE_CFLAGS_DBG "") # Private compiler flags used by debug builds.
104
+ set(ASMJIT_PRIVATE_CFLAGS_REL "") # Private compiler flags used by release builds.
105
+ set(ASMJIT_SANITIZE_CFLAGS "") # Compiler flags required by currently enabled sanitizers.
106
+ set(ASMJIT_SANITIZE_LFLAGS "") # Linker flags required by currently enabled sanitizers.
107
+
108
+ # AsmJit - Utilities
109
+ # ==================
110
+
111
+ function(asmjit_detect_cflags out)
112
+ set(out_array ${${out}})
113
+ foreach(flag ${ARGN})
114
+ string(REGEX REPLACE "[+]" "x" flag_signature "${flag}")
115
+ string(REGEX REPLACE "[-=:;/.\]" "_" flag_signature "${flag_signature}")
116
+ check_cxx_compiler_flag(${flag} "__CxxFlag_${flag_signature}")
117
+ if (${__CxxFlag_${flag_signature}})
118
+ list(APPEND out_array "${flag}")
119
+ endif()
120
+ endforeach()
121
+ set(${out} "${out_array}" PARENT_SCOPE)
122
+ endfunction()
123
+
124
+ # Support for various sanitizers provided by C/C++ compilers.
125
+ function(asmjit_detect_sanitizers out)
126
+ set(_out_array ${${out}})
127
+ set(_flags "")
128
+
129
+ foreach(_arg ${ARGN})
130
+ string(REPLACE "," ";" _arg "${_arg}")
131
+ list(APPEND _flags ${_arg})
132
+ endforeach()
133
+
134
+ foreach(_flag ${_flags})
135
+ if (NOT "${_flag}" MATCHES "^-fsanitize=")
136
+ SET(_flag "-fsanitize=${_flag}")
137
+ endif()
138
+
139
+ # Sanitizers also require link flags, see CMAKE_REQUIRED_FLAGS.
140
+ set(CMAKE_REQUIRED_FLAGS "${_flag}")
141
+ asmjit_detect_cflags(_out_array ${_flag})
142
+ unset(CMAKE_REQUIRED_FLAGS)
143
+ endforeach()
144
+
145
+ set(${out} "${_out_array}" PARENT_SCOPE)
146
+ endfunction()
147
+
148
+ function(asmjit_add_target target target_type)
149
+ set(single_val "")
150
+ set(multi_val SOURCES LIBRARIES CFLAGS CFLAGS_DBG CFLAGS_REL)
151
+ cmake_parse_arguments("X" "" "${single_val}" "${multi_val}" ${ARGN})
152
+
153
+ if ("${target_type}" MATCHES "^(EXECUTABLE|TEST)$")
154
+ add_executable(${target} ${X_SOURCES})
155
+ else()
156
+ add_library(${target} ${target_type} ${X_SOURCES})
157
+ endif()
158
+
159
+ set_target_properties(${target} PROPERTIES DEFINE_SYMBOL "")
160
+ target_link_libraries(${target} PRIVATE ${X_LIBRARIES})
161
+
162
+ # target_link_options was added in cmake v3.13, don't use it for now...
163
+ foreach(link_flag ${ASMJIT_SANITIZE_LFLAGS})
164
+ set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " ${link_flag}")
165
+ endforeach()
166
+
167
+ if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
168
+ set_property(TARGET ${target} PROPERTY CXX_STANDARD 11)
169
+ else()
170
+ target_compile_features(${target} PUBLIC cxx_std_11)
171
+ endif()
172
+ set_property(TARGET ${target} PROPERTY CXX_EXTENSIONS NO)
173
+ set_property(TARGET ${target} PROPERTY CXX_VISIBILITY_PRESET hidden)
174
+ target_compile_options(${target} PRIVATE ${X_CFLAGS} ${ASMJIT_SANITIZE_CFLAGS} $<$<CONFIG:Debug>:${X_CFLAGS_DBG}> $<$<NOT:$<CONFIG:Debug>>:${X_CFLAGS_REL}>)
175
+
176
+ if ("${target_type}" STREQUAL "TEST")
177
+ add_test(NAME ${target} COMMAND ${target})
178
+ endif()
179
+ endfunction()
180
+
181
+ # AsmJit - Compiler Support
182
+ # =========================
183
+
184
+ set(ASMJIT_INCLUDE_DIRS "${ASMJIT_DIR}/src") # Include directory is the same as source dir.
185
+ set(ASMJIT_DEPS "") # AsmJit dependencies (libraries) for the linker.
186
+ set(ASMJIT_LIBS "") # Dependencies of libs/apps that want to use AsmJit.
187
+ set(ASMJIT_CFLAGS "") # Public compiler flags.
188
+ set(ASMJIT_PRIVATE_CFLAGS "") # Private compiler flags independent of build type.
189
+ set(ASMJIT_PRIVATE_CFLAGS_DBG "") # Private compiler flags used by debug builds.
190
+ set(ASMJIT_PRIVATE_CFLAGS_REL "") # Private compiler flags used by release builds.
191
+ set(ASMJIT_SANITIZE_CFLAGS "") # Compiler flags required by currently enabled sanitizers.
192
+ set(ASMJIT_SANITIZE_LFLAGS "") # Linker flags required by currently enabled sanitizers.
193
+
194
+ # We will have to keep this most likely forever as some users may still be using it.
195
+ set(ASMJIT_INCLUDE_DIR "${ASMJIT_INCLUDE_DIRS}")
196
+
197
+ if (NOT ASMJIT_NO_CUSTOM_FLAGS)
198
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
199
+ list(APPEND ASMJIT_PRIVATE_CFLAGS
200
+ -MP # [+] Multi-Process Compilation.
201
+ -GF # [+] Eliminate duplicate strings.
202
+ -Zc:__cplusplus # [+] Conforming __cplusplus definition.
203
+ -Zc:inline # [+] Remove unreferenced COMDAT.
204
+ -Zc:strictStrings # [+] Strict const qualification of string literals.
205
+ -Zc:threadSafeInit- # [-] Thread-safe statics.
206
+ -W4) # [+] Warning level 4.
207
+
208
+ list(APPEND ASMJIT_PRIVATE_CFLAGS_DBG
209
+ -GS) # [+] Buffer security-check.
210
+
211
+ list(APPEND ASMJIT_PRIVATE_CFLAGS_REL
212
+ -GS- # [-] Buffer security-check.
213
+ -O2 # [+] Favor speed over size.
214
+ -Oi) # [+] Generate intrinsic functions.
215
+ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "^(GNU|Clang|AppleClang)$")
216
+ list(APPEND ASMJIT_PRIVATE_CFLAGS -Wall -Wextra -Wconversion)
217
+ list(APPEND ASMJIT_PRIVATE_CFLAGS -fno-math-errno)
218
+ list(APPEND ASMJIT_PRIVATE_CFLAGS_REL -O2)
219
+
220
+ asmjit_detect_cflags(ASMJIT_PRIVATE_CFLAGS
221
+ -fno-threadsafe-statics
222
+ -fno-semantic-interposition)
223
+
224
+ # The following flags can save few bytes in the resulting binary.
225
+ asmjit_detect_cflags(ASMJIT_PRIVATE_CFLAGS_REL
226
+ -fmerge-all-constants # Merge all constants even if it violates ISO C++.
227
+ -fno-enforce-eh-specs) # Don't enforce termination if noexcept function throws.
228
+ endif()
229
+ endif()
230
+
231
+ # Support for sanitizers.
232
+ if (ASMJIT_SANITIZE)
233
+ ASMJIT_detect_sanitizers(ASMJIT_SANITIZE_CFLAGS ${ASMJIT_SANITIZE})
234
+ if (ASMJIT_SANITIZE_CFLAGS)
235
+ message("-- Enabling sanitizers: '${ASMJIT_SANITIZE_CFLAGS}'")
236
+
237
+ # Linker must receive the same flags as the compiler when it comes to sanitizers.
238
+ set(ASMJIT_SANITIZE_LFLAGS ${ASMJIT_SANITIZE_CFLAGS})
239
+
240
+ # Don't omit frame pointer if sanitizers are enabled.
241
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
242
+ list(APPEND ASMJIT_SANITIZE_CFLAGS -Oy-)
243
+ else()
244
+ list(APPEND ASMJIT_SANITIZE_CFLAGS -fno-omit-frame-pointer -g)
245
+ endif()
246
+
247
+ list(APPEND ASMJIT_PRIVATE_CFLAGS ${ASMJIT_SANITIZE_CFLAGS})
248
+ list(APPEND ASMJIT_PRIVATE_LFLAGS ${ASMJIT_SANITIZE_LFLAGS})
249
+ endif()
250
+ endif()
251
+
252
+ # Do not link to pthread on Android as it's part of C runtime.
253
+ if (NOT WIN32 AND NOT ANDROID)
254
+ list(APPEND ASMJIT_DEPS pthread)
255
+ endif()
256
+
257
+ if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" OR "${CMAKE_SYSTEM_NAME}" MATCHES "NetBSD")
258
+ list(APPEND ASMJIT_DEPS rt)
259
+ endif()
260
+
261
+ set(ASMJIT_LIBS ${ASMJIT_DEPS})
262
+ if (NOT ASMJIT_EMBED)
263
+ list(INSERT ASMJIT_LIBS 0 asmjit)
264
+ endif()
265
+
266
+ if (ASMJIT_EMBED)
267
+ set(ASMJIT_TARGET_TYPE "EMBED")
268
+ elseif (ASMJIT_STATIC)
269
+ set(ASMJIT_TARGET_TYPE "STATIC")
270
+ else()
271
+ set(ASMJIT_TARGET_TYPE "SHARED")
272
+ endif()
273
+
274
+ foreach(build_option ASMJIT_STATIC
275
+ # AsmJit backends selection.
276
+ ASMJIT_NO_X86
277
+ ASMJIT_NO_AARCH32
278
+ ASMJIT_NO_AARCH64
279
+ ASMJIT_NO_FOREIGN
280
+ # AsmJit features selection.
281
+ ASMJIT_NO_DEPRECATED
282
+ ASMJIT_NO_JIT
283
+ ASMJIT_NO_LOGGING
284
+ ASMJIT_NO_BUILDER
285
+ ASMJIT_NO_COMPILER
286
+ ASMJIT_NO_TEXT
287
+ ASMJIT_NO_VALIDATION
288
+ ASMJIT_NO_INTROSPECTION)
289
+ if (${build_option})
290
+ List(APPEND ASMJIT_CFLAGS "-D${build_option}")
291
+ List(APPEND ASMJIT_PRIVATE_CFLAGS "-D${build_option}")
292
+ endif()
293
+ endforeach()
294
+
295
+ # AsmJit - Linker Support
296
+ # =======================
297
+
298
+ if (WIN32)
299
+ if(CMAKE_LINKER MATCHES "link\\.exe" OR CMAKE_LINKER MATCHES "lld-link\\.exe")
300
+ set(ASMJIT_LINKER_SUPPORTS_NATVIS TRUE)
301
+ endif()
302
+ endif()
303
+
304
+ # AsmJit - Source
305
+ # ===============
306
+
307
+ set(ASMJIT_SRC_LIST
308
+ asmjit/asmjit.h
309
+ asmjit/asmjit-scope-begin.h
310
+ asmjit/asmjit-scope-end.h
311
+
312
+ asmjit/core.h
313
+ asmjit/core/api-build_p.h
314
+ asmjit/core/api-config.h
315
+ asmjit/core/archtraits.cpp
316
+ asmjit/core/archtraits.h
317
+ asmjit/core/archcommons.h
318
+ asmjit/core/assembler.cpp
319
+ asmjit/core/assembler.h
320
+ asmjit/core/builder.cpp
321
+ asmjit/core/builder.h
322
+ asmjit/core/codebuffer.h
323
+ asmjit/core/codeholder.cpp
324
+ asmjit/core/codeholder.h
325
+ asmjit/core/codewriter.cpp
326
+ asmjit/core/codewriter_p.h
327
+ asmjit/core/compiler.cpp
328
+ asmjit/core/compiler.h
329
+ asmjit/core/compilerdefs.h
330
+ asmjit/core/constpool.cpp
331
+ asmjit/core/constpool.h
332
+ asmjit/core/cpuinfo.cpp
333
+ asmjit/core/cpuinfo.h
334
+ asmjit/core/emithelper.cpp
335
+ asmjit/core/emithelper_p.h
336
+ asmjit/core/emitter.cpp
337
+ asmjit/core/emitter.h
338
+ asmjit/core/emitterutils.cpp
339
+ asmjit/core/emitterutils_p.h
340
+ asmjit/core/environment.cpp
341
+ asmjit/core/environment.h
342
+ asmjit/core/errorhandler.cpp
343
+ asmjit/core/errorhandler.h
344
+ asmjit/core/formatter.cpp
345
+ asmjit/core/formatter.h
346
+ asmjit/core/func.cpp
347
+ asmjit/core/func.h
348
+ asmjit/core/funcargscontext.cpp
349
+ asmjit/core/funcargscontext_p.h
350
+ asmjit/core/globals.cpp
351
+ asmjit/core/globals.h
352
+ asmjit/core/inst.cpp
353
+ asmjit/core/inst.h
354
+ asmjit/core/jitallocator.cpp
355
+ asmjit/core/jitallocator.h
356
+ asmjit/core/jitruntime.cpp
357
+ asmjit/core/jitruntime.h
358
+ asmjit/core/logger.cpp
359
+ asmjit/core/logger.h
360
+ asmjit/core/misc_p.h
361
+ asmjit/core/operand.cpp
362
+ asmjit/core/operand.h
363
+ asmjit/core/osutils.cpp
364
+ asmjit/core/osutils.h
365
+ asmjit/core/raassignment_p.h
366
+ asmjit/core/rabuilders_p.h
367
+ asmjit/core/radefs_p.h
368
+ asmjit/core/ralocal.cpp
369
+ asmjit/core/ralocal_p.h
370
+ asmjit/core/rapass.cpp
371
+ asmjit/core/rapass_p.h
372
+ asmjit/core/rastack.cpp
373
+ asmjit/core/rastack_p.h
374
+ asmjit/core/string.cpp
375
+ asmjit/core/string.h
376
+ asmjit/core/support.cpp
377
+ asmjit/core/support.h
378
+ asmjit/core/target.cpp
379
+ asmjit/core/target.h
380
+ asmjit/core/type.cpp
381
+ asmjit/core/type.h
382
+ asmjit/core/virtmem.cpp
383
+ asmjit/core/virtmem.h
384
+ asmjit/core/zone.cpp
385
+ asmjit/core/zone.h
386
+ asmjit/core/zonehash.cpp
387
+ asmjit/core/zonehash.h
388
+ asmjit/core/zonelist.cpp
389
+ asmjit/core/zonelist.h
390
+ asmjit/core/zonestack.cpp
391
+ asmjit/core/zonestack.h
392
+ asmjit/core/zonestring.h
393
+ asmjit/core/zonetree.cpp
394
+ asmjit/core/zonetree.h
395
+ asmjit/core/zonevector.cpp
396
+ asmjit/core/zonevector.h
397
+
398
+ asmjit/arm.h
399
+ asmjit/arm/armformatter.cpp
400
+ asmjit/arm/armformatter_p.h
401
+ asmjit/arm/armglobals.h
402
+ asmjit/arm/armoperand.h
403
+ asmjit/arm/a64archtraits_p.h
404
+ asmjit/arm/a64assembler.cpp
405
+ asmjit/arm/a64assembler.h
406
+ asmjit/arm/a64builder.cpp
407
+ asmjit/arm/a64builder.h
408
+ asmjit/arm/a64compiler.cpp
409
+ asmjit/arm/a64compiler.h
410
+ asmjit/arm/a64emithelper.cpp
411
+ asmjit/arm/a64emithelper_p.h
412
+ asmjit/arm/a64emitter.h
413
+ asmjit/arm/a64formatter.cpp
414
+ asmjit/arm/a64formatter_p.h
415
+ asmjit/arm/a64func.cpp
416
+ asmjit/arm/a64func_p.h
417
+ asmjit/arm/a64globals.h
418
+ asmjit/arm/a64instapi.cpp
419
+ asmjit/arm/a64instapi_p.h
420
+ asmjit/arm/a64instdb.cpp
421
+ asmjit/arm/a64instdb.h
422
+ asmjit/arm/a64operand.cpp
423
+ asmjit/arm/a64operand.h
424
+ asmjit/arm/a64rapass.cpp
425
+ asmjit/arm/a64rapass_p.h
426
+ asmjit/arm/a64utils.h
427
+
428
+ asmjit/x86.h
429
+ asmjit/x86/x86archtraits_p.h
430
+ asmjit/x86/x86assembler.cpp
431
+ asmjit/x86/x86assembler.h
432
+ asmjit/x86/x86builder.cpp
433
+ asmjit/x86/x86builder.h
434
+ asmjit/x86/x86compiler.cpp
435
+ asmjit/x86/x86compiler.h
436
+ asmjit/x86/x86emithelper.cpp
437
+ asmjit/x86/x86emithelper_p.h
438
+ asmjit/x86/x86emitter.h
439
+ asmjit/x86/x86formatter.cpp
440
+ asmjit/x86/x86formatter_p.h
441
+ asmjit/x86/x86func.cpp
442
+ asmjit/x86/x86func_p.h
443
+ asmjit/x86/x86globals.h
444
+ asmjit/x86/x86instdb.cpp
445
+ asmjit/x86/x86instdb.h
446
+ asmjit/x86/x86instdb_p.h
447
+ asmjit/x86/x86instapi.cpp
448
+ asmjit/x86/x86instapi_p.h
449
+ asmjit/x86/x86operand.cpp
450
+ asmjit/x86/x86operand.h
451
+ asmjit/x86/x86rapass.cpp
452
+ asmjit/x86/x86rapass_p.h
453
+ )
454
+
455
+ if (MSVC AND NOT ASMJIT_NO_NATVIS)
456
+ list(APPEND ASMJIT_SRC_LIST asmjit.natvis)
457
+ endif()
458
+
459
+ set(ASMJIT_SRC "")
460
+ foreach(src_file ${ASMJIT_SRC_LIST})
461
+ set(src_file "${ASMJIT_DIR}/src/${src_file}")
462
+ list(APPEND ASMJIT_SRC ${src_file})
463
+
464
+ if ("${src_file}" MATCHES "\\.natvis")
465
+ if (ASMJIT_LINKER_SUPPORTS_NATVIS)
466
+ list(APPEND ASMJIT_PRIVATE_LFLAGS "-natvis:${src_file}")
467
+ endif()
468
+ endif()
469
+ endforeach()
470
+
471
+ if (NOT ${CMAKE_VERSION} VERSION_LESS "3.8.0")
472
+ source_group(TREE "${ASMJIT_DIR}" FILES ${ASMJIT_SRC})
473
+ endif()
474
+
475
+ # AsmJit - Summary
476
+ # ================
477
+
478
+ message("** AsmJit Summary **")
479
+ message(" ASMJIT_DIR=${ASMJIT_DIR}")
480
+ message(" ASMJIT_TEST=${ASMJIT_TEST}")
481
+ message(" ASMJIT_TARGET_TYPE=${ASMJIT_TARGET_TYPE}")
482
+ message(" ASMJIT_DEPS=${ASMJIT_DEPS}")
483
+ message(" ASMJIT_LIBS=${ASMJIT_LIBS}")
484
+ message(" ASMJIT_CFLAGS=${ASMJIT_CFLAGS}")
485
+ message(" ASMJIT_PRIVATE_CFLAGS=${ASMJIT_PRIVATE_CFLAGS}")
486
+ message(" ASMJIT_PRIVATE_CFLAGS_DBG=${ASMJIT_PRIVATE_CFLAGS_DBG}")
487
+ message(" ASMJIT_PRIVATE_CFLAGS_REL=${ASMJIT_PRIVATE_CFLAGS_REL}")
488
+
489
+ # AsmJit - Targets
490
+ # ================
491
+
492
+ if (NOT ASMJIT_EMBED)
493
+ # Add AsmJit target.
494
+ asmjit_add_target(asmjit "${ASMJIT_TARGET_TYPE}"
495
+ SOURCES ${ASMJIT_SRC}
496
+ LIBRARIES ${ASMJIT_DEPS}
497
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
498
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
499
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
500
+
501
+ target_compile_options(asmjit INTERFACE ${ASMJIT_CFLAGS})
502
+ target_include_directories(asmjit BEFORE INTERFACE
503
+ $<BUILD_INTERFACE:${ASMJIT_INCLUDE_DIRS}>
504
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
505
+
506
+ # Add blend2d::blend2d alias.
507
+ add_library(asmjit::asmjit ALIAS asmjit)
508
+ # TODO: [CMAKE] Deprecated alias - we use projectname::libraryname convention now.
509
+ add_library(AsmJit::AsmJit ALIAS asmjit)
510
+
511
+ # Add AsmJit install instructions (library and public headers).
512
+ if (NOT ASMJIT_NO_INSTALL)
513
+ install(TARGETS asmjit
514
+ EXPORT asmjit-config
515
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
516
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
517
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
518
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
519
+ install(EXPORT asmjit-config
520
+ NAMESPACE asmjit::
521
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/asmjit")
522
+
523
+ foreach(_src_file ${ASMJIT_SRC_LIST})
524
+ if ("${_src_file}" MATCHES "\\.h$" AND NOT "${_src_file}" MATCHES "_p\\.h$")
525
+ get_filename_component(_src_dir ${_src_file} PATH)
526
+ install(FILES "${ASMJIT_DIR}/src/${_src_file}" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${_src_dir}")
527
+ endif()
528
+ endforeach()
529
+ endif()
530
+
531
+ # Add AsmJit tests.
532
+ if (ASMJIT_TEST)
533
+ enable_testing()
534
+
535
+ # Special target that always uses embedded AsmJit.
536
+ asmjit_add_target(asmjit_test_unit TEST
537
+ SOURCES ${ASMJIT_SRC}
538
+ test/asmjit_test_unit.cpp
539
+ test/broken.cpp
540
+ test/broken.h
541
+ LIBRARIES ${ASMJIT_DEPS}
542
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
543
+ -DASMJIT_TEST
544
+ -DASMJIT_STATIC
545
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
546
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
547
+ target_include_directories(asmjit_test_unit BEFORE PRIVATE ${ASMJIT_INCLUDE_DIRS})
548
+
549
+ asmjit_add_target(asmjit_test_assembler TEST
550
+ SOURCES test/asmjit_test_assembler.cpp
551
+ test/asmjit_test_assembler.h
552
+ test/asmjit_test_assembler_a64.cpp
553
+ test/asmjit_test_assembler_x64.cpp
554
+ test/asmjit_test_assembler_x86.cpp
555
+ LIBRARIES asmjit::asmjit
556
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
557
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
558
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
559
+
560
+ asmjit_add_target(asmjit_test_perf EXECUTABLE
561
+ SOURCES test/asmjit_test_perf.cpp
562
+ test/asmjit_test_perf_a64.cpp
563
+ test/asmjit_test_perf_x86.cpp
564
+ SOURCES test/asmjit_test_perf.h
565
+ LIBRARIES asmjit::asmjit
566
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
567
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
568
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
569
+
570
+ foreach(_target asmjit_test_emitters
571
+ asmjit_test_x86_sections)
572
+ asmjit_add_target(${_target} TEST
573
+ SOURCES test/${_target}.cpp
574
+ LIBRARIES asmjit::asmjit
575
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
576
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
577
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
578
+ endforeach()
579
+
580
+ if (NOT ASMJIT_NO_INTROSPECTION)
581
+ asmjit_add_target(asmjit_test_instinfo TEST
582
+ SOURCES test/asmjit_test_instinfo.cpp
583
+ LIBRARIES asmjit::asmjit
584
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS}
585
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
586
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
587
+ endif()
588
+
589
+ if (NOT (ASMJIT_NO_BUILDER OR ASMJIT_NO_COMPILER))
590
+ # Vectorcall tests and XMM tests require at least SSE2 in 32-bit mode (in 64-bit mode it's implicit).
591
+ set(sse2_flags "")
592
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
593
+ asmjit_detect_cflags(sse2_flags "-arch:SSE2")
594
+ else()
595
+ asmjit_detect_cflags(sse2_flags "-msse2")
596
+ endif()
597
+ asmjit_add_target(asmjit_test_compiler TEST
598
+ SOURCES test/asmjit_test_compiler.cpp
599
+ test/asmjit_test_compiler.h
600
+ test/asmjit_test_compiler_a64.cpp
601
+ test/asmjit_test_compiler_x86.cpp
602
+ LIBRARIES asmjit::asmjit
603
+ CFLAGS ${ASMJIT_PRIVATE_CFLAGS} ${sse2_flags}
604
+ CFLAGS_DBG ${ASMJIT_PRIVATE_CFLAGS_DBG}
605
+ CFLAGS_REL ${ASMJIT_PRIVATE_CFLAGS_REL})
606
+ endif()
607
+
608
+ endif()
609
+ endif()
610
+
611
+ cmake_policy(POP)
@@ -0,0 +1,17 @@
1
+ Copyright (c) 2008-2020 The AsmJit Authors
2
+
3
+ This software is provided 'as-is', without any express or implied
4
+ warranty. In no event will the authors be held liable for any damages
5
+ arising from the use of this software.
6
+
7
+ Permission is granted to anyone to use this software for any purpose,
8
+ including commercial applications, and to alter it and redistribute it
9
+ freely, subject to the following restrictions:
10
+
11
+ 1. The origin of this software must not be misrepresented; you must not
12
+ claim that you wrote the original software. If you use this software
13
+ in a product, an acknowledgment in the product documentation would be
14
+ appreciated but is not required.
15
+ 2. Altered source versions must be plainly marked as such, and must not be
16
+ misrepresented as being the original software.
17
+ 3. This notice may not be removed or altered from any source distribution.
@@ -0,0 +1,69 @@
1
+ AsmJit
2
+ ------
3
+
4
+ AsmJit is a lightweight library for machine code generation written in C++ language.
5
+
6
+ * [Official Home Page (asmjit.com)](https://asmjit.com)
7
+ * [Official Repository (asmjit/asmjit)](https://github.com/asmjit/asmjit)
8
+ * [Public Chat Channel](https://gitter.im/asmjit/asmjit)
9
+ * [Zlib License](./LICENSE.md)
10
+
11
+ See [asmjit.com](https://asmjit.com) page for more details, examples, and documentation.
12
+
13
+ Documentation
14
+ -------------
15
+
16
+ * [Documentation Index](https://asmjit.com/doc/index.html)
17
+ * [Build Instructions](https://asmjit.com/doc/group__asmjit__build.html)
18
+
19
+ Breaking Changes
20
+ ----------------
21
+
22
+ Breaking the API is sometimes inevitable, what to do?
23
+
24
+ * See [Breaking Changes Guide](https://asmjit.com/doc/group__asmjit__breaking__changes.html), which is now part of AsmJit documentation.
25
+ * See asmjit tests, they always compile and provide implementation of many use-cases:
26
+ * [asmjit_test_emitters.cpp](./test/asmjit_test_emitters.cpp) - Tests that demonstrate the purpose of emitters.
27
+ * [asmjit_test_assembler_x86.cpp](./test/asmjit_test_assembler_x86.cpp) - Tests targeting AsmJit's Assembler (x86/x64).
28
+ * [asmjit_test_compiler_x86.cpp](./test/asmjit_test_compiler_x86.cpp) - Tests targeting AsmJit's Compiler (x86/x64).
29
+ * [asmjit_test_instinfo.cpp](./test/asmjit_test_instinfo.cpp) - Tests that query instruction information.
30
+ * [asmjit_test_x86_sections.cpp](./test/asmjit_test_x86_sections.cpp) - Multiple sections test.
31
+ * Visit our [Official Chat](https://gitter.im/asmjit/asmjit) if you need a quick help.
32
+
33
+ Project Organization
34
+ --------------------
35
+
36
+ * **`/`** - Project root.
37
+ * **src** - Source code.
38
+ * **asmjit** - Source code and headers (always point include path in here).
39
+ * **core** - Core API, backend independent except relocations.
40
+ * **arm** - ARM specific API, used only by ARM and AArch64 backends.
41
+ * **x86** - X86 specific API, used only by X86 and X64 backends.
42
+ * **test** - Unit and integration tests (don't embed in your project).
43
+ * **tools** - Tools used for configuring, documenting, and generating files.
44
+
45
+ TODO
46
+ ----
47
+
48
+ * [ ] Core:
49
+ * [ ] Add support for user external buffers in CodeBuffer / CodeHolder.
50
+ * [ ] Ports:
51
+ * [ ] 32-bit ARM/Thumb port.
52
+ * [ ] 64-bit ARM (AArch64) port.
53
+ * [ ] RISC-V port.
54
+
55
+ Support
56
+ -------
57
+
58
+ * AsmJit project has both community and commercial support, see [AsmJit's Support Page](https://asmjit.com/support.html)
59
+ * You can help the development and maintenance through Petr Kobalicek's [GitHub sponsors Profile](https://github.com/sponsors/kobalicek)
60
+
61
+ Notable Donors List:
62
+
63
+ * [ZehMatt](https://github.com/ZehMatt)
64
+
65
+
66
+ Authors & Maintainers
67
+ ---------------------
68
+
69
+ * Petr Kobalicek <kobalicek.petr@gmail.com>