rmagick 4.1.0.rc1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (414) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +3 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +108 -0
  6. data/.gitignore +3 -1
  7. data/.rspec +1 -0
  8. data/.rubocop.yml +24 -0
  9. data/.rubocop_todo.yml +151 -297
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +94 -0
  12. data/CODE_OF_CONDUCT.md +122 -7
  13. data/CONTRIBUTING.md +14 -10
  14. data/README.md +324 -0
  15. data/Rakefile +16 -22
  16. data/before_install_linux.sh +22 -32
  17. data/before_install_osx.sh +57 -2
  18. data/ext/RMagick/extconf.rb +108 -95
  19. data/ext/RMagick/rmagick.c +77 -104
  20. data/ext/RMagick/rmagick.h +77 -70
  21. data/ext/RMagick/rmdraw.c +289 -446
  22. data/ext/RMagick/rmenum.c +96 -113
  23. data/ext/RMagick/rmfill.c +49 -77
  24. data/ext/RMagick/rmilist.c +144 -244
  25. data/ext/RMagick/rmimage.c +3416 -4169
  26. data/ext/RMagick/rminfo.c +540 -738
  27. data/ext/RMagick/rmkinfo.c +21 -87
  28. data/ext/RMagick/rmmain.c +419 -246
  29. data/ext/RMagick/rmmontage.c +60 -126
  30. data/ext/RMagick/rmpixel.c +401 -345
  31. data/ext/RMagick/rmstruct.c +62 -88
  32. data/ext/RMagick/rmutil.c +148 -228
  33. data/lib/rmagick/version.rb +1 -1
  34. data/lib/rmagick_internal.rb +128 -77
  35. data/lib/rvg/clippath.rb +2 -1
  36. data/lib/rvg/container.rb +10 -5
  37. data/lib/rvg/describable.rb +1 -1
  38. data/lib/rvg/embellishable.rb +5 -4
  39. data/lib/rvg/misc.rb +15 -12
  40. data/lib/rvg/paint.rb +2 -1
  41. data/lib/rvg/pathdata.rb +12 -11
  42. data/lib/rvg/rvg.rb +8 -4
  43. data/lib/rvg/stylable.rb +9 -7
  44. data/lib/rvg/text.rb +11 -6
  45. data/lib/rvg/transformable.rb +3 -2
  46. data/lib/rvg/units.rb +1 -1
  47. data/rmagick.gemspec +8 -6
  48. metadata +46 -421
  49. data/.appveyor.yml +0 -57
  50. data/.circleci/config.yml +0 -56
  51. data/.ruby-version +0 -1
  52. data/.simplecov +0 -27
  53. data/.travis.yml +0 -64
  54. data/Doxyfile +0 -1514
  55. data/README.textile +0 -259
  56. data/benchmarks/memory/README.md +0 -50
  57. data/benchmarks/memory/image_new.rb +0 -8
  58. data/benchmarks/memory/rmagick.gnuplot +0 -16
  59. data/doc/.cvsignore +0 -1
  60. data/doc/comtasks.html +0 -287
  61. data/doc/constants.html +0 -1581
  62. data/doc/css/doc.css +0 -299
  63. data/doc/css/popup.css +0 -34
  64. data/doc/css/ref.css +0 -67
  65. data/doc/draw.html +0 -3272
  66. data/doc/ex/InitialCoords.rb +0 -22
  67. data/doc/ex/NewCoordSys.rb +0 -30
  68. data/doc/ex/OrigCoordSys.rb +0 -16
  69. data/doc/ex/PreserveAspectRatio.rb +0 -204
  70. data/doc/ex/RotateScale.rb +0 -36
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -15
  73. data/doc/ex/Use02.rb +0 -20
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -31
  76. data/doc/ex/adaptive_threshold.rb +0 -9
  77. data/doc/ex/add_noise.rb +0 -16
  78. data/doc/ex/affine.rb +0 -48
  79. data/doc/ex/affine_transform.rb +0 -20
  80. data/doc/ex/arc.rb +0 -49
  81. data/doc/ex/arcpath.rb +0 -32
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -59
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -17
  87. data/doc/ex/bilevel_channel.rb +0 -8
  88. data/doc/ex/blur_image.rb +0 -12
  89. data/doc/ex/border.rb +0 -10
  90. data/doc/ex/bounding_box.rb +0 -42
  91. data/doc/ex/cbezier1.rb +0 -41
  92. data/doc/ex/cbezier2.rb +0 -41
  93. data/doc/ex/cbezier3.rb +0 -41
  94. data/doc/ex/cbezier4.rb +0 -42
  95. data/doc/ex/cbezier5.rb +0 -42
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -25
  98. data/doc/ex/charcoal.rb +0 -12
  99. data/doc/ex/chop.rb +0 -29
  100. data/doc/ex/circle.rb +0 -33
  101. data/doc/ex/circle01.rb +0 -16
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -57
  104. data/doc/ex/color_fill_to_border.rb +0 -29
  105. data/doc/ex/color_floodfill.rb +0 -28
  106. data/doc/ex/color_histogram.rb +0 -47
  107. data/doc/ex/color_reset.rb +0 -11
  108. data/doc/ex/colorize.rb +0 -16
  109. data/doc/ex/colors.rb +0 -64
  110. data/doc/ex/compose_mask.rb +0 -22
  111. data/doc/ex/composite.rb +0 -133
  112. data/doc/ex/composite_layers.rb +0 -52
  113. data/doc/ex/composite_tiled.rb +0 -21
  114. data/doc/ex/contrast.rb +0 -36
  115. data/doc/ex/crop.rb +0 -31
  116. data/doc/ex/crop_with_gravity.rb +0 -42
  117. data/doc/ex/cubic01.rb +0 -43
  118. data/doc/ex/cubic02.rb +0 -91
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -12
  121. data/doc/ex/drawcomp.rb +0 -41
  122. data/doc/ex/drop_shadow.rb +0 -60
  123. data/doc/ex/edge.rb +0 -11
  124. data/doc/ex/ellipse.rb +0 -45
  125. data/doc/ex/ellipse01.rb +0 -21
  126. data/doc/ex/emboss.rb +0 -11
  127. data/doc/ex/enhance.rb +0 -28
  128. data/doc/ex/equalize.rb +0 -11
  129. data/doc/ex/evenodd.rb +0 -42
  130. data/doc/ex/fill_pattern.rb +0 -23
  131. data/doc/ex/flatten_images.rb +0 -36
  132. data/doc/ex/flip.rb +0 -11
  133. data/doc/ex/flop.rb +0 -11
  134. data/doc/ex/font_styles.rb +0 -32
  135. data/doc/ex/fonts.rb +0 -16
  136. data/doc/ex/frame.rb +0 -12
  137. data/doc/ex/gaussian_blur.rb +0 -11
  138. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  139. data/doc/ex/get_pixels.rb +0 -45
  140. data/doc/ex/get_type_metrics.rb +0 -142
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -45
  143. data/doc/ex/gravity.rb +0 -78
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -44
  147. data/doc/ex/images/Apple.miff +0 -0
  148. data/doc/ex/images/Ballerina.jpg +0 -0
  149. data/doc/ex/images/Ballerina3.jpg +0 -0
  150. data/doc/ex/images/Button_0.gif +0 -0
  151. data/doc/ex/images/Button_1.gif +0 -0
  152. data/doc/ex/images/Button_2.gif +0 -0
  153. data/doc/ex/images/Button_3.gif +0 -0
  154. data/doc/ex/images/Button_4.gif +0 -0
  155. data/doc/ex/images/Button_5.gif +0 -0
  156. data/doc/ex/images/Button_6.gif +0 -0
  157. data/doc/ex/images/Button_7.gif +0 -0
  158. data/doc/ex/images/Button_8.gif +0 -0
  159. data/doc/ex/images/Button_9.gif +0 -0
  160. data/doc/ex/images/Button_A.gif +0 -0
  161. data/doc/ex/images/Button_B.gif +0 -0
  162. data/doc/ex/images/Button_C.gif +0 -0
  163. data/doc/ex/images/Button_D.gif +0 -0
  164. data/doc/ex/images/Button_E.gif +0 -0
  165. data/doc/ex/images/Button_F.gif +0 -0
  166. data/doc/ex/images/Button_G.gif +0 -0
  167. data/doc/ex/images/Button_H.gif +0 -0
  168. data/doc/ex/images/Button_I.gif +0 -0
  169. data/doc/ex/images/Button_J.gif +0 -0
  170. data/doc/ex/images/Button_K.gif +0 -0
  171. data/doc/ex/images/Button_L.gif +0 -0
  172. data/doc/ex/images/Button_M.gif +0 -0
  173. data/doc/ex/images/Button_N.gif +0 -0
  174. data/doc/ex/images/Button_O.gif +0 -0
  175. data/doc/ex/images/Button_P.gif +0 -0
  176. data/doc/ex/images/Button_Q.gif +0 -0
  177. data/doc/ex/images/Button_R.gif +0 -0
  178. data/doc/ex/images/Button_S.gif +0 -0
  179. data/doc/ex/images/Button_T.gif +0 -0
  180. data/doc/ex/images/Button_U.gif +0 -0
  181. data/doc/ex/images/Button_V.gif +0 -0
  182. data/doc/ex/images/Button_W.gif +0 -0
  183. data/doc/ex/images/Button_X.gif +0 -0
  184. data/doc/ex/images/Button_Y.gif +0 -0
  185. data/doc/ex/images/Button_Z.gif +0 -0
  186. data/doc/ex/images/Cheetah.jpg +0 -0
  187. data/doc/ex/images/Coffee.png +0 -0
  188. data/doc/ex/images/Flower_Hat.jpg +0 -0
  189. data/doc/ex/images/Gold_Statue.jpg +0 -0
  190. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  191. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  192. data/doc/ex/images/Leaf.miff +0 -0
  193. data/doc/ex/images/No.png +0 -0
  194. data/doc/ex/images/Polynesia.jpg +0 -0
  195. data/doc/ex/images/Red_Rocks.jpg +0 -0
  196. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  197. data/doc/ex/images/Shorts.jpg +0 -0
  198. data/doc/ex/images/Snake.png +0 -0
  199. data/doc/ex/images/Violin.jpg +0 -0
  200. data/doc/ex/images/Yellow_Rose.miff +0 -0
  201. data/doc/ex/images/big-duck.gif +0 -0
  202. data/doc/ex/images/duck.gif +0 -0
  203. data/doc/ex/images/duck0.gif +0 -0
  204. data/doc/ex/images/duck1.gif +0 -0
  205. data/doc/ex/images/duck10.gif +0 -0
  206. data/doc/ex/images/duck11.gif +0 -0
  207. data/doc/ex/images/duck12.gif +0 -0
  208. data/doc/ex/images/duck13.gif +0 -0
  209. data/doc/ex/images/duck14.gif +0 -0
  210. data/doc/ex/images/duck15.gif +0 -0
  211. data/doc/ex/images/duck2.gif +0 -0
  212. data/doc/ex/images/duck3.gif +0 -0
  213. data/doc/ex/images/duck4.gif +0 -0
  214. data/doc/ex/images/duck5.gif +0 -0
  215. data/doc/ex/images/duck6.gif +0 -0
  216. data/doc/ex/images/duck7.gif +0 -0
  217. data/doc/ex/images/duck8.gif +0 -0
  218. data/doc/ex/images/duck9.gif +0 -0
  219. data/doc/ex/images/graydient230x6.gif +0 -0
  220. data/doc/ex/images/image_with_profile.jpg +0 -0
  221. data/doc/ex/images/logo400x83.gif +0 -0
  222. data/doc/ex/images/model.miff +0 -0
  223. data/doc/ex/images/notimplemented.gif +0 -0
  224. data/doc/ex/images/smile.miff +0 -0
  225. data/doc/ex/images/spin.gif +0 -0
  226. data/doc/ex/implode.rb +0 -34
  227. data/doc/ex/level.rb +0 -11
  228. data/doc/ex/level_colors.rb +0 -11
  229. data/doc/ex/line.rb +0 -41
  230. data/doc/ex/line01.rb +0 -21
  231. data/doc/ex/mask.rb +0 -35
  232. data/doc/ex/matte_fill_to_border.rb +0 -39
  233. data/doc/ex/matte_floodfill.rb +0 -32
  234. data/doc/ex/matte_replace.rb +0 -39
  235. data/doc/ex/median_filter.rb +0 -28
  236. data/doc/ex/modulate.rb +0 -11
  237. data/doc/ex/mono.rb +0 -23
  238. data/doc/ex/morph.rb +0 -25
  239. data/doc/ex/mosaic.rb +0 -37
  240. data/doc/ex/motion_blur.rb +0 -11
  241. data/doc/ex/negate.rb +0 -11
  242. data/doc/ex/negate_channel.rb +0 -9
  243. data/doc/ex/nested_rvg.rb +0 -21
  244. data/doc/ex/nonzero.rb +0 -42
  245. data/doc/ex/normalize.rb +0 -11
  246. data/doc/ex/oil_paint.rb +0 -11
  247. data/doc/ex/opacity.rb +0 -37
  248. data/doc/ex/ordered_dither.rb +0 -11
  249. data/doc/ex/path.rb +0 -63
  250. data/doc/ex/pattern1.rb +0 -25
  251. data/doc/ex/pattern2.rb +0 -26
  252. data/doc/ex/polaroid.rb +0 -26
  253. data/doc/ex/polygon.rb +0 -23
  254. data/doc/ex/polygon01.rb +0 -21
  255. data/doc/ex/polyline.rb +0 -22
  256. data/doc/ex/polyline01.rb +0 -21
  257. data/doc/ex/posterize.rb +0 -8
  258. data/doc/ex/preview.rb +0 -8
  259. data/doc/ex/qbezierpath.rb +0 -52
  260. data/doc/ex/quad01.rb +0 -34
  261. data/doc/ex/quantize-m.rb +0 -25
  262. data/doc/ex/radial_blur.rb +0 -9
  263. data/doc/ex/raise.rb +0 -8
  264. data/doc/ex/random_threshold_channel.rb +0 -13
  265. data/doc/ex/rect01.rb +0 -14
  266. data/doc/ex/rect02.rb +0 -20
  267. data/doc/ex/rectangle.rb +0 -34
  268. data/doc/ex/reduce_noise.rb +0 -28
  269. data/doc/ex/remap.rb +0 -11
  270. data/doc/ex/remap_images.rb +0 -19
  271. data/doc/ex/resize_to_fill.rb +0 -8
  272. data/doc/ex/resize_to_fit.rb +0 -8
  273. data/doc/ex/roll.rb +0 -9
  274. data/doc/ex/rotate.rb +0 -44
  275. data/doc/ex/rotate_f.rb +0 -14
  276. data/doc/ex/roundrect.rb +0 -33
  277. data/doc/ex/rubyname.rb +0 -30
  278. data/doc/ex/rvg_clippath.rb +0 -12
  279. data/doc/ex/rvg_linecap.rb +0 -42
  280. data/doc/ex/rvg_linejoin.rb +0 -40
  281. data/doc/ex/rvg_opacity.rb +0 -18
  282. data/doc/ex/rvg_pattern.rb +0 -26
  283. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  284. data/doc/ex/segment.rb +0 -11
  285. data/doc/ex/sepiatone.rb +0 -7
  286. data/doc/ex/shade.rb +0 -11
  287. data/doc/ex/shadow.rb +0 -30
  288. data/doc/ex/shave.rb +0 -15
  289. data/doc/ex/shear.rb +0 -10
  290. data/doc/ex/sketch.rb +0 -17
  291. data/doc/ex/skewx.rb +0 -51
  292. data/doc/ex/skewy.rb +0 -47
  293. data/doc/ex/smile.rb +0 -126
  294. data/doc/ex/solarize.rb +0 -11
  295. data/doc/ex/sparse_color.rb +0 -55
  296. data/doc/ex/splice.rb +0 -8
  297. data/doc/ex/spread.rb +0 -11
  298. data/doc/ex/stegano.rb +0 -54
  299. data/doc/ex/stroke_dasharray.rb +0 -42
  300. data/doc/ex/stroke_fill.rb +0 -10
  301. data/doc/ex/stroke_linecap.rb +0 -44
  302. data/doc/ex/stroke_linejoin.rb +0 -48
  303. data/doc/ex/stroke_width.rb +0 -49
  304. data/doc/ex/swirl.rb +0 -17
  305. data/doc/ex/text.rb +0 -37
  306. data/doc/ex/text01.rb +0 -16
  307. data/doc/ex/text_align.rb +0 -36
  308. data/doc/ex/text_antialias.rb +0 -37
  309. data/doc/ex/text_styles.rb +0 -19
  310. data/doc/ex/text_undercolor.rb +0 -28
  311. data/doc/ex/texture_fill_to_border.rb +0 -34
  312. data/doc/ex/texture_floodfill.rb +0 -32
  313. data/doc/ex/texturefill.rb +0 -24
  314. data/doc/ex/threshold.rb +0 -13
  315. data/doc/ex/to_blob.rb +0 -13
  316. data/doc/ex/translate.rb +0 -39
  317. data/doc/ex/transparent.rb +0 -38
  318. data/doc/ex/transpose.rb +0 -9
  319. data/doc/ex/transverse.rb +0 -9
  320. data/doc/ex/tref01.rb +0 -24
  321. data/doc/ex/triangle01.rb +0 -15
  322. data/doc/ex/trim.rb +0 -23
  323. data/doc/ex/tspan01.rb +0 -17
  324. data/doc/ex/tspan02.rb +0 -17
  325. data/doc/ex/tspan03.rb +0 -19
  326. data/doc/ex/unsharp_mask.rb +0 -28
  327. data/doc/ex/viewex.rb +0 -33
  328. data/doc/ex/vignette.rb +0 -12
  329. data/doc/ex/watermark.rb +0 -27
  330. data/doc/ex/wave.rb +0 -9
  331. data/doc/ex/wet_floor.rb +0 -58
  332. data/doc/ex/writing_mode01.rb +0 -26
  333. data/doc/ex/writing_mode02.rb +0 -26
  334. data/doc/ilist.html +0 -2056
  335. data/doc/image1.html +0 -4680
  336. data/doc/image2.html +0 -3665
  337. data/doc/image3.html +0 -4522
  338. data/doc/imageattrs.html +0 -1638
  339. data/doc/imusage.html +0 -514
  340. data/doc/index.html +0 -416
  341. data/doc/info.html +0 -1499
  342. data/doc/magick.html +0 -570
  343. data/doc/optequiv.html +0 -2435
  344. data/doc/rvg.html +0 -975
  345. data/doc/rvgclip.html +0 -248
  346. data/doc/rvggroup.html +0 -305
  347. data/doc/rvgimage.html +0 -289
  348. data/doc/rvgpattern.html +0 -475
  349. data/doc/rvgshape.html +0 -406
  350. data/doc/rvgstyle.html +0 -270
  351. data/doc/rvgtext.html +0 -465
  352. data/doc/rvgtspan.html +0 -238
  353. data/doc/rvgtut.html +0 -530
  354. data/doc/rvguse.html +0 -145
  355. data/doc/rvgxform.html +0 -294
  356. data/doc/scripts/doc.js +0 -22
  357. data/doc/scripts/stripeTables.js +0 -23
  358. data/doc/struct.html +0 -1339
  359. data/doc/usage.html +0 -1621
  360. data/examples/constitute.rb +0 -7
  361. data/examples/crop_with_gravity.rb +0 -43
  362. data/examples/demo.rb +0 -323
  363. data/examples/describe.rb +0 -41
  364. data/examples/find_similar_region.rb +0 -34
  365. data/examples/histogram.rb +0 -312
  366. data/examples/identify.rb +0 -174
  367. data/examples/image_opacity.rb +0 -28
  368. data/examples/import_export.rb +0 -31
  369. data/examples/pattern_fill.rb +0 -37
  370. data/examples/rotating_text.rb +0 -45
  371. data/examples/spinner.rb +0 -49
  372. data/examples/thumbnail.rb +0 -64
  373. data/examples/vignette.rb +0 -78
  374. data/spec/rmagick/ImageList1_spec.rb +0 -24
  375. data/spec/rmagick/draw_spec.rb +0 -155
  376. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  377. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  378. data/spec/rmagick/image/composite_spec.rb +0 -72
  379. data/spec/rmagick/image/constitute_spec.rb +0 -13
  380. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  381. data/spec/rmagick/image/dissolve_spec.rb +0 -54
  382. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  383. data/spec/rmagick/image/ping_spec.rb +0 -12
  384. data/spec/rmagick/image/properties_spec.rb +0 -27
  385. data/spec/rmagick/image/read_spec.rb +0 -28
  386. data/spec/spec_helper.rb +0 -9
  387. data/spec/support/issue_200/app.rb +0 -8
  388. data/test/Draw.rb +0 -351
  389. data/test/Enum.rb +0 -228
  390. data/test/Fill.rb +0 -93
  391. data/test/Image1.rb +0 -606
  392. data/test/Image2.rb +0 -1408
  393. data/test/Image3.rb +0 -1086
  394. data/test/ImageList1.rb +0 -858
  395. data/test/ImageList2.rb +0 -375
  396. data/test/Image_attributes.rb +0 -635
  397. data/test/Import_Export.rb +0 -111
  398. data/test/Info.rb +0 -436
  399. data/test/KernelInfo.rb +0 -59
  400. data/test/Magick.rb +0 -311
  401. data/test/Pixel.rb +0 -259
  402. data/test/PolaroidOptions.rb +0 -23
  403. data/test/Preview.rb +0 -26
  404. data/test/Struct.rb +0 -45
  405. data/test/appearance/Montage.rb +0 -26
  406. data/test/appearance/appearance_assertion.rb +0 -13
  407. data/test/appearance/expected/montage_border_color.jpg +0 -0
  408. data/test/cmyk.icm +0 -0
  409. data/test/lib/internal/Draw.rb +0 -811
  410. data/test/lib/internal/Geometry.rb +0 -98
  411. data/test/lib/internal/Magick.rb +0 -40
  412. data/test/srgb.icm +0 -0
  413. data/test/test_all_basic.rb +0 -49
  414. data/test/tmpnam_test.rb +0 -50
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ task build: [:config] do
43
43
  FileUtils.mkdir_p(File.join(base, 'pkg'))
