image_optim_pack 0.1.0

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 (81) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +51 -0
  4. data/.travis.yml +22 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.txt +27 -0
  7. data/Makefile +312 -0
  8. data/README.markdown +77 -0
  9. data/Vagrantfile +13 -0
  10. data/acknowledgements/7z.txt +56 -0
  11. data/acknowledgements/advancecomp.txt +674 -0
  12. data/acknowledgements/bmp2png.txt +8 -0
  13. data/acknowledgements/cexcept.txt +8 -0
  14. data/acknowledgements/gifread.txt +14 -0
  15. data/acknowledgements/gifsicle.txt +343 -0
  16. data/acknowledgements/jhead.txt +12 -0
  17. data/acknowledgements/jpegoptim.txt +339 -0
  18. data/acknowledgements/libjpeg.txt +64 -0
  19. data/acknowledgements/libpng.txt +90 -0
  20. data/acknowledgements/optipng-authors.txt +26 -0
  21. data/acknowledgements/optipng.txt +21 -0
  22. data/acknowledgements/pngcrush.txt +35 -0
  23. data/acknowledgements/pngquant.txt +56 -0
  24. data/acknowledgements/zlib.txt +34 -0
  25. data/acknowledgements/zopfli-contributors.txt +6 -0
  26. data/acknowledgements/zopfli.txt +201 -0
  27. data/image_optim_pack.gemspec +26 -0
  28. data/lib/image_optim/pack.rb +110 -0
  29. data/lib/image_optim_pack.rb +1 -0
  30. data/script/livecheck +72 -0
  31. data/script/run +26 -0
  32. data/script/update_versions +17 -0
  33. data/script/vm_init +30 -0
  34. data/spec/image_optim/pack_spec.rb +114 -0
  35. data/spec/image_optim_spec.rb +109 -0
  36. data/spec/spec_helper.rb +0 -0
  37. data/vendor/darwin/i386/advpng +0 -0
  38. data/vendor/darwin/i386/gifsicle +0 -0
  39. data/vendor/darwin/i386/jhead +0 -0
  40. data/vendor/darwin/i386/jpegoptim +0 -0
  41. data/vendor/darwin/i386/jpegtran +0 -0
  42. data/vendor/darwin/i386/libjpeg.dylib +0 -0
  43. data/vendor/darwin/i386/libpng.dylib +0 -0
  44. data/vendor/darwin/i386/libz.dylib +0 -0
  45. data/vendor/darwin/i386/optipng +0 -0
  46. data/vendor/darwin/i386/pngcrush +0 -0
  47. data/vendor/darwin/i386/pngquant +0 -0
  48. data/vendor/darwin/x86_64/advpng +0 -0
  49. data/vendor/darwin/x86_64/gifsicle +0 -0
  50. data/vendor/darwin/x86_64/jhead +0 -0
  51. data/vendor/darwin/x86_64/jpegoptim +0 -0
  52. data/vendor/darwin/x86_64/jpegtran +0 -0
  53. data/vendor/darwin/x86_64/libjpeg.dylib +0 -0
  54. data/vendor/darwin/x86_64/libpng.dylib +0 -0
  55. data/vendor/darwin/x86_64/libz.dylib +0 -0
  56. data/vendor/darwin/x86_64/optipng +0 -0
  57. data/vendor/darwin/x86_64/pngcrush +0 -0
  58. data/vendor/darwin/x86_64/pngquant +0 -0
  59. data/vendor/linux/i686/advpng +0 -0
  60. data/vendor/linux/i686/gifsicle +0 -0
  61. data/vendor/linux/i686/jhead +0 -0
  62. data/vendor/linux/i686/jpegoptim +0 -0
  63. data/vendor/linux/i686/jpegtran +0 -0
  64. data/vendor/linux/i686/libjpeg.so +0 -0
  65. data/vendor/linux/i686/libpng.so +0 -0
  66. data/vendor/linux/i686/libz.so +0 -0
  67. data/vendor/linux/i686/optipng +0 -0
  68. data/vendor/linux/i686/pngcrush +0 -0
  69. data/vendor/linux/i686/pngquant +0 -0
  70. data/vendor/linux/x86_64/advpng +0 -0
  71. data/vendor/linux/x86_64/gifsicle +0 -0
  72. data/vendor/linux/x86_64/jhead +0 -0
  73. data/vendor/linux/x86_64/jpegoptim +0 -0
  74. data/vendor/linux/x86_64/jpegtran +0 -0
  75. data/vendor/linux/x86_64/libjpeg.so +0 -0
  76. data/vendor/linux/x86_64/libpng.so +0 -0
  77. data/vendor/linux/x86_64/libz.so +0 -0
  78. data/vendor/linux/x86_64/optipng +0 -0
  79. data/vendor/linux/x86_64/pngcrush +0 -0
  80. data/vendor/linux/x86_64/pngquant +0 -0
  81. metadata +196 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWEzODQ5MDViOTM0ZWU4MTgwY2EwYWJiMGMwYjg3OTZiZGEyZmI3OQ==
