diff options
author | Thierry N <thierryn1 at hispeed dot ch> | 2009-08-10 21:22:23 +0200 |
---|---|---|
committer | Thierry N <thierryn1 at hispeed dot ch> | 2009-08-10 21:22:23 +0200 |
commit | 5c3261d6e3781d0a3946a5ccdb752122167c09d2 (patch) | |
tree | 168f271fdb99de12fa5702f3b5b4baa27fff9688 /extra | |
parent | bf75aa7776bdbad21abdf3fff6cf6b1ce220c265 (diff) | |
download | nutyx-pakxe-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.gz nutyx-pakxe-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.bz2 nutyx-pakxe-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.xz nutyx-pakxe-5c3261d6e3781d0a3946a5ccdb752122167c09d2.zip |
Ajout de faad2#2.6.1-1
Diffstat (limited to 'extra')
-rw-r--r-- | extra/faad2/.footprint | 15 | ||||
-rw-r--r-- | extra/faad2/.md5sum | 5 | ||||
-rwxr-xr-x | extra/faad2/Pkgfile | 33 | ||||
-rw-r--r-- | extra/faad2/faad2-2.0-gcc4.patch | 387 | ||||
-rw-r--r-- | extra/faad2/faad2-2.6.1-abi_has_changed.patch | 15 | ||||
-rw-r--r-- | extra/faad2/faad2-2.6.1-broken-pipe.patch | 23 | ||||
-rw-r--r-- | extra/faad2/faad2-2.6.1-implicitdeclar.patch | 12 | ||||
-rw-r--r-- | extra/faad2/faad2-2.6.1-libtool22.patch | 14 |
8 files changed, 504 insertions, 0 deletions
diff --git a/extra/faad2/.footprint b/extra/faad2/.footprint new file mode 100644 index 000000000..243de49cd --- /dev/null +++ b/extra/faad2/.footprint @@ -0,0 +1,15 @@ +drwxr-xr-x root/root usr/ +drwxr-xr-x root/root usr/bin/ +-rwxr-xr-x root/root usr/bin/faad +drwxr-xr-x root/root usr/include/ +-rw-r--r-- root/root usr/include/faad.h +-rw-r--r-- root/root usr/include/mp4ff.h +-rw-r--r-- root/root usr/include/mp4ff_int_types.h +-rw-r--r-- root/root usr/include/neaacdec.h +drwxr-xr-x root/root usr/lib/ +-rw-r--r-- root/root usr/lib/libfaad.a +-rwxr-xr-x root/root usr/lib/libfaad.la +lrwxrwxrwx root/root usr/lib/libfaad.so -> libfaad.so.1.0.0 +lrwxrwxrwx root/root usr/lib/libfaad.so.1 -> libfaad.so.1.0.0 +-rwxr-xr-x root/root usr/lib/libfaad.so.1.0.0 +-rw-r--r-- root/root usr/lib/libmp4ff.a diff --git a/extra/faad2/.md5sum b/extra/faad2/.md5sum new file mode 100644 index 000000000..d45027f1f --- /dev/null +++ b/extra/faad2/.md5sum @@ -0,0 +1,5 @@ +f4427ece45c87ac63102f891dc9208e1 faad2-2.6.1-abi_has_changed.patch +6eb87d8c75da12d166ae460997bdbde2 faad2-2.6.1-broken-pipe.patch +97a34cb3cd468ba868d9393241ef7391 faad2-2.6.1-implicitdeclar.patch +fa91c19ea617b3ac8e7e198fb0a97b62 faad2-2.6.1-libtool22.patch +74e92df40c270f216a8305fc87603c8a faad2-2.6.1.tar.gz diff --git a/extra/faad2/Pkgfile b/extra/faad2/Pkgfile new file mode 100755 index 000000000..120ecf24f --- /dev/null +++ b/extra/faad2/Pkgfile @@ -0,0 +1,33 @@ +# Description: Profiles pour le decoder ACC MPEG4 +# URL: http://www.audiocoding.com +# Maintainer: NuTyX core team +# Packager: thierryn1 at hispeed dot ch +# Depends on: + +name=faad2 +version=2.6.1 +release=1 +source=(http://downloads.sourceforge.net/sourceforge/faac/$name-$version.tar.gz\ + faad2-2.6.1-libtool22.patch \ + faad2-2.6.1-broken-pipe.patch \ + faad2-2.6.1-implicitdeclar.patch + faad2-2.6.1-abi_has_changed.patch \ + + ) + + +build() { + cd $name +# patch -p1 -i $SRC/$name-2.0-gcc4.patch + patch -p1 < ../faad2-2.6.1-libtool22.patch + patch -p1 < ../faad2-2.6.1-broken-pipe.patch + patch -p1 < ../faad2-2.6.1-implicitdeclar.patch + patch -p1 < ../faad2-2.6.1-abi_has_changed.patch + autoreconf -vif + ./configure --prefix=/usr + make + make DESTDIR=$PKG install + install -m644 common/mp4ff/mp4ff.h $PKG/usr/include/ + install -m644 common/mp4ff/.libs/*.a $PKG/usr/lib + install -m644 common/mp4ff/mp4ff_int_types.h $PKG/usr/include +} diff --git a/extra/faad2/faad2-2.0-gcc4.patch b/extra/faad2/faad2-2.0-gcc4.patch new file mode 100644 index 000000000..8e4c9a0bc --- /dev/null +++ b/extra/faad2/faad2-2.0-gcc4.patch @@ -0,0 +1,387 @@ +# Looks a lot like Gentoo's 021_all_gcc4.patch, imho --Sten +diff -ru faad2.orig/common/mp4ff/mp4atom.c faad2/common/mp4ff/mp4atom.c +--- faad2.orig/common/mp4ff/mp4atom.c 2004-01-11 16:52:18.000000000 +0100 ++++ faad2/common/mp4ff/mp4atom.c 2006-03-05 11:48:17.000000000 +0100 +@@ -31,15 +31,15 @@ + #include "drms.h" + + /* parse atom header size */ +-static int32_t mp4ff_atom_get_size(const int8_t *data) ++static int32_t mp4ff_atom_get_size(const uint8_t *data) + { + uint32_t result; + uint32_t a, b, c, d; + +- a = (uint8_t)data[0]; +- b = (uint8_t)data[1]; +- c = (uint8_t)data[2]; +- d = (uint8_t)data[3]; ++ a = data[0]; ++ b = data[1]; ++ c = data[2]; ++ d = data[3]; + + result = (a<<24) | (b<<16) | (c<<8) | d; + //if (result > 0 && result < 8) result = 8; +@@ -182,7 +182,7 @@ + { + uint64_t size; + int32_t ret; +- int8_t atom_header[8]; ++ uint8_t atom_header[8]; + + ret = mp4ff_read_data(f, atom_header, 8); + if (ret != 8) +diff -ru faad2.orig/common/mp4ff/mp4ff.h faad2/common/mp4ff/mp4ff.h +--- faad2.orig/common/mp4ff/mp4ff.h 2004-01-11 16:52:18.000000000 +0100 ++++ faad2/common/mp4ff/mp4ff.h 2006-03-05 11:48:17.000000000 +0100 +@@ -125,4 +125,4 @@ + } + #endif /* __cplusplus */ + +-#endif +\ No newline at end of file ++#endif +diff -ru faad2.orig/common/mp4ff/mp4ff_int_types.h faad2/common/mp4ff/mp4ff_int_types.h +--- faad2.orig/common/mp4ff/mp4ff_int_types.h 2003-12-13 23:26:56.000000000 +0100 ++++ faad2/common/mp4ff/mp4ff_int_types.h 2006-03-05 11:48:18.000000000 +0100 +@@ -20,4 +20,4 @@ + #endif + + +-#endif +\ No newline at end of file ++#endif +diff -ru faad2.orig/common/mp4ff/mp4ffint.h faad2/common/mp4ff/mp4ffint.h +--- faad2.orig/common/mp4ff/mp4ffint.h 2004-01-14 21:50:22.000000000 +0100 ++++ faad2/common/mp4ff/mp4ffint.h 2006-03-05 11:48:18.000000000 +0100 +@@ -226,8 +226,8 @@ + + + /* mp4util.c */ +-int32_t mp4ff_read_data(mp4ff_t *f, int8_t *data, uint32_t size); +-int32_t mp4ff_write_data(mp4ff_t *f, int8_t *data, uint32_t size); ++int32_t mp4ff_read_data(mp4ff_t *f, uint8_t *data, uint32_t size); ++int32_t mp4ff_write_data(mp4ff_t *f, uint8_t *data, uint32_t size); + uint64_t mp4ff_read_int64(mp4ff_t *f); + uint32_t mp4ff_read_int32(mp4ff_t *f); + uint32_t mp4ff_read_int24(mp4ff_t *f); +@@ -241,7 +241,7 @@ + char * mp4ff_read_string(mp4ff_t * f,uint32_t length); + + /* mp4atom.c */ +-static int32_t mp4ff_atom_get_size(const int8_t *data); ++static int32_t mp4ff_atom_get_size(const uint8_t *data); + static int32_t mp4ff_atom_compare(const int8_t a1, const int8_t b1, const int8_t c1, const int8_t d1, + const int8_t a2, const int8_t b2, const int8_t c2, const int8_t d2); + static uint8_t mp4ff_atom_name_to_type(const int8_t a, const int8_t b, const int8_t c, const int8_t d); +@@ -301,7 +301,6 @@ + mp4ff_t *mp4ff_open_edit(mp4ff_callback_t *f); + #endif + void mp4ff_close(mp4ff_t *ff); +-void mp4ff_track_add(mp4ff_t *f); + int32_t parse_sub_atoms(mp4ff_t *f, const uint64_t total_size); + int32_t parse_atoms(mp4ff_t *f); + +@@ -326,4 +325,4 @@ + } + #endif /* __cplusplus */ + +-#endif +\ No newline at end of file ++#endif +diff -ru faad2.orig/common/mp4ff/mp4meta.c faad2/common/mp4ff/mp4meta.c +--- faad2.orig/common/mp4ff/mp4meta.c 2004-01-11 16:52:18.000000000 +0100 ++++ faad2/common/mp4ff/mp4meta.c 2006-03-05 11:48:18.000000000 +0100 +@@ -411,4 +411,4 @@ + return mp4ff_meta_find_by_name(f, "cover", value); + } + +-#endif +\ No newline at end of file ++#endif +diff -ru faad2.orig/common/mp4ff/mp4tagupdate.c faad2/common/mp4ff/mp4tagupdate.c +--- faad2.orig/common/mp4ff/mp4tagupdate.c 2004-01-06 12:59:47.000000000 +0100 ++++ faad2/common/mp4ff/mp4tagupdate.c 2006-03-05 11:48:18.000000000 +0100 +@@ -143,7 +143,7 @@ + bufptr = membuffer_get_ptr(buf); + if (bufptr==0) return 0; + +- if ((unsigned)mp4ff_read_data(src,(char*)bufptr + oldsize,bytes)!=bytes) ++ if ((unsigned)mp4ff_read_data(src,(uint8_t*)bufptr + oldsize,bytes)!=bytes) + { + membuffer_set_error(buf); + return 0; +@@ -398,7 +398,7 @@ + uint64_t atom_offset = base; + for(;;) + { +- char atom_name[4]; ++ uint8_t atom_name[4]; + uint32_t atom_size; + + mp4ff_set_position(f,atom_offset); +@@ -618,7 +618,7 @@ + /* copy moov atom to end of the file */ + if (ff->last_atom != ATOM_MOOV) + { +- char *free_data = "free"; ++ uint8_t *free_data = (uint8_t*)"free"; + + /* rename old moov to free */ + mp4ff_set_position(ff, ff->moov_offset + 4); +@@ -626,14 +626,14 @@ + + mp4ff_set_position(ff, ff->file_size); + mp4ff_write_int32(ff,new_moov_size + 8); +- mp4ff_write_data(ff,"moov",4); ++ mp4ff_write_data(ff,(uint8_t*)"moov",4); + mp4ff_write_data(ff, new_moov_data, new_moov_size); + } + else + { + mp4ff_set_position(ff, ff->moov_offset); + mp4ff_write_int32(ff,new_moov_size + 8); +- mp4ff_write_data(ff,"moov",4); ++ mp4ff_write_data(ff,(uint8_t*)"moov",4); + mp4ff_write_data(ff, new_moov_data, new_moov_size); + } + +diff -ru faad2.orig/common/mp4ff/mp4util.c faad2/common/mp4ff/mp4util.c +--- faad2.orig/common/mp4ff/mp4util.c 2004-01-11 16:52:19.000000000 +0100 ++++ faad2/common/mp4ff/mp4util.c 2006-03-05 11:48:18.000000000 +0100 +@@ -28,7 +28,7 @@ + #include "mp4ffint.h" + #include <stdlib.h> + +-int32_t mp4ff_read_data(mp4ff_t *f, int8_t *data, uint32_t size) ++int32_t mp4ff_read_data(mp4ff_t *f, uint8_t *data, uint32_t size) + { + int32_t result = 1; + +@@ -44,7 +44,7 @@ + return f->stream->truncate(f->stream->user_data); + } + +-int32_t mp4ff_write_data(mp4ff_t *f, int8_t *data, uint32_t size) ++int32_t mp4ff_write_data(mp4ff_t *f, uint8_t *data, uint32_t size) + { + int32_t result = 1; + +@@ -105,13 +105,13 @@ + { + uint32_t result; + uint32_t a, b, c, d; +- int8_t data[4]; ++ uint8_t data[4]; + + mp4ff_read_data(f, data, 4); +- a = (uint8_t)data[0]; +- b = (uint8_t)data[1]; +- c = (uint8_t)data[2]; +- d = (uint8_t)data[3]; ++ a = data[0]; ++ b = data[1]; ++ c = data[2]; ++ d = data[3]; + + result = (a<<24) | (b<<16) | (c<<8) | d; + return (uint32_t)result; +@@ -121,12 +121,12 @@ + { + uint32_t result; + uint32_t a, b, c; +- int8_t data[4]; ++ uint8_t data[4]; + + mp4ff_read_data(f, data, 3); +- a = (uint8_t)data[0]; +- b = (uint8_t)data[1]; +- c = (uint8_t)data[2]; ++ a = data[0]; ++ b = data[1]; ++ c = data[2]; + + result = (a<<16) | (b<<8) | c; + return (uint32_t)result; +@@ -136,11 +136,11 @@ + { + uint32_t result; + uint32_t a, b; +- int8_t data[2]; ++ uint8_t data[2]; + + mp4ff_read_data(f, data, 2); +- a = (uint8_t)data[0]; +- b = (uint8_t)data[1]; ++ a = data[0]; ++ b = data[1]; + + result = (a<<8) | b; + return (uint16_t)result; +@@ -151,7 +151,7 @@ + char * str = (char*)malloc(length + 1); + if (str!=0) + { +- if ((uint32_t)mp4ff_read_data(f,str,length)!=length) ++ if ((uint32_t)mp4ff_read_data(f,(uint8_t*)str,length)!=length) + { + free(str); + str = 0; +diff -ru faad2.orig/common/mp4v2/mp4meta.cpp faad2/common/mp4v2/mp4meta.cpp +--- faad2.orig/common/mp4v2/mp4meta.cpp 2003-08-03 14:17:20.000000000 +0200 ++++ faad2/common/mp4v2/mp4meta.cpp 2006-03-05 11:48:18.000000000 +0100 +@@ -830,7 +830,6 @@ + MP4BytesProperty *pMetadataProperty = NULL; + char s[256]; + int i = 0; +- bool nameExists = false; + + while (1) + { +diff -ru faad2.orig/common/mp4v2/rtphint.h faad2/common/mp4v2/rtphint.h +--- faad2.orig/common/mp4v2/rtphint.h 2003-06-29 23:41:00.000000000 +0200 ++++ faad2/common/mp4v2/rtphint.h 2006-03-05 11:48:18.000000000 +0100 +@@ -35,8 +35,8 @@ + return m_pPacket; + } + +- virtual u_int16_t GetDataSize() = NULL; +- virtual void GetData(u_int8_t* pDest) = NULL; ++ virtual u_int16_t GetDataSize() = 0; ++ virtual void GetData(u_int8_t* pDest) = 0; + + MP4Track* FindTrackFromRefIndex(u_int8_t refIndex); + +@@ -210,7 +210,7 @@ + + MP4RtpPacket* GetCurrentPacket() { + if (m_rtpPackets.Size() == 0) { +- return NULL; ++ return 0; + } + return m_rtpPackets[m_rtpPackets.Size() - 1]; + } +@@ -250,10 +250,10 @@ + } + + void GetPayload( +- char** ppPayloadName = NULL, +- u_int8_t* pPayloadNumber = NULL, +- u_int16_t* pMaxPayloadSize = NULL, +- char **ppEncodingParams = NULL); ++ char** ppPayloadName = 0, ++ u_int8_t* pPayloadNumber = 0, ++ u_int16_t* pMaxPayloadSize = 0, ++ char **ppEncodingParams = 0); + + void SetPayload( + const char* payloadName, +@@ -265,7 +265,7 @@ + + void ReadHint( + MP4SampleId hintSampleId, +- u_int16_t* pNumPackets = NULL); ++ u_int16_t* pNumPackets = 0); + + u_int16_t GetHintNumberOfPackets(); + +diff -ru faad2.orig/frontend/main.c faad2/frontend/main.c +--- faad2.orig/frontend/main.c 2004-01-06 12:59:47.000000000 +0100 ++++ faad2/frontend/main.c 2006-03-05 11:48:18.000000000 +0100 +@@ -36,6 +36,7 @@ + #include <fcntl.h> + #include <stdio.h> + #include <stdlib.h> ++#include <string.h> + #include <getopt.h> + + #include <faad.h> +@@ -377,8 +378,8 @@ + float *song_length) + { + int tagsize; +- unsigned long samplerate; +- unsigned char channels; ++ uint32_t samplerate; ++ uint8_t channels; + void *sample_buffer; + + audio_file *aufile; +@@ -656,7 +657,7 @@ + for (i = 0; i < numTracks; i++) + { + unsigned char *buff = NULL; +- int buff_size = 0; ++ uint32_t buff_size = 0; + mp4AudioSpecificConfig mp4ASC; + + mp4ff_get_decoder_config(infile, i, &buff, &buff_size); +@@ -687,8 +688,8 @@ + int infoOnly, int adts_out, float *song_length) + { + int track; +- unsigned long samplerate; +- unsigned char channels; ++ uint32_t samplerate; ++ uint8_t channels; + void *sample_buffer; + + mp4ff_t *infile; +@@ -707,7 +708,7 @@ + mp4AudioSpecificConfig mp4ASC; + + unsigned char *buffer; +- int buffer_size; ++ uint32_t buffer_size; + + char percents[200]; + int percent, old_percent = -1; +diff -ru faad2.orig/libfaad/decoder.c faad2/libfaad/decoder.c +--- faad2.orig/libfaad/decoder.c 2004-02-04 21:07:24.000000000 +0100 ++++ faad2/libfaad/decoder.c 2006-03-05 11:48:18.000000000 +0100 +@@ -50,7 +50,7 @@ + uint16_t dbg_count; + #endif + +-int8_t* FAADAPI faacDecGetErrorMessage(uint8_t errcode) ++char* FAADAPI faacDecGetErrorMessage(uint8_t errcode) + { + if (errcode >= NUM_ERROR_MESSAGES) + return NULL; +diff -ru faad2.orig/libfaad/decoder.h faad2/libfaad/decoder.h +--- faad2.orig/libfaad/decoder.h 2004-01-05 15:05:11.000000000 +0100 ++++ faad2/libfaad/decoder.h 2006-03-05 11:48:18.000000000 +0100 +@@ -76,7 +76,7 @@ + #define LFE_CHANNEL (9) + #define UNKNOWN_CHANNEL (0) + +-int8_t* FAADAPI faacDecGetErrorMessage(uint8_t errcode); ++char* FAADAPI faacDecGetErrorMessage(uint8_t errcode); + + uint32_t FAADAPI faacDecGetCapabilities(void); + +diff -ru faad2.orig/libfaad/error.c faad2/libfaad/error.c +--- faad2.orig/libfaad/error.c 2004-01-28 20:17:25.000000000 +0100 ++++ faad2/libfaad/error.c 2006-03-05 11:48:18.000000000 +0100 +@@ -28,7 +28,7 @@ + #include "common.h" + #include "error.h" + +-int8_t *err_msg[] = { ++char *err_msg[] = { + "No error", + "Gain control not yet implemented", + "Pulse coding not allowed in short blocks", +diff -ru faad2.orig/libfaad/error.h faad2/libfaad/error.h +--- faad2.orig/libfaad/error.h 2004-01-28 20:17:25.000000000 +0100 ++++ faad2/libfaad/error.h 2006-03-05 11:48:18.000000000 +0100 +@@ -33,7 +33,7 @@ + #endif + + #define NUM_ERROR_MESSAGES 26 +-extern int8_t *err_msg[]; ++extern char *err_msg[]; + + #ifdef __cplusplus + } diff --git a/extra/faad2/faad2-2.6.1-abi_has_changed.patch b/extra/faad2/faad2-2.6.1-abi_has_changed.patch new file mode 100644 index 000000000..654d61355 --- /dev/null +++ b/extra/faad2/faad2-2.6.1-abi_has_changed.patch @@ -0,0 +1,15 @@ +Index: faad2/libfaad/Makefile.am +=================================================================== +--- faad2.orig/libfaad/Makefile.am ++++ faad2/libfaad/Makefile.am +@@ -3,7 +3,8 @@ lib_LTLIBRARIES = libfaad.la + include_HEADERS = $(top_srcdir)/include/faad.h \ + $(top_srcdir)/include/neaacdec.h + +-libfaad_la_LDFLAGS = -lm ++libfaad_la_LDFLAGS = -version-info 1:0:0 ++libfaad_la_LIBADD = -lm + + libfaad_la_SOURCES = bits.c cfft.c decoder.c drc.c \ + drm_dec.c error.c filtbank.c \ + diff --git a/extra/faad2/faad2-2.6.1-broken-pipe.patch b/extra/faad2/faad2-2.6.1-broken-pipe.patch new file mode 100644 index 000000000..0b356c92d --- /dev/null +++ b/extra/faad2/faad2-2.6.1-broken-pipe.patch @@ -0,0 +1,23 @@ +--- faad2/frontend/main.c~ 2007-11-01 06:33:29.000000000 -0600 ++++ faad2/frontend/main.c 2008-01-03 18:05:10.000000000 -0700 +@@ -640,7 +640,8 @@ + + if ((frameInfo.error == 0) && (frameInfo.samples > 0) && (!adts_out)) + { +- write_audio_file(aufile, sample_buffer, frameInfo.samples, 0); ++ if (write_audio_file(aufile, sample_buffer, frameInfo.samples, 0) == 0) ++ break; + } + + /* fill buffer */ +@@ -976,7 +977,8 @@ + + if ((frameInfo.error == 0) && (sample_count > 0) && (!adts_out)) + { +- write_audio_file(aufile, sample_buffer, sample_count, delay); ++ if (write_audio_file(aufile, sample_buffer, sample_count, delay) == 0) ++ break; + } + + if (frameInfo.error > 0) + diff --git a/extra/faad2/faad2-2.6.1-implicitdeclar.patch b/extra/faad2/faad2-2.6.1-implicitdeclar.patch new file mode 100644 index 000000000..bb3abf1a6 --- /dev/null +++ b/extra/faad2/faad2-2.6.1-implicitdeclar.patch @@ -0,0 +1,12 @@ +diff -aur faad2-orig/frontend/main.c faad2/frontend/main.c +--- faad2-orig/frontend/main.c 2007-11-01 08:33:29.000000000 -0400 ++++ faad2/frontend/main.c 2008-06-21 19:33:08.000000000 -0400 +@@ -41,6 +41,7 @@ + #include <stdarg.h> + #include <stdlib.h> + #include <getopt.h> ++#include <string.h> + + #include <neaacdec.h> + #include <mp4ff.h> + diff --git a/extra/faad2/faad2-2.6.1-libtool22.patch b/extra/faad2/faad2-2.6.1-libtool22.patch new file mode 100644 index 000000000..79bbce0c0 --- /dev/null +++ b/extra/faad2/faad2-2.6.1-libtool22.patch @@ -0,0 +1,14 @@ +Index: faad2/configure.in +=================================================================== +--- faad2.orig/configure.in ++++ faad2/configure.in +@@ -18,7 +18,7 @@ dnl Checks for programs. + AC_PROG_CC + AC_PROG_CPP + dnl disable for mpeg4ip plugin +-dnl AC_PROG_CXX ++AC_PROG_CXX + AC_PROG_INSTALL + AC_PROG_LN_S + AC_PROG_MAKE_SET + |