44
44
  FileUtils.mv(File.join(base, gem_name), 'pkg')
45
45
  else
46
- STDERR.puts 'Could not build gem'
46
+ warn 'Could not build gem'
47
47
  exit $CHILD_STATUS.exitstatus
48
48
  end
49
49
  end
@@ -121,21 +121,21 @@ namespace :legacy do
121
121
  task README => 'README.txt' do
122
122
  puts "writing #{README}"
123
123
  File.open(README, 'w') do |html|
124
- html.write <<END_HTML_HEAD
125
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
126
- <html>
127
- <head>
128
- <title>RMagick #{Magick::VERSION} README</title>
129
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
130
- <meta name="GENERATOR" content="RedCloth">
131
- </head>
132
- <body>
133
- END_HTML_HEAD
124
+ html.write <<~END_HTML_HEAD
125
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
126
+ <html>
127
+ <head>
128
+ <title>RMagick #{Magick::VERSION} README</title>
129
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
130
+ <meta name="GENERATOR" content="RedCloth">
131
+ </head>
132
+ <body>
133
+ END_HTML_HEAD
134
134
  html.write File.readlines('README.txt')
135
- html.write <<END_HTML_TAIL
136
- </body>
137
- </html>
138
- END_HTML_TAIL
135
+ html.write <<~END_HTML_TAIL
136
+ </body>
137
+ </html>
138
+ END_HTML_TAIL
139
139
  end
