editorial changes

This commit is contained in:
Christian R. Helmrich 2020-01-23 21:00:39 +01:00
parent 3b14599078
commit 4aa2845972
5 changed files with 61 additions and 142 deletions

View File

@ -27,7 +27,7 @@
<h1><br><span class="pink">exhale</span> - <span class="pink">e</span>codis e<span class="pink">x</span>tended <span class="pink">h</span>igh-efficiency <span class="pink">a</span>nd <span class="pink">l</span>ow-complexity <span class="pink">e</span>ncoder<br><span class="gray"><sup><br>referred to as &laquo;Software&raquo; below; additions to original BSD license text marked by [ ]</sup></span><br><br></h1> <h1><br><span class="pink">exhale</span> - <span class="pink">e</span>codis e<span class="pink">x</span>tended <span class="pink">h</span>igh-efficiency <span class="pink">a</span>nd <span class="pink">l</span>ow-complexity <span class="pink">e</span>ncoder<br><span class="gray"><sup><br>referred to as &laquo;Software&raquo; below; additions to original BSD license text marked by [ ]</sup></span><br><br></h1>
<h3>&nbsp; &nbsp;This Software is being made available and/or distributed under the following Modified <a href="http://www.linfo.org/bsdlicense.html">BSD</a>-style License. For a list of authors which have contributed to this Software, called &laquo;contributors&raquo; in the text below, please refer to the respective files provided with this distribution (source files or binary executable) to which modifications were contributed.</h3> <h3>&nbsp; &nbsp;This Software is being made available and/or distributed under the following Modified <a href="http://www.linfo.org/bsdlicense.html">BSD</a>-style License. For a list of authors which have contributed to this Software, called &laquo;contributors&raquo; in the text below, please refer to the respective files provided with this distribution (source files or binary executable) to which modifications were contributed.</h3>
<h3><br><b>Licensor's Copyright Notice</b></h3> <h3><br><b>Licensor's Copyright Notice</b></h3>
<h3>&nbsp; &nbsp;Copyright &copy; 2018&#x2013;2019 Christian R. Helmrich, <a href="http://www.ecodis.de">ecodis</a> (Licensor). All rights reserved.</h3> <h3>&nbsp; &nbsp;Copyright &copy; 2018&#x2013;2020 Christian R. Helmrich, <a href="http://www.ecodis.de">ecodis</a> (Licensor). All rights reserved.</h3>
<h3><br><b>List of License Conditions</b></h3> <h3><br><b>List of License Conditions</b></h3>
<h3>&nbsp; &nbsp;Redistribution and use <span class="gray">[</span>of this Software<span class="gray">]</span> in source and binary forms, with or without modification, are permitted provided that<sub>&nbsp;</sub><span class="gray">[</span>all of<span class="gray">]</span><sub>&nbsp;</sub>the following<sub>&nbsp;</sub><span class="gray">[</span>four<span class="gray">]</span><sub>&nbsp;</sub>conditions are met:</h3> <h3>&nbsp; &nbsp;Redistribution and use <span class="gray">[</span>of this Software<span class="gray">]</span> in source and binary forms, with or without modification, are permitted provided that<sub>&nbsp;</sub><span class="gray">[</span>all of<span class="gray">]</span><sub>&nbsp;</sub>the following<sub>&nbsp;</sub><span class="gray">[</span>four<span class="gray">]</span><sub>&nbsp;</sub>conditions are met:</h3>
<ul> <ul>
@ -39,7 +39,7 @@
<h3><br><b>Liability and Patent Disclaimer</b></h3> <h3><br><b>Liability and Patent Disclaimer</b></h3>
<h3>&nbsp; &nbsp;THIS SOFTWARE IS PROVIDED BY THE LICENSOR AND THE CONTRIBUTORS &laquo;<b>AS IS</b>&raquo; AND ANY EXPRESS OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR&shy;POSE) ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</h3> <h3>&nbsp; &nbsp;THIS SOFTWARE IS PROVIDED BY THE LICENSOR AND THE CONTRIBUTORS &laquo;<b>AS IS</b>&raquo; AND ANY EXPRESS OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR&shy;POSE) ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</h3>
<h3>&nbsp; <span class="gray">[</span>This Software may be subject to other third-party and/or contributor rights, including patent rights. In particular, this Software may implement methods and/or technologies required to perform in compliance with certain specifications of the ISO/IEC (MPEG-D) international standard <a href="https://www.iso.org/standard/76385.html">23003-3</a>, which may be subject to said other rights. NO express or implied licenses to any patent claims related to the use of this Software are granted under this license, and the Licensor provides NO WARRANTY of patent non-infringement with respect to this Software. Patent licenses required for the use of this Software to generate digital bit-streams according to any specifications of ISO/IEC 23003-3 may be obtained through <a href="https://www.via-corp.com/licensing/aac/">Via Licensing</a> and/or the corresponding patent holders individually.<span class="gray">]</span><br><br></h3> <h3>&nbsp; <span class="gray">[</span>This Software may be subject to other third-party and/or contributor rights, including patent rights. In particular, this Software may implement methods and/or technologies required to perform in compliance with certain specifications of the ISO/IEC (MPEG-D) international standard <a href="https://www.iso.org/standard/76385.html">23003-3</a>, which may be subject to said other rights. NO express or implied licenses to any patent claims related to the use of this Software are granted under this license, and the Licensor provides NO WARRANTY of patent non-infringement with respect to this Software. Patent licenses required for the use of this Software to generate digital bit-streams according to any specifications of ISO/IEC 23003-3 may be obtained through <a href="https://www.via-corp.com/licensing/aac/">Via Licensing</a> and/or the corresponding patent holders individually.<span class="gray">]</span><br><br></h3>
<h4><span class="gray">Written by C. R. Helmrich for exhale 1.0.0, Dec. 2019. Available at www.ecodis.de/exhale/license.htm.</span><br><br></h4> <h4><span class="gray">Written by C. R. Helmrich for exhale 1.0.0, Jan. 2020. Available at www.ecodis.de/exhale/license.htm.</span><br><br></h4>
</td> </td>
<td valign="top" colspan="2"> <td valign="top" colspan="2">