5
+ data.tar.gz: !binary |-
6
+ NTJhOGQyMWMwNGM4ODYwYTcxNjNiOGVhNzdjNzQ4NDdmMmJmYjljZg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZmYyYWZlYzRjNzdiZmM5MjNmOTIyMDkzMzc4ZWJlNmI2NDQ1NTdhOTE1OWNl
10
+ M2U5NDlmYWEwM2YyYTIzNDVkYmU3ODhjMjMwZWUwM2MzYWUwYTM4MGVhY2I0
11
+ Nzc2NGFjY2Y4ZWU4ZmQwMDllZDYwODY5YjgwZDQ4OTAzZTE1YWQ=
12
+ data.tar.gz: !binary |-
13
+ MmZlMWU0MDFhZWRiMTkwOTY3MjA0YmE3MTVjYzIzMTM4N2NiNDM5YjJhY2Nh
14
+ YzE1OTFlMjU0NjA1ZWI3OWEzYzc3ZjA4NzVjMzk1M2QyOGIzNmE2ZGFiYTlm
15
+ OTgxNjU0OGYwZGI0Y2ZjNzQ0MmUxZWQwZDQ0MWM0Yjc0Y2ViMjA=
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ /build/
2
+ /download/
3
+ /.vagrant/
4
+
5
+ /Gemfile.lock
6
+ /*.gem
7
+ /.bundle
data/.rubocop.yml ADDED
@@ -0,0 +1,51 @@
1
+ AllCops:
2
+ Exclude:
3
+ - '*.gemspec'
4
+ - Vagrantfile
5
+
6
+ Lint/EndAlignment:
7
+ AlignWith: variable
8
+
9
+ Metrics/MethodLength:
10
+ Max: 15
11
+
12
+ Style/AccessModifierIndentation:
13
+ EnforcedStyle: outdent
14
+
15
+ Style/CaseIndentation:
16
+ IndentWhenRelativeTo: end
17
+
18
+ Style/DotPosition:
19
+ EnforcedStyle: trailing
20
+
21
+ Style/DoubleNegation:
22
+ Enabled: false
23
+
24
+ Style/Encoding:
25
+ EnforcedStyle: when_needed
26
+
27
+ Style/HashSyntax:
28
+ EnforcedStyle: hash_rockets
29
+
30
+ Style/IfUnlessModifier:
31
+ MaxLineLength: 40
32
+
33
+ Style/IndentHash:
34
+ EnforcedStyle: consistent
35
+
36
+ Style/PercentLiteralDelimiters:
37
+ PreferredDelimiters:
38
+ '%w': '[]'
39
+ '%W': '[]'
40
+
41
+ Style/Semicolon:
42
+ AllowAsExpressionSeparator: true
43
+
44
+ Style/SpaceBeforeBlockBraces:
45
+ EnforcedStyle: no_space
46
+
47
+ Style/SpaceInsideHashLiteralBraces:
48
+ EnforcedStyle: no_space
49
+
50
+ Style/TrailingComma:
51
+ EnforcedStyleForMultiline: comma
data/.travis.yml ADDED
@@ -0,0 +1,22 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - 2.1.0
8
+ - ruby-head
9
+ - jruby-18mode
10
+ - jruby-19mode
11
+ - jruby-head
12
+ - ree
13
+ script:
14
+ - make test
15
+ - bundle exec image_optim --info
16
+ - bundle exec rspec
17
+ - '! bundle show rubocop || bundle exec rubocop' # run rubocop only if bundled
18
+ matrix:
19
+ fast_finish: true
20
+ allow_failures:
21
+ - rvm: ruby-head
22
+ - rvm: jruby-head
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,27 @@
1
+ Copyright (c) 2014 Ivan Kuchin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ ======================================================================
23
+
24
+ All binaries and libraries in vendor directory are written by
25
+ different authors. References can be found in README.markdown.
26
+ COPYRIGHTS, DISCLAIMERS, LICENSES and NOTES can be found in
27
+ acknowledgements directory.
data/Makefile ADDED
@@ -0,0 +1,312 @@
1
+ run : all
2
+
3
+ # ====== VERSIONS ======
4
+
5
+ ADVANCECOMP_VER := 1.19
6
+ GIFSICLE_VER := 1.86
7
+ JHEAD_VER := 2.97
8
+ JPEGOPTIM_VER := 1.4.1
9
+ LIBJPEG_VER := 9a
10
+ LIBPNG_VER := 1.6.14
11
+ LIBZ_VER := 1.2.8
12
+ OPTIPNG_VER := 0.7.5
13
+ PNGCRUSH_VER := 1.7.78
14
+ PNGQUANT_VER := 2.3.1
15
+
16
+ # ====== CONSTANTS ======
17
+
18
+ OS := $(shell uname -s | tr A-Z a-z)
19
+ ARCH := $(shell uname -m)
20
+
21
+ IS_DARWIN := $(findstring darwin,$(OS))
22
+ DLEXT := $(if $(IS_DARWIN),.dylib,.so)
23
+
24
+ DL_DIR := $(CURDIR)/download
25
+ BUILD_ROOT_DIR := $(CURDIR)/build
26
+ BUILD_DIR := $(BUILD_ROOT_DIR)/$(OS)/$(ARCH)
27
+ OUTPUT_ROOT_DIR := $(CURDIR)/vendor
28
+ OUTPUT_DIR := $(OUTPUT_ROOT_DIR)/$(OS)/$(ARCH)
29
+
30
+ # ====== HELPERS ======
31
+
32
+ downcase = $(shell echo $1 | tr A-Z a-z)
33
+
34
+ mkpath := mkdir -p
35
+ ln_s := ln -sf
36
+
37
+ # lock using %.lock dir, download to %.tmp rename to %, remove %.lock
38
+ define download
39
+ while ! mkdir $2.lock 2> /dev/null; do sleep 1; done
40
+ wget -q -O $2.tmp $1
41
+ mv $2.tmp $2
42
+ rm -r $2.lock
43
+ endef
44
+
45
+ # ====== ARCHIVES ======
46
+
47
+ $(shell $(mkpath) $(DL_DIR)) # just create dl dir
48
+
49
+ ARCHIVES :=
50
+
51
+ # $1 - name of archive
52
+ # $2 - url of archive with [VER] for replace with version
53
+ # $3 - optional addition to version string
54
+ define archive
55
+ $1_URL := $(subst [VER],$($1_VER)$(strip $3),$(strip $2))
56
+ $1_DIR := $(BUILD_DIR)/$(call downcase,$1)
57
+ $1_TGZ := $(DL_DIR)/$(call downcase,$1)-$($1_VER)$(strip $3).tar.gz
58
+ ARCHIVES += $1
59
+ # download archive from url
60
+ $$($1_TGZ) :; $$(call download,$$($1_URL),$$@)
61
+ livecheck-$(call downcase,$1) :; @script/livecheck $(call downcase,$1) $($1_VER)
62
+ endef
63
+
64
+ $(eval $(call archive,ADVANCECOMP, http://prdownloads.sourceforge.net/advancemame/advancecomp-[VER].tar.gz?download))
65
+ $(eval $(call archive,GIFSICLE, http://www.lcdf.org/gifsicle/gifsicle-[VER].tar.gz))
66
+ $(eval $(call archive,JHEAD, http://www.sentex.net/~mwandel/jhead/jhead-[VER].tar.gz))
67
+ $(eval $(call archive,JPEGOPTIM, http://www.kokkonen.net/tjko/src/jpegoptim-[VER].tar.gz))
68
+ $(eval $(call archive,LIBJPEG, http://www.ijg.org/files/jpegsrc.v[VER].tar.gz))
69
+ $(eval $(call archive,LIBPNG, http://prdownloads.sourceforge.net/libpng/libpng-[VER].tar.gz?download))
70
+ $(eval $(call archive,LIBZ, http://prdownloads.sourceforge.net/libpng/zlib-[VER].tar.gz?download))
71
+ $(eval $(call archive,OPTIPNG, http://prdownloads.sourceforge.net/optipng/optipng-[VER].tar.gz?download))
72
+ $(eval $(call archive,PNGCRUSH, http://prdownloads.sourceforge.net/pmt/pngcrush-[VER].tar.gz?download))
73
+ $(eval $(call archive,PNGQUANT, https://github.com/pornel/pngquant/archive/[VER].tar.gz))
74
+
75
+ # ====== PRODUCTS ======
76
+
77
+ $(shell $(mkpath) $(OUTPUT_DIR)) # just create output dir
78
+
79
+ PRODUCTS :=
80
+
81
+ # $1 - product name
82
+ # $2 - archive name ($1 if empty)
83
+ # $3 - basename ($1 if empty)
84
+ define target
85
+ $1_BASENAME := $(or $3,$(call downcase,$1))
86
+ $1_DIR := $($(or $2,$1)_DIR)
87
+ $1_TGZ := $($(or $2,$1)_TGZ)
88
+ $1_TARGET := $$($1_DIR)/$$($1_BASENAME)
89
+ PRODUCTS += $1
90
+ # first dependency on archive
91
+ $$($1_TARGET) $$($1_DIR)/__$$(notdir $$($1_TGZ))__ : $$($1_TGZ)
92
+ # second dependency on check file
93
+ $$($1_TARGET) : $$($1_DIR)/__$$(notdir $$($1_TGZ))__
94
+ # copy product to output dir
95
+ $$(OUTPUT_DIR)/$$($1_BASENAME) : $$($1_TARGET)
96
+ strip $$< -Sx -o $$@
97
+ # short name target
98
+ $(call downcase,$1) : | $$(OUTPUT_DIR)/$$($1_BASENAME)
99
+ endef
100
+
101
+ $(eval $(call target,ADVPNG,ADVANCECOMP))
102
+ $(eval $(call target,GIFSICLE))
103
+ $(eval $(call target,JHEAD))
104
+ $(eval $(call target,JPEGOPTIM))
105
+ $(eval $(call target,JPEGTRAN,LIBJPEG))
106
+ $(eval $(call target,LIBJPEG,,libjpeg$(DLEXT)))
107
+ $(eval $(call target,LIBPNG,,libpng$(DLEXT)))
108
+ $(eval $(call target,LIBZ,,libz$(DLEXT)))
109
+ $(eval $(call target,OPTIPNG))
110
+ $(eval $(call target,PNGCRUSH))
111
+ $(eval $(call target,PNGQUANT))
112
+
113
+ # ====== TARGETS ======
114
+
115
+ all : $(call downcase,$(PRODUCTS))
116
+ $(MAKE) test
117
+
118
+ download : $(foreach archive,$(ARCHIVES),$($(archive)_TGZ))
119
+ download-tidy-up :
120
+ rm -f $(filter-out $(foreach archive,$(ARCHIVES),$($(archive)_TGZ)),$(wildcard $(DL_DIR)/*.*))
121
+
122
+ build : $(foreach product,$(PRODUCTS),$($(product)_TARGET))
123
+
124
+ define check_bin
125
+ @test -f $(OUTPUT_DIR)/$1 || (echo "no $1"; false)
126
+ @# if bin exists check architecture
127
+ @test ! -f $(OUTPUT_DIR)/$1 || \
128
+ file -b $(OUTPUT_DIR)/$1 | grep -q '$(ARCH_STRING)' || \
129
+ (echo "Expected $(ARCH_STRING), got $$(file -b $(OUTPUT_DIR)/$1)"; false)
130
+ @# if bin exists check and output version
131
+ @test ! -f $(OUTPUT_DIR)/$1 || \
132
+ $(OUTPUT_DIR)/$1 $2 | fgrep --color $3 || \
133
+ (echo "Expected $3, got $$($(OUTPUT_DIR)/$1 $2)"; false)
134
+ endef
135
+
136
+ ifdef IS_DARWIN
137
+ test : ARCH_STRING := $(ARCH)
138
+ else ifeq (i686,$(ARCH))
139
+ test : ARCH_STRING := Intel 80386
140
+ else ifeq (x86_64,$(ARCH))
141
+ test : ARCH_STRING := x86-64
142
+ endif
143
+ test :
144
+ $(if $(ARCH_STRING),,@echo Detecting 'ARCH $(ARCH) for OS $(OS) undefined'; false)
145
+ $(call check_bin,advpng,--version 2>&1,$(ADVANCECOMP_VER))
146
+ $(call check_bin,gifsicle,--version,$(GIFSICLE_VER))
147
+ $(call check_bin,jhead,-V,$(JHEAD_VER))
148
+ $(call check_bin,jpegoptim,--version,$(JPEGOPTIM_VER))
149
+ $(call check_bin,jpegtran,-v - 2>&1,$(LIBJPEG_VER))
150
+ $(call check_bin,optipng,--version,$(OPTIPNG_VER))
151
+ $(call check_bin,pngcrush,-version 2>&1,$(PNGCRUSH_VER))
152
+ $(call check_bin,pngquant,--help,$(PNGQUANT_VER))
153
+
154
+ livecheck : $(foreach archive,$(ARCHIVES),livecheck-$(call downcase,$(archive)))
155
+
156
+ update-versions :
157
+ cat Makefile | script/update_versions > Makefile.tmp
158
+ mv Makefile.tmp Makefile
159
+
160
+ # ====== CLEAN ======
161
+
162
+ clean :
163
+ rm -rf $(BUILD_DIR)
164
+ rm -rf $(OUTPUT_DIR)
165
+
166
+ clean-all :
167
+ rm -rf $(BUILD_ROOT_DIR)
168
+ rm -rf $(OUTPUT_ROOT_DIR)
169
+
170
+ clobber : clean-all
171
+ rm -rf $(DL_DIR)
172
+
173
+ # ====== BUILDING ======
174
+
175
+ # $1 - name of product
176
+ # $2 - list of dependency products
177
+ define depend
178
+ # depend this product on every specified product
179
+ $$($1_TARGET) : $(foreach dep,$2,$$($(dep)_TARGET))
180
+ # depend output of this product on output of every specified product
181
+ $$(OUTPUT_DIR)/$$($1_BASENAME) : $(foreach dep,$2,$$(OUTPUT_DIR)/$$($(dep)_BASENAME))
182
+ # add dependent product dir to CPATH, LIBRARY_PATH and PKG_CONFIG_PATH
183
+ $($1_TARGET) : export CPATH := $(subst $(eval) ,:,$(foreach dep,$2,$$($(dep)_DIR)))
184
+ $($1_TARGET) : export LIBRARY_PATH := $$(CPATH)
185
+ $($1_TARGET) : export PKG_CONFIG_PATH := $$(CPATH)
186
+ endef
187
+
188
+ define clean_untar
189
+ rm -rf $(@D)
190
+ $(mkpath) $(@D)
191
+ tar -C $(@D) --strip-components=1 -m -xzf $<
192
+ touch $(@D)/__$(notdir $<)__
193
+ endef
194
+
195
+ pkgconfig_pwd = perl -pi -e 's/(?<=dir=).*/$$ENV{PWD}/'
196
+
197
+ libtool_target_soname = cd $(@D) && perl -pi -e 's/(?<=soname_spec=)".*"/"$(@F)"/' -- libtool
198
+
199
+ chrpath_origin = $(if $(IS_DARWIN),,chrpath -r '$$ORIGIN' $1)
200
+
201
+ XORIGIN := -Wl,-rpath,XORIGIN
202
+ XORIGIN := $(if $(IS_DARWIN),,$(XORIGIN))
203
+
204
+ export CC = gcc
205
+ export CXX = g++
206
+
207
+ GCC_FLAGS := -O3
208
+ ifdef IS_DARWIN
209
+ GCC_FLAGS += -arch $(ARCH)
210
+ else
211
+ GCC_FLAGS += -s
212
+ endif
213
+ export CFLAGS := $(GCC_FLAGS)
214
+ export CXXFLAGS := $(GCC_FLAGS)
215
+ export CPPFLAGS := $(GCC_FLAGS)
216
+ export LDFLAGS := $(GCC_FLAGS)
217
+
218
+ ifdef IS_DARWIN
219
+ export MACOSX_DEPLOYMENT_TARGET=10.6
220
+ endif
221
+
222
+ ## advpng
223
+ $(eval $(call depend,ADVPNG,LIBZ))
224
+ $(ADVPNG_TARGET) :; $(clean_untar)
225
+ cd $(@D) && ./configure LDFLAGS="$(XORIGIN)"
226
+ cd $(@D) && $(MAKE) advpng
227
+ $(call chrpath_origin,$@)
228
+
229
+ ## gifsicle
230
+ $(GIFSICLE_TARGET) :; $(clean_untar)
231
+ cd $(@D) && ./configure
232
+ cd $(@D) && $(MAKE) gifsicle
233
+ cd $(@D) && $(ln_s) src/gifsicle .
234
+
235
+ ## jhead
236
+ $(JHEAD_TARGET) :; $(clean_untar)
237
+ cd $(@D) && $(MAKE) jhead CC="$(CC) $(GCC_FLAGS)"
238
+
239
+ ## jpegoptim
240
+ $(eval $(call depend,JPEGOPTIM,LIBJPEG))
241
+ $(JPEGOPTIM_TARGET) :; $(clean_untar)
242
+ cd $(@D) && ./configure LDFLAGS="$(XORIGIN)"
243
+ cd $(@D) && $(MAKE) jpegoptim
244
+ $(call chrpath_origin,$@)
245
+
246
+ ## jpegtran
247
+ $(eval $(call depend,JPEGTRAN,LIBJPEG))
248
+ $(JPEGTRAN_TARGET) :; # built in $(LIBJPEG_TARGET)
249
+
250
+ ## libjpeg
251
+ $(LIBJPEG_TARGET) :; $(clean_untar)
252
+ cd $(@D) && ./configure CC="$(CC) $(GCC_FLAGS)"
253
+ $(libtool_target_soname)
254
+ ifdef IS_DARWIN
255
+ cd $(@D) && $(MAKE) libjpeg.la LDFLAGS="-Wl,-install_name,@loader_path/$(@F)"
256
+ else
257
+ cd $(@D) && $(MAKE) libjpeg.la
258
+ endif
259
+ cd $(@D) && $(MAKE) jpegtran LDFLAGS="$(XORIGIN)"
260
+ cd $(@D) && $(ln_s) .libs/libjpeg$(DLEXT) .libs/jpegtran .
261
+ $(call chrpath_origin,$(JPEGTRAN_TARGET))
262
+
263
+ ## libpng
264
+ $(eval $(call depend,LIBPNG,LIBZ))
265
+ $(LIBPNG_TARGET) :; $(clean_untar)
266
+ cd $(@D) && ./configure CC="$(CC) $(GCC_FLAGS)"
267
+ cd $(@D) && $(pkgconfig_pwd) -- *.pc
268
+ cd $(@D) && perl -pi -e 's/(?<=lpng)\d+//g' -- *.pc # %MAJOR%%MINOR% suffix
269
+ $(libtool_target_soname)
270
+ ifdef IS_DARWIN
271
+ cd $(@D) && $(MAKE) libpng16.la LDFLAGS="-Wl,-install_name,@loader_path/$(@F)"
272
+ else
273
+ cd $(@D) && $(MAKE) libpng16.la LDFLAGS="$(XORIGIN)"
274
+ endif
275
+ cd $(@D) && $(ln_s) .libs/libpng16$(DLEXT) libpng$(DLEXT)
276
+ $(call chrpath_origin,$@)
277
+
278
+ ## libz
279
+ ifdef IS_DARWIN
280
+ $(LIBZ_TARGET) : export LDSHARED = $(CC) -dynamiclib -install_name @loader_path/$(@F) -compatibility_version 1 -current_version $(LIBZ_VER)
281
+ else
282
+ $(LIBZ_TARGET) : export LDSHARED = $(CC) -shared -Wl,-soname,$(@F),--version-script,zlib.map
283
+ endif
284
+ $(LIBZ_TARGET) :; $(clean_untar)
285
+ cd $(@D) && ./configure
286
+ cd $(@D) && $(pkgconfig_pwd) -- *.pc
287
+ cd $(@D) && $(MAKE) placebo
288
+
289
+ ## optipng
290
+ $(eval $(call depend,OPTIPNG,LIBPNG LIBZ))
291
+ $(OPTIPNG_TARGET) :; $(clean_untar)
292
+ cd $(@D) && ./configure -with-system-libs
293
+ cd $(@D) && $(MAKE) all LDFLAGS="$(XORIGIN) $(GCC_FLAGS)"
294
+ cd $(@D) && $(ln_s) src/optipng/optipng .
295
+ $(call chrpath_origin,$@)
296
+
297
+ ## pngcrush
298
+ $(eval $(call depend,PNGCRUSH,LIBPNG LIBZ))
299
+ $(PNGCRUSH_TARGET) :; $(clean_untar)
300
+ cd $(@D) && rm -f png.h pngconf.h
301
+ cd $(@D) && $(MAKE) -f Makefile-nolib pngcrush \
302
+ LIBS="-lpng -lz -lm" \
303
+ CFLAGS="$(GCC_FLAGS)" \
304
+ LDFLAGS="$(XORIGIN) $(GCC_FLAGS)"
305
+ $(call chrpath_origin,$@)
306
+
307
+ ## pngquant
308
+ $(eval $(call depend,PNGQUANT,LIBPNG LIBZ))
309
+ $(PNGQUANT_TARGET) :; $(clean_untar)
310
+ cd $(@D) && ./configure --without-cocoa --extra-ldflags="$(XORIGIN)"
311
+ cd $(@D) && $(MAKE) pngquant
312
+ $(call chrpath_origin,$@)
data/README.markdown ADDED
@@ -0,0 +1,77 @@
1
+ [![Gem Version](https://img.shields.io/gem/v/image_optim_pack.svg?style=flat)](https://rubygems.org/gems/image_optim_pack)
2
+ [![Build Status](https://img.shields.io/travis/toy/image_optim_pack/master.svg?style=flat)](https://travis-ci.org/toy/image_optim_pack)
3
+ [![Code Climate](https://img.shields.io/codeclimate/github/toy/image_optim_pack.svg?style=flat)](https://codeclimate.com/github/toy/image_optim_pack)
4
+ [![Dependency Status](https://img.shields.io/gemnasium/toy/image_optim_pack.svg?style=flat)](https://gemnasium.com/toy/image_optim_pack)
5
+ [![Inch CI](http://inch-ci.org/github/toy/image_optim_pack.svg?branch=master&style=flat)](http://inch-ci.org/github/toy/image_optim_pack)
6
+
7
+ # image\_optim\_pack
8
+
9
+ Precompiled binaries for [`image_optim`](https://github.com/toy/image_optim).
10
+
11
+ Contains binaries for Mac OS X (>= 10.6, i386 and x86\_64) and Linux (i686 and x86\_64).
12
+
13
+ ## Binaries and libraries
14
+
15
+ * [advpng](http://advancemame.sourceforge.net/doc-advpng.html) by Andrea Mazzoleni and Filipe Estima ([GNU GPLv3](acknowledgements/advancecomp.txt))
16
+ * contains parts of [7z](http://7-zip.org) by Igor Pavlov with modifications by Andrea Mazzoleni ([license](acknowledgements/7z.txt))
17
+ * and [zopfli](https://code.google.com/p/zopfli/) by Lode Vandevenne and Jyrki ([license](acknowledgements/zopfli.txt), [contributors](acknowledgements/zopfli-contributors.txt))
18
+ * [gifsicle](http://lcdf.org/gifsicle/) by Eddie Kohler ([GNU GPLv2](acknowledgements/gifsicle.txt))
19
+ * [jhead](http://sentex.net/~mwandel/jhead/) by Matthias Wandel ([public domain](acknowledgements/jhead.txt))
20
+ * [jpegoptim](http://www.kokkonen.net/tjko/projects.html) by Timo Kokkonen ([GNU GPLv2](acknowledgements/jpegoptim.txt) or later)
21
+ * [libjpeg and jpegtran](http://ijg.org/) by the Independent JPEG Group ([license](acknowledgements/libjpeg.txt))
22
+ * [libpng](http://libpng.org/pub/png/) by Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson and others ([license](acknowledgements/libpng.txt))
23
+ * [optipng](http://optipng.sourceforge.net/) by Cosmin Truta ([license](acknowledgements/optipng.txt), [authors](acknowledgements/optipng-authors.txt))
24
+ * contains code based in part on the work of Miyasaka Masaru for BMP support ([license](acknowledgements/bmp2png.txt))
25
+ * and David Koblas for GIF support ([license](acknowledgements/gifread.txt))
26
+ * [pngcrush](http://pmt.sourceforge.net/pngcrush/) by Glenn Randers-Pehrson, portions by Greg Roelofs ([license](acknowledgements/pngcrush.txt))
27
+ * contains [cexcept](http://www.nicemice.net/cexcept/) interface by Adam M. Costello and Cosmin Truta ([license](acknowledgements/cexcept.txt))
28
+ * [pngquant](http://pngquant.org/) by Kornel Lesiński based on code by Greg Roelofs and Jef Poskanzer after an idea by Stefan Schneider ([license](acknowledgements/pngquant.txt))
29
+ * [zlib](http://zlib.net/) by Jean-Loup Gailly and Mark Adler ([license](acknowledgements/zlib.txt))
30
+
31
+ You can download all source code using gnu make download target:
32
+
33
+ ```sh
34
+ make download
35
+ ```
36
+
37
+ ## Installation
38
+
39
+ ```sh
40
+ gem install image_optim image_optim_pack
41
+ ```
42
+
43
+ Or add to your `Gemfile`:
44
+
45
+ ```ruby
46
+ gem 'image_optim'
47
+ gem 'image_optim_pack'
48
+ ```
49
+
50
+ ## Development
51
+
52
+ Mac OS X binaries and libraries are built on host, others using vagrant.
53
+
54
+ ```sh
55
+ script/run # Build and test all for all oses and architectures
56
+ script/run NO_HALT=1 # Don't halt VMs after building
57
+
58
+ make all # Build and copy all to output directory for current os/arch, then test
59
+ make run # => all
60
+
61
+ make test # Test bins for current os/arch
62
+ make test -i # Continue if one of bins fail
63
+
64
+ make download # Download archives
65
+ make build # Build all without copying to output directory
66
+
67
+ make livecheck # Check versions
68
+ make update-versions # Update versions in Makefile
69
+
70
+ make clean # Remove build and output directories for current os/arch
71
+ make clean-all # Remove build root and output root directories
72
+ make clobber # `claen-all` and remove download directory
73
+ ```
74
+
75
+ ## Copyright
76
+
77
+ Copyright (c) 2014 Ivan Kuchin. See [LICENSE.txt](LICENSE.txt) for details.