140
140
  end
141
141
 
@@ -172,7 +172,6 @@ END_HTML_TAIL
172
172
  end
173
173
 
174
174
  require 'rake/extensiontask'
175
- require 'rake/testtask'
176
175
  require 'rspec/core/rake_task'
177
176
  RSpec::Core::RakeTask.new(:spec)
178
177
 
@@ -180,11 +179,6 @@ Rake::ExtensionTask.new('RMagick2') do |ext|
180
179
  ext.ext_dir = 'ext/RMagick'
181
180
  end
182
181
 
183
- Rake::TestTask.new(:test) do |t|
184
- t.libs << 'test'
185
- end
186
-
187
- task test: :compile
188
182
  task spec: :compile
189
183
 
190
184
  if ENV['STYLE_CHECKS']
@@ -192,5 +186,5 @@ if ENV['STYLE_CHECKS']
192
186
  RuboCop::RakeTask.new
193
187
  task default: %i[rubocop]
194
188
  else
195
- task default: %i[spec test]
189
+ task default: %i[spec]
196
190
  end
@@ -1,3 +1,5 @@
1
+ #!/usr/bin/env bash
2
+
1
3
  set -euox pipefail
2
4
 
3
5
  gem install bundler
@@ -13,66 +15,54 @@ if [ ! -v IMAGEMAGICK_VERSION ]; then
13
15
  exit 1
