--- a/src/compress.cpp +++ b/src/compress.cpp @@ -41,7 +41,7 @@ if (len == 0) return adler; assert(buf != NULL); -#if 0 +#if !(WITH_UCL) return adler32(adler, (const Bytef *) buf, len); // zlib #elif (WITH_UCL) return ucl_adler32(adler, (const ucl_bytep) buf, len); --- a/src/conf.h +++ b/src/conf.h @@ -179,7 +179,7 @@ # undef __unix #endif -#if !defined(WITH_UCL) +#if defined(WITH_UCL) # define WITH_UCL 1 #endif #if 0 && !defined(WITH_LZMA) @@ -645,7 +645,11 @@ }; +#if (WITH_UCL) struct ucl_compress_config_t : public REAL_ucl_compress_config_t +#else +struct ucl_compress_config_t +#endif { void reset() { memset(this, 0xff, sizeof(*this)); } }; @@ -697,7 +701,9 @@ struct ucl_compress_result_t { +#if (WITH_UCL) ucl_uint result[16]; +#endif void reset() { memset(this, 0, sizeof(*this)); } }; --- a/src/main.cpp +++ b/src/main.cpp @@ -618,7 +618,9 @@ opt->method = -1; opt->all_filters = true; opt->filter = -1; +#if (WITH_UCL) opt->crp.crp_ucl.m_size = 999999; +#endif /* fallthrough */ case 900: // --best if (!set_method(-1, 10)) @@ -709,6 +711,7 @@ opt->exact = true; break; // compression runtime parameters +#if (WITH_UCL) case 801: getoptvar(&opt->crp.crp_ucl.c_flags, 0, 3, arg); break; @@ -730,6 +733,7 @@ case 807: getoptvar(&opt->crp.crp_ucl.m_size, 10000u, 999999u, arg); break; +#endif case 811: getoptvar(&opt->crp.crp_lzma.pos_bits, arg); break; --- a/src/Makefile +++ b/src/Makefile @@ -57,7 +57,10 @@ INCLUDES += -I$(UPX_UCLDIR)/include LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext)))) endif -LIBS += -lucl -lz +ifeq ($(WITH_UCL),1) +LIBS += -lucl +endif +LIBS += -lz # you should set envvar UPX_LZMADIR to point to your unpacked LZMA SDK include $(top_srcdir)/src/stub/src/c/Makevars.lzma ifneq ($(UPX_LZMA_VERSION),) --- a/src/packer.cpp +++ b/src/packer.cpp @@ -199,6 +199,7 @@ if (cconf_parm) cconf = *cconf_parm; // cconf options +#if (WITH_UCL) if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method)) { if (opt->crp.crp_ucl.c_flags != -1) @@ -216,6 +217,7 @@ step = 0; #endif } +#endif if (M_IS_LZMA(ph.method)) { oassign(cconf.conf_lzma.pos_bits, opt->crp.crp_lzma.pos_bits); @@ -250,6 +252,7 @@ if (r != UPX_E_OK) throwInternalError("compression failed"); +#if (WITH_UCL) if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method)) { const ucl_uint *res = ph.compress_result.result_ucl.result; @@ -267,6 +270,7 @@ assert(cconf.conf_ucl.max_match == 0 || cconf.conf_ucl.max_match >= ph.max_match_found); } } +#endif //printf("\nPacker::compress: %d/%d: %7d -> %7d\n", ph.method, ph.level, ph.u_len, ph.c_len); if (!checkCompressionRatio(ph.u_len, ph.c_len)) --- a/src/p_exe.cpp +++ b/src/p_exe.cpp @@ -506,7 +506,9 @@ Filter ft(ph.level); // compress (max_match = 8192) upx_compress_config_t cconf; cconf.reset(); +#if (WITH_UCL) cconf.conf_ucl.max_match = MAXMATCH; +#endif cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack compressWithFilters(&ft, 32, &cconf); --- a/src/p_ps1.cpp +++ b/src/p_ps1.cpp @@ -499,7 +499,9 @@ // compress (max_match = 65535) upx_compress_config_t cconf; cconf.reset(); +#if (WITH_UCL) cconf.conf_ucl.max_match = 65535; +#endif cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack compressWithFilters(&ft, sa_cnt, &cconf); --- a/src/p_tos.cpp +++ b/src/p_tos.cpp @@ -506,7 +506,9 @@ Filter ft(ph.level); // compress (max_match = 65535) upx_compress_config_t cconf; cconf.reset(); +#if (WITH_UCL) cconf.conf_ucl.max_match = 65535; +#endif cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack compressWithFilters(&ft, 512, &cconf);