View File

@ -30,6 +30,8 @@
<h3>&nbsp; &nbsp;Version <b>1.0.0 <span class="gray">&nbsp;Jan. 2020, this release</span></b></h3> <h3>&nbsp; &nbsp;Version <b>1.0.0 <span class="gray">&nbsp;Jan. 2020, this release</span></b></h3>
<ul> <ul>
<li><h3>compilation fixes and executable printout changes for Linux and MacOS&trade; platform</h3></li> <li><h3>compilation fixes and executable printout changes for Linux and MacOS&trade; platform</h3></li>
<li><h3>exhaleApp: fixed reading of WAVE files including metadata after the &laquo;data&raquo; chunk</h3></li>
<li><h3>exhaleLib: some tuning of transform and noise level detection for transient signals</h3></li>
</ul> </ul>
<h3>&nbsp; &nbsp;Version <b>1.0RC <span class="gray">Dec. 2019</span></b></h3> <h3>&nbsp; &nbsp;Version <b>1.0RC <span class="gray">Dec. 2019</span></b></h3>
<ul> <ul>
@ -46,13 +48,14 @@
<h3>&nbsp; &nbsp;If you are in need of an additional library or application feature <b>not</b> mentioned below, please contact ecodis or a contributor with a request, and we will see what we can do.</h3> <h3>&nbsp; &nbsp;If you are in need of an additional library or application feature <b>not</b> mentioned below, please contact ecodis or a contributor with a request, and we will see what we can do.</h3>
<ul> <ul>
<li><h3>support for MPEG-D DRC-style peak-level and loudness metadata, no version plan</h3></li> <li><h3>support for MPEG-D DRC-style peak-level and loudness metadata, no version plan</h3></li>
<li><h3>support for compilation as dynamically linked library in Windows&trade;, no version plan</h3></li> <li><h3>support for compiling as dynamically linked library on Windows&trade;, no version plan</h3></li>
<li><h3>support for coding with a core coder frame length of 768 samples, no version plan</h3></li>
<li><h3>exhaleLib: quality tuning and bug fixing for low-bitrate mono coding, version 1.0.1</h3></li> <li><h3>exhaleLib: quality tuning and bug fixing for low-bitrate mono coding, version 1.0.1</h3></li>
<li><h3>exhaleLib: finalized integration of joint-channel coding functionality, version 1.0.2</h3></li> <li><h3>exhaleLib: finalized integration of joint-channel coding functionality, version 1.0.2</h3></li>
<li><h3>exhaleLib: quality tuning and bug fixing for low-rate stereo coding, version 1.0.3.</h3></li> <li><h3>exhaleLib: quality tuning and bug fixing for low-rate stereo coding, version 1.0.3.</h3></li>
</ul> </ul>
<h3><br></h3> <h3><br></h3>
<h4><span class="gray">Written by C. R. Helmrich for exhale 1.0.0, Dec. 2019. Available at www.ecodis.de/exhale/release.htm.</span><br><br></h4> <h4><span class="gray">Written by C. R. Helmrich for exhale 1.0.0, Jan. 2020. Available at www.ecodis.de/exhale/release.htm.</span><br><br></h4>
</td> </td>
<td valign="top" colspan="2"> <td valign="top" colspan="2">