14
16
  fi
15
17
 
18
+ sudo apt-get clean
19
+ sudo apt-get update
20
+
16
21
  # remove all existing imagemagick related packages
17
22
  sudo apt-get autoremove -y imagemagick* libmagick* --purge
18
23
 
19
- if [ ! -v TRAVIS ]; then
20
- sudo apt-get update
21
-
22
- # install build tools, ImageMagick delegates
23
- sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
24
- liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
25
- libtiff5-dev libwebp-dev vim ghostscript ccache
26
- fi
24
+ # install build tools, ImageMagick delegates
25
+ sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
26
+ liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
27
+ libtiff5-dev libwebp-dev liblqr-1-0-dev vim gsfonts ghostscript ccache
27
28
 
28
29
  if [ ! -d /usr/include/freetype ]; then
29
30
  # If `/usr/include/freetype` is not existed, ImageMagick 6.7 configuration fails about Freetype.
30
31
  sudo ln -sf /usr/include/freetype2 /usr/include/freetype
31
32
  fi
32
33
 
33
- project_dir=`pwd`
34
- build_dir=${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}
34
+ project_dir=$(pwd)
35
+ build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
35
36
  if [ -v CONFIGURE_OPTIONS ]; then
36
- build_dir=${build_dir}-${CONFIGURE_OPTIONS}
37
+ build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
37
38
  fi
