ncurses: fix build error in libncursesw
[openwrt.git] / package / compcache / patches / 000-provide_lzo_kmod.patch
1 --- a/Makefile
2 +++ b/Makefile
3 @@ -1,14 +1,17 @@
4  KERNEL_BUILD_PATH ?= "/lib/modules/$(shell uname -r)/build"
5  
6  XVM = sub-projects/allocators/xvmalloc-kmod
7 +LZO = sub-projects/compression/lzo-kmod
8  EXTRA_CFLAGS   :=      -DCONFIG_RAMZSWAP_STATS         \
9                         -Wall
10  
11 -obj-m          +=      ramzswap.o
12 +obj-m          +=      ramzswap.o $(LZO)/lzo1x.o
13  ramzswap-objs  :=      ramzswap_drv.o $(XVM)/xvmalloc.o
14 +                       
15  
16  all:
17         make -C $(KERNEL_BUILD_PATH) M=$(PWD) modules
18 +       make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) modules
19         make -C sub-projects/rzscontrol
20  
21  doc:
22 @@ -16,5 +19,6 @@ doc:
23  
24  clean:
25         make -C $(KERNEL_BUILD_PATH) M=$(PWD) clean
26 +       make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) clean
27         make -C sub-projects/rzscontrol clean
28         @rm -rf *.ko
29 --- a/ramzswap_drv.c
30 +++ b/ramzswap_drv.c
31 @@ -23,13 +23,13 @@
32  #include <linux/device.h>
33  #include <linux/genhd.h>
34  #include <linux/highmem.h>
35 -#include <linux/lzo.h>
36  #include <linux/string.h>
37  #include <linux/swap.h>
38  #include <linux/swapops.h>
39  #include <linux/vmalloc.h>
40  #include <linux/version.h>
41  
42 +#include "lzo.h"
43  #include "compat.h"
44  #include "ramzswap_drv.h"
45  
46 --- /dev/null
47 +++ b/sub-projects/compression/lzo-kmod/lzo1x.c
48 @@ -0,0 +1,7 @@
49 +#include <linux/module.h>
50 +
51 +#include "lzo1x_compress.c"
52 +#include "lzo1x_decompress.c"
53 +
54 +MODULE_LICENSE("GPL");
55 +MODULE_DESCRIPTION("LZO1X Lib");
56 --- /dev/null
57 +++ b/sub-projects/compression/lzo-kmod/lzo1x_compress.c
58 @@ -0,0 +1,227 @@
59 +/*
60 + *  LZO1X Compressor from MiniLZO
61 + *
62 + *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
63 + *
64 + *  The full LZO package can be found at:
65 + *  http://www.oberhumer.com/opensource/lzo/
66 + *
67 + *  Changed for kernel use by:
68 + *  Nitin Gupta <nitingupta910@gmail.com>
69 + *  Richard Purdie <rpurdie@openedhand.com>
70 + */
71 +
72 +#include <linux/module.h>
73 +#include <linux/kernel.h>
74 +#include <asm/unaligned.h>
75 +
76 +#include "lzodefs.h"
77 +#include "lzo.h"
78 +
79 +static noinline size_t
80 +_lzo1x_1_do_compress(const unsigned char *in, size_t in_len,
81 +               unsigned char *out, size_t *out_len, void *wrkmem)
82 +{
83 +       const unsigned char * const in_end = in + in_len;
84 +       const unsigned char * const ip_end = in + in_len - M2_MAX_LEN - 5;
85 +       const unsigned char ** const dict = wrkmem;
86 +       const unsigned char *ip = in, *ii = ip;
87 +       const unsigned char *end, *m, *m_pos;
88 +       size_t m_off, m_len, dindex;
89 +       unsigned char *op = out;
90 +
91 +       ip += 4;
92 +
93 +       for (;;) {
94 +               dindex = ((size_t)(0x21 * DX3(ip, 5, 5, 6)) >> 5) & D_MASK;
95 +               m_pos = dict[dindex];
96 +
97 +               if (m_pos < in)
98 +                       goto literal;
99 +
100 +               if (ip == m_pos || ((size_t)(ip - m_pos) > M4_MAX_OFFSET))
101 +                       goto literal;
102 +
103 +               m_off = ip - m_pos;
104 +               if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
105 +                       goto try_match;
106 +
107 +               dindex = (dindex & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f);
108 +               m_pos = dict[dindex];
109 +
110 +               if (m_pos < in)
111 +                       goto literal;
112 +
113 +               if (ip == m_pos || ((size_t)(ip - m_pos) > M4_MAX_OFFSET))
114 +                       goto literal;
115 +
116 +               m_off = ip - m_pos;
117 +               if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
118 +                       goto try_match;
119 +
120 +               goto literal;
121 +
122 +try_match:
123 +               if (get_unaligned((const unsigned short *)m_pos)
124 +                               == get_unaligned((const unsigned short *)ip)) {
125 +                       if (likely(m_pos[2] == ip[2]))
126 +                                       goto match;
127 +               }
128 +
129 +literal:
130 +               dict[dindex] = ip;
131 +               ++ip;
132 +               if (unlikely(ip >= ip_end))
133 +                       break;
134 +               continue;
135 +
136 +match:
137 +               dict[dindex] = ip;
138 +               if (ip != ii) {
139 +                       size_t t = ip - ii;
140 +
141 +                       if (t <= 3) {
142 +                               op[-2] |= t;
143 +                       } else if (t <= 18) {
144 +                               *op++ = (t - 3);
145 +                       } else {
146 +                               size_t tt = t - 18;
147 +
148 +                               *op++ = 0;
149 +                               while (tt > 255) {
150 +                                       tt -= 255;
151 +                                       *op++ = 0;
152 +                               }
153 +                               *op++ = tt;
154 +                       }
155 +                       do {
156 +                               *op++ = *ii++;
157 +                       } while (--t > 0);
158 +               }
159 +
160 +               ip += 3;
161 +               if (m_pos[3] != *ip++ || m_pos[4] != *ip++
162 +                               || m_pos[5] != *ip++ || m_pos[6] != *ip++
163 +                               || m_pos[7] != *ip++ || m_pos[8] != *ip++) {
164 +                       --ip;
165 +                       m_len = ip - ii;
166 +
167 +                       if (m_off <= M2_MAX_OFFSET) {
168 +                               m_off -= 1;
169 +                               *op++ = (((m_len - 1) << 5)
170 +                                               | ((m_off & 7) << 2));
171 +                               *op++ = (m_off >> 3);
172 +                       } else if (m_off <= M3_MAX_OFFSET) {
173 +                               m_off -= 1;
174 +                               *op++ = (M3_MARKER | (m_len - 2));
175 +                               goto m3_m4_offset;
176 +                       } else {
177 +                               m_off -= 0x4000;
178 +
179 +                               *op++ = (M4_MARKER | ((m_off & 0x4000) >> 11)
180 +                                               | (m_len - 2));
181 +                               goto m3_m4_offset;
182 +                       }
183 +               } else {
184 +                       end = in_end;
185 +                       m = m_pos + M2_MAX_LEN + 1;
186 +
187 +                       while (ip < end && *m == *ip) {
188 +                               m++;
189 +                               ip++;
190 +                       }
191 +                       m_len = ip - ii;
192 +
193 +                       if (m_off <= M3_MAX_OFFSET) {
194 +                               m_off -= 1;
195 +                               if (m_len <= 33) {
196 +                                       *op++ = (M3_MARKER | (m_len - 2));
197 +                               } else {
198 +                                       m_len -= 33;
199 +                                       *op++ = M3_MARKER | 0;
200 +                                       goto m3_m4_len;
201 +                               }
202 +                       } else {
203 +                               m_off -= 0x4000;
204 +                               if (m_len <= M4_MAX_LEN) {
205 +                                       *op++ = (M4_MARKER
206 +                                               | ((m_off & 0x4000) >> 11)
207 +                                               | (m_len - 2));
208 +                               } else {
209 +                                       m_len -= M4_MAX_LEN;
210 +                                       *op++ = (M4_MARKER
211 +                                               | ((m_off & 0x4000) >> 11));
212 +m3_m4_len:
213 +                                       while (m_len > 255) {
214 +                                               m_len -= 255;
215 +                                               *op++ = 0;
216 +                                       }
217 +
218 +                                       *op++ = (m_len);
219 +                               }
220 +                       }
221 +m3_m4_offset:
222 +                       *op++ = ((m_off & 63) << 2);
223 +                       *op++ = (m_off >> 6);
224 +               }
225 +
226 +               ii = ip;
227 +               if (unlikely(ip >= ip_end))
228 +                       break;
229 +       }
230 +
231 +       *out_len = op - out;
232 +       return in_end - ii;
233 +}
234 +
235 +int lzo1x_1_compress(const unsigned char *in, size_t in_len, unsigned char *out,
236 +                       size_t *out_len, void *wrkmem)
237 +{
238 +       const unsigned char *ii;
239 +       unsigned char *op = out;
240 +       size_t t;
241 +
242 +       if (unlikely(in_len <= M2_MAX_LEN + 5)) {
243 +               t = in_len;
244 +       } else {
245 +               t = _lzo1x_1_do_compress(in, in_len, op, out_len, wrkmem);
246 +               op += *out_len;
247 +       }
248 +
249 +       if (t > 0) {
250 +               ii = in + in_len - t;
251 +
252 +               if (op == out && t <= 238) {
253 +                       *op++ = (17 + t);
254 +               } else if (t <= 3) {
255 +                       op[-2] |= t;
256 +               } else if (t <= 18) {
257 +                       *op++ = (t - 3);
258 +               } else {
259 +                       size_t tt = t - 18;
260 +
261 +                       *op++ = 0;
262 +                       while (tt > 255) {
263 +                               tt -= 255;
264 +                               *op++ = 0;
265 +                       }
266 +
267 +                       *op++ = tt;
268 +               }
269 +               do {
270 +                       *op++ = *ii++;
271 +               } while (--t > 0);
272 +       }
273 +
274 +       *op++ = M4_MARKER | 1;
275 +       *op++ = 0;
276 +       *op++ = 0;
277 +
278 +       *out_len = op - out;
279 +       return LZO_E_OK;
280 +}
281 +EXPORT_SYMBOL_GPL(lzo1x_1_compress);
282 +
283 +MODULE_LICENSE("GPL");
284 +MODULE_DESCRIPTION("LZO1X-1 Compressor");
285 +
286 --- /dev/null
287 +++ b/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
288 @@ -0,0 +1,255 @@
289 +/*
290 + *  LZO1X Decompressor from MiniLZO
291 + *
292 + *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
293 + *
294 + *  The full LZO package can be found at:
295 + *  http://www.oberhumer.com/opensource/lzo/
296 + *
297 + *  Changed for kernel use by:
298 + *  Nitin Gupta <nitingupta910@gmail.com>
299 + *  Richard Purdie <rpurdie@openedhand.com>
300 + */
301 +
302 +#include <linux/module.h>
303 +#include <linux/kernel.h>
304 +#include <asm/byteorder.h>
305 +#include <asm/unaligned.h>
306 +
307 +#include "lzodefs.h"
308 +#include "lzo.h"
309 +
310 +#define HAVE_IP(x, ip_end, ip) ((size_t)(ip_end - ip) < (x))
311 +#define HAVE_OP(x, op_end, op) ((size_t)(op_end - op) < (x))
312 +#define HAVE_LB(m_pos, out, op) (m_pos < out || m_pos >= op)
313 +
314 +#define COPY4(dst, src)        \
315 +               put_unaligned(get_unaligned((const u32 *)(src)), (u32 *)(dst))
316 +
317 +int lzo1x_decompress_safe(const unsigned char *in, size_t in_len,
318 +                       unsigned char *out, size_t *out_len)
319 +{
320 +       const unsigned char * const ip_end = in + in_len;
321 +       unsigned char * const op_end = out + *out_len;
322 +       const unsigned char *ip = in, *m_pos;
323 +       unsigned char *op = out;
324 +       size_t t;
325 +
326 +       *out_len = 0;
327 +
328 +       if (*ip > 17) {
329 +               t = *ip++ - 17;
330 +               if (t < 4)
331 +                       goto match_next;
332 +               if (HAVE_OP(t, op_end, op))
333 +                       goto output_overrun;
334 +               if (HAVE_IP(t + 1, ip_end, ip))
335 +                       goto input_overrun;
336 +               do {
337 +                       *op++ = *ip++;
338 +               } while (--t > 0);
339 +               goto first_literal_run;
340 +       }
341 +
342 +       while ((ip < ip_end)) {
343 +               t = *ip++;
344 +               if (t >= 16)
345 +                       goto match;
346 +               if (t == 0) {
347 +                       if (HAVE_IP(1, ip_end, ip))
348 +                               goto input_overrun;
349 +                       while (*ip == 0) {
350 +                               t += 255;
351 +                               ip++;
352 +                               if (HAVE_IP(1, ip_end, ip))
353 +                                       goto input_overrun;
354 +                       }
355 +                       t += 15 + *ip++;
356 +               }
357 +               if (HAVE_OP(t + 3, op_end, op))
358 +                       goto output_overrun;
359 +               if (HAVE_IP(t + 4, ip_end, ip))
360 +                       goto input_overrun;
361 +
362 +               COPY4(op, ip);
363 +               op += 4;
364 +               ip += 4;
365 +               if (--t > 0) {
366 +                       if (t >= 4) {
367 +                               do {
368 +                                       COPY4(op, ip);
369 +                                       op += 4;
370 +                                       ip += 4;
371 +                                       t -= 4;
372 +                               } while (t >= 4);
373 +                               if (t > 0) {
374 +                                       do {
375 +                                               *op++ = *ip++;
376 +                                       } while (--t > 0);
377 +                               }
378 +                       } else {
379 +                               do {
380 +                                       *op++ = *ip++;
381 +                               } while (--t > 0);
382 +                       }
383 +               }
384 +
385 +first_literal_run:
386 +               t = *ip++;
387 +               if (t >= 16)
388 +                       goto match;
389 +               m_pos = op - (1 + M2_MAX_OFFSET);
390 +               m_pos -= t >> 2;
391 +               m_pos -= *ip++ << 2;
392 +
393 +               if (HAVE_LB(m_pos, out, op))
394 +                       goto lookbehind_overrun;
395 +
396 +               if (HAVE_OP(3, op_end, op))
397 +                       goto output_overrun;
398 +               *op++ = *m_pos++;
399 +               *op++ = *m_pos++;
400 +               *op++ = *m_pos;
401 +
402 +               goto match_done;
403 +
404 +               do {
405 +match:
406 +                       if (t >= 64) {
407 +                               m_pos = op - 1;
408 +                               m_pos -= (t >> 2) & 7;
409 +                               m_pos -= *ip++ << 3;
410 +                               t = (t >> 5) - 1;
411 +                               if (HAVE_LB(m_pos, out, op))
412 +                                       goto lookbehind_overrun;
413 +                               if (HAVE_OP(t + 3 - 1, op_end, op))
414 +                                       goto output_overrun;
415 +                               goto copy_match;
416 +                       } else if (t >= 32) {
417 +                               t &= 31;
418 +                               if (t == 0) {
419 +                                       if (HAVE_IP(1, ip_end, ip))
420 +                                               goto input_overrun;
421 +                                       while (*ip == 0) {
422 +                                               t += 255;
423 +                                               ip++;
424 +                                               if (HAVE_IP(1, ip_end, ip))
425 +                                                       goto input_overrun;
426 +                                       }
427 +                                       t += 31 + *ip++;
428 +                               }
429 +                               m_pos = op - 1;
430 +                               m_pos -= le16_to_cpu(get_unaligned(
431 +                                       (const unsigned short *)ip)) >> 2;
432 +                               ip += 2;
433 +                       } else if (t >= 16) {
434 +                               m_pos = op;
435 +                               m_pos -= (t & 8) << 11;
436 +
437 +                               t &= 7;
438 +                               if (t == 0) {
439 +                                       if (HAVE_IP(1, ip_end, ip))
440 +                                               goto input_overrun;
441 +                                       while (*ip == 0) {
442 +                                               t += 255;
443 +                                               ip++;
444 +                                               if (HAVE_IP(1, ip_end, ip))
445 +                                                       goto input_overrun;
446 +                                       }
447 +                                       t += 7 + *ip++;
448 +                               }
449 +                               m_pos -= le16_to_cpu(get_unaligned(
450 +                                       (const unsigned short *)ip)) >> 2;
451 +                               ip += 2;
452 +                               if (m_pos == op)
453 +                                       goto eof_found;
454 +                               m_pos -= 0x4000;
455 +                       } else {
456 +                               m_pos = op - 1;
457 +                               m_pos -= t >> 2;
458 +                               m_pos -= *ip++ << 2;
459 +
460 +                               if (HAVE_LB(m_pos, out, op))
461 +                                       goto lookbehind_overrun;
462 +                               if (HAVE_OP(2, op_end, op))
463 +                                       goto output_overrun;
464 +
465 +                               *op++ = *m_pos++;
466 +                               *op++ = *m_pos;
467 +                               goto match_done;
468 +                       }
469 +
470 +                       if (HAVE_LB(m_pos, out, op))
471 +                               goto lookbehind_overrun;
472 +                       if (HAVE_OP(t + 3 - 1, op_end, op))
473 +                               goto output_overrun;
474 +
475 +                       if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4) {
476 +                               COPY4(op, m_pos);
477 +                               op += 4;
478 +                               m_pos += 4;
479 +                               t -= 4 - (3 - 1);
480 +                               do {
481 +                                       COPY4(op, m_pos);
482 +                                       op += 4;
483 +                                       m_pos += 4;
484 +                                       t -= 4;
485 +                               } while (t >= 4);
486 +                               if (t > 0)
487 +                                       do {
488 +                                               *op++ = *m_pos++;
489 +                                       } while (--t > 0);
490 +                       } else {
491 +copy_match:
492 +                               *op++ = *m_pos++;
493 +                               *op++ = *m_pos++;
494 +                               do {
495 +                                       *op++ = *m_pos++;
496 +                               } while (--t > 0);
497 +                       }
498 +match_done:
499 +                       t = ip[-2] & 3;
500 +                       if (t == 0)
501 +                               break;
502 +match_next:
503 +                       if (HAVE_OP(t, op_end, op))
504 +                               goto output_overrun;
505 +                       if (HAVE_IP(t + 1, ip_end, ip))
506 +                               goto input_overrun;
507 +
508 +                       *op++ = *ip++;
509 +                       if (t > 1) {
510 +                               *op++ = *ip++;
511 +                               if (t > 2)
512 +                                       *op++ = *ip++;
513 +                       }
514 +
515 +                       t = *ip++;
516 +               } while (ip < ip_end);
517 +       }
518 +
519 +       *out_len = op - out;
520 +       return LZO_E_EOF_NOT_FOUND;
521 +
522 +eof_found:
523 +       *out_len = op - out;
524 +       return (ip == ip_end ? LZO_E_OK :
525 +               (ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
526 +input_overrun:
527 +       *out_len = op - out;
528 +       return LZO_E_INPUT_OVERRUN;
529 +
530 +output_overrun:
531 +       *out_len = op - out;
532 +       return LZO_E_OUTPUT_OVERRUN;
533 +
534 +lookbehind_overrun:
535 +       *out_len = op - out;
536 +       return LZO_E_LOOKBEHIND_OVERRUN;
537 +}
538 +
539 +EXPORT_SYMBOL_GPL(lzo1x_decompress_safe);
540 +
541 +MODULE_LICENSE("GPL");
542 +MODULE_DESCRIPTION("LZO1X Decompressor");
543 +
544 --- /dev/null
545 +++ b/sub-projects/compression/lzo-kmod/lzodefs.h
546 @@ -0,0 +1,43 @@
547 +/*
548 + *  lzodefs.h -- architecture, OS and compiler specific defines
549 + *
550 + *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
551 + *
552 + *  The full LZO package can be found at:
553 + *  http://www.oberhumer.com/opensource/lzo/
554 + *
555 + *  Changed for kernel use by:
556 + *  Nitin Gupta <nitingupta910@gmail.com>
557 + *  Richard Purdie <rpurdie@openedhand.com>
558 + */
559 +
560 +#define LZO_VERSION            0x2020
561 +#define LZO_VERSION_STRING     "2.02"
562 +#define LZO_VERSION_DATE       "Oct 17 2005"
563 +
564 +#define M1_MAX_OFFSET  0x0400
565 +#define M2_MAX_OFFSET  0x0800
566 +#define M3_MAX_OFFSET  0x4000
567 +#define M4_MAX_OFFSET  0xbfff
568 +
569 +#define M1_MIN_LEN     2
570 +#define M1_MAX_LEN     2
571 +#define M2_MIN_LEN     3
572 +#define M2_MAX_LEN     8
573 +#define M3_MIN_LEN     3
574 +#define M3_MAX_LEN     33
575 +#define M4_MIN_LEN     3
576 +#define M4_MAX_LEN     9
577 +
578 +#define M1_MARKER      0
579 +#define M2_MARKER      64
580 +#define M3_MARKER      32
581 +#define M4_MARKER      16
582 +
583 +#define D_BITS         14
584 +#define D_MASK         ((1u << D_BITS) - 1)
585 +#define D_HIGH         ((D_MASK >> 1) + 1)
586 +
587 +#define DX2(p, s1, s2) (((((size_t)((p)[2]) << (s2)) ^ (p)[1]) \
588 +                                                       << (s1)) ^ (p)[0])
589 +#define DX3(p, s1, s2, s3)     ((DX2((p)+1, s2, s3) << (s1)) ^ (p)[0])
590 --- /dev/null
591 +++ b/sub-projects/compression/lzo-kmod/lzo.h
592 @@ -0,0 +1,44 @@
593 +#ifndef __LZO_H__
594 +#define __LZO_H__
595 +/*
596 + *  LZO Public Kernel Interface
597 + *  A mini subset of the LZO real-time data compression library
598 + *
599 + *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
600 + *
601 + *  The full LZO package can be found at:
602 + *  http://www.oberhumer.com/opensource/lzo/
603 + *
604 + *  Changed for kernel use by:
605 + *  Nitin Gupta <nitingupta910@gmail.com>
606 + *  Richard Purdie <rpurdie@openedhand.com>
607 + */
608 +
609 +#define LZO1X_MEM_COMPRESS     (16384 * sizeof(unsigned char *))
610 +#define LZO1X_1_MEM_COMPRESS   LZO1X_MEM_COMPRESS
611 +
612 +#define lzo1x_worst_compress(x) ((x) + ((x) / 16) + 64 + 3)
613 +
614 +/* This requires 'workmem' of size LZO1X_1_MEM_COMPRESS */
615 +int lzo1x_1_compress(const unsigned char *src, size_t src_len,
616 +                       unsigned char *dst, size_t *dst_len, void *wrkmem);
617 +
618 +/* safe decompression with overrun testing */
619 +int lzo1x_decompress_safe(const unsigned char *src, size_t src_len,
620 +                       unsigned char *dst, size_t *dst_len);
621 +
622 +/*
623 + * Return values (< 0 = Error)
624 + */
625 +#define LZO_E_OK                       0
626 +#define LZO_E_ERROR                    (-1)
627 +#define LZO_E_OUT_OF_MEMORY            (-2)
628 +#define LZO_E_NOT_COMPRESSIBLE         (-3)
629 +#define LZO_E_INPUT_OVERRUN            (-4)
630 +#define LZO_E_OUTPUT_OVERRUN           (-5)
631 +#define LZO_E_LOOKBEHIND_OVERRUN       (-6)
632 +#define LZO_E_EOF_NOT_FOUND            (-7)
633 +#define LZO_E_INPUT_NOT_CONSUMED       (-8)
634 +#define LZO_E_NOT_YET_IMPLEMENTED      (-9)
635 +
636 +#endif
637 --- /dev/null
638 +++ b/sub-projects/compression/lzo-kmod/Makefile
639 @@ -0,0 +1,8 @@
640 +obj-m += lzo1x_compress.o lzo1x_decompress.o
641 +
642 +all:
643 +       make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
644 +
645 +clean:
646 +       make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
647 +