View File

@ -232,7 +232,7 @@ int main (const int argc, char* argv[])
#if defined (_WIN32) || defined (WIN32) || defined (_WIN64) || defined (WIN64) #if defined (_WIN32) || defined (WIN32) || defined (_WIN64) || defined (WIN64)
if (_sopen_s (&inFileHandle, inFileName, _O_RDONLY | _O_SEQUENTIAL | _O_BINARY, _SH_DENYWR, _S_IREAD) != 0) if (_sopen_s (&inFileHandle, inFileName, _O_RDONLY | _O_SEQUENTIAL | _O_BINARY, _SH_DENYWR, _S_IREAD) != 0)
#else // Linux, MacOS, Unix #else // Linux, MacOS, Unix
if ((inFileHandle = ::open (inFileName, O_RDONLY | O_LARGEFILE, 0666)) == -1) if ((inFileHandle = ::open (inFileName, O_RDONLY, 0666)) == -1)
#endif #endif
{ {
fprintf_s (stderr, " ERROR while trying to open input file %s! Does it already exist?\n\n", inFileName); fprintf_s (stderr, " ERROR while trying to open input file %s! Does it already exist?\n\n", inFileName);
@ -302,7 +302,7 @@ int main (const int argc, char* argv[])
#if defined (_WIN32) || defined (WIN32) || defined (_WIN64) || defined (WIN64) #if defined (_WIN32) || defined (WIN32) || defined (_WIN64) || defined (WIN64)
if (_sopen_s (&outFileHandle, outFileName, i | _O_SEQUENTIAL | _O_CREAT | _O_EXCL | _O_BINARY, _SH_DENYRD, _S_IWRITE) != 0) if (_sopen_s (&outFileHandle, outFileName, i | _O_SEQUENTIAL | _O_CREAT | _O_EXCL | _O_BINARY, _SH_DENYRD, _S_IWRITE) != 0)
#else // Linux, MacOS, Unix #else // Linux, MacOS, Unix
if ((outFileHandle = ::open (outFileName, i | O_LARGEFILE | O_CREAT | O_EXCL, 0666)) == -1) if ((outFileHandle = ::open (outFileName, i | O_CREAT | O_EXCL, 0666)) == -1)
#endif #endif
{ {
fprintf_s (stderr, " ERROR while trying to open output file %s! Does it already exist?\n\n", outFileName); fprintf_s (stderr, " ERROR while trying to open output file %s! Does it already exist?\n\n", outFileName);
@ -518,7 +518,7 @@ int main (const int argc, char* argv[])
i = 0; // no errors i = 0; // no errors
if (!readStdin && (actualLength != expectLength || bw != headerRes)) if (!readStdin && (actualLength != expectLength || bw != headerRes))
{ {
fprintf_s (stderr, " WARNING: %ld sample frames read but %ld sample frames expected!\n", actualLength, expectLength); fprintf_s (stderr, " WARNING: %lld sample frames read but %lld sample frames expected!\n", (long long) actualLength, (long long) expectLength);
if (bw != headerRes) fprintf_s (stderr, " The encoded MPEG-4 bit-stream is likely to be unreadable!\n"); if (bw != headerRes) fprintf_s (stderr, " The encoded MPEG-4 bit-stream is likely to be unreadable!\n");
fprintf_s (stderr, "\n"); fprintf_s (stderr, "\n");
} }

View File

@ -68,7 +68,7 @@ public:
#if !RESTRICT_TO_AAC #if !RESTRICT_TO_AAC
const bool* const tw_mdct /*N/A*/, const bool* const noiseFilling, const bool* const tw_mdct /*N/A*/, const bool* const noiseFilling,
#endif #endif
unsigned char* const audioFrame, const unsigned nSamplesInFrame = 1024); unsigned char* const accessUnit, const unsigned nSamplesInFrame = 1024);
}; // BitStreamWriter }; // BitStreamWriter
#endif // _BIT_STREAM_WRITER_H_ #endif // _BIT_STREAM_WRITER_H_

View File

@ -8,29 +8,20 @@
# Copyright (c) 2018-2020 Christian R. Helmrich, project ecodis. All rights reserved. # Copyright (c) 2018-2020 Christian R. Helmrich, project ecodis. All rights reserved.
## ##
######################################################### ## verification of config parameter
# check CONFIG parameter
#########################################################
ifneq ($(CONFIG), CONSOLE) ifneq ($(CONFIG), CONSOLE)
ifneq ($(CONFIG), LIBRARY) ifneq ($(CONFIG), LIBRARY)
CONFIG_ERR = TRUE CONFIG_ERR = TRUE
endif endif
endif endif
######################################################### # specification of used executables
# executables used
#########################################################
AR = ar AR = ar
ASM = nasm ASM = nasm
CPP = g++ CPP = g++
LD = $(CPP) LD = $(CPP)
######################################################### # location and name of output files
# output file names and version information
#########################################################
ifeq ($(CONFIG), CONSOLE) ifeq ($(CONFIG), CONSOLE)
STAT_DEBUG_OUT = $(DIR_BIN)/$(PRD_NAME)d STAT_DEBUG_OUT = $(DIR_BIN)/$(PRD_NAME)d
STAT_RELEASE_OUT = $(DIR_BIN)/$(PRD_NAME) STAT_RELEASE_OUT = $(DIR_BIN)/$(PRD_NAME)
@ -45,92 +36,48 @@ else
endif endif
endif endif
######################################################### # type of debug and release objects
# c compiler flags DEBUG_OBJS = $(OBJS:.o=.d.o)
######################################################### RELEASE_OBJS = $(OBJS:.o=.r.o)
# default cpp flags for all configurations
#CPPFLAGS = -Wall -fPIC $(DEFS) -I$(CURDIR)/$(DIR_INC)
CPPFLAGS = -fPIC $(DEFS) -I$(CURDIR)/$(DIR_INC) -Wall -Wshadow -Wno-sign-compare -Werror -D_FILE_OFFSET_BITS=64
########## ## specification of compiler flags
# enforce 32-bit build : 1=yes, 0=no CPPFLAGS = -fPIC $(DEFS) -I$(CURDIR)/$(DIR_INC) -Wall -Werror -Wno-sign-compare -Wshadow -D_FILE_OFFSET_BITS=64
##########
M32?= 0 # setting of 32-bit compiler flags
ifeq ($(M32),1) MM32?=0
CPPFLAGS+=-m32 ifeq ($(MM32), 1)
CPPFLAGS+=-m32
endif endif
##########
# # debug and release compiler flags
# debug cpp flags
DEBUG_CPPFLAGS = -g -D_DEBUG DEBUG_CPPFLAGS = -g -D_DEBUG
# RELEASE_CPPFLAGS = -O3 -Wuninitialized
# release cpp
RELEASE_CPPFLAGS = -O3 -Wuninitialized
######################################################### ## specification of linker flags
# linker flags
#########################################################
# linker flags for all
ALL_LDFLAGS = -Wall ALL_LDFLAGS = -Wall
########## # setting of 32-bit linker flags
# enforce 32-bit build : 1=yes, 0=no ifeq ($(MM32), 1)
########## ALL_LDFLAGS+=-m32
ifeq ($(M32),1)
ALL_LDFLAGS+=-m32
endif endif
##########
# debug and release linker flags
ifeq ($(CONFIG), LIBRARY)
# linker flags for library
# LDFLAGS = $(ALL_LDFLAGS) -shared -Wl,-Bsymbolic
LDFLAGS = $(ALL_LDFLAGS) -shared
#
# debug linker flags for library
DEBUG_LDFLAGS = -Wl,-soname,lib$(PRD_NAME)d.so
#
# release linker flags for library
RELEASE_LDFLAGS = -Wl,-soname,lib$(PRD_NAME).so
#
else
ifeq ($(CONFIG), CONSOLE) ifeq ($(CONFIG), CONSOLE)
# linker flags for console LDFLAGS = $(ALL_LDFLAGS)
LDFLAGS = $(ALL_LDFLAGS) DEBUG_LDFLAGS =
# RELEASE_LDFLAGS =
# debug linker flags for console else
DEBUG_LDFLAGS = ifeq ($(CONFIG), LIBRARY)
# LDFLAGS = $(ALL_LDFLAGS) -shared
# release linker flags for console DEBUG_LDFLAGS = -Wl, -soname, lib$(PRD_NAME)Dynd.so
RELEASE_LDFLAGS = RELEASE_LDFLAGS = -Wl, -soname, lib$(PRD_NAME)Dyn.so
# endif
endif
endif endif
## specification of assembler flags
#########################################################
# objects that have to be created
#########################################################
# the object types that have to be created
RELEASE_OBJS = $(OBJS:.o=.r.o)
DEBUG_OBJS = $(OBJS:.o=.d.o)
#########################################################
# rules
#########################################################
# suffixes
.SUFFIXES: .asm .cpp .d.o .r.o
## specification of assembler rules
ASMFLAGS = -f elf $(DEFS) ASMFLAGS = -f elf $(DEFS)
DEBUG_ASMFLAGS = -g DEBUG_ASMFLAGS = -g
RELEASE_ASMFLAGS = RELEASE_ASMFLAGS =
@ -144,7 +91,7 @@ $(DIR_OBJ)/%.r.o: $(DIR_SRC)/%.asm
$(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $< $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<
## specification of C and C++ rules ## specification of C and C++ flags
define COMPILE_AND_DEPEND_DEBUG define COMPILE_AND_DEPEND_DEBUG
$(CPP) -c -MMD -MF $(DIR_OBJ)/$*.d.d -MT $(DIR_OBJ)/$*.d.o $(CPPFLAGS) $(DEBUG_CPPFLAGS) -o $@ $(CURDIR)/$< $(CPP) -c -MMD -MF $(DIR_OBJ)/$*.d.d -MT $(DIR_OBJ)/$*.d.o $(CPPFLAGS) $(DEBUG_CPPFLAGS) -o $@ $(CURDIR)/$<
@cp $(DIR_OBJ)/$*.d.d $(DIR_OBJ)/$*.d.p; \ @cp $(DIR_OBJ)/$*.d.d $(DIR_OBJ)/$*.d.p; \
@ -229,65 +176,34 @@ $(DIR_LIB):
## creation of binary output files ## creation of binary output files
ifeq ($(CONFIG), LIBRARY)
#
# create static debug out
$(STAT_DEBUG_OUT): $(DEBUG_OBJS)
$(AR) -crs $@ $(DEBUG_OBJS)
#
#
# create release debug out
$(STAT_RELEASE_OUT): $(RELEASE_OBJS)
$(AR) -crs $@ $(RELEASE_OBJS)
#
#
# create dynamic debug out
$(DYN_DEBUG_OUT): $(DYN_DEBUG_OUT)
ln -fs lib$(PRD_NAME)d.so $@
#
# create dynamic debug out
$(DYN_DEBUG_OUT): $(DEBUG_OBJS)
$(LD) $(LDFLAGS) $(DEBUG_LDFLAGS) -o $@ $(DEBUG_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_DEBUG_LIBS)
#
#
# create dynamic release out
$(DYN_RELEASE_OUT): $(DYN_RELEASE_OUT)
ln -fs lib$(PRD_NAME).so $@
#
# create dynamic release out
$(DYN_RELEASE_OUT): $(RELEASE_OBJS)
$(LD) $(LDFLAGS) $(RELEASE_LDFLAGS) -o $@ $(RELEASE_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_RELEASE_LIBS)
#
#
#
#
#
else
ifeq ($(CONFIG), CONSOLE) ifeq ($(CONFIG), CONSOLE)
# # creation of static debug output
# added linked libraries to target prerequisites - $(*_PREREQS) variables - to force relinking when libraries have been rebuilt
#
# create static debug out
$(STAT_DEBUG_OUT): $(DEBUG_OBJS) $(STAT_DEBUG_PREREQS) $(STAT_DEBUG_OUT): $(DEBUG_OBJS) $(STAT_DEBUG_PREREQS)
$(LD) -o $@ $(LDFLAGS) $(DEBUG_LDFLAGS) $(DEBUG_OBJS) -L$(DIR_LIB) $(LIBS) $(STAT_LIBS) $(STAT_DEBUG_LIBS) $(LD) -o $@ $(LDFLAGS) $(DEBUG_LDFLAGS) $(DEBUG_OBJS) -L$(DIR_LIB) $(LIBS) $(STAT_LIBS) $(STAT_DEBUG_LIBS)
# # creation of static release output
#
# create static release out
$(STAT_RELEASE_OUT): $(RELEASE_OBJS) $(STAT_RELEASE_PREREQS) $(STAT_RELEASE_OUT): $(RELEASE_OBJS) $(STAT_RELEASE_PREREQS)
$(LD) -o $@ $(LDFLAGS) $(RELEASE_LDFLAGS) $(RELEASE_OBJS) -L$(DIR_LIB) $(LIBS) $(STAT_LIBS) $(STAT_RELEASE_LIBS) $(LD) -o $@ $(LDFLAGS) $(RELEASE_LDFLAGS) $(RELEASE_OBJS) -L$(DIR_LIB) $(LIBS) $(STAT_LIBS) $(STAT_RELEASE_LIBS)
# # creation of dynamic debug output
#
# create dynamic debug out
$(DYN_DEBUG_OUT): $(DEBUG_OBJS) $(DYN_DEBUG_PREREQS) $(DYN_DEBUG_OUT): $(DEBUG_OBJS) $(DYN_DEBUG_PREREQS)
$(LD) -o $@ $(LDFLAGS) $(DEBUG_LDFLAGS) $(DEBUG_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_DEBUG_LIBS) $(LD) -o $@ $(LDFLAGS) $(DEBUG_LDFLAGS) $(DEBUG_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_DEBUG_LIBS)
# # creation of dynamic release output
#
# create dynamic release out
$(DYN_RELEASE_OUT): $(RELEASE_OBJS) $(DYN_RELEASE_PREREQS) $(DYN_RELEASE_OUT): $(RELEASE_OBJS) $(DYN_RELEASE_PREREQS)
$(LD) -o $@ $(LDFLAGS) $(RELEASE_LDFLAGS) $(RELEASE_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_RELEASE_LIBS) $(LD) -o $@ $(LDFLAGS) $(RELEASE_LDFLAGS) $(RELEASE_OBJS) -L$(DIR_LIB) $(LIBS) $(DYN_LIBS) $(DYN_RELEASE_LIBS)
# else
# ifeq ($(CONFIG), LIBRARY)
endif # creation of static debug output
$(STAT_DEBUG_OUT): $(DEBUG_OBJS)
$(AR) -crs $@ $(DEBUG_OBJS)
# creation of static release output
$(STAT_RELEASE_OUT): $(RELEASE_OBJS)
$(AR) -crs $@ $(RELEASE_OBJS)
# creation of dynamic debug output
$(DYN_DEBUG_OUT): $(DYN_DEBUG_OUT)
ln -fs lib$(PRD_NAME)Dynd.so $@
# creation of dynamic release output
$(DYN_RELEASE_OUT): $(DYN_RELEASE_OUT)
ln -fs lib$(PRD_NAME)Dyn.so $@
endif
endif endif