38
39
 
39
40
  build_imagemagick() {
40
41
  mkdir -p build-ImageMagick
41
42
 
42
43
  version=(${IMAGEMAGICK_VERSION//./ })
43
- if (( "${version[0]}" >= 7 )); then
44
- wget https://github.com/ImageMagick/ImageMagick/archive/${IMAGEMAGICK_VERSION}.tar.gz
45
- tar -xf ${IMAGEMAGICK_VERSION}.tar.gz
46
- mv ImageMagick-${IMAGEMAGICK_VERSION} $build_dir
47
- elif (( "${version[0]}${version[1]}" >= 69 )); then
48
- wget https://github.com/ImageMagick/ImageMagick6/archive/${IMAGEMAGICK_VERSION}.tar.gz
49
- tar -xf ${IMAGEMAGICK_VERSION}.tar.gz
50
- rm ${IMAGEMAGICK_VERSION}.tar.gz
51
- mv ImageMagick6-${IMAGEMAGICK_VERSION} $build_dir
52
- else
53
- wget https://www.imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
54
- tar -xf ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
55
- rm ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
56
- mv ImageMagick-${IMAGEMAGICK_VERSION} $build_dir
57
- fi
44
+ wget "https://imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
45
+ tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
46
+ rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
47
+ mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
58
48
 
59
49
  options="--with-magick-plus-plus=no --disable-docs"
60
50
  if [ -v CONFIGURE_OPTIONS ]; then
61
- options="${CONFIGURE_OPTIONS} $options"
51
+ options="${CONFIGURE_OPTIONS} ${options}"
62
52
  fi
63
53
 
64
- cd $build_dir
65
- CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr $options
54
+ cd "${build_dir}"
55
+ CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr "${options}"
66
56
  make -j
67
57
  }
68
58
 
69
- if [ ! -d $build_dir ]; then
59
+ if [ ! -d "${build_dir}" ]; then
70
60
  build_imagemagick
71
61
  fi
72
62
 
73
- cd $build_dir
63
+ cd "${build_dir}"
74
64
  sudo make install -j
75
- cd $project_dir
65
+ cd "${project_dir}"
76
66
 
77
67
  sudo ldconfig
78
68
 
@@ -1,2 +1,57 @@
1
- brew update
2
- brew install imagemagick
1
+ #!/usr/bin/env bash
2
+
3
+ set -euox pipefail
4
+
5
+ gem install bundler
6
+
7
+ if [ -v STYLE_CHECKS ]; then
8
+ set +ux
9
+ exit 0
10
+ fi
11
+
12
+ if [ ! -v IMAGEMAGICK_VERSION ]; then
13
+ echo "you must specify an ImageMagick version."
14
+ echo "example: 'IMAGEMAGICK_VERSION=6.8.9-10 bash ./before_install_osx.sh'"
15
+ exit 1
16
+ fi
17
+
18
+ export HOMEBREW_NO_AUTO_UPDATE=true
19
+ brew install wget pkg-config ghostscript freetype jpeg little-cms2 libomp libpng libtiff liblqr libtool libxml2 zlib webp
20
+
21
+ export LDFLAGS="-L/usr/local/opt/libxml2/lib -L/usr/local/opt/zlib/lib"
22
+ export CPPFLAGS="-I/usr/local/opt/libxml2/include/libxml2 -I/usr/local/opt/zlib/include"
23
+
24
+ project_dir=$(pwd)
25
+ build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
26
+ if [ -v CONFIGURE_OPTIONS ]; then
27
+ build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
28
+ fi
29
+
30
+ build_imagemagick() {
31
+ mkdir -p build-ImageMagick
32
+
33
+ version=(${IMAGEMAGICK_VERSION//./ })
34
+ wget "https://imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
35
+ tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
36
+ rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
37
+ mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
38
+
39
+ options="--with-magick-plus-plus=no --disable-docs"
40
+ if [ -v CONFIGURE_OPTIONS ]; then
41
+ options="${CONFIGURE_OPTIONS} ${options}"
42
+ fi
43
+
44
+ cd "${build_dir}"
45
+ ./configure --prefix=/usr/local "${options}"
46
+ make -j
47
+ }
48
+
49
+ if [ ! -d "${build_dir}" ]; then
50
+ build_imagemagick
51
+ fi
52
+
53
+ cd "${build_dir}"
54
+ make install -j
55
+ cd "${project_dir}"
56
+
57
+ set +ux
@@ -2,7 +2,6 @@ lib_dir = File.expand_path('../../lib', File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
3
3
  require 'rubygems'
4
4
  require 'mkmf'
5
- require 'date'
6
5
 
7
6
  module RMagick
8
7
  class Extconf
@@ -16,12 +15,14 @@ module RMagick
16
15
  @stdout = $stdout.dup
17
16
 
18
17
  setup_pkg_config_path
19
- configure_compile_options
20
18
  assert_can_compile!
19
+ configure_compile_options
21
20
  configure_headers
22
21
  end
23
22
 
24
23
  def setup_pkg_config_path
24
+ return if RUBY_PLATFORM =~ /mswin|mingw/
25
+
25
26
  if find_executable('brew')
26
27
  pkg_config_path = "#{`brew --prefix imagemagick@6`.strip}/lib/pkgconfig"
27
28
  elsif find_executable('pacman')
@@ -64,55 +65,32 @@ module RMagick
64
65
  # Magick-config is not available on Windows
65
66
  if RUBY_PLATFORM !~ /mswin|mingw/
66
67
 
67
- # Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
68
- config = defined?(RbConfig) ? ::RbConfig : ::Config
69
- cc = (ENV['CC'] || config::CONFIG['CC'] || 'gcc').split(' ').first
70
- exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details." unless find_executable(cc)
71
-
72
- magick_package = determine_imagemagick_package
73
-
74
- $magick_version = `pkg-config #{magick_package} --modversion`[/^(\d+\.\d+\.\d+)/]
75
-
76
68
  check_multiple_imagemagick_versions
77
69
  check_partial_imagemagick_versions
78
70
 
79
- # Ensure minimum ImageMagick version
80
- # Check minimum ImageMagick version if possible
81
- checking_for("outdated ImageMagick version (<= #{Magick::MIN_IM_VERSION})") do
82
- Logging.message("Detected ImageMagick version: #{$magick_version}\n")
83
-
84
- exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{Magick::MIN_IM_VERSION} or later.\n" if Gem::Version.new($magick_version) < Gem::Version.new(Magick::MIN_IM_VERSION)
85
- end
86
-
87
71
  # Save flags
88
- $CFLAGS = ENV['CFLAGS'].to_s + ' ' + `pkg-config --cflags #{magick_package}`.chomp
89
- $CPPFLAGS = ENV['CPPFLAGS'].to_s + ' ' + `pkg-config --cflags #{magick_package}`.chomp
90
- $LDFLAGS = ENV['LDFLAGS'].to_s + ' ' + `pkg-config --libs #{magick_package}`.chomp
91
- $LOCAL_LIBS = ENV['LIBS'].to_s + ' ' + `pkg-config --libs #{magick_package}`.chomp
72
+ $CFLAGS = "#{ENV['CFLAGS']} " + `pkg-config --cflags #{$magick_package}`.chomp
73
+ $CPPFLAGS = "#{ENV['CPPFLAGS']} " + `pkg-config --cflags #{$magick_package}`.chomp
74
+ $LDFLAGS = "#{ENV['LDFLAGS']} " + `pkg-config --libs #{$magick_package}`.chomp
75
+ $LOCAL_LIBS = "#{ENV['LIBS']} " + `pkg-config --libs #{$magick_package}`.chomp
92
76
 
93
- set_archflags_for_osx if RUBY_PLATFORM =~ /darwin/ # osx
77
+ configure_archflags_for_osx($magick_package) if RUBY_PLATFORM =~ /darwin/ # osx
94
78
 
95
79
  elsif RUBY_PLATFORM =~ /mingw/ # mingw
96
80
 
97
- `#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
98
- abort 'Unable to get ImageMagick version' unless Regexp.last_match(1)
99
- $magick_version = Regexp.last_match(1)
100
-
101
81
  dir_paths = search_paths_for_library_for_windows
102
82
  $CPPFLAGS = %(-I"#{dir_paths[:include]}")
103
83
  $LDFLAGS = %(-L"#{dir_paths[:lib]}")
84
+ $LDFLAGS << ' -lucrt' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
104
85
 
105
86
  have_library(im_version_at_least?('7.0.0') ? 'CORE_RL_MagickCore_' : 'CORE_RL_magick_')
106
87
 
107
88
  else # mswin
108
89
 
109
- `#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
110
- abort 'Unable to get ImageMagick version' unless Regexp.last_match(1)
111
- $magick_version = Regexp.last_match(1)
112
-
113
90
  dir_paths = search_paths_for_library_for_windows
114
91
  $CPPFLAGS << %( -I"#{dir_paths[:include]}")
115
92
  $LDFLAGS << %( -libpath:"#{dir_paths[:lib]}")
93
+ $LDFLAGS << ' -libpath:ucrt' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
116
94
 
117
95
  $LOCAL_LIBS = im_version_at_least?('7.0.0') ? 'CORE_RL_MagickCore_.lib' : 'CORE_RL_magick_.lib'
118
96
 
@@ -121,30 +99,6 @@ module RMagick
121
99
  $CFLAGS << (have_macro('__GNUC__') ? ' -std=gnu99' : ' -std=c99')
122
100
  end
123
101
 
124
- # Test for a specific value in an enum type
125
- def have_enum_value(enum, value, headers = nil, &b)
126
- checking_for "#{enum}.#{value}" do
127
- if try_compile(<<"SRC", &b)
128
- #{COMMON_HEADERS}
129
- #{cpp_include(headers)}
130
- /*top*/
131
- int main() { #{enum} t = #{value}; t = t; return 0; }
132
- SRC
133
- $defs.push(format('-DHAVE_ENUM_%s', value.upcase))
134
- true
135
- else
136
- false
137
- end
138
- end
139
- end
140
-
141
- # Test for multiple values of the same enum type
142
- def have_enum_values(enum, values, headers = nil, &b)
143
- values.each do |value|
144
- have_enum_value(enum, value, headers, &b)
145
- end
146
- end
147
-
148
102
  def exit_failure(msg)
149
103
  msg = "ERROR: #{msg}"
150
104
 
@@ -163,10 +117,6 @@ SRC
163
117
  end
164
118
 
165
119
  def determine_imagemagick_package
166
- unless find_executable('pkg-config')
167
- exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find pkg-config in #{ENV['PATH']}\n"
168
- end
169
-
170
120
  packages = `pkg-config --list-all`.scan(/(ImageMagick\-[\.A-Z0-9]+) .*/).flatten
171
121
 
172
122
  # For ancient version of ImageMagick 6 we need a different regex
@@ -245,21 +195,33 @@ SRC
245
195
  matches.delete_if(&:empty?)
246
196
  return unless !matches.empty? && matches.length < 3
247
197
 
248
- msg = "\nWarning: Found a partial ImageMagick installation. Your operating system likely has some built-in ImageMagick libraries but not all of ImageMagick. This will most likely cause problems at both compile and runtime.\nFound partial installation at: " + prefix + "\n"
198
+ msg = <<~MESSAGE
199
+
200
+ Warning: Found a partial ImageMagick installation. Your operating
201
+ system likely has some built-in ImageMagick libraries but not all of
202
+ ImageMagick. This will most likely cause problems at both compile and
203
+ runtime.
204
+ Found partial installation at: #{prefix}
205
+
206
+ MESSAGE
207
+
249
208
  Logging.message msg
250
209
  message msg
251
210
  end
252
211
 
253
212
  # issue #169
254
213
  # set ARCHFLAGS appropriately for OSX
255
- def set_archflags_for_osx
256
- archflags = []
257
- fullpath = `which convert`
258
- fileinfo = `file #{fullpath}`
214
+ def configure_archflags_for_osx(magick_package)
215
+ return unless `pkg-config #{magick_package} --libs-only-L`.match(%r{-L(.+)/lib})
216
+
217
+ imagemagick_dir = Regexp.last_match(1)
218
+ command = Dir.glob(File.join(imagemagick_dir, "bin/*")).select { |file| File.executable? file }.first
219
+ fileinfo = `file #{command}`
259
220
 
260
221
  # default ARCHFLAGS
261
222
  archs = $ARCH_FLAG.scan(/-arch\s+(\S+)/).flatten
262
223
 
224
+ archflags = []
263
225
  archs.each do |arch|
264
226
  archflags << "-arch #{arch}" if fileinfo.include?(arch)
265
227
  end
@@ -290,54 +252,101 @@ SRC
290
252
 
291
253
  return dir_paths if found_lib
292
254
 
293
- exit_failure <<END_MINGW
294
- Can't install RMagick #{RMAGICK_VERS}.
295
- Can't find the ImageMagick library.
296
- Retry with '--with-opt-dir' option.
297
- Usage: gem install rmagick -- '--with-opt-dir=\"[path to ImageMagick]\"'
298
- e.g.
299
- gem install rmagick -- '--with-opt-dir=\"C:\Program Files\ImageMagick-6.9.1-Q16\"'
300
- END_MINGW
255
+ exit_failure <<~END_MINGW
256
+ Can't install RMagick #{RMAGICK_VERS}.
257
+ Can't find the ImageMagick library.
258
+ Retry with '--with-opt-dir' option.
259
+ Usage: gem install rmagick -- '--with-opt-dir=\"[path to ImageMagick]\"'
260
+ e.g.
261
+ gem install rmagick -- '--with-opt-dir=\"C:\Program Files\ImageMagick-6.9.1-Q16\"'
262
+ END_MINGW
301
263
  end
302
264
 
303
265
  def assert_can_compile!
304
266
  assert_minimum_ruby_version!
305
267
  assert_has_dev_libs!
268
+
269
+ # Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
270
+ cc = (ENV['CC'] || RbConfig::CONFIG['CC'] || 'gcc').split(' ').first
271
+ exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details." unless find_executable(cc)
306
272
  end
307
273
 
308
274
  def assert_minimum_ruby_version!
309
- unless checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
275
+ supported = checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
310
276
  Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(MIN_RUBY_VERS)
311
277
  end
312
- exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n"
313
- end
278
+
279
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n" unless supported
314
280
  end
315
281
 
316
282
  def assert_has_dev_libs!
317
- return unless RUBY_PLATFORM !~ /mswin|mingw/
283
+ failure_message = <<~END_FAILURE
284
+ Can't install RMagick #{RMAGICK_VERS}.
285
+ Can't find the ImageMagick library or one of the dependent libraries.
286
+ Check the mkmf.log file for more detailed information.
287
+ END_FAILURE
288
+
289
+ if RUBY_PLATFORM !~ /mswin|mingw/
290
+ unless find_executable('pkg-config')
291
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find pkg-config in #{ENV['PATH']}\n"
292
+ end
293
+
294
+ unless `pkg-config --libs MagickCore`[/\bl\s*(MagickCore|Magick)6?\b/]
295
+ exit_failure failure_message
296
+ end
297
+
298
+ $magick_package = determine_imagemagick_package
299
+ $magick_version = `pkg-config #{$magick_package} --modversion`[/^(\d+\.\d+\.\d+)/]
300
+ else
301
+ `#{magick_command} -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-+\d+ /
302
+ $magick_version = Regexp.last_match(1)
303
+ exit_failure failure_message unless $magick_version
304
+ end
318
305
 
319
- unless `pkg-config --libs MagickCore`[/\bl\s*(MagickCore|Magick)6?\b/]
320
- exit_failure "Can't install RMagick #{RMAGICK_VERS}. " \
321
- "Can't find the ImageMagick library or one of the dependent libraries. " \
322
- "Check the mkmf.log file for more detailed information.\n"
306
+ # Ensure minimum ImageMagick version
307
+ # Check minimum ImageMagick version if possible
308
+ checking_for("outdated ImageMagick version (<= #{Magick::MIN_IM_VERSION})") do
309
+ Logging.message("Detected ImageMagick version: #{$magick_version}\n")
310
+
311
+ exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{Magick::MIN_IM_VERSION} or later.\n" if Gem::Version.new($magick_version) < Gem::Version.new(Magick::MIN_IM_VERSION)
323
312
  end
324
313
  end
325
314
 
326
315
  def create_header_file
327
- [
316
+ ruby_api = [
317
+ 'rb_gc_adjust_memory_usage' # Ruby 2.4.0
318
+ ]
319
+ memory_api = %w[
320
+ posix_memalign
321
+ malloc_usable_size
322
+ malloc_size
323
+ _aligned_msize
324
+ ]
325
+ imagemagick_api = [
328
326
  'GetImageChannelEntropy', # 6.9.0-0
329
- 'SetImageGray' # 6.9.1-10
330
- ].each do |func|
327
+ 'SetImageGray', # 6.9.1-10
328
+ 'SetMagickAlignedMemoryMethods' # 7.0.9-0
329
+ ]
330
+
331
+ check_api = ruby_api + memory_api + imagemagick_api
332
+ check_api.each do |func|
331
333
  have_func(func, headers)
332
334
  end
333
335
 
336
+ unless have_header('malloc.h')
337
+ have_header('malloc/malloc.h')
338
+ end
339
+
334
340
  # Miscellaneous constants
335
341
  $defs.push("-DRUBY_VERSION_STRING=\"ruby #{RUBY_VERSION}\"")
336
342
  $defs.push("-DRMAGICK_VERSION_STRING=\"RMagick #{RMAGICK_VERS}\"")
337
343
 
338
344
  $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9=1') if im_version_at_least?('6.8.9')
339
345
  $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_6_9_0=1') if im_version_at_least?('6.9.0')
346
+ $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_6_9_10=1') if im_version_at_least?('6.9.10')
340
347
  $defs.push('-DIMAGEMAGICK_7=1') if im_version_at_least?('7.0.0')
348
+ $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_7_0_8=1') if im_version_at_least?('7.0.8')
349
+ $defs.push('-DIMAGEMAGICK_GREATER_THAN_EQUAL_7_0_10=1') if im_version_at_least?('7.0.10')
341
350
 
342
351
  create_header
343
352
  end
@@ -349,14 +358,20 @@ END_MINGW
349
358
  $defs = []
350
359
 
351
360
  # Force re-compilation if the generated Makefile changed.
352
- $config_h = 'Makefile rmagick.h'
361
+ $config_h = 'Makefile'
353
362
 
354
363
  create_makefile('RMagick2')
355
364
  print_summary
356
365
  end
357
366
 
358
367
  def magick_command
359
- @magick_command ||= find_executable('magick') ? 'magick' : 'identify'
368
+ @magick_command ||= if find_executable('magick')
369
+ 'magick'
370
+ elsif find_executable('identify')
371
+ 'identify'
372
+ else
373
+ raise NotImplementedError, "no executable found for ImageMagick"
374
+ end
360
375
  end
361
376
 
362
377
  def im_version_at_least?(version)
@@ -364,17 +379,15 @@ END_MINGW
364
379
  end
365
380
 
366
381
  def print_summary
367
- summary = <<"END_SUMMARY"
368
-
369
-
370
- #{'=' * 70}
371
- #{DateTime.now.strftime('%a %d %b %y %T')}
372
- This installation of RMagick #{RMAGICK_VERS} is configured for
373
- Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
374
- #{'=' * 70}
382
+ summary = <<~"END_SUMMARY"
383
+ #{'=' * 70}
384
+ #{Time.now.strftime('%a %d %b %y %T')}
385
+ This installation of RMagick #{RMAGICK_VERS} is configured for
386
+ Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
387
+ #{'=' * 70}
375
388
 
376
389
 
377
- END_SUMMARY
390
+ END_SUMMARY
378
391
 
379
392
  Logging.message summary
380
393
  message summary