From 6bb0afc2dc12bee9987b1b1c7047b16fbff1badb Mon Sep 17 00:00:00 2001 From: larsbishop Date: Tue, 10 Mar 2015 13:22:22 -0700 Subject: [PATCH 1/3] Initial build of samples 2.11 release --- .../build/linux-arm32/Makefile.NvAppBase.mk | 8 +- .../linux-arm32/Makefile.NvAssetLoader.mk | 8 +- .../build/linux-arm32/Makefile.NvGLUtils.mk | 8 +- .../build/linux-arm32/Makefile.NvGamepad.mk | 8 +- .../build/linux-arm32/Makefile.NvModel.mk | 8 +- extensions/build/linux-arm32/Makefile.NvUI.mk | 8 +- extensions/build/linux32/Makefile | 11 +- .../build/linux32/Makefile.NvAppBase.mk | 107 +- .../build/linux32/Makefile.NvAssetLoader.mk | 107 +- .../build/linux32/Makefile.NvGLUtils.mk | 107 +- .../build/linux32/Makefile.NvGamepad.mk | 107 +- extensions/build/linux32/Makefile.NvModel.mk | 107 +- extensions/build/linux32/Makefile.NvUI.mk | 107 +- extensions/build/linux64/Makefile | 11 +- .../build/linux64/Makefile.NvAppBase.mk | 107 +- .../build/linux64/Makefile.NvAssetLoader.mk | 107 +- .../build/linux64/Makefile.NvGLUtils.mk | 107 +- .../build/linux64/Makefile.NvGamepad.mk | 107 +- extensions/build/linux64/Makefile.NvModel.mk | 107 +- extensions/build/linux64/Makefile.NvUI.mk | 107 +- extensions/build/makeandroid/Makefile | 11 +- .../build/makeandroid/Makefile.NvAppBase.mk | 103 +- .../makeandroid/Makefile.NvAssetLoader.mk | 103 +- .../build/makeandroid/Makefile.NvEGLUtil.mk | 103 +- .../build/makeandroid/Makefile.NvGLUtils.mk | 103 +- .../build/makeandroid/Makefile.NvGamepad.mk | 103 +- .../build/makeandroid/Makefile.NvModel.mk | 103 +- extensions/build/makeandroid/Makefile.NvUI.mk | 103 +- .../build/vs2010android/NvAppBase.vcxproj | 9 +- .../build/vs2010android/NvAssetLoader.vcxproj | 9 +- .../build/vs2010android/NvEGLUtil.vcxproj | 9 +- .../build/vs2010android/NvGLUtils.vcxproj | 9 +- .../build/vs2010android/NvGamepad.vcxproj | 9 +- .../build/vs2010android/NvModel.vcxproj | 9 +- extensions/build/vs2010android/NvUI.vcxproj | 9 +- .../build/linux-arm32/Makefile.Half.mk | 8 +- .../build/linux-arm32/Makefile.R3.mk | 8 +- .../build/linux-arm32/Makefile.cg4cpp.mk | 178 + .../build/linux-arm32/Makefile.freetype.mk | 143 + .../build/linux-arm32/Makefile.harfbuzz.mk | 160 + .../linux-arm32/cg4cpp.xpj.cg4cpp.Makefile | 32 + .../freetype.xpj.freetype.Makefile | 32 + .../harfbuzz.xpj.harfbuzz.Makefile | 32 + extensions/externals/build/linux32/Makefile | 23 +- .../externals/build/linux32/Makefile.Half.mk | 107 +- .../externals/build/linux32/Makefile.R3.mk | 107 +- .../build/linux32/Makefile.cg4cpp.mk | 259 + .../build/linux32/Makefile.freetype.mk | 224 + .../build/linux32/Makefile.harfbuzz.mk | 229 + extensions/externals/build/linux64/Makefile | 23 +- .../externals/build/linux64/Makefile.Half.mk | 107 +- .../externals/build/linux64/Makefile.R3.mk | 107 +- .../build/linux64/Makefile.cg4cpp.mk | 261 + .../build/linux64/Makefile.freetype.mk | 226 + .../build/linux64/Makefile.harfbuzz.mk | 231 + .../externals/build/makeandroid/Makefile | 23 +- .../build/makeandroid/Makefile.Half.mk | 103 +- .../build/makeandroid/Makefile.R3.mk | 103 +- .../build/makeandroid/Makefile.cg4cpp.mk | 259 + .../build/makeandroid/Makefile.freetype.mk | 224 + .../build/makeandroid/Makefile.harfbuzz.mk | 225 + .../build/vs2010android/Half.vcxproj | 9 +- .../externals/build/vs2010android/R3.vcxproj | 9 +- .../externals/build/vs2010android/cg4cpp.sln | 24 + .../build/vs2010android/cg4cpp.vcxproj | 460 + .../vs2010android/cg4cpp.vcxproj.filters | 522 + .../build/vs2010android/cg4cpp.vcxproj.user | 7 + .../build/vs2010android/freetype.sln | 24 + .../build/vs2010android/freetype.vcxproj | 256 + .../vs2010android/freetype.vcxproj.filters | 282 + .../build/vs2010android/freetype.vcxproj.user | 7 + .../build/vs2010android/harfbuzz.sln | 24 + .../build/vs2010android/harfbuzz.vcxproj | 320 + .../vs2010android/harfbuzz.vcxproj.filters | 321 + .../build/vs2010android/harfbuzz.vcxproj.user | 7 + .../externals/build/vs2010win32/cg4cpp.sln | 24 + .../build/vs2010win32/cg4cpp.vcxproj | 455 + .../build/vs2010win32/cg4cpp.vcxproj.filters | 522 + .../externals/build/vs2010win32/freetype.sln | 24 + .../build/vs2010win32/freetype.vcxproj | 251 + .../vs2010win32/freetype.vcxproj.filters | 282 + .../externals/build/vs2010win32/harfbuzz.sln | 24 + .../build/vs2010win32/harfbuzz.vcxproj | 317 + .../vs2010win32/harfbuzz.vcxproj.filters | 324 + .../externals/build/vs2012win32/cg4cpp.sln | 24 + .../build/vs2012win32/cg4cpp.vcxproj | 461 + .../build/vs2012win32/cg4cpp.vcxproj.filters | 522 + .../externals/build/vs2012win32/freetype.sln | 24 + .../build/vs2012win32/freetype.vcxproj | 257 + .../vs2012win32/freetype.vcxproj.filters | 282 + .../externals/build/vs2012win32/harfbuzz.sln | 24 + .../build/vs2012win32/harfbuzz.vcxproj | 323 + .../vs2012win32/harfbuzz.vcxproj.filters | 324 + .../externals/include/Cg/GL/sampler.hpp | 58 + extensions/externals/include/Cg/abs.hpp | 70 + extensions/externals/include/Cg/acos.hpp | 46 + extensions/externals/include/Cg/all.hpp | 39 + extensions/externals/include/Cg/any.hpp | 39 + extensions/externals/include/Cg/asin.hpp | 46 + extensions/externals/include/Cg/assert.hpp | 18 + extensions/externals/include/Cg/atan.hpp | 46 + extensions/externals/include/Cg/atan2.hpp | 85 + extensions/externals/include/Cg/ceil.hpp | 46 + extensions/externals/include/Cg/clamp.hpp | 448 + extensions/externals/include/Cg/cos.hpp | 46 + extensions/externals/include/Cg/cosh.hpp | 46 + extensions/externals/include/Cg/cross.hpp | 62 + extensions/externals/include/Cg/degrees.hpp | 41 + .../externals/include/Cg/determinant.hpp | 32 + extensions/externals/include/Cg/distance.hpp | 44 + extensions/externals/include/Cg/dot.hpp | 89 + extensions/externals/include/Cg/dotv1.hpp | 69 + extensions/externals/include/Cg/double.hpp | 14 + extensions/externals/include/Cg/exp.hpp | 46 + extensions/externals/include/Cg/exp2.hpp | 46 + .../externals/include/Cg/faceforward.hpp | 44 + extensions/externals/include/Cg/fixed.hpp | 246 + .../externals/include/Cg/floatToIntBits.hpp | 68 + .../include/Cg/floatToRawIntBits.hpp | 53 + extensions/externals/include/Cg/floor.hpp | 46 + extensions/externals/include/Cg/fmod.hpp | 121 + extensions/externals/include/Cg/frac.hpp | 46 + extensions/externals/include/Cg/frexp.hpp | 48 + extensions/externals/include/Cg/half.hpp | 351 + extensions/externals/include/Cg/inout.hpp | 638 + .../externals/include/Cg/intBitsToFloat.hpp | 53 + extensions/externals/include/Cg/inverse.hpp | 34 + extensions/externals/include/Cg/iostream.hpp | 66 + extensions/externals/include/Cg/isfinite.hpp | 56 + extensions/externals/include/Cg/isinf.hpp | 54 + extensions/externals/include/Cg/isnan.hpp | 54 + extensions/externals/include/Cg/length.hpp | 42 + extensions/externals/include/Cg/lerp.hpp | 343 + extensions/externals/include/Cg/log.hpp | 46 + extensions/externals/include/Cg/log10.hpp | 46 + extensions/externals/include/Cg/log2.hpp | 46 + extensions/externals/include/Cg/matrix.hpp | 2463 ++ .../externals/include/Cg/matrix/0based.hpp | 15 + .../externals/include/Cg/matrix/1based.hpp | 15 + .../externals/include/Cg/matrix/columns.hpp | 15 + .../externals/include/Cg/matrix/elements.hpp | 15 + .../externals/include/Cg/matrix/rows.hpp | 15 + extensions/externals/include/Cg/max.hpp | 128 + extensions/externals/include/Cg/min.hpp | 128 + extensions/externals/include/Cg/mul.hpp | 104 + extensions/externals/include/Cg/mulv0.hpp | 89 + extensions/externals/include/Cg/mulv1.hpp | 89 + extensions/externals/include/Cg/normalize.hpp | 40 + extensions/externals/include/Cg/pow.hpp | 90 + extensions/externals/include/Cg/radians.hpp | 41 + extensions/externals/include/Cg/round.hpp | 46 + extensions/externals/include/Cg/rsqrt.hpp | 46 + extensions/externals/include/Cg/sampler.hpp | 20 + extensions/externals/include/Cg/sampler1D.hpp | 40 + .../externals/include/Cg/sampler1DARRAY.hpp | 39 + extensions/externals/include/Cg/sampler2D.hpp | 46 + .../externals/include/Cg/sampler2DARRAY.hpp | 39 + extensions/externals/include/Cg/sampler3D.hpp | 37 + .../externals/include/Cg/samplerBUF.hpp | 35 + .../externals/include/Cg/samplerCUBE.hpp | 37 + .../externals/include/Cg/samplerRECT.hpp | 39 + extensions/externals/include/Cg/saturate.hpp | 65 + extensions/externals/include/Cg/sign.hpp | 40 + extensions/externals/include/Cg/sin.hpp | 46 + extensions/externals/include/Cg/sinh.hpp | 46 + .../externals/include/Cg/smoothstep.hpp | 490 + extensions/externals/include/Cg/sqrt.hpp | 46 + extensions/externals/include/Cg/stdlib.hpp | 1858 ++ extensions/externals/include/Cg/step.hpp | 86 + extensions/externals/include/Cg/tan.hpp | 46 + extensions/externals/include/Cg/tanh.hpp | 46 + extensions/externals/include/Cg/transpose.hpp | 33 + extensions/externals/include/Cg/trunc.hpp | 46 + extensions/externals/include/Cg/upper1x1.hpp | 39 + extensions/externals/include/Cg/upper1x2.hpp | 39 + extensions/externals/include/Cg/upper1x3.hpp | 39 + extensions/externals/include/Cg/upper1x4.hpp | 39 + extensions/externals/include/Cg/upper2x1.hpp | 39 + extensions/externals/include/Cg/upper2x2.hpp | 39 + extensions/externals/include/Cg/upper2x3.hpp | 39 + extensions/externals/include/Cg/upper2x4.hpp | 39 + extensions/externals/include/Cg/upper3x1.hpp | 39 + extensions/externals/include/Cg/upper3x2.hpp | 39 + extensions/externals/include/Cg/upper3x3.hpp | 39 + extensions/externals/include/Cg/upper3x4.hpp | 39 + extensions/externals/include/Cg/upper4x1.hpp | 39 + extensions/externals/include/Cg/upper4x2.hpp | 39 + extensions/externals/include/Cg/upper4x3.hpp | 39 + extensions/externals/include/Cg/upper4x4.hpp | 39 + extensions/externals/include/Cg/vector.hpp | 2355 ++ .../externals/include/Cg/vector/rgba.hpp | 15 + .../externals/include/Cg/vector/stpq.hpp | 15 + .../externals/include/Cg/vector/xyzw.hpp | 15 + .../externals/lib/linux-arm32/libglfw3.a | Bin 109248 -> 398268 bytes extensions/externals/src/cg4cpp/Android.mk | 52 + extensions/externals/src/cg4cpp/GNUmakefile | 92 + extensions/externals/src/cg4cpp/abs.cpp | 141 + extensions/externals/src/cg4cpp/acos.cpp | 115 + extensions/externals/src/cg4cpp/all.cpp | 36 + extensions/externals/src/cg4cpp/any.cpp | 36 + extensions/externals/src/cg4cpp/asin.cpp | 116 + extensions/externals/src/cg4cpp/atan.cpp | 115 + extensions/externals/src/cg4cpp/atan2.cpp | 116 + extensions/externals/src/cg4cpp/ceil.cpp | 115 + extensions/externals/src/cg4cpp/cg4cpp.vcproj | 1000 + .../externals/src/cg4cpp/cg4cpp_2008.sln | 20 + .../externals/src/cg4cpp/cg4cpp_2008.vcproj | 1071 + .../externals/src/cg4cpp/cg4cpp_2010.vcxproj | 346 + .../externals/src/cg4cpp/cg4cpp_2012.vcxproj | 354 + extensions/externals/src/cg4cpp/clamp.cpp | 101 + extensions/externals/src/cg4cpp/cos.cpp | 115 + extensions/externals/src/cg4cpp/cosh.cpp | 115 + extensions/externals/src/cg4cpp/cross.cpp | 42 + extensions/externals/src/cg4cpp/degrees.cpp | 116 + .../externals/src/cg4cpp/determinant.cpp | 89 + extensions/externals/src/cg4cpp/distance.cpp | 96 + extensions/externals/src/cg4cpp/dot.cpp | 116 + extensions/externals/src/cg4cpp/exp.cpp | 115 + extensions/externals/src/cg4cpp/exp2.cpp | 115 + .../externals/src/cg4cpp/faceforward.cpp | 84 + .../externals/src/cg4cpp/floatToIntBits.cpp | 37 + .../src/cg4cpp/floatToRawIntBits.cpp | 37 + extensions/externals/src/cg4cpp/floor.cpp | 115 + extensions/externals/src/cg4cpp/fmod.cpp | 96 + extensions/externals/src/cg4cpp/frac.cpp | 115 + extensions/externals/src/cg4cpp/fresnel.cpp | 159 + extensions/externals/src/cg4cpp/frexp.cpp | 99 + .../externals/src/cg4cpp/intBitsToFloat.cpp | 37 + extensions/externals/src/cg4cpp/inverse.cpp | 127 + extensions/externals/src/cg4cpp/iostream.cpp | 29 + extensions/externals/src/cg4cpp/isfinite.cpp | 116 + extensions/externals/src/cg4cpp/isinf.cpp | 96 + extensions/externals/src/cg4cpp/isnan.cpp | 116 + extensions/externals/src/cg4cpp/ldexp.cpp | 103 + extensions/externals/src/cg4cpp/length.cpp | 96 + extensions/externals/src/cg4cpp/lerp.cpp | 101 + extensions/externals/src/cg4cpp/lit.cpp | 53 + extensions/externals/src/cg4cpp/log.cpp | 115 + extensions/externals/src/cg4cpp/log10.cpp | 116 + extensions/externals/src/cg4cpp/log2.cpp | 116 + extensions/externals/src/cg4cpp/max.cpp | 141 + extensions/externals/src/cg4cpp/min.cpp | 141 + extensions/externals/src/cg4cpp/modf.cpp | 112 + extensions/externals/src/cg4cpp/mul.cpp | 2032 ++ extensions/externals/src/cg4cpp/normalize.cpp | 96 + extensions/externals/src/cg4cpp/pow.cpp | 116 + extensions/externals/src/cg4cpp/radians.cpp | 116 + extensions/externals/src/cg4cpp/reflect.cpp | 102 + extensions/externals/src/cg4cpp/refract.cpp | 104 + extensions/externals/src/cg4cpp/round.cpp | 116 + extensions/externals/src/cg4cpp/rsqrt.cpp | 115 + .../externals/src/cg4cpp/sampler2D_state.hpp | 52 + .../externals/src/cg4cpp/sampler_state.hpp | 259 + extensions/externals/src/cg4cpp/saturate.cpp | 141 + extensions/externals/src/cg4cpp/sign.cpp | 141 + extensions/externals/src/cg4cpp/sin.cpp | 115 + extensions/externals/src/cg4cpp/sincos.cpp | 108 + extensions/externals/src/cg4cpp/sinh.cpp | 103 + .../externals/src/cg4cpp/smoothstep.cpp | 84 + extensions/externals/src/cg4cpp/sqrt.cpp | 115 + extensions/externals/src/cg4cpp/step.cpp | 116 + extensions/externals/src/cg4cpp/tan.cpp | 115 + extensions/externals/src/cg4cpp/tanh.cpp | 115 + extensions/externals/src/cg4cpp/transpose.cpp | 144 + extensions/externals/src/cg4cpp/trunc.cpp | 116 + extensions/externals/src/cg4cpp/upper1x1.cpp | 174 + extensions/externals/src/cg4cpp/upper1x2.cpp | 174 + extensions/externals/src/cg4cpp/upper1x3.cpp | 174 + extensions/externals/src/cg4cpp/upper1x4.cpp | 174 + extensions/externals/src/cg4cpp/upper2x1.cpp | 174 + extensions/externals/src/cg4cpp/upper2x2.cpp | 174 + extensions/externals/src/cg4cpp/upper2x3.cpp | 174 + extensions/externals/src/cg4cpp/upper2x4.cpp | 174 + extensions/externals/src/cg4cpp/upper3x1.cpp | 174 + extensions/externals/src/cg4cpp/upper3x2.cpp | 174 + extensions/externals/src/cg4cpp/upper3x3.cpp | 174 + extensions/externals/src/cg4cpp/upper3x4.cpp | 174 + extensions/externals/src/cg4cpp/upper4x1.cpp | 174 + extensions/externals/src/cg4cpp/upper4x2.cpp | 174 + extensions/externals/src/cg4cpp/upper4x3.cpp | 174 + extensions/externals/src/cg4cpp/upper4x4.cpp | 174 + .../externals/src/freetype-2.4.9/Android.mk | 66 + .../externals/src/freetype-2.4.9/ChangeLog | 4076 +++ .../externals/src/freetype-2.4.9/ChangeLog.20 | 2613 ++ .../externals/src/freetype-2.4.9/ChangeLog.21 | 9439 +++++++ .../externals/src/freetype-2.4.9/ChangeLog.22 | 2837 +++ .../externals/src/freetype-2.4.9/ChangeLog.23 | 7948 ++++++ .../externals/src/freetype-2.4.9/Jamfile | 204 + .../externals/src/freetype-2.4.9/Jamrules | 71 + .../externals/src/freetype-2.4.9/Makefile | 34 + .../externals/src/freetype-2.4.9/README | 57 + .../externals/src/freetype-2.4.9/README.git | 46 + .../externals/src/freetype-2.4.9/autogen.sh | 166 + .../src/freetype-2.4.9/builds/amiga/README | 110 + .../amiga/include/freetype/config/ftconfig.h | 55 + .../amiga/include/freetype/config/ftmodule.h | 160 + .../src/freetype-2.4.9/builds/amiga/makefile | 299 + .../freetype-2.4.9/builds/amiga/makefile.os4 | 303 + .../src/freetype-2.4.9/builds/amiga/smakefile | 303 + .../builds/amiga/src/base/ftdebug.c | 279 + .../builds/amiga/src/base/ftsystem.c | 530 + .../freetype-2.4.9/builds/ansi/ansi-def.mk | 74 + .../src/freetype-2.4.9/builds/ansi/ansi.mk | 21 + .../src/freetype-2.4.9/builds/atari/ATARI.H | 20 + .../freetype-2.4.9/builds/atari/FNames.SIC | 37 + .../freetype-2.4.9/builds/atari/FREETYPE.PRJ | 32 + .../freetype-2.4.9/builds/atari/README.TXT | 51 + .../builds/atari/deflinejoiner.awk | 181 + .../builds/atari/gen-purec-patch.sh | 40 + .../freetype-2.4.9/builds/beos/beos-def.mk | 76 + .../src/freetype-2.4.9/builds/beos/beos.mk | 19 + .../src/freetype-2.4.9/builds/beos/detect.mk | 41 + .../freetype-2.4.9/builds/compiler/ansi-cc.mk | 80 + .../freetype-2.4.9/builds/compiler/bcc-dev.mk | 86 + .../src/freetype-2.4.9/builds/compiler/bcc.mk | 86 + .../src/freetype-2.4.9/builds/compiler/emx.mk | 77 + .../freetype-2.4.9/builds/compiler/gcc-dev.mk | 95 + .../src/freetype-2.4.9/builds/compiler/gcc.mk | 77 + .../freetype-2.4.9/builds/compiler/intelc.mk | 85 + .../builds/compiler/unix-lcc.mk | 83 + .../builds/compiler/visualage.mk | 76 + .../freetype-2.4.9/builds/compiler/visualc.mk | 82 + .../freetype-2.4.9/builds/compiler/watcom.mk | 81 + .../freetype-2.4.9/builds/compiler/win-lcc.mk | 81 + .../src/freetype-2.4.9/builds/detect.mk | 154 + .../src/freetype-2.4.9/builds/dos/detect.mk | 142 + .../src/freetype-2.4.9/builds/dos/dos-def.mk | 45 + .../src/freetype-2.4.9/builds/dos/dos-emx.mk | 21 + .../src/freetype-2.4.9/builds/dos/dos-gcc.mk | 21 + .../src/freetype-2.4.9/builds/dos/dos-wat.mk | 20 + .../src/freetype-2.4.9/builds/exports.mk | 76 + .../src/freetype-2.4.9/builds/freetype.mk | 361 + .../src/freetype-2.4.9/builds/link_dos.mk | 42 + .../src/freetype-2.4.9/builds/link_std.mk | 42 + .../builds/mac/FreeType.m68k_cfm.make.txt | 212 + .../builds/mac/FreeType.m68k_far.make.txt | 211 + .../builds/mac/FreeType.ppc_carbon.make.txt | 215 + .../builds/mac/FreeType.ppc_classic.make.txt | 216 + .../src/freetype-2.4.9/builds/mac/README | 403 + .../freetype-2.4.9/builds/mac/ascii2mpw.py | 24 + .../freetype-2.4.9/builds/mac/ftlib.prj.xml | 1194 + .../src/freetype-2.4.9/builds/mac/ftmac.c | 1534 ++ .../src/freetype-2.4.9/builds/modules.mk | 79 + .../src/freetype-2.4.9/builds/newline | 1 + .../src/freetype-2.4.9/builds/os2/detect.mk | 73 + .../src/freetype-2.4.9/builds/os2/os2-def.mk | 44 + .../src/freetype-2.4.9/builds/os2/os2-dev.mk | 30 + .../src/freetype-2.4.9/builds/os2/os2-gcc.mk | 26 + .../src/freetype-2.4.9/builds/symbian/bld.inf | 66 + .../builds/symbian/freetype.mmp | 147 + .../src/freetype-2.4.9/builds/toplevel.mk | 257 + .../src/freetype-2.4.9/builds/unix/aclocal.m4 | 8601 +++++++ .../freetype-2.4.9/builds/unix/config.guess | 1530 ++ .../src/freetype-2.4.9/builds/unix/config.sub | 1773 ++ .../src/freetype-2.4.9/builds/unix/configure | 15012 +++++++++++ .../freetype-2.4.9/builds/unix/configure.ac | 707 + .../freetype-2.4.9/builds/unix/configure.raw | 707 + .../src/freetype-2.4.9/builds/unix/detect.mk | 92 + .../builds/unix/freetype-config.in | 160 + .../freetype-2.4.9/builds/unix/freetype2.in | 12 + .../freetype-2.4.9/builds/unix/freetype2.m4 | 194 + .../freetype-2.4.9/builds/unix/ft-munmap.m4 | 32 + .../src/freetype-2.4.9/builds/unix/ft2unix.h | 61 + .../freetype-2.4.9/builds/unix/ftconfig.in | 544 + .../src/freetype-2.4.9/builds/unix/ftsystem.c | 419 + .../src/freetype-2.4.9/builds/unix/install-sh | 527 + .../src/freetype-2.4.9/builds/unix/install.mk | 97 + .../src/freetype-2.4.9/builds/unix/ltmain.sh | 9655 +++++++ .../freetype-2.4.9/builds/unix/mkinstalldirs | 161 + .../src/freetype-2.4.9/builds/unix/unix-cc.in | 114 + .../freetype-2.4.9/builds/unix/unix-def.in | 85 + .../freetype-2.4.9/builds/unix/unix-dev.mk | 26 + .../freetype-2.4.9/builds/unix/unix-lcc.mk | 24 + .../src/freetype-2.4.9/builds/unix/unix.mk | 62 + .../freetype-2.4.9/builds/unix/unixddef.mk | 45 + .../src/freetype-2.4.9/builds/vms/ftconfig.h | 344 + .../src/freetype-2.4.9/builds/vms/ftsystem.c | 328 + .../src/freetype-2.4.9/builds/win32/detect.mk | 183 + .../src/freetype-2.4.9/builds/win32/ftdebug.c | 214 + .../builds/win32/vc2005/freetype.sln | 31 + .../builds/win32/vc2005/freetype.vcproj | 646 + .../builds/win32/vc2005/index.html | 37 + .../builds/win32/vc2008/freetype.sln | 31 + .../builds/win32/vc2008/freetype.vcproj | 4132 +++ .../builds/win32/vc2008/index.html | 37 + .../builds/win32/vc2010/freetype.sln | 32 + .../builds/win32/vc2010/freetype.vcxproj | 585 + .../win32/vc2010/freetype.vcxproj.filters | 155 + .../builds/win32/vc2010/index.html | 37 + .../builds/win32/vc2012/freetype.sln | 32 + .../builds/win32/vc2012/freetype.vcxproj | 589 + .../win32/vc2012/freetype.vcxproj.filters | 155 + .../builds/win32/vc2012/index.html | 37 + .../builds/win32/visualc/freetype.dsp | 400 + .../builds/win32/visualc/freetype.dsw | 29 + .../builds/win32/visualc/freetype.sln | 31 + .../builds/win32/visualc/freetype.vcproj | 2179 ++ .../builds/win32/visualc/index.html | 37 + .../builds/win32/visualce/freetype.dsp | 400 + .../builds/win32/visualce/freetype.dsw | 29 + .../builds/win32/visualce/freetype.vcproj | 13885 ++++++++++ .../builds/win32/visualce/index.html | 47 + .../freetype-2.4.9/builds/win32/w32-bcc.mk | 28 + .../freetype-2.4.9/builds/win32/w32-bccd.mk | 26 + .../freetype-2.4.9/builds/win32/w32-dev.mk | 32 + .../freetype-2.4.9/builds/win32/w32-gcc.mk | 31 + .../freetype-2.4.9/builds/win32/w32-icc.mk | 28 + .../freetype-2.4.9/builds/win32/w32-intl.mk | 28 + .../freetype-2.4.9/builds/win32/w32-lcc.mk | 24 + .../builds/win32/w32-mingw32.mk | 33 + .../freetype-2.4.9/builds/win32/w32-vcc.mk | 28 + .../freetype-2.4.9/builds/win32/w32-wat.mk | 28 + .../freetype-2.4.9/builds/win32/win32-def.mk | 47 + .../src/freetype-2.4.9/builds/wince/ftdebug.c | 236 + .../builds/wince/vc2005-ce/freetype.sln | 158 + .../builds/wince/vc2005-ce/freetype.vcproj | 3839 +++ .../builds/wince/vc2005-ce/index.html | 47 + .../builds/wince/vc2008-ce/freetype.sln | 158 + .../builds/wince/vc2008-ce/freetype.vcproj | 13495 ++++++++++ .../builds/wince/vc2008-ce/index.html | 47 + .../externals/src/freetype-2.4.9/configure | 125 + .../src/freetype-2.4.9/devel/ft2build.h | 41 + .../src/freetype-2.4.9/devel/ftoption.h | 805 + .../externals/src/freetype-2.4.9/docs/CHANGES | 3647 +++ .../src/freetype-2.4.9/docs/CUSTOMIZE | 150 + .../externals/src/freetype-2.4.9/docs/DEBUG | 202 + .../externals/src/freetype-2.4.9/docs/FTL.TXT | 169 + .../src/freetype-2.4.9/docs/GPLv2.TXT | 340 + .../externals/src/freetype-2.4.9/docs/INSTALL | 83 + .../src/freetype-2.4.9/docs/INSTALL.ANY | 156 + .../src/freetype-2.4.9/docs/INSTALL.CROSS | 135 + .../src/freetype-2.4.9/docs/INSTALL.GNU | 159 + .../src/freetype-2.4.9/docs/INSTALL.MAC | 32 + .../src/freetype-2.4.9/docs/INSTALL.UNIX | 96 + .../src/freetype-2.4.9/docs/INSTALL.VMS | 62 + .../src/freetype-2.4.9/docs/LICENSE.TXT | 34 + .../externals/src/freetype-2.4.9/docs/MAKEPP | 5 + .../src/freetype-2.4.9/docs/PROBLEMS | 90 + .../externals/src/freetype-2.4.9/docs/TODO | 40 + .../src/freetype-2.4.9/docs/VERSION.DLL | 148 + .../src/freetype-2.4.9/docs/formats.txt | 174 + .../src/freetype-2.4.9/docs/raster.txt | 635 + .../src/freetype-2.4.9/docs/reference/README | 5 + .../docs/reference/ft2-base_interface.html | 3608 +++ .../docs/reference/ft2-basic_types.html | 1173 + .../docs/reference/ft2-bdf_fonts.html | 260 + .../docs/reference/ft2-bitmap_handling.html | 302 + .../docs/reference/ft2-bzip2.html | 94 + .../docs/reference/ft2-cache_subsystem.html | 1170 + .../docs/reference/ft2-cid_fonts.html | 204 + .../docs/reference/ft2-computations.html | 832 + .../docs/reference/ft2-font_formats.html | 84 + .../docs/reference/ft2-gasp_table.html | 142 + .../docs/reference/ft2-glyph_management.html | 673 + .../docs/reference/ft2-glyph_stroker.html | 938 + .../docs/reference/ft2-glyph_variants.html | 267 + .../docs/reference/ft2-gx_validation.html | 356 + .../docs/reference/ft2-gzip.html | 94 + .../reference/ft2-header_file_macros.html | 853 + .../docs/reference/ft2-incremental.html | 401 + .../docs/reference/ft2-index.html | 294 + .../docs/reference/ft2-lcd_filtering.html | 192 + .../docs/reference/ft2-list_processing.html | 486 + .../docs/reference/ft2-lzw.html | 94 + .../docs/reference/ft2-mac_specific.html | 368 + .../docs/reference/ft2-module_management.html | 667 + .../docs/reference/ft2-multiple_masters.html | 511 + .../docs/reference/ft2-ot_validation.html | 208 + .../reference/ft2-outline_processing.html | 1125 + .../docs/reference/ft2-pfr_fonts.html | 206 + .../docs/reference/ft2-quick_advance.html | 185 + .../docs/reference/ft2-raster.html | 606 + .../docs/reference/ft2-sfnt_names.html | 232 + .../docs/reference/ft2-sizes_management.html | 164 + .../docs/reference/ft2-system_interface.html | 415 + .../docs/reference/ft2-toc.html | 219 + .../docs/reference/ft2-truetype_engine.html | 132 + .../docs/reference/ft2-truetype_tables.html | 1223 + .../docs/reference/ft2-type1_tables.html | 689 + .../docs/reference/ft2-user_allocation.html | 47 + .../docs/reference/ft2-version.html | 219 + .../docs/reference/ft2-winfnt_fonts.html | 278 + .../externals/src/freetype-2.4.9/docs/release | 209 + .../include/freetype/config/ftconfig.h | 563 + .../include/freetype/config/ftheader.h | 793 + .../include/freetype/config/ftmodule.h | 34 + .../include/freetype/config/ftoption.h | 805 + .../include/freetype/config/ftstdlib.h | 174 + .../include/freetype/freetype.h | 3945 +++ .../include/freetype/ftadvanc.h | 179 + .../freetype-2.4.9/include/freetype/ftbbox.h | 102 + .../freetype-2.4.9/include/freetype/ftbdf.h | 209 + .../include/freetype/ftbitmap.h | 227 + .../freetype-2.4.9/include/freetype/ftbzip2.h | 102 + .../freetype-2.4.9/include/freetype/ftcache.h | 1140 + .../include/freetype/ftchapters.h | 104 + .../freetype-2.4.9/include/freetype/ftcid.h | 166 + .../include/freetype/fterrdef.h | 245 + .../include/freetype/fterrors.h | 207 + .../freetype-2.4.9/include/freetype/ftgasp.h | 128 + .../freetype-2.4.9/include/freetype/ftglyph.h | 620 + .../freetype-2.4.9/include/freetype/ftgxval.h | 358 + .../freetype-2.4.9/include/freetype/ftgzip.h | 102 + .../freetype-2.4.9/include/freetype/ftimage.h | 1313 + .../include/freetype/ftincrem.h | 353 + .../include/freetype/ftlcdfil.h | 213 + .../freetype-2.4.9/include/freetype/ftlist.h | 277 + .../freetype-2.4.9/include/freetype/ftlzw.h | 99 + .../freetype-2.4.9/include/freetype/ftmac.h | 274 + .../freetype-2.4.9/include/freetype/ftmm.h | 378 + .../include/freetype/ftmodapi.h | 483 + .../include/freetype/ftmoderr.h | 156 + .../freetype-2.4.9/include/freetype/ftotval.h | 203 + .../freetype-2.4.9/include/freetype/ftoutln.h | 540 + .../freetype-2.4.9/include/freetype/ftpfr.h | 172 + .../include/freetype/ftrender.h | 238 + .../freetype-2.4.9/include/freetype/ftsizes.h | 159 + .../include/freetype/ftsnames.h | 200 + .../include/freetype/ftstroke.h | 741 + .../freetype-2.4.9/include/freetype/ftsynth.h | 80 + .../include/freetype/ftsystem.h | 347 + .../include/freetype/fttrigon.h | 350 + .../freetype-2.4.9/include/freetype/fttypes.h | 588 + .../include/freetype/ftwinfnt.h | 274 + .../freetype-2.4.9/include/freetype/ftxf86.h | 83 + .../include/freetype/internal/autohint.h | 231 + .../include/freetype/internal/ftcalc.h | 179 + .../include/freetype/internal/ftdebug.h | 250 + .../include/freetype/internal/ftdriver.h | 421 + .../include/freetype/internal/ftgloadr.h | 168 + .../include/freetype/internal/ftmemory.h | 380 + .../include/freetype/internal/ftobjs.h | 1413 ++ .../include/freetype/internal/ftpic.h | 67 + .../include/freetype/internal/ftrfork.h | 247 + .../include/freetype/internal/ftserv.h | 688 + .../include/freetype/internal/ftstream.h | 539 + .../include/freetype/internal/fttrace.h | 144 + .../include/freetype/internal/ftvalid.h | 150 + .../include/freetype/internal/internal.h | 51 + .../include/freetype/internal/psaux.h | 873 + .../include/freetype/internal/pshints.h | 712 + .../freetype/internal/services/svbdf.h | 82 + .../freetype/internal/services/svcid.h | 89 + .../freetype/internal/services/svgldict.h | 88 + .../freetype/internal/services/svgxval.h | 72 + .../freetype/internal/services/svkern.h | 51 + .../include/freetype/internal/services/svmm.h | 113 + .../freetype/internal/services/svotval.h | 55 + .../freetype/internal/services/svpfr.h | 66 + .../freetype/internal/services/svpostnm.h | 81 + .../freetype/internal/services/svpscmap.h | 177 + .../freetype/internal/services/svpsinfo.h | 111 + .../freetype/internal/services/svsfnt.h | 103 + .../freetype/internal/services/svttcmap.h | 107 + .../freetype/internal/services/svtteng.h | 53 + .../freetype/internal/services/svttglyf.h | 68 + .../freetype/internal/services/svwinfnt.h | 50 + .../freetype/internal/services/svxf86nm.h | 55 + .../include/freetype/internal/sfnt.h | 897 + .../include/freetype/internal/t1types.h | 259 + .../include/freetype/internal/tttypes.h | 1543 ++ .../include/freetype/t1tables.h | 662 + .../include/freetype/ttnameid.h | 1247 + .../include/freetype/tttables.h | 763 + .../freetype-2.4.9/include/freetype/tttags.h | 107 + .../freetype-2.4.9/include/freetype/ttunpat.h | 59 + .../src/freetype-2.4.9/include/ft2build.h | 39 + .../externals/src/freetype-2.4.9/modules.cfg | 255 + .../externals/src/freetype-2.4.9/objs/README | 2 + .../externals/src/freetype-2.4.9/src/Jamfile | 25 + .../src/freetype-2.4.9/src/autofit/Jamfile | 39 + .../src/freetype-2.4.9/src/autofit/afangles.c | 292 + .../src/freetype-2.4.9/src/autofit/afangles.h | 7 + .../src/freetype-2.4.9/src/autofit/afcjk.c | 2267 ++ .../src/freetype-2.4.9/src/autofit/afcjk.h | 141 + .../src/freetype-2.4.9/src/autofit/afdummy.c | 61 + .../src/freetype-2.4.9/src/autofit/afdummy.h | 42 + .../src/freetype-2.4.9/src/autofit/aferrors.h | 41 + .../src/freetype-2.4.9/src/autofit/afglobal.c | 319 + .../src/freetype-2.4.9/src/autofit/afglobal.h | 71 + .../src/freetype-2.4.9/src/autofit/afhints.c | 1299 + .../src/freetype-2.4.9/src/autofit/afhints.h | 467 + .../src/freetype-2.4.9/src/autofit/afindic.c | 155 + .../src/freetype-2.4.9/src/autofit/afindic.h | 40 + .../src/freetype-2.4.9/src/autofit/aflatin.c | 2359 ++ .../src/freetype-2.4.9/src/autofit/aflatin.h | 211 + .../src/freetype-2.4.9/src/autofit/aflatin2.c | 2374 ++ .../src/freetype-2.4.9/src/autofit/aflatin2.h | 39 + .../src/freetype-2.4.9/src/autofit/afloader.c | 554 + .../src/freetype-2.4.9/src/autofit/afloader.h | 73 + .../src/freetype-2.4.9/src/autofit/afmodule.c | 93 + .../src/freetype-2.4.9/src/autofit/afmodule.h | 37 + .../src/freetype-2.4.9/src/autofit/afpic.c | 110 + .../src/freetype-2.4.9/src/autofit/afpic.h | 76 + .../src/freetype-2.4.9/src/autofit/aftypes.h | 370 + .../src/freetype-2.4.9/src/autofit/afwarp.c | 374 + .../src/freetype-2.4.9/src/autofit/afwarp.h | 64 + .../src/freetype-2.4.9/src/autofit/autofit.c | 41 + .../src/freetype-2.4.9/src/autofit/module.mk | 23 + .../src/freetype-2.4.9/src/autofit/rules.mk | 79 + .../src/freetype-2.4.9/src/base/Jamfile | 60 + .../src/freetype-2.4.9/src/base/basepic.c | 93 + .../src/freetype-2.4.9/src/base/basepic.h | 77 + .../src/freetype-2.4.9/src/base/ftadvanc.c | 160 + .../src/freetype-2.4.9/src/base/ftapi.c | 121 + .../src/freetype-2.4.9/src/base/ftbase.c | 41 + .../src/freetype-2.4.9/src/base/ftbase.h | 69 + .../src/freetype-2.4.9/src/base/ftbbox.c | 662 + .../src/freetype-2.4.9/src/base/ftbdf.c | 88 + .../src/freetype-2.4.9/src/base/ftbitmap.c | 667 + .../src/freetype-2.4.9/src/base/ftcalc.c | 958 + .../src/freetype-2.4.9/src/base/ftcid.c | 117 + .../src/freetype-2.4.9/src/base/ftdbgmem.c | 997 + .../src/freetype-2.4.9/src/base/ftdebug.c | 246 + .../src/freetype-2.4.9/src/base/ftfstype.c | 62 + .../src/freetype-2.4.9/src/base/ftgasp.c | 61 + .../src/freetype-2.4.9/src/base/ftgloadr.c | 401 + .../src/freetype-2.4.9/src/base/ftglyph.c | 627 + .../src/freetype-2.4.9/src/base/ftgxval.c | 140 + .../src/freetype-2.4.9/src/base/ftinit.c | 282 + .../src/freetype-2.4.9/src/base/ftlcdfil.c | 376 + .../src/freetype-2.4.9/src/base/ftmac.c | 1061 + .../src/freetype-2.4.9/src/base/ftmm.c | 202 + .../src/freetype-2.4.9/src/base/ftobjs.c | 4751 ++++ .../src/freetype-2.4.9/src/base/ftotval.c | 89 + .../src/freetype-2.4.9/src/base/ftoutln.c | 1129 + .../src/freetype-2.4.9/src/base/ftpatent.c | 286 + .../src/freetype-2.4.9/src/base/ftpfr.c | 144 + .../src/freetype-2.4.9/src/base/ftpic.c | 54 + .../src/freetype-2.4.9/src/base/ftrfork.c | 849 + .../src/freetype-2.4.9/src/base/ftsnames.c | 94 + .../src/freetype-2.4.9/src/base/ftstream.c | 864 + .../src/freetype-2.4.9/src/base/ftstroke.c | 2419 ++ .../src/freetype-2.4.9/src/base/ftsynth.c | 160 + .../src/freetype-2.4.9/src/base/ftsystem.c | 320 + .../src/freetype-2.4.9/src/base/fttrigon.c | 546 + .../src/freetype-2.4.9/src/base/fttype1.c | 120 + .../src/freetype-2.4.9/src/base/ftutil.c | 501 + .../src/freetype-2.4.9/src/base/ftwinfnt.c | 51 + .../src/freetype-2.4.9/src/base/ftxf86.c | 40 + .../src/freetype-2.4.9/src/base/rules.mk | 96 + .../src/freetype-2.4.9/src/bdf/Jamfile | 29 + .../src/freetype-2.4.9/src/bdf/README | 148 + .../src/freetype-2.4.9/src/bdf/bdf.c | 34 + .../src/freetype-2.4.9/src/bdf/bdf.h | 297 + .../src/freetype-2.4.9/src/bdf/bdfdrivr.c | 882 + .../src/freetype-2.4.9/src/bdf/bdfdrivr.h | 80 + .../src/freetype-2.4.9/src/bdf/bdferror.h | 45 + .../src/freetype-2.4.9/src/bdf/bdflib.c | 2613 ++ .../src/freetype-2.4.9/src/bdf/module.mk | 34 + .../src/freetype-2.4.9/src/bdf/rules.mk | 81 + .../src/freetype-2.4.9/src/bzip2/Jamfile | 19 + .../src/freetype-2.4.9/src/bzip2/ftbzip2.c | 511 + .../src/freetype-2.4.9/src/bzip2/rules.mk | 63 + .../src/freetype-2.4.9/src/cache/Jamfile | 43 + .../src/freetype-2.4.9/src/cache/ftcache.c | 31 + .../src/freetype-2.4.9/src/cache/ftcbasic.c | 855 + .../src/freetype-2.4.9/src/cache/ftccache.c | 626 + .../src/freetype-2.4.9/src/cache/ftccache.h | 359 + .../src/freetype-2.4.9/src/cache/ftccback.h | 92 + .../src/freetype-2.4.9/src/cache/ftccmap.c | 438 + .../src/freetype-2.4.9/src/cache/ftcerror.h | 41 + .../src/freetype-2.4.9/src/cache/ftcglyph.c | 219 + .../src/freetype-2.4.9/src/cache/ftcglyph.h | 329 + .../src/freetype-2.4.9/src/cache/ftcimage.c | 163 + .../src/freetype-2.4.9/src/cache/ftcimage.h | 107 + .../src/freetype-2.4.9/src/cache/ftcmanag.c | 743 + .../src/freetype-2.4.9/src/cache/ftcmanag.h | 175 + .../src/freetype-2.4.9/src/cache/ftcmru.c | 357 + .../src/freetype-2.4.9/src/cache/ftcmru.h | 246 + .../src/freetype-2.4.9/src/cache/ftcsbits.c | 421 + .../src/freetype-2.4.9/src/cache/ftcsbits.h | 103 + .../src/freetype-2.4.9/src/cache/rules.mk | 80 + .../src/freetype-2.4.9/src/cff/Jamfile | 29 + .../src/freetype-2.4.9/src/cff/cff.c | 30 + .../src/freetype-2.4.9/src/cff/cffcmap.c | 208 + .../src/freetype-2.4.9/src/cff/cffcmap.h | 67 + .../src/freetype-2.4.9/src/cff/cffdrivr.c | 688 + .../src/freetype-2.4.9/src/cff/cffdrivr.h | 38 + .../src/freetype-2.4.9/src/cff/cfferrs.h | 42 + .../src/freetype-2.4.9/src/cff/cffgload.c | 2972 +++ .../src/freetype-2.4.9/src/cff/cffgload.h | 201 + .../src/freetype-2.4.9/src/cff/cffload.c | 1666 ++ .../src/freetype-2.4.9/src/cff/cffload.h | 83 + .../src/freetype-2.4.9/src/cff/cffobjs.c | 1074 + .../src/freetype-2.4.9/src/cff/cffobjs.h | 181 + .../src/freetype-2.4.9/src/cff/cffparse.c | 1112 + .../src/freetype-2.4.9/src/cff/cffparse.h | 106 + .../src/freetype-2.4.9/src/cff/cffpic.c | 148 + .../src/freetype-2.4.9/src/cff/cffpic.h | 87 + .../src/freetype-2.4.9/src/cff/cfftoken.h | 97 + .../src/freetype-2.4.9/src/cff/cfftypes.h | 281 + .../src/freetype-2.4.9/src/cff/module.mk | 23 + .../src/freetype-2.4.9/src/cff/rules.mk | 73 + .../src/freetype-2.4.9/src/cid/Jamfile | 29 + .../src/freetype-2.4.9/src/cid/ciderrs.h | 41 + .../src/freetype-2.4.9/src/cid/cidgload.c | 442 + .../src/freetype-2.4.9/src/cid/cidgload.h | 51 + .../src/freetype-2.4.9/src/cid/cidload.c | 690 + .../src/freetype-2.4.9/src/cid/cidload.h | 53 + .../src/freetype-2.4.9/src/cid/cidobjs.c | 491 + .../src/freetype-2.4.9/src/cid/cidobjs.h | 154 + .../src/freetype-2.4.9/src/cid/cidparse.c | 225 + .../src/freetype-2.4.9/src/cid/cidparse.h | 123 + .../src/freetype-2.4.9/src/cid/cidriver.c | 241 + .../src/freetype-2.4.9/src/cid/cidriver.h | 43 + .../src/freetype-2.4.9/src/cid/cidtoken.h | 112 + .../src/freetype-2.4.9/src/cid/module.mk | 23 + .../src/freetype-2.4.9/src/cid/rules.mk | 70 + .../src/freetype-2.4.9/src/cid/type1cid.c | 29 + .../src/freetype-2.4.9/src/gxvalid/Jamfile | 33 + .../src/freetype-2.4.9/src/gxvalid/README | 532 + .../src/freetype-2.4.9/src/gxvalid/gxvalid.c | 46 + .../src/freetype-2.4.9/src/gxvalid/gxvalid.h | 107 + .../src/freetype-2.4.9/src/gxvalid/gxvbsln.c | 333 + .../src/freetype-2.4.9/src/gxvalid/gxvcommn.c | 1744 ++ .../src/freetype-2.4.9/src/gxvalid/gxvcommn.h | 582 + .../src/freetype-2.4.9/src/gxvalid/gxverror.h | 53 + .../src/freetype-2.4.9/src/gxvalid/gxvfeat.c | 339 + .../src/freetype-2.4.9/src/gxvalid/gxvfeat.h | 172 + .../src/freetype-2.4.9/src/gxvalid/gxvfgen.c | 482 + .../src/freetype-2.4.9/src/gxvalid/gxvjust.c | 717 + .../src/freetype-2.4.9/src/gxvalid/gxvkern.c | 922 + .../src/freetype-2.4.9/src/gxvalid/gxvlcar.c | 223 + .../src/freetype-2.4.9/src/gxvalid/gxvmod.c | 285 + .../src/freetype-2.4.9/src/gxvalid/gxvmod.h | 50 + .../src/freetype-2.4.9/src/gxvalid/gxvmort.c | 296 + .../src/freetype-2.4.9/src/gxvalid/gxvmort.h | 93 + .../src/freetype-2.4.9/src/gxvalid/gxvmort0.c | 151 + .../src/freetype-2.4.9/src/gxvalid/gxvmort1.c | 259 + .../src/freetype-2.4.9/src/gxvalid/gxvmort2.c | 311 + .../src/freetype-2.4.9/src/gxvalid/gxvmort4.c | 125 + .../src/freetype-2.4.9/src/gxvalid/gxvmort5.c | 233 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx.c | 199 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx.h | 67 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx0.c | 111 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx1.c | 277 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx2.c | 327 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx4.c | 55 + .../src/freetype-2.4.9/src/gxvalid/gxvmorx5.c | 225 + .../src/freetype-2.4.9/src/gxvalid/gxvopbd.c | 217 + .../src/freetype-2.4.9/src/gxvalid/gxvprop.c | 329 + .../src/freetype-2.4.9/src/gxvalid/gxvtrak.c | 286 + .../src/freetype-2.4.9/src/gxvalid/module.mk | 23 + .../src/freetype-2.4.9/src/gxvalid/rules.mk | 94 + .../src/freetype-2.4.9/src/gzip/Jamfile | 16 + .../src/freetype-2.4.9/src/gzip/adler32.c | 48 + .../src/freetype-2.4.9/src/gzip/ftgzip.c | 689 + .../src/freetype-2.4.9/src/gzip/infblock.c | 387 + .../src/freetype-2.4.9/src/gzip/infblock.h | 36 + .../src/freetype-2.4.9/src/gzip/infcodes.c | 250 + .../src/freetype-2.4.9/src/gzip/infcodes.h | 31 + .../src/freetype-2.4.9/src/gzip/inffixed.h | 151 + .../src/freetype-2.4.9/src/gzip/inflate.c | 273 + .../src/freetype-2.4.9/src/gzip/inftrees.c | 468 + .../src/freetype-2.4.9/src/gzip/inftrees.h | 63 + .../src/freetype-2.4.9/src/gzip/infutil.c | 86 + .../src/freetype-2.4.9/src/gzip/infutil.h | 98 + .../src/freetype-2.4.9/src/gzip/rules.mk | 75 + .../src/freetype-2.4.9/src/gzip/zconf.h | 284 + .../src/freetype-2.4.9/src/gzip/zlib.h | 830 + .../src/freetype-2.4.9/src/gzip/zutil.c | 181 + .../src/freetype-2.4.9/src/gzip/zutil.h | 215 + .../src/freetype-2.4.9/src/lzw/Jamfile | 16 + .../src/freetype-2.4.9/src/lzw/ftlzw.c | 413 + .../src/freetype-2.4.9/src/lzw/ftzopen.c | 415 + .../src/freetype-2.4.9/src/lzw/ftzopen.h | 171 + .../src/freetype-2.4.9/src/lzw/rules.mk | 70 + .../src/freetype-2.4.9/src/otvalid/Jamfile | 29 + .../src/freetype-2.4.9/src/otvalid/module.mk | 23 + .../src/freetype-2.4.9/src/otvalid/otvalid.c | 31 + .../src/freetype-2.4.9/src/otvalid/otvalid.h | 78 + .../src/freetype-2.4.9/src/otvalid/otvbase.c | 318 + .../src/freetype-2.4.9/src/otvalid/otvcommn.c | 1086 + .../src/freetype-2.4.9/src/otvalid/otvcommn.h | 437 + .../src/freetype-2.4.9/src/otvalid/otverror.h | 44 + .../src/freetype-2.4.9/src/otvalid/otvgdef.c | 224 + .../src/freetype-2.4.9/src/otvalid/otvgpos.c | 1017 + .../src/freetype-2.4.9/src/otvalid/otvgpos.h | 36 + .../src/freetype-2.4.9/src/otvalid/otvgsub.c | 585 + .../src/freetype-2.4.9/src/otvalid/otvjstf.c | 258 + .../src/freetype-2.4.9/src/otvalid/otvmath.c | 453 + .../src/freetype-2.4.9/src/otvalid/otvmod.c | 282 + .../src/freetype-2.4.9/src/otvalid/otvmod.h | 43 + .../src/freetype-2.4.9/src/otvalid/rules.mk | 78 + .../src/freetype-2.4.9/src/pcf/Jamfile | 29 + .../src/freetype-2.4.9/src/pcf/README | 96 + .../src/freetype-2.4.9/src/pcf/module.mk | 34 + .../src/freetype-2.4.9/src/pcf/pcf.c | 36 + .../src/freetype-2.4.9/src/pcf/pcf.h | 237 + .../src/freetype-2.4.9/src/pcf/pcfdrivr.c | 717 + .../src/freetype-2.4.9/src/pcf/pcfdrivr.h | 48 + .../src/freetype-2.4.9/src/pcf/pcferror.h | 41 + .../src/freetype-2.4.9/src/pcf/pcfread.c | 1278 + .../src/freetype-2.4.9/src/pcf/pcfread.h | 45 + .../src/freetype-2.4.9/src/pcf/pcfutil.c | 104 + .../src/freetype-2.4.9/src/pcf/pcfutil.h | 55 + .../src/freetype-2.4.9/src/pcf/rules.mk | 79 + .../src/freetype-2.4.9/src/pfr/Jamfile | 29 + .../src/freetype-2.4.9/src/pfr/module.mk | 23 + .../src/freetype-2.4.9/src/pfr/pfr.c | 29 + .../src/freetype-2.4.9/src/pfr/pfrcmap.c | 166 + .../src/freetype-2.4.9/src/pfr/pfrcmap.h | 46 + .../src/freetype-2.4.9/src/pfr/pfrdrivr.c | 214 + .../src/freetype-2.4.9/src/pfr/pfrdrivr.h | 43 + .../src/freetype-2.4.9/src/pfr/pfrerror.h | 41 + .../src/freetype-2.4.9/src/pfr/pfrgload.c | 844 + .../src/freetype-2.4.9/src/pfr/pfrgload.h | 49 + .../src/freetype-2.4.9/src/pfr/pfrload.c | 941 + .../src/freetype-2.4.9/src/pfr/pfrload.h | 118 + .../src/freetype-2.4.9/src/pfr/pfrobjs.c | 593 + .../src/freetype-2.4.9/src/pfr/pfrobjs.h | 96 + .../src/freetype-2.4.9/src/pfr/pfrsbit.c | 698 + .../src/freetype-2.4.9/src/pfr/pfrsbit.h | 36 + .../src/freetype-2.4.9/src/pfr/pfrtypes.h | 362 + .../src/freetype-2.4.9/src/pfr/rules.mk | 73 + .../src/freetype-2.4.9/src/psaux/Jamfile | 31 + .../src/freetype-2.4.9/src/psaux/afmparse.c | 961 + .../src/freetype-2.4.9/src/psaux/afmparse.h | 88 + .../src/freetype-2.4.9/src/psaux/module.mk | 23 + .../src/freetype-2.4.9/src/psaux/psaux.c | 34 + .../src/freetype-2.4.9/src/psaux/psauxerr.h | 42 + .../src/freetype-2.4.9/src/psaux/psauxmod.c | 139 + .../src/freetype-2.4.9/src/psaux/psauxmod.h | 42 + .../src/freetype-2.4.9/src/psaux/psconv.c | 480 + .../src/freetype-2.4.9/src/psaux/psconv.h | 71 + .../src/freetype-2.4.9/src/psaux/psobjs.c | 1710 ++ .../src/freetype-2.4.9/src/psaux/psobjs.h | 212 + .../src/freetype-2.4.9/src/psaux/rules.mk | 73 + .../src/freetype-2.4.9/src/psaux/t1cmap.c | 341 + .../src/freetype-2.4.9/src/psaux/t1cmap.h | 105 + .../src/freetype-2.4.9/src/psaux/t1decode.c | 1614 ++ .../src/freetype-2.4.9/src/psaux/t1decode.h | 64 + .../src/freetype-2.4.9/src/pshinter/Jamfile | 29 + .../src/freetype-2.4.9/src/pshinter/module.mk | 23 + .../src/freetype-2.4.9/src/pshinter/pshalgo.c | 2306 ++ .../src/freetype-2.4.9/src/pshinter/pshalgo.h | 255 + .../src/freetype-2.4.9/src/pshinter/pshglob.c | 750 + .../src/freetype-2.4.9/src/pshinter/pshglob.h | 196 + .../freetype-2.4.9/src/pshinter/pshinter.c | 29 + .../src/freetype-2.4.9/src/pshinter/pshmod.c | 118 + .../src/freetype-2.4.9/src/pshinter/pshmod.h | 39 + .../freetype-2.4.9/src/pshinter/pshnterr.h | 41 + .../src/freetype-2.4.9/src/pshinter/pshpic.c | 75 + .../src/freetype-2.4.9/src/pshinter/pshpic.h | 59 + .../src/freetype-2.4.9/src/pshinter/pshrec.c | 1224 + .../src/freetype-2.4.9/src/pshinter/pshrec.h | 176 + .../src/freetype-2.4.9/src/pshinter/rules.mk | 73 + .../src/freetype-2.4.9/src/psnames/Jamfile | 29 + .../src/freetype-2.4.9/src/psnames/module.mk | 23 + .../src/freetype-2.4.9/src/psnames/psmodule.c | 609 + .../src/freetype-2.4.9/src/psnames/psmodule.h | 38 + .../src/freetype-2.4.9/src/psnames/psnamerr.h | 42 + .../src/freetype-2.4.9/src/psnames/psnames.c | 26 + .../src/freetype-2.4.9/src/psnames/pspic.c | 94 + .../src/freetype-2.4.9/src/psnames/pspic.h | 61 + .../src/freetype-2.4.9/src/psnames/pstables.h | 4170 +++ .../src/freetype-2.4.9/src/psnames/rules.mk | 71 + .../src/freetype-2.4.9/src/raster/Jamfile | 29 + .../src/freetype-2.4.9/src/raster/ftmisc.h | 121 + .../src/freetype-2.4.9/src/raster/ftraster.c | 3612 +++ .../src/freetype-2.4.9/src/raster/ftraster.h | 46 + .../src/freetype-2.4.9/src/raster/ftrend1.c | 305 + .../src/freetype-2.4.9/src/raster/ftrend1.h | 44 + .../src/freetype-2.4.9/src/raster/module.mk | 23 + .../src/freetype-2.4.9/src/raster/raster.c | 27 + .../src/freetype-2.4.9/src/raster/rasterrs.h | 42 + .../src/freetype-2.4.9/src/raster/rastpic.c | 97 + .../src/freetype-2.4.9/src/raster/rastpic.h | 63 + .../src/freetype-2.4.9/src/raster/rules.mk | 70 + .../src/freetype-2.4.9/src/sfnt/Jamfile | 29 + .../src/freetype-2.4.9/src/sfnt/module.mk | 23 + .../src/freetype-2.4.9/src/sfnt/rules.mk | 80 + .../src/freetype-2.4.9/src/sfnt/sfdriver.c | 667 + .../src/freetype-2.4.9/src/sfnt/sfdriver.h | 38 + .../src/freetype-2.4.9/src/sfnt/sferrors.h | 42 + .../src/freetype-2.4.9/src/sfnt/sfnt.c | 42 + .../src/freetype-2.4.9/src/sfnt/sfntpic.c | 146 + .../src/freetype-2.4.9/src/sfnt/sfntpic.h | 95 + .../src/freetype-2.4.9/src/sfnt/sfobjs.c | 1163 + .../src/freetype-2.4.9/src/sfnt/sfobjs.h | 54 + .../src/freetype-2.4.9/src/sfnt/ttbdf.c | 250 + .../src/freetype-2.4.9/src/sfnt/ttbdf.h | 46 + .../src/freetype-2.4.9/src/sfnt/ttcmap.c | 3512 +++ .../src/freetype-2.4.9/src/sfnt/ttcmap.h | 125 + .../src/freetype-2.4.9/src/sfnt/ttcmapc.h | 55 + .../src/freetype-2.4.9/src/sfnt/ttkern.c | 306 + .../src/freetype-2.4.9/src/sfnt/ttkern.h | 52 + .../src/freetype-2.4.9/src/sfnt/ttload.c | 1267 + .../src/freetype-2.4.9/src/sfnt/ttload.h | 112 + .../src/freetype-2.4.9/src/sfnt/ttmtx.c | 468 + .../src/freetype-2.4.9/src/sfnt/ttmtx.h | 55 + .../src/freetype-2.4.9/src/sfnt/ttpost.c | 563 + .../src/freetype-2.4.9/src/sfnt/ttpost.h | 46 + .../src/freetype-2.4.9/src/sfnt/ttsbit.c | 1508 ++ .../src/freetype-2.4.9/src/sfnt/ttsbit.h | 79 + .../src/freetype-2.4.9/src/sfnt/ttsbit0.c | 1011 + .../src/freetype-2.4.9/src/smooth/Jamfile | 29 + .../src/freetype-2.4.9/src/smooth/ftgrays.c | 2066 ++ .../src/freetype-2.4.9/src/smooth/ftgrays.h | 58 + .../src/freetype-2.4.9/src/smooth/ftsmerrs.h | 42 + .../src/freetype-2.4.9/src/smooth/ftsmooth.c | 504 + .../src/freetype-2.4.9/src/smooth/ftsmooth.h | 49 + .../src/freetype-2.4.9/src/smooth/ftspic.c | 107 + .../src/freetype-2.4.9/src/smooth/ftspic.h | 69 + .../src/freetype-2.4.9/src/smooth/module.mk | 27 + .../src/freetype-2.4.9/src/smooth/rules.mk | 70 + .../src/freetype-2.4.9/src/smooth/smooth.c | 27 + .../src/freetype-2.4.9/src/tools/Jamfile | 5 + .../src/freetype-2.4.9/src/tools/apinames.c | 450 + .../src/freetype-2.4.9/src/tools/chktrcmp.py | 114 + .../src/freetype-2.4.9/src/tools/cordic.py | 79 + .../src/tools/docmaker/content.py | 584 + .../src/tools/docmaker/docbeauty.py | 113 + .../src/tools/docmaker/docmaker.py | 106 + .../src/tools/docmaker/formatter.py | 188 + .../src/tools/docmaker/sources.py | 347 + .../src/tools/docmaker/tohtml.py | 593 + .../src/tools/docmaker/utils.py | 132 + .../src/tools/ftrandom/Makefile | 35 + .../freetype-2.4.9/src/tools/ftrandom/README | 48 + .../src/tools/ftrandom/ftrandom.c | 659 + .../src/freetype-2.4.9/src/tools/glnames.py | 5487 ++++ .../src/freetype-2.4.9/src/tools/test_afm.c | 157 + .../src/freetype-2.4.9/src/tools/test_bbox.c | 160 + .../src/freetype-2.4.9/src/tools/test_trig.c | 236 + .../src/freetype-2.4.9/src/truetype/Jamfile | 29 + .../src/freetype-2.4.9/src/truetype/module.mk | 23 + .../src/freetype-2.4.9/src/truetype/rules.mk | 73 + .../freetype-2.4.9/src/truetype/truetype.c | 37 + .../freetype-2.4.9/src/truetype/ttdriver.c | 502 + .../freetype-2.4.9/src/truetype/ttdriver.h | 38 + .../freetype-2.4.9/src/truetype/tterrors.h | 41 + .../src/freetype-2.4.9/src/truetype/ttgload.c | 2111 ++ .../src/freetype-2.4.9/src/truetype/ttgload.h | 61 + .../src/freetype-2.4.9/src/truetype/ttgxvar.c | 1551 ++ .../src/freetype-2.4.9/src/truetype/ttgxvar.h | 182 + .../freetype-2.4.9/src/truetype/ttinterp.c | 8267 ++++++ .../freetype-2.4.9/src/truetype/ttinterp.h | 320 + .../src/freetype-2.4.9/src/truetype/ttobjs.c | 1286 + .../src/freetype-2.4.9/src/truetype/ttobjs.h | 435 + .../src/freetype-2.4.9/src/truetype/ttpic.c | 100 + .../src/freetype-2.4.9/src/truetype/ttpic.h | 66 + .../src/freetype-2.4.9/src/truetype/ttpload.c | 599 + .../src/freetype-2.4.9/src/truetype/ttpload.h | 75 + .../src/freetype-2.4.9/src/type1/Jamfile | 29 + .../src/freetype-2.4.9/src/type1/module.mk | 23 + .../src/freetype-2.4.9/src/type1/rules.mk | 73 + .../src/freetype-2.4.9/src/type1/t1afm.c | 396 + .../src/freetype-2.4.9/src/type1/t1afm.h | 54 + .../src/freetype-2.4.9/src/type1/t1driver.c | 730 + .../src/freetype-2.4.9/src/type1/t1driver.h | 42 + .../src/freetype-2.4.9/src/type1/t1errors.h | 41 + .../src/freetype-2.4.9/src/type1/t1gload.c | 517 + .../src/freetype-2.4.9/src/type1/t1gload.h | 53 + .../src/freetype-2.4.9/src/type1/t1load.c | 2243 ++ .../src/freetype-2.4.9/src/type1/t1load.h | 102 + .../src/freetype-2.4.9/src/type1/t1objs.c | 615 + .../src/freetype-2.4.9/src/type1/t1objs.h | 160 + .../src/freetype-2.4.9/src/type1/t1parse.c | 494 + .../src/freetype-2.4.9/src/type1/t1parse.h | 135 + .../src/freetype-2.4.9/src/type1/t1tokens.h | 143 + .../src/freetype-2.4.9/src/type1/type1.c | 33 + .../src/freetype-2.4.9/src/type42/Jamfile | 29 + .../src/freetype-2.4.9/src/type42/module.mk | 23 + .../src/freetype-2.4.9/src/type42/rules.mk | 70 + .../src/freetype-2.4.9/src/type42/t42drivr.c | 247 + .../src/freetype-2.4.9/src/type42/t42drivr.h | 42 + .../src/freetype-2.4.9/src/type42/t42error.h | 41 + .../src/freetype-2.4.9/src/type42/t42objs.c | 679 + .../src/freetype-2.4.9/src/type42/t42objs.h | 124 + .../src/freetype-2.4.9/src/type42/t42parse.c | 1188 + .../src/freetype-2.4.9/src/type42/t42parse.h | 90 + .../src/freetype-2.4.9/src/type42/t42types.h | 56 + .../src/freetype-2.4.9/src/type42/type42.c | 25 + .../src/freetype-2.4.9/src/winfonts/Jamfile | 16 + .../src/freetype-2.4.9/src/winfonts/fnterrs.h | 42 + .../src/freetype-2.4.9/src/winfonts/module.mk | 23 + .../src/freetype-2.4.9/src/winfonts/rules.mk | 65 + .../src/freetype-2.4.9/src/winfonts/winfnt.c | 1159 + .../src/freetype-2.4.9/src/winfonts/winfnt.h | 171 + .../externals/src/freetype-2.4.9/version.sed | 5 + .../externals/src/freetype-2.4.9/vms_make.com | 1286 + extensions/externals/src/harfbuzz/.travis.yml | 15 + extensions/externals/src/harfbuzz/AUTHORS | 8 + extensions/externals/src/harfbuzz/Android.mk | 79 + extensions/externals/src/harfbuzz/COPYING | 36 + extensions/externals/src/harfbuzz/INSTALL | 370 + extensions/externals/src/harfbuzz/Makefile.am | 79 + extensions/externals/src/harfbuzz/Makefile.in | 871 + extensions/externals/src/harfbuzz/NEWS | 809 + extensions/externals/src/harfbuzz/README | 7 + extensions/externals/src/harfbuzz/THANKS | 7 + extensions/externals/src/harfbuzz/TODO | 81 + extensions/externals/src/harfbuzz/ar-lib | 265 + extensions/externals/src/harfbuzz/autogen.sh | 40 + extensions/externals/src/harfbuzz/compile | 310 + .../externals/src/harfbuzz/config.guess | 1530 ++ extensions/externals/src/harfbuzz/config.h.in | 144 + extensions/externals/src/harfbuzz/config.sub | 1773 ++ .../src/harfbuzz/config/android/config.h | 145 + .../src/harfbuzz/config/linux/config.h | 145 + .../src/harfbuzz/config/win32/config.h | 145 + .../src/harfbuzz/config/win32/stdint.h | 214 + extensions/externals/src/harfbuzz/configure | 21071 ++++++++++++++++ .../externals/src/harfbuzz/configure.ac | 432 + extensions/externals/src/harfbuzz/depcomp | 688 + .../externals/src/harfbuzz/docs/Makefile.am | 1 + .../externals/src/harfbuzz/docs/Makefile.in | 609 + .../src/harfbuzz/docs/reference/Makefile.am | 111 + .../src/harfbuzz/docs/reference/Makefile.in | 757 + .../harfbuzz/docs/reference/harfbuzz-docs.xml | 65 + .../docs/reference/harfbuzz-overrides.txt | 0 .../docs/reference/harfbuzz-sections.txt | 483 + .../harfbuzz/docs/reference/version.xml.in | 1 + extensions/externals/src/harfbuzz/git.mk | 305 + .../externals/src/harfbuzz/gtk-doc.make | 256 + .../externals/src/harfbuzz/harfbuzz.doap | 24 + .../src/harfbuzz/harfbuzz_2008.vcproj | 944 + .../src/harfbuzz/harfbuzz_2010.vcxproj | 407 + .../src/harfbuzz/harfbuzz_2012.vcxproj | 406 + extensions/externals/src/harfbuzz/install-sh | 527 + extensions/externals/src/harfbuzz/libtool | 10246 ++++++++ extensions/externals/src/harfbuzz/ltmain.sh | 9661 +++++++ .../externals/src/harfbuzz/m4/ax_pthread.m4 | 309 + .../externals/src/harfbuzz/m4/gtk-doc.m4 | 67 + extensions/externals/src/harfbuzz/m4/pkg.m4 | 157 + extensions/externals/src/harfbuzz/missing | 331 + .../src/harfbuzz/src/.hb-buffer.h.swp | Bin 0 -> 16384 bytes .../externals/src/harfbuzz/src/.hb-icu.h.swp | Bin 0 -> 12288 bytes .../src/harfbuzz/src/.hb-shape.h.swp | Bin 0 -> 12288 bytes .../externals/src/harfbuzz/src/.hb.h.swp | Bin 0 -> 12288 bytes .../externals/src/harfbuzz/src/Makefile.am | 391 + .../externals/src/harfbuzz/src/Makefile.in | 1872 ++ .../src/harfbuzz/src/check-c-linkage-decls.sh | 28 + .../externals/src/harfbuzz/src/check-defs.sh | 44 + .../src/harfbuzz/src/check-header-guards.sh | 25 + .../src/harfbuzz/src/check-includes.sh | 44 + .../src/harfbuzz/src/check-libstdc++.sh | 34 + .../src/harfbuzz/src/check-static-inits.sh | 39 + .../src/harfbuzz/src/check-symbols.sh | 37 + .../src/harfbuzz/src/gen-arabic-table.py | 197 + .../src/harfbuzz/src/gen-indic-table.py | 208 + .../src/harfbuzz/src/harfbuzz-gobject.pc.in | 12 + .../src/harfbuzz/src/harfbuzz-icu.pc.in | 13 + .../externals/src/harfbuzz/src/harfbuzz.pc.in | 11 + .../src/harfbuzz/src/hb-atomic-private.hh | 132 + .../externals/src/harfbuzz/src/hb-blob.cc | 475 + .../externals/src/harfbuzz/src/hb-blob.h | 127 + .../src/hb-buffer-deserialize-json.hh | 643 + .../src/hb-buffer-deserialize-json.rl | 132 + .../src/hb-buffer-deserialize-text.hh | 571 + .../src/hb-buffer-deserialize-text.rl | 126 + .../src/harfbuzz/src/hb-buffer-private.hh | 202 + .../src/harfbuzz/src/hb-buffer-serialize.cc | 399 + .../externals/src/harfbuzz/src/hb-buffer.cc | 1446 ++ .../externals/src/harfbuzz/src/hb-buffer.h | 323 + .../src/harfbuzz/src/hb-cache-private.hh | 74 + .../externals/src/harfbuzz/src/hb-common.cc | 577 + .../externals/src/harfbuzz/src/hb-common.h | 333 + .../externals/src/harfbuzz/src/hb-coretext.cc | 757 + .../externals/src/harfbuzz/src/hb-coretext.h | 46 + .../src/harfbuzz/src/hb-deprecated.h | 51 + .../src/harfbuzz/src/hb-face-private.hh | 108 + .../externals/src/harfbuzz/src/hb-face.cc | 482 + .../externals/src/harfbuzz/src/hb-face.h | 117 + .../src/harfbuzz/src/hb-fallback-shape.cc | 128 + .../src/harfbuzz/src/hb-font-private.hh | 410 + .../externals/src/harfbuzz/src/hb-font.cc | 1239 + .../externals/src/harfbuzz/src/hb-font.h | 507 + .../externals/src/harfbuzz/src/hb-ft.cc | 522 + extensions/externals/src/harfbuzz/src/hb-ft.h | 62 + .../externals/src/harfbuzz/src/hb-glib.cc | 384 + .../externals/src/harfbuzz/src/hb-glib.h | 52 + .../src/harfbuzz/src/hb-gobject-enums.cc.tmpl | 73 + .../src/harfbuzz/src/hb-gobject-enums.h.tmpl | 55 + .../src/harfbuzz/src/hb-gobject-structs.cc | 120 + .../src/harfbuzz/src/hb-gobject-structs.h | 95 + .../externals/src/harfbuzz/src/hb-gobject.h | 40 + .../src/harfbuzz/src/hb-graphite2.cc | 369 + .../externals/src/harfbuzz/src/hb-graphite2.h | 48 + .../externals/src/harfbuzz/src/hb-icu.cc | 372 + .../externals/src/harfbuzz/src/hb-icu.h | 52 + .../src/harfbuzz/src/hb-mutex-private.hh | 130 + .../src/harfbuzz/src/hb-object-private.hh | 227 + .../src/harfbuzz/src/hb-open-file-private.hh | 261 + .../src/harfbuzz/src/hb-open-type-private.hh | 981 + .../src/harfbuzz/src/hb-ot-head-table.hh | 149 + .../src/harfbuzz/src/hb-ot-hhea-table.hh | 97 + .../src/harfbuzz/src/hb-ot-hmtx-table.hh | 92 + .../src/hb-ot-layout-common-private.hh | 1170 + .../harfbuzz/src/hb-ot-layout-gdef-table.hh | 431 + .../harfbuzz/src/hb-ot-layout-gpos-table.hh | 1629 ++ .../harfbuzz/src/hb-ot-layout-gsub-table.hh | 1427 ++ .../src/hb-ot-layout-gsubgpos-private.hh | 2449 ++ .../harfbuzz/src/hb-ot-layout-jstf-table.hh | 229 + .../src/harfbuzz/src/hb-ot-layout-private.hh | 296 + .../src/harfbuzz/src/hb-ot-layout.cc | 911 + .../externals/src/harfbuzz/src/hb-ot-layout.h | 294 + .../src/harfbuzz/src/hb-ot-map-private.hh | 247 + .../externals/src/harfbuzz/src/hb-ot-map.cc | 275 + .../src/harfbuzz/src/hb-ot-maxp-table.hh | 69 + .../src/harfbuzz/src/hb-ot-name-table.hh | 134 + .../hb-ot-shape-complex-arabic-fallback.hh | 260 + .../src/hb-ot-shape-complex-arabic-table.hh | 942 + .../src/hb-ot-shape-complex-arabic.cc | 356 + .../src/hb-ot-shape-complex-default.cc | 220 + .../src/hb-ot-shape-complex-indic-machine.hh | 1443 ++ .../src/hb-ot-shape-complex-indic-machine.rl | 124 + .../src/hb-ot-shape-complex-indic-private.hh | 151 + .../src/hb-ot-shape-complex-indic-table.cc | 869 + .../harfbuzz/src/hb-ot-shape-complex-indic.cc | 1673 ++ .../hb-ot-shape-complex-myanmar-machine.hh | 391 + .../hb-ot-shape-complex-myanmar-machine.rl | 125 + .../src/hb-ot-shape-complex-myanmar.cc | 534 + .../src/hb-ot-shape-complex-private.hh | 359 + .../src/hb-ot-shape-complex-sea-machine.hh | 224 + .../src/hb-ot-shape-complex-sea-machine.rl | 102 + .../harfbuzz/src/hb-ot-shape-complex-sea.cc | 384 + .../harfbuzz/src/hb-ot-shape-complex-thai.cc | 378 + .../src/hb-ot-shape-fallback-private.hh | 49 + .../src/harfbuzz/src/hb-ot-shape-fallback.cc | 456 + .../src/hb-ot-shape-normalize-private.hh | 70 + .../src/harfbuzz/src/hb-ot-shape-normalize.cc | 408 + .../src/harfbuzz/src/hb-ot-shape-private.hh | 87 + .../externals/src/harfbuzz/src/hb-ot-shape.cc | 667 + .../externals/src/harfbuzz/src/hb-ot-tag.cc | 722 + .../externals/src/harfbuzz/src/hb-ot-tag.h | 59 + extensions/externals/src/harfbuzz/src/hb-ot.h | 49 + .../externals/src/harfbuzz/src/hb-private.hh | 909 + .../src/harfbuzz/src/hb-set-private.hh | 341 + .../externals/src/harfbuzz/src/hb-set.cc | 471 + .../externals/src/harfbuzz/src/hb-set.h | 154 + .../src/harfbuzz/src/hb-shape-plan-private.hh | 60 + .../src/harfbuzz/src/hb-shape-plan.cc | 418 + .../src/harfbuzz/src/hb-shape-plan.h | 89 + .../externals/src/harfbuzz/src/hb-shape.cc | 331 + .../externals/src/harfbuzz/src/hb-shape.h | 81 + .../harfbuzz/src/hb-shaper-impl-private.hh | 43 + .../src/harfbuzz/src/hb-shaper-list.hh | 55 + .../src/harfbuzz/src/hb-shaper-private.hh | 109 + .../externals/src/harfbuzz/src/hb-shaper.cc | 109 + .../externals/src/harfbuzz/src/hb-tt-font.cc | 79 + .../externals/src/harfbuzz/src/hb-ucdn.cc | 208 + .../src/harfbuzz/src/hb-ucdn/COPYING | 13 + .../src/harfbuzz/src/hb-ucdn/Makefile.am | 18 + .../src/harfbuzz/src/hb-ucdn/Makefile.in | 546 + .../externals/src/harfbuzz/src/hb-ucdn/README | 40 + .../externals/src/harfbuzz/src/hb-ucdn/ucdn.c | 281 + .../externals/src/harfbuzz/src/hb-ucdn/ucdn.h | 331 + .../src/harfbuzz/src/hb-ucdn/unicodedata_db.h | 4754 ++++ .../src/harfbuzz/src/hb-unicode-private.hh | 317 + .../externals/src/harfbuzz/src/hb-unicode.cc | 563 + .../externals/src/harfbuzz/src/hb-unicode.h | 445 + .../src/harfbuzz/src/hb-uniscribe.cc | 1015 + .../externals/src/harfbuzz/src/hb-uniscribe.h | 49 + .../src/harfbuzz/src/hb-utf-private.hh | 204 + .../externals/src/harfbuzz/src/hb-version.h | 66 + .../src/harfbuzz/src/hb-version.h.in | 66 + .../externals/src/harfbuzz/src/hb-warning.cc | 66 + extensions/externals/src/harfbuzz/src/hb.h | 47 + extensions/externals/src/harfbuzz/src/main.cc | 197 + .../externals/src/harfbuzz/src/sample.py | 13 + .../src/harfbuzz/src/test-buffer-serialize.cc | 126 + .../src/harfbuzz/src/test-size-params.cc | 93 + .../src/harfbuzz/src/test-would-substitute.cc | 103 + extensions/externals/src/harfbuzz/src/test.cc | 133 + .../externals/src/harfbuzz/util/Makefile.am | 75 + .../externals/src/harfbuzz/util/Makefile.in | 728 + .../externals/src/harfbuzz/util/ansi-print.cc | 425 + .../externals/src/harfbuzz/util/ansi-print.hh | 39 + .../src/harfbuzz/util/hb-ot-shape-closure.cc | 115 + .../externals/src/harfbuzz/util/hb-shape.cc | 128 + .../externals/src/harfbuzz/util/hb-view.cc | 37 + .../src/harfbuzz/util/helper-cairo-ansi.cc | 102 + .../src/harfbuzz/util/helper-cairo-ansi.hh | 39 + .../src/harfbuzz/util/helper-cairo.cc | 481 + .../src/harfbuzz/util/helper-cairo.hh | 82 + .../src/harfbuzz/util/main-font-text.hh | 80 + .../externals/src/harfbuzz/util/options.cc | 697 + .../externals/src/harfbuzz/util/options.hh | 411 + .../src/harfbuzz/util/shape-consumer.hh | 89 + .../externals/src/harfbuzz/util/view-cairo.cc | 126 + .../externals/src/harfbuzz/util/view-cairo.hh | 101 + extensions/externals/src/ucdn/CMakeLists.txt | 19 + extensions/externals/src/ucdn/PYTHON-LICENSE | 290 + extensions/externals/src/ucdn/README | 33 + extensions/externals/src/ucdn/hb-ucdn.h | 198 + .../externals/src/ucdn/makeunicodedata.py | 1492 ++ extensions/externals/src/ucdn/ucdn-test.c | 56 + extensions/externals/src/ucdn/ucdn.c | 282 + extensions/externals/src/ucdn/ucdn.h | 298 + .../externals/src/ucdn/unicodedata_db.h | 4754 ++++ extensions/include/NV/NvGfxAPI.h | 4 +- extensions/include/NV/NvLogs.h | 4 +- extensions/include/NV/NvMath.h | 2 +- extensions/include/NV/NvMatrix.h | 2 +- extensions/include/NV/NvPlatformGL.h | 4 +- extensions/include/NV/NvQuaternion.h | 2 +- extensions/include/NV/NvShaderMappings.h | 4 +- extensions/include/NV/NvStopWatch.h | 4 +- extensions/include/NV/NvString.h | 4 +- extensions/include/NV/NvTime.h | 4 +- extensions/include/NV/NvTokenizer.h | 4 +- extensions/include/NV/NvVector.h | 2 +- extensions/include/NvAppBase/NvAppBase.h | 4 +- .../include/NvAppBase/NvFramerateCounter.h | 4 +- extensions/include/NvAppBase/NvGLAppContext.h | 4 +- .../include/NvAppBase/NvInputTransformer.h | 4 +- extensions/include/NvAppBase/NvKeyboard.h | 6 +- .../include/NvAppBase/NvPlatformContext.h | 4 +- extensions/include/NvAppBase/NvSampleApp.h | 6 +- .../include/NvAssetLoader/NvAssetLoader.h | 4 +- extensions/include/NvGLESWrapper/NvES31.h | 4 +- extensions/include/NvGLESWrapper/NvES31AEP.h | 4 +- .../include/NvGLESWrapper/NvES31AEPFuncs.h | 4 +- .../include/NvGLESWrapper/NvES31AEPGLRemap.h | 4 +- .../include/NvGLESWrapper/NvES31Funcs.h | 4 +- .../include/NvGLESWrapper/NvES31GLRemap.h | 4 +- .../include/NvGLESWrapper/NvWinES31AEP.h | 4 +- extensions/include/NvGLUtils/NvGLSLProgram.h | 4 +- extensions/include/NvGLUtils/NvImage.h | 4 +- extensions/include/NvGLUtils/NvSimpleFBO.h | 4 +- extensions/include/NvGLUtils/NvTimers.h | 4 +- extensions/include/NvGamepad/NvGamepad.h | 5 +- .../include/NvGamepad/NvGamepadAndroid.h | 6 +- extensions/include/NvGamepad/NvGamepadLinux.h | 4 +- .../include/NvGamepad/NvGamepadXInput.h | 4 +- extensions/include/NvModel/NvGLModel.h | 4 +- extensions/include/NvModel/NvModel.h | 4 +- extensions/include/NvModel/NvShapes.h | 4 +- extensions/include/NvUI/NvBitFont.h | 4 +- extensions/include/NvUI/NvGestureDetector.h | 4 +- extensions/include/NvUI/NvGestureEvent.h | 4 +- extensions/include/NvUI/NvPackedColor.h | 4 +- extensions/include/NvUI/NvTweakBar.h | 4 +- extensions/include/NvUI/NvTweakVar.h | 4 +- extensions/include/NvUI/NvUI.h | 4 +- extensions/src/NvAppBase/EngineAndroid.cpp | 4 +- extensions/src/NvAppBase/EngineAndroid.h | 4 +- .../src/NvAppBase/InputCallbacksGLFW.cpp | 4 +- extensions/src/NvAppBase/MainAndroid.cpp | 6 +- extensions/src/NvAppBase/MainLinux.cpp | 10 +- extensions/src/NvAppBase/MainMacOSX.cpp | 10 +- extensions/src/NvAppBase/MainWin32.cpp | 10 +- .../src/NvAppBase/NvAndroidNativeAppGlue.c | 2 +- .../src/NvAppBase/NvAndroidNativeAppGlue.h | 2 +- extensions/src/NvAppBase/NvAppBase.cpp | 4 +- .../src/NvAppBase/NvFramerateCounter.cpp | 4 +- .../src/NvAppBase/NvInputTransformer.cpp | 4 +- extensions/src/NvAppBase/NvLogs.cpp | 4 +- extensions/src/NvAppBase/NvSampleApp.cpp | 73 +- .../java/com/nvidia/NvAppBase/NvAppBase.java | 4 +- .../src/NvAssetLoader/NvAssetLoader.cpp | 4 +- extensions/src/NvEGLUtil/NvEGLUtil.cpp | 4 +- extensions/src/NvEGLUtil/NvEGLUtil.h | 4 +- extensions/src/NvGLUtils/BlockDXT.cpp | 4 +- extensions/src/NvGLUtils/BlockDXT.h | 4 +- extensions/src/NvGLUtils/ColorBlock.cpp | 4 +- extensions/src/NvGLUtils/ColorBlock.h | 4 +- extensions/src/NvGLUtils/NvFilePtr.cpp | 4 +- extensions/src/NvGLUtils/NvFilePtr.h | 4 +- extensions/src/NvGLUtils/NvGLEnums.h | 4 +- extensions/src/NvGLUtils/NvGLSLProgram.cpp | 4 +- extensions/src/NvGLUtils/NvImage.cpp | 4 +- extensions/src/NvGLUtils/NvImageDDS.cpp | 4 +- extensions/src/NvGLUtils/NvImageGL.cpp | 4 +- extensions/src/NvGLUtils/NvTimers.cpp | 4 +- extensions/src/NvGamepad/NvGamepadAndroid.cpp | 35 +- extensions/src/NvGamepad/NvGamepadLinux.cpp | 4 +- extensions/src/NvGamepad/NvGamepadXInput.cpp | 4 +- extensions/src/NvModel/NvGLModel.cpp | 4 +- extensions/src/NvModel/NvModel.cpp | 4 +- extensions/src/NvModel/NvModelObj.cpp | 4 +- extensions/src/NvModel/NvModelQuery.cpp | 4 +- extensions/src/NvModel/NvShapes.cpp | 4 +- extensions/src/NvUI/NvAFont.h | 4 +- extensions/src/NvUI/NvBitFont.cpp | 4 +- extensions/src/NvUI/NvEmbeddedAsset.cpp | 4 +- extensions/src/NvUI/NvEmbeddedAsset.h | 4 +- extensions/src/NvUI/NvGestureDetector.cpp | 4 +- extensions/src/NvUI/NvTweakBar.cpp | 4 +- extensions/src/NvUI/NvTweakVar.cpp | 4 +- extensions/src/NvUI/NvUI.cpp | 4 +- extensions/src/NvUI/NvUIAssetData.h | 4 +- extensions/src/NvUI/NvUIButton.cpp | 4 +- extensions/src/NvUI/NvUIContainer.cpp | 4 +- extensions/src/NvUI/NvUIGraphic.cpp | 4 +- extensions/src/NvUI/NvUIGraphicFrame.cpp | 4 +- extensions/src/NvUI/NvUIPopup.cpp | 4 +- extensions/src/NvUI/NvUISlider.cpp | 4 +- extensions/src/NvUI/NvUIText.cpp | 4 +- extensions/src/NvUI/NvUITexture.cpp | 4 +- extensions/src/NvUI/NvUIValueBar.cpp | 4 +- extensions/src/NvUI/NvUIValueText.cpp | 4 +- extensions/src/NvUI/NvUIWindow.cpp | 4 +- .../AllSamples.xpj.AllSamples.Makefile | 102 +- .../CursiveES.xpj.CursiveES.Makefile | 140 + .../build/linux-arm32/Makefile.BindlessApp.mk | 8 +- .../build/linux-arm32/Makefile.BlendedAA.mk | 8 +- samples/build/linux-arm32/Makefile.Bloom.mk | 8 +- .../Makefile.CascadedShadowMapping.mk | 8 +- .../linux-arm32/Makefile.ComputeBasicGLSL.mk | 8 +- .../linux-arm32/Makefile.ComputeParticles.mk | 8 +- .../Makefile.ComputeWaterSimulation.mk | 8 +- .../Makefile.ConservativeRaster.mk | 8 +- .../build/linux-arm32/Makefile.CursiveES.mk | 175 + samples/build/linux-arm32/Makefile.FXAA.mk | 8 +- .../Makefile.FeedbackParticlesApp.mk | 8 +- samples/build/linux-arm32/Makefile.HDR.mk | 28 +- .../Makefile.InstancedTessellation.mk | 8 +- .../linux-arm32/Makefile.InstancingApp.mk | 8 +- .../build/linux-arm32/Makefile.MotionBlur.mk | 8 +- .../Makefile.MotionBlurAdvanced.mk | 8 +- .../linux-arm32/Makefile.MultiDrawIndirect.mk | 8 +- .../Makefile.NormalBlendedDecal.mk | 8 +- .../linux-arm32/Makefile.OptimizationApp.mk | 8 +- .../Makefile.ParticleUpsampling.mk | 8 +- .../Makefile.PathRenderingBasic.mk | 8 +- .../linux-arm32/Makefile.ShapedTextES.mk | 190 + .../build/linux-arm32/Makefile.SkinningApp.mk | 8 +- .../build/linux-arm32/Makefile.SoftShadows.mk | 8 +- .../Makefile.TerrainTessellation.mk | 8 +- .../build/linux-arm32/Makefile.TextWheelES.mk | 176 + .../Makefile.TextureArrayTerrain.mk | 8 +- .../build/linux-arm32/Makefile.Tiger3DES.mk | 179 + .../build/linux-arm32/Makefile.TigerWarpES.mk | 175 + .../Makefile.WeightedBlendedOIT.mk | 8 +- .../ShapedTextES.xpj.ShapedTextES.Makefile | 164 + .../TextWheelES.xpj.TextWheelES.Makefile | 140 + .../Tiger3DES.xpj.Tiger3DES.Makefile | 140 + .../TigerWarpES.xpj.TigerWarpES.Makefile | 140 + samples/build/linux32/Makefile | 29 +- samples/build/linux32/Makefile.BindlessApp.mk | 107 +- samples/build/linux32/Makefile.BlendedAA.mk | 107 +- samples/build/linux32/Makefile.Bloom.mk | 107 +- .../linux32/Makefile.CascadedShadowMapping.mk | 107 +- .../linux32/Makefile.ComputeBasicGLSL.mk | 107 +- .../linux32/Makefile.ComputeParticles.mk | 107 +- .../Makefile.ComputeWaterSimulation.mk | 107 +- .../linux32/Makefile.ConservativeRaster.mk | 107 +- samples/build/linux32/Makefile.CursiveES.mk | 236 + samples/build/linux32/Makefile.FXAA.mk | 107 +- .../linux32/Makefile.FeedbackParticlesApp.mk | 107 +- samples/build/linux32/Makefile.HDR.mk | 127 +- samples/build/linux32/Makefile.Half.mk | 107 +- .../linux32/Makefile.InstancedTessellation.mk | 107 +- .../build/linux32/Makefile.InstancingApp.mk | 107 +- samples/build/linux32/Makefile.MotionBlur.mk | 107 +- .../linux32/Makefile.MotionBlurAdvanced.mk | 107 +- .../linux32/Makefile.MultiDrawIndirect.mk | 107 +- .../linux32/Makefile.NormalBlendedDecal.mk | 107 +- samples/build/linux32/Makefile.NvAppBase.mk | 107 +- .../build/linux32/Makefile.NvAssetLoader.mk | 107 +- samples/build/linux32/Makefile.NvGLUtils.mk | 107 +- samples/build/linux32/Makefile.NvGamepad.mk | 107 +- samples/build/linux32/Makefile.NvModel.mk | 107 +- samples/build/linux32/Makefile.NvUI.mk | 107 +- .../build/linux32/Makefile.OptimizationApp.mk | 107 +- .../linux32/Makefile.ParticleUpsampling.mk | 107 +- .../linux32/Makefile.PathRenderingBasic.mk | 107 +- samples/build/linux32/Makefile.R3.mk | 107 +- .../build/linux32/Makefile.ShapedTextES.mk | 247 + samples/build/linux32/Makefile.SkinningApp.mk | 107 +- samples/build/linux32/Makefile.SoftShadows.mk | 107 +- .../linux32/Makefile.TerrainTessellation.mk | 107 +- samples/build/linux32/Makefile.TextWheelES.mk | 237 + .../linux32/Makefile.TextureArrayTerrain.mk | 107 +- samples/build/linux32/Makefile.Tiger3DES.mk | 240 + samples/build/linux32/Makefile.TigerWarpES.mk | 236 + .../linux32/Makefile.WeightedBlendedOIT.mk | 107 +- samples/build/linux32/Makefile.cg4cpp.mk | 259 + samples/build/linux32/Makefile.freetype.mk | 224 + samples/build/linux32/Makefile.harfbuzz.mk | 229 + samples/build/linux64/Makefile | 29 +- samples/build/linux64/Makefile.BindlessApp.mk | 107 +- samples/build/linux64/Makefile.BlendedAA.mk | 107 +- samples/build/linux64/Makefile.Bloom.mk | 107 +- .../linux64/Makefile.CascadedShadowMapping.mk | 107 +- .../linux64/Makefile.ComputeBasicGLSL.mk | 107 +- .../linux64/Makefile.ComputeParticles.mk | 107 +- .../Makefile.ComputeWaterSimulation.mk | 107 +- .../linux64/Makefile.ConservativeRaster.mk | 107 +- samples/build/linux64/Makefile.CursiveES.mk | 240 + samples/build/linux64/Makefile.FXAA.mk | 107 +- .../linux64/Makefile.FeedbackParticlesApp.mk | 107 +- samples/build/linux64/Makefile.HDR.mk | 127 +- samples/build/linux64/Makefile.Half.mk | 107 +- .../linux64/Makefile.InstancedTessellation.mk | 107 +- .../build/linux64/Makefile.InstancingApp.mk | 107 +- samples/build/linux64/Makefile.MotionBlur.mk | 107 +- .../linux64/Makefile.MotionBlurAdvanced.mk | 107 +- .../linux64/Makefile.MultiDrawIndirect.mk | 107 +- .../linux64/Makefile.NormalBlendedDecal.mk | 107 +- samples/build/linux64/Makefile.NvAppBase.mk | 107 +- .../build/linux64/Makefile.NvAssetLoader.mk | 107 +- samples/build/linux64/Makefile.NvGLUtils.mk | 107 +- samples/build/linux64/Makefile.NvGamepad.mk | 107 +- samples/build/linux64/Makefile.NvModel.mk | 107 +- samples/build/linux64/Makefile.NvUI.mk | 107 +- .../build/linux64/Makefile.OptimizationApp.mk | 107 +- .../linux64/Makefile.ParticleUpsampling.mk | 107 +- .../linux64/Makefile.PathRenderingBasic.mk | 107 +- samples/build/linux64/Makefile.R3.mk | 107 +- .../build/linux64/Makefile.ShapedTextES.mk | 251 + samples/build/linux64/Makefile.SkinningApp.mk | 107 +- samples/build/linux64/Makefile.SoftShadows.mk | 107 +- .../linux64/Makefile.TerrainTessellation.mk | 107 +- samples/build/linux64/Makefile.TextWheelES.mk | 241 + .../linux64/Makefile.TextureArrayTerrain.mk | 107 +- samples/build/linux64/Makefile.Tiger3DES.mk | 244 + samples/build/linux64/Makefile.TigerWarpES.mk | 240 + .../linux64/Makefile.WeightedBlendedOIT.mk | 107 +- samples/build/linux64/Makefile.cg4cpp.mk | 261 + samples/build/linux64/Makefile.freetype.mk | 226 + samples/build/linux64/Makefile.harfbuzz.mk | 231 + samples/build/makeandroid/Makefile | 29 +- .../build/makeandroid/Makefile.BindlessApp.mk | 103 +- .../build/makeandroid/Makefile.BlendedAA.mk | 103 +- samples/build/makeandroid/Makefile.Bloom.mk | 103 +- .../Makefile.CascadedShadowMapping.mk | 103 +- .../makeandroid/Makefile.ComputeBasicGLSL.mk | 103 +- .../makeandroid/Makefile.ComputeParticles.mk | 103 +- .../Makefile.ComputeWaterSimulation.mk | 103 +- .../Makefile.ConservativeRaster.mk | 103 +- .../build/makeandroid/Makefile.CursiveES.mk | 244 + samples/build/makeandroid/Makefile.FXAA.mk | 103 +- .../Makefile.FeedbackParticlesApp.mk | 103 +- samples/build/makeandroid/Makefile.HDR.mk | 135 +- samples/build/makeandroid/Makefile.Half.mk | 103 +- .../Makefile.InstancedTessellation.mk | 103 +- .../makeandroid/Makefile.InstancingApp.mk | 103 +- .../build/makeandroid/Makefile.MotionBlur.mk | 103 +- .../Makefile.MotionBlurAdvanced.mk | 103 +- .../makeandroid/Makefile.MultiDrawIndirect.mk | 103 +- .../Makefile.NormalBlendedDecal.mk | 103 +- .../build/makeandroid/Makefile.NvAppBase.mk | 103 +- .../makeandroid/Makefile.NvAssetLoader.mk | 103 +- .../build/makeandroid/Makefile.NvEGLUtil.mk | 103 +- .../build/makeandroid/Makefile.NvGLUtils.mk | 103 +- .../build/makeandroid/Makefile.NvGamepad.mk | 103 +- samples/build/makeandroid/Makefile.NvModel.mk | 103 +- samples/build/makeandroid/Makefile.NvUI.mk | 103 +- .../makeandroid/Makefile.OptimizationApp.mk | 103 +- .../Makefile.ParticleUpsampling.mk | 103 +- .../Makefile.PathRenderingBasic.mk | 103 +- samples/build/makeandroid/Makefile.R3.mk | 103 +- .../makeandroid/Makefile.ShapedTextES.mk | 255 + .../build/makeandroid/Makefile.SkinningApp.mk | 103 +- .../build/makeandroid/Makefile.SoftShadows.mk | 103 +- .../Makefile.TerrainTessellation.mk | 103 +- .../build/makeandroid/Makefile.TextWheelES.mk | 245 + .../Makefile.TextureArrayTerrain.mk | 103 +- .../build/makeandroid/Makefile.Tiger3DES.mk | 248 + .../build/makeandroid/Makefile.TigerWarpES.mk | 244 + .../Makefile.WeightedBlendedOIT.mk | 103 +- samples/build/makeandroid/Makefile.cg4cpp.mk | 259 + .../build/makeandroid/Makefile.freetype.mk | 224 + .../build/makeandroid/Makefile.harfbuzz.mk | 225 + samples/build/vs2010android/AllSamples.sln | 123 +- .../build/vs2010android/BindlessApp.vcxproj | 10 +- samples/build/vs2010android/BlendedAA.vcxproj | 10 +- samples/build/vs2010android/Bloom.vcxproj | 10 +- .../CascadedShadowMapping.vcxproj | 12 +- .../vs2010android/ComputeBasicGLSL.vcxproj | 10 +- .../vs2010android/ComputeParticles.vcxproj | 10 +- .../ComputeWaterSimulation.vcxproj | 10 +- .../vs2010android/ConservativeRaster.vcxproj | 10 +- samples/build/vs2010android/CursiveES.sln | 113 + samples/build/vs2010android/CursiveES.vcxproj | 192 + .../vs2010android/CursiveES.vcxproj.filters | 24 + .../vs2010android/CursiveES.vcxproj.user | 7 + samples/build/vs2010android/FXAA.vcxproj | 18 +- .../build/vs2010android/FXAA.vcxproj.filters | 12 + .../FeedbackParticlesApp.vcxproj | 10 +- samples/build/vs2010android/HDR.vcxproj | 62 +- .../build/vs2010android/HDR.vcxproj.filters | 40 +- .../InstancedTessellation.vcxproj | 10 +- .../build/vs2010android/InstancingApp.vcxproj | 10 +- .../build/vs2010android/MotionBlur.vcxproj | 10 +- .../vs2010android/MotionBlurAdvanced.vcxproj | 10 +- .../vs2010android/MultiDrawIndirect.vcxproj | 10 +- .../vs2010android/NormalBlendedDecal.vcxproj | 10 +- .../vs2010android/OptimizationApp.vcxproj | 10 +- .../vs2010android/ParticleUpsampling.vcxproj | 10 +- .../vs2010android/PathRenderingBasic.vcxproj | 10 +- samples/build/vs2010android/ShapedTextES.sln | 131 + .../build/vs2010android/ShapedTextES.vcxproj | 210 + .../ShapedTextES.vcxproj.filters | 36 + .../vs2010android/ShapedTextES.vcxproj.user | 7 + .../build/vs2010android/SkinningApp.vcxproj | 10 +- .../build/vs2010android/SoftShadows.vcxproj | 10 +- .../vs2010android/TerrainTessellation.vcxproj | 10 +- samples/build/vs2010android/TextWheelES.sln | 113 + .../build/vs2010android/TextWheelES.vcxproj | 200 + .../vs2010android/TextWheelES.vcxproj.filters | 36 + .../vs2010android/TextWheelES.vcxproj.user | 7 + .../vs2010android/TextureArrayTerrain.vcxproj | 10 +- samples/build/vs2010android/Tiger3DES.sln | 113 + samples/build/vs2010android/Tiger3DES.vcxproj | 216 + .../vs2010android/Tiger3DES.vcxproj.filters | 60 + .../vs2010android/Tiger3DES.vcxproj.user | 7 + samples/build/vs2010android/TigerWarpES.sln | 113 + .../build/vs2010android/TigerWarpES.vcxproj | 198 + .../vs2010android/TigerWarpES.vcxproj.filters | 33 + .../vs2010android/TigerWarpES.vcxproj.user | 7 + .../vs2010android/WeightedBlendedOIT.vcxproj | 10 +- samples/build/vs2010win32/AllSamples.sln | 118 +- samples/build/vs2010win32/CursiveES.sln | 104 + samples/build/vs2010win32/CursiveES.vcxproj | 170 + .../vs2010win32/CursiveES.vcxproj.filters | 24 + samples/build/vs2010win32/FXAA.vcxproj | 8 + .../build/vs2010win32/FXAA.vcxproj.filters | 12 + samples/build/vs2010win32/HDR.vcxproj | 48 +- samples/build/vs2010win32/HDR.vcxproj.filters | 40 +- samples/build/vs2010win32/ShapedTextES.sln | 122 + .../build/vs2010win32/ShapedTextES.vcxproj | 188 + .../vs2010win32/ShapedTextES.vcxproj.filters | 36 + samples/build/vs2010win32/TextWheelES.sln | 104 + samples/build/vs2010win32/TextWheelES.vcxproj | 178 + .../vs2010win32/TextWheelES.vcxproj.filters | 36 + samples/build/vs2010win32/Tiger3DES.sln | 104 + samples/build/vs2010win32/Tiger3DES.vcxproj | 194 + .../vs2010win32/Tiger3DES.vcxproj.filters | 60 + samples/build/vs2010win32/TigerWarpES.sln | 104 + samples/build/vs2010win32/TigerWarpES.vcxproj | 176 + .../vs2010win32/TigerWarpES.vcxproj.filters | 33 + samples/build/vs2012win32/AllSamples.sln | 118 +- samples/build/vs2012win32/CursiveES.sln | 104 + samples/build/vs2012win32/CursiveES.vcxproj | 176 + .../vs2012win32/CursiveES.vcxproj.filters | 24 + samples/build/vs2012win32/FXAA.vcxproj | 8 + .../build/vs2012win32/FXAA.vcxproj.filters | 12 + samples/build/vs2012win32/HDR.vcxproj | 48 +- samples/build/vs2012win32/HDR.vcxproj.filters | 40 +- samples/build/vs2012win32/ShapedTextES.sln | 122 + .../build/vs2012win32/ShapedTextES.vcxproj | 194 + .../vs2012win32/ShapedTextES.vcxproj.filters | 36 + samples/build/vs2012win32/TextWheelES.sln | 104 + samples/build/vs2012win32/TextWheelES.vcxproj | 184 + .../vs2012win32/TextWheelES.vcxproj.filters | 36 + samples/build/vs2012win32/Tiger3DES.sln | 104 + samples/build/vs2012win32/Tiger3DES.vcxproj | 200 + .../vs2012win32/Tiger3DES.vcxproj.filters | 60 + samples/build/vs2012win32/TigerWarpES.sln | 104 + samples/build/vs2012win32/TigerWarpES.vcxproj | 182 + .../vs2012win32/TigerWarpES.vcxproj.filters | 33 + samples/es2-aurora/Bloom/AndroidManifest.xml | 9 +- samples/es2-aurora/Bloom/AppExtensions.h | 4 +- samples/es2-aurora/Bloom/Bloom.cpp | 4 +- samples/es2-aurora/Bloom/Bloom.h | 4 +- samples/es2-aurora/Bloom/project.properties | 2 +- .../es2-aurora/Bloom/res/drawable/banner.png | Bin 0 -> 47041 bytes .../Bloom/src/com/nvidia/Bloom/Bloom.java | 4 +- .../InstancedTessellation/AndroidManifest.xml | 9 +- .../InstancedTessellation.cpp | 4 +- .../InstancedTessellation.h | 4 +- .../assets/shaders/deform.vert | 4 +- .../assets/shaders/deform_instanced.vert | 4 +- .../assets/shaders/lighting.frag | 4 +- .../assets/shaders/npatch.vert | 4 +- .../assets/shaders/npatch_instanced.vert | 4 +- .../InstancedTessellation/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 53990 bytes .../InstancedTessellation.java | 4 +- .../InstancingApp/AndroidManifest.xml | 9 +- .../InstancingApp/InstancingApp.cpp | 4 +- .../es2-aurora/InstancingApp/InstancingApp.h | 4 +- .../InstancingApp/assets/shaders/boxes.frag | 4 +- .../InstancingApp/assets/shaders/boxes.vert | 4 +- .../assets/shaders/boxes_instanced.vert | 4 +- .../InstancingApp/assets/shaders/grass.frag | 4 +- .../InstancingApp/assets/shaders/grass.vert | 4 +- .../assets/shaders/grass_instanced.vert | 4 +- .../InstancingApp/project.properties | 2 +- .../InstancingApp/res/drawable/banner.png | Bin 0 -> 103514 bytes .../nvidia/InstancingApp/InstancingApp.java | 4 +- .../es2-aurora/MotionBlur/AndroidManifest.xml | 9 +- samples/es2-aurora/MotionBlur/MotionBlur.cpp | 4 +- samples/es2-aurora/MotionBlur/MotionBlur.h | 4 +- .../MotionBlur/assets/shaders/motionblur.frag | 4 +- .../MotionBlur/assets/shaders/motionblur.vert | 4 +- .../MotionBlur/assets/shaders/scenecolor.frag | 4 +- .../MotionBlur/assets/shaders/scenecolor.vert | 4 +- .../assets/shaders/skyboxcolor.frag | 4 +- .../assets/shaders/skyboxcolor.vert | 4 +- .../es2-aurora/MotionBlur/project.properties | 2 +- .../MotionBlur/res/drawable/banner.png | Bin 0 -> 84011 bytes .../src/com/nvidia/MotionBlur/MotionBlur.java | 4 +- .../OptimizationApp/AndroidManifest.xml | 9 +- .../OptimizationApp/AppExtensions.h | 4 +- .../OptimizationApp/IceRevisitedRadix.cpp | 2 +- .../OptimizationApp/IceRevisitedRadix.h | 2 +- samples/es2-aurora/OptimizationApp/IceTypes.h | 2 +- .../OptimizationApp/OptimizationApp.cpp | 4 +- .../OptimizationApp/OptimizationApp.h | 4 +- .../OptimizationApp/ParticleRenderer.cpp | 4 +- .../OptimizationApp/ParticleRenderer.h | 4 +- .../OptimizationApp/ParticleSystem.cpp | 4 +- .../OptimizationApp/ParticleSystem.h | 4 +- .../es2-aurora/OptimizationApp/SceneFBOs.h | 4 +- .../es2-aurora/OptimizationApp/SceneInfo.h | 4 +- .../OptimizationApp/SceneRenderer.cpp | 4 +- .../OptimizationApp/SceneRenderer.h | 4 +- samples/es2-aurora/OptimizationApp/Shaders.h | 4 +- .../es2-aurora/OptimizationApp/Terrain.cpp | 4 +- samples/es2-aurora/OptimizationApp/Terrain.h | 4 +- .../es2-aurora/OptimizationApp/Upsampler.cpp | 4 +- .../es2-aurora/OptimizationApp/Upsampler.h | 4 +- .../OptimizationApp/assets/shaders/base.frag | 4 +- .../OptimizationApp/assets/shaders/base.vert | 4 +- .../assets/shaders/base_es2.frag | 4 +- .../assets/shaders/base_es2.vert | 4 +- .../assets/shaders/cameraViewParticle.frag | 4 +- .../assets/shaders/cameraViewParticle.vert | 4 +- .../shaders/cameraViewParticle_es2.frag | 4 +- .../shaders/cameraViewParticle_es2.vert | 4 +- .../OptimizationApp/assets/shaders/depth.frag | 4 +- .../OptimizationApp/assets/shaders/depth.vert | 4 +- .../assets/shaders/unshaded.vert | 4 +- .../assets/shaders/unshaded_alpha.frag | 4 +- .../assets/shaders/unshaded_solid.frag | 4 +- .../assets/shaders/upsampleBilinear.frag | 4 +- .../assets/shaders/upsampleBilinear.vert | 4 +- .../shaders/upsampleCrossBilateral.frag | 4 +- .../shaders/upsampleCrossBilateral.vert | 4 +- .../OptimizationApp/project.properties | 2 +- .../OptimizationApp/res/drawable/banner.png | Bin 0 -> 71612 bytes samples/es2-aurora/OptimizationApp/scene.cpp | 4 +- samples/es2-aurora/OptimizationApp/scene.h | 4 +- .../OptimizationApp/OptimizationApp.java | 4 +- samples/es2-aurora/OptimizationApp/utils.cpp | 4 +- samples/es2-aurora/OptimizationApp/utils.h | 4 +- .../ParticleUpsampling/AndroidManifest.xml | 9 +- .../ParticleUpsampling/IceRevisitedRadix.cpp | 2 +- .../ParticleUpsampling/IceRevisitedRadix.h | 2 +- .../ParticleUpsampling/ParticleRenderer.cpp | 4 +- .../ParticleUpsampling/ParticleRenderer.h | 4 +- .../ParticleUpsampling/ParticleSystem.cpp | 4 +- .../ParticleUpsampling/ParticleSystem.h | 4 +- .../ParticleUpsampling/ParticleUpsampling.cpp | 4 +- .../ParticleUpsampling/ParticleUpsampling.h | 4 +- .../es2-aurora/ParticleUpsampling/SceneFBOs.h | 4 +- .../es2-aurora/ParticleUpsampling/SceneInfo.h | 4 +- .../ParticleUpsampling/SceneRenderer.cpp | 4 +- .../ParticleUpsampling/SceneRenderer.h | 4 +- .../es2-aurora/ParticleUpsampling/Shaders.h | 4 +- .../ParticleUpsampling/Upsampler.cpp | 4 +- .../es2-aurora/ParticleUpsampling/Upsampler.h | 4 +- .../assets/shaders/cameraViewParticle.frag | 4 +- .../assets/shaders/cameraViewParticle.vert | 4 +- .../assets/shaders/lightViewParticle.frag | 4 +- .../assets/shaders/lightViewParticle.vert | 4 +- .../assets/shaders/opaqueColor.frag | 4 +- .../assets/shaders/opaqueColor.vert | 4 +- .../assets/shaders/opaqueDepth.frag | 4 +- .../assets/shaders/opaqueDepth.vert | 4 +- .../assets/shaders/upsampleBilinear.frag | 4 +- .../assets/shaders/upsampleBilinear.vert | 4 +- .../shaders/upsampleCrossBilateral.frag | 4 +- .../shaders/upsampleCrossBilateral.vert | 4 +- .../ParticleUpsampling/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 42124 bytes .../ParticleUpsampling.java | 4 +- .../SkinningApp/AndroidManifest.xml | 9 +- .../es2-aurora/SkinningApp/CharacterModel.h | 4 +- .../es2-aurora/SkinningApp/SkinnedMesh.cpp | 4 +- samples/es2-aurora/SkinningApp/SkinnedMesh.h | 4 +- .../es2-aurora/SkinningApp/SkinningApp.cpp | 4 +- samples/es2-aurora/SkinningApp/SkinningApp.h | 4 +- .../SkinningApp/assets/shaders/simple.frag | 4 +- .../SkinningApp/assets/shaders/skinning.vert | 4 +- .../es2-aurora/SkinningApp/project.properties | 2 +- .../SkinningApp/res/drawable/banner.png | Bin 0 -> 21111 bytes .../com/nvidia/SkinningApp/SkinningApp.java | 4 +- .../TextureArrayTerrain/AndroidManifest.xml | 9 +- .../es2-aurora/TextureArrayTerrain/Array2D.h | 4 +- .../es2-aurora/TextureArrayTerrain/IBOBuild.h | 4 +- .../TextureArrayTerrain/RidgedMultiFractal.h | 4 +- .../TextureArrayTerrain/TerrainGenerator.cpp | 4 +- .../TextureArrayTerrain/TerrainGenerator.h | 4 +- .../TextureArrayTerrain/TerrainSim.cpp | 4 +- .../TextureArrayTerrain/TerrainSim.h | 4 +- .../TerrainSimRenderer.cpp | 4 +- .../TextureArrayTerrain/TerrainSimRenderer.h | 4 +- .../TextureArrayTerrain/TerrainSimThread.cpp | 4 +- .../TextureArrayTerrain/TerrainSimThread.h | 4 +- .../TextureArrayTerrain.cpp | 4 +- .../TextureArrayTerrain/TextureArrayTerrain.h | 4 +- .../assets/shaders/skybox.frag | 4 +- .../assets/shaders/skybox.vert | 4 +- .../assets/shaders/terrain.frag | 4 +- .../assets/shaders/terrain.vert | 4 +- .../assets/shaders/terrain_es2.frag | 4 +- .../assets/shaders/terrain_es3.frag | 4 +- .../assets/shaders/terrain_es3.vert | 4 +- .../TextureArrayTerrain/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 89664 bytes .../TextureArrayTerrain.java | 4 +- samples/es3-kepler/FXAA/AndroidManifest.xml | 9 +- samples/es3-kepler/FXAA/FXAA.cpp | 9 +- samples/es3-kepler/FXAA/FXAA.h | 4 +- samples/es3-kepler/FXAA/FXAA3_11.h | 4 +- .../es3-kepler/FXAA/assets/shaders/Blit.frag | 4 +- .../es3-kepler/FXAA/assets/shaders/Blit.vert | 4 +- .../FXAA/assets/shaders/DrawLine.frag | 4 +- .../FXAA/assets/shaders/DrawLine.vert | 4 +- .../es3-kepler/FXAA/assets/shaders/FXAA.vert | 4 +- .../FXAA/assets/shaders/FXAA_Default.frag | 4 +- .../FXAA/assets/shaders/FXAA_DefaultES.frag | 1061 + .../assets/shaders/FXAA_Extreme_Quality.frag | 4 +- .../shaders/FXAA_Extreme_QualityES.frag | 1061 + .../FXAA/assets/shaders/FXAA_Fastest.frag | 4 +- .../FXAA/assets/shaders/FXAA_FastestES.frag | 1060 + .../assets/shaders/FXAA_High_Quality.frag | 4 +- .../assets/shaders/FXAA_High_QualityES.frag | 1061 + .../FXAA/assets/shaders/Object.frag | 4 +- .../FXAA/assets/shaders/Object.vert | 6 +- samples/es3-kepler/FXAA/project.properties | 2 +- .../es3-kepler/FXAA/res/drawable/banner.png | Bin 0 -> 60912 bytes .../FXAA/src/com/nvidia/FXAA/FXAA.java | 4 +- .../ComputeBasicGLSL/AndroidManifest.xml | 9 +- .../ComputeBasicGLSL/ComputeBasicGLSL.cpp | 4 +- .../ComputeBasicGLSL/ComputeBasicGLSL.h | 4 +- .../assets/shaders/invert.glsl | 4 +- .../assets/shaders/plain.frag | 4 +- .../assets/shaders/plain.vert | 4 +- .../ComputeBasicGLSL/project.properties | 2 +- .../ComputeBasicGLSL/res/drawable/banner.png | Bin 0 -> 67338 bytes .../ComputeBasicGLSL/ComputeBasicGLSL.java | 4 +- .../ComputeParticles/AndroidManifest.xml | 9 +- .../ComputeParticles/ComputeParticles.cpp | 4 +- .../ComputeParticles/ComputeParticles.h | 4 +- .../ComputeParticles/ParticleSystem.cpp | 4 +- .../ComputeParticles/ParticleSystem.h | 4 +- .../ComputeParticles/ShaderBuffer.h | 4 +- .../assets/shaders/particlesCS.glsl | 4 +- .../assets/shaders/renderFS.glsl | 4 +- .../assets/shaders/renderVS.glsl | 4 +- .../assets/shaders/uniforms.h | 4 +- .../es3aep-kepler/ComputeParticles/noise.cpp | 4 +- .../es3aep-kepler/ComputeParticles/noise.h | 4 +- .../ComputeParticles/project.properties | 2 +- .../ComputeParticles/res/drawable/banner.png | Bin 0 -> 98164 bytes .../ComputeParticles/ComputeParticles.java | 4 +- .../AndroidManifest.xml | 9 +- .../ComputeWaterSimulation/Array2D.h | 4 +- .../ComputeWaterSimulation.cpp | 4 +- .../ComputeWaterSimulation.h | 4 +- .../ComputeWaterSimulation/Wave.cpp | 4 +- .../ComputeWaterSimulation/Wave.h | 4 +- .../ComputeWaterSimulation/WaveSim.cpp | 4 +- .../ComputeWaterSimulation/WaveSim.h | 4 +- .../WaveSimRenderer.cpp | 4 +- .../ComputeWaterSimulation/WaveSimRenderer.h | 4 +- .../ComputeWaterSimulation/WaveSimThread.cpp | 4 +- .../ComputeWaterSimulation/WaveSimThread.h | 4 +- .../assets/shaders/WaterGradientsPass.glsl | 4 +- .../assets/shaders/WaterTransformPass.glsl | 4 +- .../assets/shaders/renderFS.glsl | 4 +- .../assets/shaders/renderVS.glsl | 4 +- .../assets/shaders/uniforms.h | 4 +- .../assets/shaders/water.frag | 4 +- .../assets/shaders/water.vert | 4 +- .../assets/shaders/waterFresnel.frag | 4 +- .../assets/shaders/waterNormals.frag | 4 +- .../ComputeWaterSimulation/noise.cpp | 4 +- .../ComputeWaterSimulation/noise.h | 4 +- .../ComputeWaterSimulation/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 67241 bytes .../ComputeWaterSimulation.java | 4 +- .../FeedbackParticlesApp/AndroidManifest.xml | 9 +- .../FeedbackParticlesApp.cpp | 4 +- .../FeedbackParticlesApp.h | 4 +- .../FeedbackParticlesScene.cpp | 4 +- .../FeedbackParticlesScene.h | 4 +- .../FeedbackParticlesApp/ParticleSystem.cpp | 4 +- .../FeedbackParticlesApp/ParticleSystem.h | 4 +- .../FeedbackParticlesApp/TextureUtils.cpp | 4 +- .../FeedbackParticlesApp/TextureUtils.h | 4 +- .../FeedbackParticlesApp/Utils.cpp | 4 +- .../FeedbackParticlesApp/Utils.h | 4 +- .../assets/billboard.frag | 4 +- .../assets/billboard.geom | 4 +- .../assets/billboard.vert | 4 +- .../assets/emitter_feedback.geom | 4 +- .../assets/emitter_feedback.vert | 4 +- .../FeedbackParticlesApp/assets/fbm.frag | 4 +- .../FeedbackParticlesApp/assets/fbm.vert | 4 +- .../FeedbackParticlesApp/assets/feedback.geom | 4 +- .../FeedbackParticlesApp/assets/feedback.vert | 4 +- .../FeedbackParticlesApp/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 29896 bytes .../FeedbackParticlesApp.java | 4 +- .../HDR/AndroidManifest.xml | 9 +- .../HDR/AppExtensions.h | 6 +- .../HDR/BlurShaderGenerator.cpp | 6 +- .../HDR/BlurShaderGenerator.h | 6 +- .../HDR/ColorModulation.h | 6 +- .../HDR/CubeData.h | 6 +- .../HDR/FileLoader.cpp | 6 +- .../HDR/FileLoader.h | 6 +- .../{es3-kepler => es3aep-kepler}/HDR/HDR.cpp | 68 +- .../{es3-kepler => es3aep-kepler}/HDR/HDR.h | 6 +- .../HDR/HDRImages.cpp | 6 +- .../HDR/HDRImages.h | 6 +- .../HDR/RenderTexture.cpp | 10 +- .../HDR/RenderTexture.h | 6 +- .../HDR/ShaderDeclaration.h | 57 +- .../HDR/ShaderObject.cpp | 6 +- .../HDR/ShaderObject.h | 6 +- .../HDR/VertexBufferObject.cpp | 6 +- .../HDR/VertexBufferObject.h | 6 +- .../HDR/ant.properties | 0 .../HDR/assets/models/knot | Bin .../HDR/assets/models/skull | Bin .../HDR/assets/models/teapot | Bin .../HDR/assets/models/venus | Bin .../HDR/assets/raw/cup.dat | Bin .../HDR/assets/raw/font8x8.dat | Bin .../HDR/assets/raw/gate.dat | Bin .../textures/altar_cross_irrad_mmp_s.hdr | Bin .../HDR/assets/textures/altar_cross_mmp_s.hdr | Bin .../textures/altar_cross_rough_mmp_s.hdr | Bin .../textures/grace_cross_irrad_mmp_s.hdr | Bin .../HDR/assets/textures/grace_cross_mmp_s.hdr | Bin .../textures/grace_cross_rough_mmp_s.hdr | Bin .../HDR/assets/textures/mask.dds | Bin .../HDR/assets/textures/nvidia_logo.dds | Bin .../assets/textures/rnl_cross_irrad_mmp_s.hdr | Bin .../HDR/assets/textures/rnl_cross_mmp_s.hdr | Bin .../assets/textures/rnl_cross_rough_mmp_s.hdr | Bin .../textures/uffizi_cross_irrad_mmp_s.hdr | Bin .../assets/textures/uffizi_cross_mmp_s.hdr | Bin .../textures/uffizi_cross_rough_mmp_s.hdr | Bin .../HDR/build.xml | 0 .../HDR/project.properties | 2 +- .../es3aep-kepler/HDR/res/drawable/banner.png | Bin 0 -> 87382 bytes .../HDR/res/values/strings.xml | 0 .../HDR/rgbe.cpp | 6 +- .../{es3-kepler => es3aep-kepler}/HDR/rgbe.h | 6 +- .../HDR/src/com/nvidia/HDR/HDR.java | 6 +- .../MotionBlurAdvanced/AndroidManifest.xml | 9 +- .../MotionBlurAdvanced/MotionBlurAdvanced.cpp | 4 +- .../MotionBlurAdvanced/MotionBlurAdvanced.h | 4 +- .../assets/shaders/baseshader.vert | 4 +- .../assets/shaders/depthdraw.frag | 4 +- .../assets/shaders/gather.frag | 4 +- .../assets/shaders/motionblures2.frag | 4 +- .../assets/shaders/motionblures2.vert | 4 +- .../assets/shaders/neighbormax.frag | 4 +- .../assets/shaders/scenecolor.frag | 4 +- .../assets/shaders/scenecolor.vert | 4 +- .../assets/shaders/scenevelocity.frag | 4 +- .../assets/shaders/scenevelocity.vert | 4 +- .../assets/shaders/skyboxcolor.frag | 4 +- .../assets/shaders/skyboxcolor.vert | 4 +- .../assets/shaders/skyboxvelocity.frag | 4 +- .../assets/shaders/skyboxvelocity.vert | 4 +- .../assets/shaders/texcoordfullscreen.frag | 4 +- .../assets/shaders/texcoordfullscreen.vert | 4 +- .../assets/shaders/tilemax.frag | 4 +- .../MotionBlurAdvanced/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 87933 bytes .../MotionBlurAdvanced.java | 4 +- .../SoftShadows/AndroidManifest.xml | 9 +- .../SoftShadows/DepthPrepassShader.h | 4 +- samples/es3aep-kepler/SoftShadows/EyeShader.h | 4 +- .../es3aep-kepler/SoftShadows/KnightModel.cpp | 4 +- .../es3aep-kepler/SoftShadows/KnightModel.h | 4 +- .../es3aep-kepler/SoftShadows/PcssShader.h | 4 +- .../es3aep-kepler/SoftShadows/PodiumModel.cpp | 4 +- .../es3aep-kepler/SoftShadows/PodiumModel.h | 4 +- .../es3aep-kepler/SoftShadows/RigidMesh.cpp | 4 +- samples/es3aep-kepler/SoftShadows/RigidMesh.h | 4 +- .../es3aep-kepler/SoftShadows/SceneShader.h | 4 +- samples/es3aep-kepler/SoftShadows/Shader.h | 4 +- .../SoftShadows/ShadowMapShader.h | 4 +- .../SoftShadows/SimpleSceneShader.h | 4 +- .../es3aep-kepler/SoftShadows/SoftShadows.cpp | 4 +- .../es3aep-kepler/SoftShadows/SoftShadows.h | 4 +- .../SoftShadows/SoftShadowsCommon.h | 4 +- .../SoftShadows/SoftShadowsRenderer.cpp | 4 +- .../SoftShadows/SoftShadowsRenderer.h | 4 +- .../es3aep-kepler/SoftShadows/VisTexShader.h | 4 +- .../assets/shaders/depthprepass.frag | 4 +- .../assets/shaders/depthprepass.vert | 4 +- .../SoftShadows/assets/shaders/eyerender.vert | 4 +- .../SoftShadows/assets/shaders/pcss.frag | 4 +- .../SoftShadows/assets/shaders/shadowmap.frag | 4 +- .../SoftShadows/assets/shaders/shadowmap.vert | 4 +- .../SoftShadows/assets/shaders/vistex.frag | 4 +- .../SoftShadows/assets/shaders/vistex.vert | 4 +- .../SoftShadows/project.properties | 2 +- .../SoftShadows/res/drawable/banner.png | Bin 0 -> 107250 bytes .../com/nvidia/SoftShadows/SoftShadows.java | 4 +- .../TerrainTessellation/AndroidManifest.xml | 9 +- .../TerrainTessellation.cpp | 4 +- .../TerrainTessellation/TerrainTessellation.h | 4 +- .../assets/shaders/dnoise.glsl | 2 +- .../assets/shaders/fragment_wireframe.glsl | 4 +- .../assets/shaders/generateTerrain_fs.glsl | 6 +- .../assets/shaders/generateTerrain_vs.glsl | 6 +- .../assets/shaders/noise.glsl | 4 +- .../assets/shaders/noise3D.glsl | 6 +- .../assets/shaders/sky_fs.glsl | 10 +- .../assets/shaders/sky_vs.glsl | 4 +- .../assets/shaders/terrain.glsl | 4 +- .../assets/shaders/terrain_control.glsl | 8 +- .../assets/shaders/terrain_fragment.glsl | 18 +- .../assets/shaders/terrain_tessellation.glsl | 6 +- .../assets/shaders/terrain_vertex.glsl | 6 +- .../assets/shaders/uniforms.h | 6 +- .../assets/shaders/wireframe_geom.glsl | 4 +- .../TerrainTessellation/noise.cpp | 4 +- .../es3aep-kepler/TerrainTessellation/noise.h | 4 +- .../TerrainTessellation/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 56669 bytes .../TerrainTessellation.java | 4 +- .../BindlessApp/AndroidManifest.xml | 9 +- .../gl4-kepler/BindlessApp/BindlessApp.cpp | 4 +- samples/gl4-kepler/BindlessApp/BindlessApp.h | 4 +- samples/gl4-kepler/BindlessApp/Mesh.cpp | 4 +- samples/gl4-kepler/BindlessApp/Mesh.h | 4 +- .../assets/shaders/simple_fragment.glsl | 4 +- .../assets/shaders/simple_vertex.glsl | 4 +- .../gl4-kepler/BindlessApp/project.properties | 2 +- .../BindlessApp/res/drawable/banner.png | Bin 0 -> 73405 bytes .../com/nvidia/BindlessApp/BindlessApp.java | 4 +- .../MultiDrawIndirect/AndroidManifest.xml | 9 +- .../MultiDrawIndirect/MultiDrawIndirect.cpp | 4 +- .../MultiDrawIndirect/MultiDrawIndirect.h | 4 +- .../assets/shaders/scenecolor.vert | 4 +- .../assets/shaders/scenecolormdi.vert | 4 +- .../assets/shaders/scenecolorvanilla.frag | 4 +- .../assets/shaders/skyboxcolor.frag | 4 +- .../assets/shaders/skyboxcolor.vert | 4 +- .../MultiDrawIndirect/project.properties | 2 +- .../MultiDrawIndirect/res/drawable/banner.png | Bin 0 -> 98400 bytes .../MultiDrawIndirect/MultiDrawIndirect.java | 4 +- .../PathRenderingBasic/AndroidManifest.xml | 9 +- .../PathRenderingBasic/PathRenderingBasic.cpp | 13 +- .../PathRenderingBasic/PathRenderingBasic.h | 4 +- .../PathRenderingBasic/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 23987 bytes .../PathRenderingBasic.java | 4 +- .../WeightedBlendedOIT/AndroidManifest.xml | 9 +- .../WeightedBlendedOIT/WeightedBlendedOIT.cpp | 4 +- .../WeightedBlendedOIT/WeightedBlendedOIT.h | 4 +- .../assets/shaders/base_shade_vertex.glsl | 4 +- .../assets/shaders/base_vertex.glsl | 4 +- .../shaders/front_peeling_blend_fragment.glsl | 4 +- .../shaders/front_peeling_final_fragment.glsl | 4 +- .../shaders/front_peeling_init_fragment.glsl | 4 +- .../shaders/front_peeling_peel_fragment.glsl | 4 +- .../assets/shaders/shade_fragment.glsl | 4 +- .../shaders/weighted_blend_fragment.glsl | 4 +- .../shaders/weighted_final_fragment.glsl | 4 +- .../WeightedBlendedOIT/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 33604 bytes .../WeightedBlendedOIT.java | 4 +- .../gl4-maxwell/BlendedAA/AndroidManifest.xml | 9 +- samples/gl4-maxwell/BlendedAA/BlendedAA.cpp | 21 +- samples/gl4-maxwell/BlendedAA/BlendedAA.h | 6 +- .../BlendedAA/assets/shaders/Blit.frag | 4 +- .../BlendedAA/assets/shaders/Blit.vert | 4 +- .../BlendedAA/assets/shaders/DrawLine.frag | 4 +- .../BlendedAA/assets/shaders/DrawLine.vert | 4 +- .../BlendedAA/assets/shaders/Floor.frag | 4 +- .../BlendedAA/assets/shaders/Floor.vert | 4 +- .../BlendedAA/assets/shaders/Ftransform.vert | 4 +- .../BlendedAA/assets/shaders/Object.frag | 4 +- .../BlendedAA/assets/shaders/Object.vert | 4 +- .../BlendedAA/assets/shaders/White.frag | 4 +- .../gl4-maxwell/BlendedAA/project.properties | 2 +- .../BlendedAA/res/drawable/banner.png | Bin 0 -> 80190 bytes .../src/com/nvidia/BlendedAA/BlendedAA.java | 4 +- .../CascadedShadowMapping/AndroidManifest.xml | 9 +- .../CascadedShadowMapping/CameraProgram.h | 4 +- .../CascadedShadowMapping.cpp | 6 +- .../CascadedShadowMapping.h | 4 +- .../CascadedShadowMappingCommon.h | 4 +- .../CascadedShadowMappingRenderer.cpp | 4 +- .../CascadedShadowMappingRenderer.h | 4 +- .../CascadedShadowMapping/CubeModel.h | 4 +- .../CascadedShadowMapping/FloorModel.h | 4 +- .../CascadedShadowMapping/KnightModel.cpp | 4 +- .../CascadedShadowMapping/KnightModel.h | 4 +- .../CascadedShadowMapping/KnightNvModel.h | 4 +- .../CascadedShadowMapping/LightProgram.h | 4 +- .../LightVsOnlyProgram.h | 4 +- .../assets/shaders/Camera.frag | 4 +- .../assets/shaders/Camera.vert | 4 +- .../assets/shaders/Light.vert | 4 +- .../assets/shaders/LightFgsMulticast.geom | 4 +- .../assets/shaders/LightGsCull.geom | 4 +- .../assets/shaders/LightMulticast.geom | 4 +- .../assets/shaders/LightStandard.geom | 4 +- .../assets/shaders/LightVsOnly.vert | 4 +- .../CascadedShadowMapping/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 64301 bytes .../CascadedShadowMapping.java | 4 +- .../ConservativeRaster/AndroidManifest.xml | 13 +- .../ConservativeRaster/ConservativeRaster.cpp | 4 +- .../ConservativeRaster/ConservativeRaster.h | 4 +- .../ConservativeRaster/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 54224 bytes .../ConservativeRaster.java | 4 +- .../NormalBlendedDecal/AndroidManifest.xml | 9 +- .../NormalBlendedDecal/NormalBlendedDecal.cpp | 4 +- .../NormalBlendedDecal/NormalBlendedDecal.h | 4 +- .../assets/shaders/base_vertex.glsl | 4 +- .../assets/shaders/combiner_fragment.glsl | 4 +- .../assets/shaders/decal_fragment.glsl | 4 +- .../assets/shaders/gbuffer_fragment.glsl | 4 +- .../assets/shaders/plain_fragment.glsl | 4 +- .../assets/shaders/plain_vertex.glsl | 4 +- .../NormalBlendedDecal/project.properties | 2 +- .../res/drawable/banner.png | Bin 0 -> 70490 bytes .../NormalBlendedDecal.java | 4 +- .../AndroidManifest.xml | 40 + samples/nvpr/CursiveES/AndroidManifest.xml | 41 + samples/nvpr/CursiveES/Cursive.cpp | 421 + samples/nvpr/CursiveES/Cursive.h | 113 + samples/nvpr/CursiveES/ant.properties | 1 + samples/nvpr/CursiveES/build.xml | 92 + samples/nvpr/CursiveES/cg4cpp_xform.cpp | 204 + samples/nvpr/CursiveES/cg4cpp_xform.hpp | 27 + samples/nvpr/CursiveES/project.properties | 11 + .../nvpr/CursiveES/res/drawable/banner.png | Bin 0 -> 12483 bytes samples/nvpr/CursiveES/res/drawable/icon.png | Bin 0 -> 4852 bytes samples/nvpr/CursiveES/res/values/strings.xml | 4 + .../src/com/nvidia/CursiveES/CursiveES.java | 52 + samples/nvpr/CursiveES/this_is_crazy.cpp | 57 + samples/nvpr/ShapedTextES/AndroidManifest.xml | 41 + samples/nvpr/ShapedTextES/PathSampleApp.cpp | 444 + samples/nvpr/ShapedTextES/PathSampleApp.h | 117 + samples/nvpr/ShapedTextES/ShapedText.cpp | 924 + samples/nvpr/ShapedTextES/ShapedText.h | 216 + samples/nvpr/ShapedTextES/ant.properties | 1 + .../assets/fonts/noto/APACHE-LICENSE-2.0.html | 446 + .../fonts/noto/NotoNaskhArabic-Regular.ttf | Bin 0 -> 131448 bytes .../assets/fonts/noto/NotoSansCJKtc-Light.otf | Bin 0 -> 16242308 bytes .../fonts/noto/NotoSansHebrew-Regular.ttf | Bin 0 -> 25744 bytes .../fonts/noto/NotoSansTamil-Regular.ttf | Bin 0 -> 53720 bytes .../assets/fonts/noto/NotoSerif-Regular.ttf | Bin 0 -> 379228 bytes samples/nvpr/ShapedTextES/build.xml | 92 + samples/nvpr/ShapedTextES/cg4cpp_xform.cpp | 221 + samples/nvpr/ShapedTextES/cg4cpp_xform.hpp | 29 + samples/nvpr/ShapedTextES/countof.h | 69 + samples/nvpr/ShapedTextES/project.properties | 11 + .../nvpr/ShapedTextES/res/drawable/banner.png | Bin 0 -> 36747 bytes .../nvpr/ShapedTextES/res/drawable/icon.png | Bin 0 -> 4852 bytes .../nvpr/ShapedTextES/res/values/strings.xml | 4 + samples/nvpr/ShapedTextES/sRGB_math.cpp | 97 + samples/nvpr/ShapedTextES/sRGB_math.hpp | 8 + .../com/nvidia/ShapedTextES/ShapedTextES.java | 52 + samples/nvpr/TextWheelES/AndroidManifest.xml | 41 + samples/nvpr/TextWheelES/TextWheel.cpp | 464 + samples/nvpr/TextWheelES/TextWheel.h | 125 + samples/nvpr/TextWheelES/ant.properties | 1 + samples/nvpr/TextWheelES/build.xml | 92 + samples/nvpr/TextWheelES/cg4cpp_xform.cpp | 204 + samples/nvpr/TextWheelES/cg4cpp_xform.hpp | 27 + samples/nvpr/TextWheelES/countof.h | 69 + samples/nvpr/TextWheelES/project.properties | 11 + samples/nvpr/TextWheelES/render_font.cpp | 302 + samples/nvpr/TextWheelES/render_font.hpp | 72 + .../nvpr/TextWheelES/res/drawable/banner.png | Bin 0 -> 34425 bytes .../nvpr/TextWheelES/res/drawable/icon.png | Bin 0 -> 4852 bytes .../nvpr/TextWheelES/res/values/strings.xml | 4 + samples/nvpr/TextWheelES/sRGB_math.cpp | 97 + samples/nvpr/TextWheelES/sRGB_math.hpp | 8 + .../com/nvidia/TextWheelES/TextWheelES.java | 52 + samples/nvpr/Tiger3DES/AndroidManifest.xml | 41 + samples/nvpr/Tiger3DES/Tiger3D.cpp | 775 + samples/nvpr/Tiger3DES/Tiger3D.h | 78 + samples/nvpr/Tiger3DES/ant.properties | 1 + samples/nvpr/Tiger3DES/build.xml | 92 + samples/nvpr/Tiger3DES/cg4cpp_xform.cpp | 194 + samples/nvpr/Tiger3DES/cg4cpp_xform.hpp | 26 + samples/nvpr/Tiger3DES/glut_teapot.cpp | 219 + samples/nvpr/Tiger3DES/glut_teapot.h | 9 + samples/nvpr/Tiger3DES/project.properties | 11 + samples/nvpr/Tiger3DES/render_font.cpp | 302 + samples/nvpr/Tiger3DES/render_font.hpp | 72 + .../nvpr/Tiger3DES/res/drawable/banner.png | Bin 0 -> 51155 bytes samples/nvpr/Tiger3DES/res/drawable/icon.png | Bin 0 -> 4852 bytes samples/nvpr/Tiger3DES/res/values/strings.xml | 4 + .../src/com/nvidia/Tiger3DES/Tiger3DES.java | 52 + samples/nvpr/Tiger3DES/teapot.cpp | 124 + samples/nvpr/Tiger3DES/teapot.h | 39 + samples/nvpr/Tiger3DES/teapot_data.h | 1012 + samples/nvpr/Tiger3DES/tiger.cpp | 222 + samples/nvpr/Tiger3DES/tiger.h | 44 + samples/nvpr/Tiger3DES/tiger_paths.h | 274 + samples/nvpr/Tiger3DES/tiger_style.h | 275 + samples/nvpr/Tiger3DES/trackball.cpp | 352 + samples/nvpr/Tiger3DES/trackball.h | 86 + samples/nvpr/TigerWarpES/AndroidManifest.xml | 41 + samples/nvpr/TigerWarpES/TigerWarp.cpp | 556 + samples/nvpr/TigerWarpES/TigerWarp.h | 80 + samples/nvpr/TigerWarpES/ant.properties | 1 + samples/nvpr/TigerWarpES/build.xml | 92 + samples/nvpr/TigerWarpES/cg4cpp_xform.cpp | 196 + samples/nvpr/TigerWarpES/cg4cpp_xform.hpp | 26 + samples/nvpr/TigerWarpES/project.properties | 11 + .../nvpr/TigerWarpES/res/drawable/banner.png | Bin 0 -> 41955 bytes .../nvpr/TigerWarpES/res/drawable/icon.png | Bin 0 -> 4852 bytes .../nvpr/TigerWarpES/res/values/strings.xml | 4 + .../com/nvidia/TigerWarpES/TigerWarpES.java | 52 + samples/nvpr/TigerWarpES/tiger.cpp | 241 + samples/nvpr/TigerWarpES/tiger.h | 45 + samples/nvpr/TigerWarpES/tiger_paths.h | 274 + samples/nvpr/TigerWarpES/tiger_style.h | 275 + 2115 files changed, 525859 insertions(+), 7770 deletions(-) create mode 100644 extensions/externals/build/linux-arm32/Makefile.cg4cpp.mk create mode 100644 extensions/externals/build/linux-arm32/Makefile.freetype.mk create mode 100644 extensions/externals/build/linux-arm32/Makefile.harfbuzz.mk create mode 100644 extensions/externals/build/linux-arm32/cg4cpp.xpj.cg4cpp.Makefile create mode 100644 extensions/externals/build/linux-arm32/freetype.xpj.freetype.Makefile create mode 100644 extensions/externals/build/linux-arm32/harfbuzz.xpj.harfbuzz.Makefile create mode 100644 extensions/externals/build/linux32/Makefile.cg4cpp.mk create mode 100644 extensions/externals/build/linux32/Makefile.freetype.mk create mode 100644 extensions/externals/build/linux32/Makefile.harfbuzz.mk create mode 100644 extensions/externals/build/linux64/Makefile.cg4cpp.mk create mode 100644 extensions/externals/build/linux64/Makefile.freetype.mk create mode 100644 extensions/externals/build/linux64/Makefile.harfbuzz.mk create mode 100644 extensions/externals/build/makeandroid/Makefile.cg4cpp.mk create mode 100644 extensions/externals/build/makeandroid/Makefile.freetype.mk create mode 100644 extensions/externals/build/makeandroid/Makefile.harfbuzz.mk create mode 100644 extensions/externals/build/vs2010android/cg4cpp.sln create mode 100644 extensions/externals/build/vs2010android/cg4cpp.vcxproj create mode 100644 extensions/externals/build/vs2010android/cg4cpp.vcxproj.filters create mode 100644 extensions/externals/build/vs2010android/cg4cpp.vcxproj.user create mode 100644 extensions/externals/build/vs2010android/freetype.sln create mode 100644 extensions/externals/build/vs2010android/freetype.vcxproj create mode 100644 extensions/externals/build/vs2010android/freetype.vcxproj.filters create mode 100644 extensions/externals/build/vs2010android/freetype.vcxproj.user create mode 100644 extensions/externals/build/vs2010android/harfbuzz.sln create mode 100644 extensions/externals/build/vs2010android/harfbuzz.vcxproj create mode 100644 extensions/externals/build/vs2010android/harfbuzz.vcxproj.filters create mode 100644 extensions/externals/build/vs2010android/harfbuzz.vcxproj.user create mode 100644 extensions/externals/build/vs2010win32/cg4cpp.sln create mode 100644 extensions/externals/build/vs2010win32/cg4cpp.vcxproj create mode 100644 extensions/externals/build/vs2010win32/cg4cpp.vcxproj.filters create mode 100644 extensions/externals/build/vs2010win32/freetype.sln create mode 100644 extensions/externals/build/vs2010win32/freetype.vcxproj create mode 100644 extensions/externals/build/vs2010win32/freetype.vcxproj.filters create mode 100644 extensions/externals/build/vs2010win32/harfbuzz.sln create mode 100644 extensions/externals/build/vs2010win32/harfbuzz.vcxproj create mode 100644 extensions/externals/build/vs2010win32/harfbuzz.vcxproj.filters create mode 100644 extensions/externals/build/vs2012win32/cg4cpp.sln create mode 100644 extensions/externals/build/vs2012win32/cg4cpp.vcxproj create mode 100644 extensions/externals/build/vs2012win32/cg4cpp.vcxproj.filters create mode 100644 extensions/externals/build/vs2012win32/freetype.sln create mode 100644 extensions/externals/build/vs2012win32/freetype.vcxproj create mode 100644 extensions/externals/build/vs2012win32/freetype.vcxproj.filters create mode 100644 extensions/externals/build/vs2012win32/harfbuzz.sln create mode 100644 extensions/externals/build/vs2012win32/harfbuzz.vcxproj create mode 100644 extensions/externals/build/vs2012win32/harfbuzz.vcxproj.filters create mode 100644 extensions/externals/include/Cg/GL/sampler.hpp create mode 100644 extensions/externals/include/Cg/abs.hpp create mode 100644 extensions/externals/include/Cg/acos.hpp create mode 100644 extensions/externals/include/Cg/all.hpp create mode 100644 extensions/externals/include/Cg/any.hpp create mode 100644 extensions/externals/include/Cg/asin.hpp create mode 100644 extensions/externals/include/Cg/assert.hpp create mode 100644 extensions/externals/include/Cg/atan.hpp create mode 100644 extensions/externals/include/Cg/atan2.hpp create mode 100644 extensions/externals/include/Cg/ceil.hpp create mode 100644 extensions/externals/include/Cg/clamp.hpp create mode 100644 extensions/externals/include/Cg/cos.hpp create mode 100644 extensions/externals/include/Cg/cosh.hpp create mode 100644 extensions/externals/include/Cg/cross.hpp create mode 100644 extensions/externals/include/Cg/degrees.hpp create mode 100644 extensions/externals/include/Cg/determinant.hpp create mode 100644 extensions/externals/include/Cg/distance.hpp create mode 100644 extensions/externals/include/Cg/dot.hpp create mode 100644 extensions/externals/include/Cg/dotv1.hpp create mode 100644 extensions/externals/include/Cg/double.hpp create mode 100644 extensions/externals/include/Cg/exp.hpp create mode 100644 extensions/externals/include/Cg/exp2.hpp create mode 100644 extensions/externals/include/Cg/faceforward.hpp create mode 100644 extensions/externals/include/Cg/fixed.hpp create mode 100644 extensions/externals/include/Cg/floatToIntBits.hpp create mode 100644 extensions/externals/include/Cg/floatToRawIntBits.hpp create mode 100644 extensions/externals/include/Cg/floor.hpp create mode 100644 extensions/externals/include/Cg/fmod.hpp create mode 100644 extensions/externals/include/Cg/frac.hpp create mode 100644 extensions/externals/include/Cg/frexp.hpp create mode 100644 extensions/externals/include/Cg/half.hpp create mode 100644 extensions/externals/include/Cg/inout.hpp create mode 100644 extensions/externals/include/Cg/intBitsToFloat.hpp create mode 100644 extensions/externals/include/Cg/inverse.hpp create mode 100644 extensions/externals/include/Cg/iostream.hpp create mode 100644 extensions/externals/include/Cg/isfinite.hpp create mode 100644 extensions/externals/include/Cg/isinf.hpp create mode 100644 extensions/externals/include/Cg/isnan.hpp create mode 100644 extensions/externals/include/Cg/length.hpp create mode 100644 extensions/externals/include/Cg/lerp.hpp create mode 100644 extensions/externals/include/Cg/log.hpp create mode 100644 extensions/externals/include/Cg/log10.hpp create mode 100644 extensions/externals/include/Cg/log2.hpp create mode 100644 extensions/externals/include/Cg/matrix.hpp create mode 100644 extensions/externals/include/Cg/matrix/0based.hpp create mode 100644 extensions/externals/include/Cg/matrix/1based.hpp create mode 100644 extensions/externals/include/Cg/matrix/columns.hpp create mode 100644 extensions/externals/include/Cg/matrix/elements.hpp create mode 100644 extensions/externals/include/Cg/matrix/rows.hpp create mode 100644 extensions/externals/include/Cg/max.hpp create mode 100644 extensions/externals/include/Cg/min.hpp create mode 100644 extensions/externals/include/Cg/mul.hpp create mode 100644 extensions/externals/include/Cg/mulv0.hpp create mode 100644 extensions/externals/include/Cg/mulv1.hpp create mode 100644 extensions/externals/include/Cg/normalize.hpp create mode 100644 extensions/externals/include/Cg/pow.hpp create mode 100644 extensions/externals/include/Cg/radians.hpp create mode 100644 extensions/externals/include/Cg/round.hpp create mode 100644 extensions/externals/include/Cg/rsqrt.hpp create mode 100644 extensions/externals/include/Cg/sampler.hpp create mode 100644 extensions/externals/include/Cg/sampler1D.hpp create mode 100644 extensions/externals/include/Cg/sampler1DARRAY.hpp create mode 100644 extensions/externals/include/Cg/sampler2D.hpp create mode 100644 extensions/externals/include/Cg/sampler2DARRAY.hpp create mode 100644 extensions/externals/include/Cg/sampler3D.hpp create mode 100644 extensions/externals/include/Cg/samplerBUF.hpp create mode 100644 extensions/externals/include/Cg/samplerCUBE.hpp create mode 100644 extensions/externals/include/Cg/samplerRECT.hpp create mode 100644 extensions/externals/include/Cg/saturate.hpp create mode 100644 extensions/externals/include/Cg/sign.hpp create mode 100644 extensions/externals/include/Cg/sin.hpp create mode 100644 extensions/externals/include/Cg/sinh.hpp create mode 100644 extensions/externals/include/Cg/smoothstep.hpp create mode 100644 extensions/externals/include/Cg/sqrt.hpp create mode 100644 extensions/externals/include/Cg/stdlib.hpp create mode 100644 extensions/externals/include/Cg/step.hpp create mode 100644 extensions/externals/include/Cg/tan.hpp create mode 100644 extensions/externals/include/Cg/tanh.hpp create mode 100644 extensions/externals/include/Cg/transpose.hpp create mode 100644 extensions/externals/include/Cg/trunc.hpp create mode 100644 extensions/externals/include/Cg/upper1x1.hpp create mode 100644 extensions/externals/include/Cg/upper1x2.hpp create mode 100644 extensions/externals/include/Cg/upper1x3.hpp create mode 100644 extensions/externals/include/Cg/upper1x4.hpp create mode 100644 extensions/externals/include/Cg/upper2x1.hpp create mode 100644 extensions/externals/include/Cg/upper2x2.hpp create mode 100644 extensions/externals/include/Cg/upper2x3.hpp create mode 100644 extensions/externals/include/Cg/upper2x4.hpp create mode 100644 extensions/externals/include/Cg/upper3x1.hpp create mode 100644 extensions/externals/include/Cg/upper3x2.hpp create mode 100644 extensions/externals/include/Cg/upper3x3.hpp create mode 100644 extensions/externals/include/Cg/upper3x4.hpp create mode 100644 extensions/externals/include/Cg/upper4x1.hpp create mode 100644 extensions/externals/include/Cg/upper4x2.hpp create mode 100644 extensions/externals/include/Cg/upper4x3.hpp create mode 100644 extensions/externals/include/Cg/upper4x4.hpp create mode 100644 extensions/externals/include/Cg/vector.hpp create mode 100644 extensions/externals/include/Cg/vector/rgba.hpp create mode 100644 extensions/externals/include/Cg/vector/stpq.hpp create mode 100644 extensions/externals/include/Cg/vector/xyzw.hpp create mode 100644 extensions/externals/src/cg4cpp/Android.mk create mode 100644 extensions/externals/src/cg4cpp/GNUmakefile create mode 100644 extensions/externals/src/cg4cpp/abs.cpp create mode 100644 extensions/externals/src/cg4cpp/acos.cpp create mode 100644 extensions/externals/src/cg4cpp/all.cpp create mode 100644 extensions/externals/src/cg4cpp/any.cpp create mode 100644 extensions/externals/src/cg4cpp/asin.cpp create mode 100644 extensions/externals/src/cg4cpp/atan.cpp create mode 100644 extensions/externals/src/cg4cpp/atan2.cpp create mode 100644 extensions/externals/src/cg4cpp/ceil.cpp create mode 100644 extensions/externals/src/cg4cpp/cg4cpp.vcproj create mode 100644 extensions/externals/src/cg4cpp/cg4cpp_2008.sln create mode 100644 extensions/externals/src/cg4cpp/cg4cpp_2008.vcproj create mode 100644 extensions/externals/src/cg4cpp/cg4cpp_2010.vcxproj create mode 100644 extensions/externals/src/cg4cpp/cg4cpp_2012.vcxproj create mode 100644 extensions/externals/src/cg4cpp/clamp.cpp create mode 100644 extensions/externals/src/cg4cpp/cos.cpp create mode 100644 extensions/externals/src/cg4cpp/cosh.cpp create mode 100644 extensions/externals/src/cg4cpp/cross.cpp create mode 100644 extensions/externals/src/cg4cpp/degrees.cpp create mode 100644 extensions/externals/src/cg4cpp/determinant.cpp create mode 100644 extensions/externals/src/cg4cpp/distance.cpp create mode 100644 extensions/externals/src/cg4cpp/dot.cpp create mode 100644 extensions/externals/src/cg4cpp/exp.cpp create mode 100644 extensions/externals/src/cg4cpp/exp2.cpp create mode 100644 extensions/externals/src/cg4cpp/faceforward.cpp create mode 100644 extensions/externals/src/cg4cpp/floatToIntBits.cpp create mode 100644 extensions/externals/src/cg4cpp/floatToRawIntBits.cpp create mode 100644 extensions/externals/src/cg4cpp/floor.cpp create mode 100644 extensions/externals/src/cg4cpp/fmod.cpp create mode 100644 extensions/externals/src/cg4cpp/frac.cpp create mode 100644 extensions/externals/src/cg4cpp/fresnel.cpp create mode 100644 extensions/externals/src/cg4cpp/frexp.cpp create mode 100644 extensions/externals/src/cg4cpp/intBitsToFloat.cpp create mode 100644 extensions/externals/src/cg4cpp/inverse.cpp create mode 100644 extensions/externals/src/cg4cpp/iostream.cpp create mode 100644 extensions/externals/src/cg4cpp/isfinite.cpp create mode 100644 extensions/externals/src/cg4cpp/isinf.cpp create mode 100644 extensions/externals/src/cg4cpp/isnan.cpp create mode 100644 extensions/externals/src/cg4cpp/ldexp.cpp create mode 100644 extensions/externals/src/cg4cpp/length.cpp create mode 100644 extensions/externals/src/cg4cpp/lerp.cpp create mode 100644 extensions/externals/src/cg4cpp/lit.cpp create mode 100644 extensions/externals/src/cg4cpp/log.cpp create mode 100644 extensions/externals/src/cg4cpp/log10.cpp create mode 100644 extensions/externals/src/cg4cpp/log2.cpp create mode 100644 extensions/externals/src/cg4cpp/max.cpp create mode 100644 extensions/externals/src/cg4cpp/min.cpp create mode 100644 extensions/externals/src/cg4cpp/modf.cpp create mode 100644 extensions/externals/src/cg4cpp/mul.cpp create mode 100644 extensions/externals/src/cg4cpp/normalize.cpp create mode 100644 extensions/externals/src/cg4cpp/pow.cpp create mode 100644 extensions/externals/src/cg4cpp/radians.cpp create mode 100644 extensions/externals/src/cg4cpp/reflect.cpp create mode 100644 extensions/externals/src/cg4cpp/refract.cpp create mode 100644 extensions/externals/src/cg4cpp/round.cpp create mode 100644 extensions/externals/src/cg4cpp/rsqrt.cpp create mode 100644 extensions/externals/src/cg4cpp/sampler2D_state.hpp create mode 100644 extensions/externals/src/cg4cpp/sampler_state.hpp create mode 100644 extensions/externals/src/cg4cpp/saturate.cpp create mode 100644 extensions/externals/src/cg4cpp/sign.cpp create mode 100644 extensions/externals/src/cg4cpp/sin.cpp create mode 100644 extensions/externals/src/cg4cpp/sincos.cpp create mode 100644 extensions/externals/src/cg4cpp/sinh.cpp create mode 100644 extensions/externals/src/cg4cpp/smoothstep.cpp create mode 100644 extensions/externals/src/cg4cpp/sqrt.cpp create mode 100644 extensions/externals/src/cg4cpp/step.cpp create mode 100644 extensions/externals/src/cg4cpp/tan.cpp create mode 100644 extensions/externals/src/cg4cpp/tanh.cpp create mode 100644 extensions/externals/src/cg4cpp/transpose.cpp create mode 100644 extensions/externals/src/cg4cpp/trunc.cpp create mode 100644 extensions/externals/src/cg4cpp/upper1x1.cpp create mode 100644 extensions/externals/src/cg4cpp/upper1x2.cpp create mode 100644 extensions/externals/src/cg4cpp/upper1x3.cpp create mode 100644 extensions/externals/src/cg4cpp/upper1x4.cpp create mode 100644 extensions/externals/src/cg4cpp/upper2x1.cpp create mode 100644 extensions/externals/src/cg4cpp/upper2x2.cpp create mode 100644 extensions/externals/src/cg4cpp/upper2x3.cpp create mode 100644 extensions/externals/src/cg4cpp/upper2x4.cpp create mode 100644 extensions/externals/src/cg4cpp/upper3x1.cpp create mode 100644 extensions/externals/src/cg4cpp/upper3x2.cpp create mode 100644 extensions/externals/src/cg4cpp/upper3x3.cpp create mode 100644 extensions/externals/src/cg4cpp/upper3x4.cpp create mode 100644 extensions/externals/src/cg4cpp/upper4x1.cpp create mode 100644 extensions/externals/src/cg4cpp/upper4x2.cpp create mode 100644 extensions/externals/src/cg4cpp/upper4x3.cpp create mode 100644 extensions/externals/src/cg4cpp/upper4x4.cpp create mode 100644 extensions/externals/src/freetype-2.4.9/Android.mk create mode 100644 extensions/externals/src/freetype-2.4.9/ChangeLog create mode 100644 extensions/externals/src/freetype-2.4.9/ChangeLog.20 create mode 100644 extensions/externals/src/freetype-2.4.9/ChangeLog.21 create mode 100644 extensions/externals/src/freetype-2.4.9/ChangeLog.22 create mode 100644 extensions/externals/src/freetype-2.4.9/ChangeLog.23 create mode 100644 extensions/externals/src/freetype-2.4.9/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/Jamrules create mode 100644 extensions/externals/src/freetype-2.4.9/Makefile create mode 100644 extensions/externals/src/freetype-2.4.9/README create mode 100644 extensions/externals/src/freetype-2.4.9/README.git create mode 100644 extensions/externals/src/freetype-2.4.9/autogen.sh create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/README create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/include/freetype/config/ftconfig.h create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/include/freetype/config/ftmodule.h create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/makefile create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/makefile.os4 create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/smakefile create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/src/base/ftdebug.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/amiga/src/base/ftsystem.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/ansi/ansi-def.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/ansi/ansi.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/ATARI.H create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/FNames.SIC create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/FREETYPE.PRJ create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/README.TXT create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/deflinejoiner.awk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/atari/gen-purec-patch.sh create mode 100644 extensions/externals/src/freetype-2.4.9/builds/beos/beos-def.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/beos/beos.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/beos/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/ansi-cc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/bcc-dev.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/bcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/emx.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/gcc-dev.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/gcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/intelc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/unix-lcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/visualage.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/visualc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/watcom.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/compiler/win-lcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/dos/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/dos/dos-def.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/dos/dos-emx.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/dos/dos-gcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/dos/dos-wat.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/exports.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/freetype.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/link_dos.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/link_std.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/FreeType.m68k_cfm.make.txt create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/FreeType.m68k_far.make.txt create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/FreeType.ppc_carbon.make.txt create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/FreeType.ppc_classic.make.txt create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/README create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/ascii2mpw.py create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/ftlib.prj.xml create mode 100644 extensions/externals/src/freetype-2.4.9/builds/mac/ftmac.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/modules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/newline create mode 100644 extensions/externals/src/freetype-2.4.9/builds/os2/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/os2/os2-def.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/os2/os2-dev.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/os2/os2-gcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/symbian/bld.inf create mode 100644 extensions/externals/src/freetype-2.4.9/builds/symbian/freetype.mmp create mode 100644 extensions/externals/src/freetype-2.4.9/builds/toplevel.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/aclocal.m4 create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/config.guess create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/config.sub create mode 100755 extensions/externals/src/freetype-2.4.9/builds/unix/configure create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/configure.ac create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/configure.raw create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/freetype-config.in create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/freetype2.in create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/freetype2.m4 create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/ft-munmap.m4 create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/ft2unix.h create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/ftconfig.in create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/ftsystem.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/install-sh create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/install.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/ltmain.sh create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/mkinstalldirs create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unix-cc.in create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unix-def.in create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unix-dev.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unix-lcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unix.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/unix/unixddef.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/vms/ftconfig.h create mode 100644 extensions/externals/src/freetype-2.4.9/builds/vms/ftsystem.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/detect.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/ftdebug.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2005/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2005/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2005/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2008/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2008/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2008/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2010/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2010/freetype.vcxproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2010/freetype.vcxproj.filters create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2010/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2012/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2012/freetype.vcxproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2012/freetype.vcxproj.filters create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/vc2012/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualc/freetype.dsp create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualc/freetype.dsw create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualc/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualc/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualc/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualce/freetype.dsp create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualce/freetype.dsw create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualce/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/visualce/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-bcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-bccd.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-dev.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-gcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-icc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-intl.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-lcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-mingw32.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-vcc.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/w32-wat.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/win32/win32-def.mk create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/ftdebug.c create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2005-ce/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2005-ce/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2005-ce/index.html create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2008-ce/freetype.sln create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2008-ce/freetype.vcproj create mode 100644 extensions/externals/src/freetype-2.4.9/builds/wince/vc2008-ce/index.html create mode 100755 extensions/externals/src/freetype-2.4.9/configure create mode 100644 extensions/externals/src/freetype-2.4.9/devel/ft2build.h create mode 100644 extensions/externals/src/freetype-2.4.9/devel/ftoption.h create mode 100644 extensions/externals/src/freetype-2.4.9/docs/CHANGES create mode 100644 extensions/externals/src/freetype-2.4.9/docs/CUSTOMIZE create mode 100644 extensions/externals/src/freetype-2.4.9/docs/DEBUG create mode 100644 extensions/externals/src/freetype-2.4.9/docs/FTL.TXT create mode 100644 extensions/externals/src/freetype-2.4.9/docs/GPLv2.TXT create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.ANY create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.CROSS create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.GNU create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.MAC create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.UNIX create mode 100644 extensions/externals/src/freetype-2.4.9/docs/INSTALL.VMS create mode 100644 extensions/externals/src/freetype-2.4.9/docs/LICENSE.TXT create mode 100644 extensions/externals/src/freetype-2.4.9/docs/MAKEPP create mode 100644 extensions/externals/src/freetype-2.4.9/docs/PROBLEMS create mode 100644 extensions/externals/src/freetype-2.4.9/docs/TODO create mode 100755 extensions/externals/src/freetype-2.4.9/docs/VERSION.DLL create mode 100644 extensions/externals/src/freetype-2.4.9/docs/formats.txt create mode 100644 extensions/externals/src/freetype-2.4.9/docs/raster.txt create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/README create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-base_interface.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-basic_types.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-bdf_fonts.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-bitmap_handling.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-bzip2.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-cache_subsystem.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-cid_fonts.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-computations.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-font_formats.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-gasp_table.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-glyph_management.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-glyph_stroker.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-glyph_variants.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-gx_validation.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-gzip.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-header_file_macros.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-incremental.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-index.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-lcd_filtering.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-list_processing.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-lzw.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-mac_specific.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-module_management.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-multiple_masters.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-ot_validation.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-outline_processing.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-pfr_fonts.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-quick_advance.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-raster.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-sfnt_names.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-sizes_management.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-system_interface.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-toc.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-truetype_engine.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-truetype_tables.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-type1_tables.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-user_allocation.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-version.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/reference/ft2-winfnt_fonts.html create mode 100644 extensions/externals/src/freetype-2.4.9/docs/release create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/config/ftconfig.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/config/ftheader.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/config/ftmodule.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/config/ftoption.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/config/ftstdlib.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/freetype.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftadvanc.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftbbox.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftbdf.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftbitmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftbzip2.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftcache.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftchapters.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftcid.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/fterrdef.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/fterrors.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftgasp.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftglyph.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftgxval.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftgzip.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftimage.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftincrem.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftlcdfil.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftlist.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftlzw.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftmac.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftmm.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftmodapi.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftmoderr.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftotval.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftoutln.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftpfr.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftrender.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftsizes.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftsnames.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftstroke.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftsynth.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftsystem.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/fttrigon.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/fttypes.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftwinfnt.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ftxf86.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/autohint.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftcalc.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftdebug.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftdriver.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftgloadr.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftmemory.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftrfork.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftserv.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftstream.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/fttrace.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/ftvalid.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/internal.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/psaux.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/pshints.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svbdf.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svcid.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svgldict.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svgxval.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svkern.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svmm.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svotval.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svpfr.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svpostnm.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svpscmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svpsinfo.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svsfnt.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svttcmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svtteng.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svttglyf.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svwinfnt.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/services/svxf86nm.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/sfnt.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/t1types.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/internal/tttypes.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/t1tables.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ttnameid.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/tttables.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/tttags.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/freetype/ttunpat.h create mode 100644 extensions/externals/src/freetype-2.4.9/include/ft2build.h create mode 100644 extensions/externals/src/freetype-2.4.9/modules.cfg create mode 100644 extensions/externals/src/freetype-2.4.9/objs/README create mode 100644 extensions/externals/src/freetype-2.4.9/src/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afangles.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afangles.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afcjk.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afcjk.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afdummy.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afdummy.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aferrors.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afglobal.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afglobal.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afhints.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afhints.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afindic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afindic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aflatin.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aflatin.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aflatin2.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aflatin2.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afloader.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afloader.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afmodule.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afmodule.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/aftypes.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afwarp.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/afwarp.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/autofit.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/autofit/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/basepic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/basepic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftadvanc.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftapi.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftbase.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftbase.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftbbox.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftbdf.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftbitmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftcalc.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftcid.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftdbgmem.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftdebug.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftfstype.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftgasp.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftgloadr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftglyph.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftgxval.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftinit.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftlcdfil.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftmac.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftmm.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftotval.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftoutln.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftpatent.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftpfr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftrfork.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftsnames.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftstream.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftstroke.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftsynth.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftsystem.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/fttrigon.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/fttype1.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftutil.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftwinfnt.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/ftxf86.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/base/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/README create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdf.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdf.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdfdrivr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdfdrivr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdferror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/bdflib.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/bdf/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/bzip2/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/bzip2/ftbzip2.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/bzip2/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcache.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcbasic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftccache.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftccache.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftccback.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftccmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcerror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcglyph.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcglyph.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcimage.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcimage.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcmanag.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcmanag.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcmru.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcmru.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcsbits.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/ftcsbits.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cache/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cff.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffcmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffcmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffdrivr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffdrivr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cfferrs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffgload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffgload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffparse.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffparse.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cffpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cfftoken.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/cfftypes.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cff/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/ciderrs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidgload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidgload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidparse.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidparse.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidriver.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidriver.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/cidtoken.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/cid/type1cid.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/README create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvalid.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvalid.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvbsln.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvcommn.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvcommn.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxverror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvfeat.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvfeat.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvfgen.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvjust.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvkern.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvlcar.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmod.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmod.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort0.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort1.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort2.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort4.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmort5.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx0.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx1.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx2.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx4.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvmorx5.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvopbd.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvprop.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/gxvtrak.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/gxvalid/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/adler32.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/ftgzip.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infblock.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infblock.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infcodes.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infcodes.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/inffixed.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/inflate.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/inftrees.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/inftrees.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infutil.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/infutil.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/zconf.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/zlib.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/zutil.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/gzip/zutil.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/lzw/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/lzw/ftlzw.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/lzw/ftzopen.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/lzw/ftzopen.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/lzw/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvalid.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvalid.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvbase.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvcommn.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvcommn.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otverror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvgdef.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvgpos.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvgpos.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvgsub.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvjstf.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvmath.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvmod.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/otvmod.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/otvalid/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/README create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcf.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcf.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfdrivr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfdrivr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcferror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfread.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfread.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfutil.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/pcfutil.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pcf/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrcmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrcmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrdrivr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrdrivr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrerror.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrgload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrgload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrsbit.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrsbit.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/pfrtypes.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pfr/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/afmparse.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/afmparse.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psaux.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psauxerr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psauxmod.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psauxmod.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psconv.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psconv.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/psobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/t1cmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/t1cmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/t1decode.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psaux/t1decode.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshalgo.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshalgo.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshglob.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshglob.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshinter.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshmod.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshmod.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshnterr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshrec.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/pshrec.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/pshinter/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/psmodule.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/psmodule.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/psnamerr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/psnames.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/pspic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/pspic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/pstables.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/psnames/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/ftmisc.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/ftraster.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/ftraster.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/ftrend1.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/ftrend1.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/raster.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/rasterrs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/rastpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/rastpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/raster/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfdriver.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfdriver.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sferrors.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfnt.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfntpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfntpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/sfobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttbdf.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttbdf.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttcmap.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttcmap.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttcmapc.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttkern.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttkern.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttmtx.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttmtx.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttpost.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttpost.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttsbit.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttsbit.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/sfnt/ttsbit0.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftgrays.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftgrays.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftsmerrs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftsmooth.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftsmooth.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftspic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/ftspic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/smooth/smooth.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/apinames.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/chktrcmp.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/cordic.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/content.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/docbeauty.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/docmaker.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/formatter.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/sources.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/tohtml.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/docmaker/utils.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/ftrandom/Makefile create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/ftrandom/README create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/ftrandom/ftrandom.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/glnames.py create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/test_afm.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/test_bbox.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/tools/test_trig.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/truetype.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttdriver.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttdriver.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/tterrors.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttgload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttgload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttgxvar.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttgxvar.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttinterp.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttinterp.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttobjs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttobjs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttpic.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttpic.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttpload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/truetype/ttpload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1afm.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1afm.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1driver.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1driver.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1errors.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1gload.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1gload.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1load.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1load.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1objs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1objs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1parse.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1parse.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/t1tokens.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type1/type1.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42drivr.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42drivr.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42error.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42objs.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42objs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42parse.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42parse.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/t42types.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/type42/type42.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/Jamfile create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/fnterrs.h create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/module.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/rules.mk create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/winfnt.c create mode 100644 extensions/externals/src/freetype-2.4.9/src/winfonts/winfnt.h create mode 100644 extensions/externals/src/freetype-2.4.9/version.sed create mode 100755 extensions/externals/src/freetype-2.4.9/vms_make.com create mode 100644 extensions/externals/src/harfbuzz/.travis.yml create mode 100644 extensions/externals/src/harfbuzz/AUTHORS create mode 100644 extensions/externals/src/harfbuzz/Android.mk create mode 100644 extensions/externals/src/harfbuzz/COPYING create mode 100644 extensions/externals/src/harfbuzz/INSTALL create mode 100644 extensions/externals/src/harfbuzz/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/NEWS create mode 100644 extensions/externals/src/harfbuzz/README create mode 100644 extensions/externals/src/harfbuzz/THANKS create mode 100644 extensions/externals/src/harfbuzz/TODO create mode 100755 extensions/externals/src/harfbuzz/ar-lib create mode 100644 extensions/externals/src/harfbuzz/autogen.sh create mode 100755 extensions/externals/src/harfbuzz/compile create mode 100755 extensions/externals/src/harfbuzz/config.guess create mode 100644 extensions/externals/src/harfbuzz/config.h.in create mode 100755 extensions/externals/src/harfbuzz/config.sub create mode 100644 extensions/externals/src/harfbuzz/config/android/config.h create mode 100644 extensions/externals/src/harfbuzz/config/linux/config.h create mode 100644 extensions/externals/src/harfbuzz/config/win32/config.h create mode 100644 extensions/externals/src/harfbuzz/config/win32/stdint.h create mode 100755 extensions/externals/src/harfbuzz/configure create mode 100644 extensions/externals/src/harfbuzz/configure.ac create mode 100755 extensions/externals/src/harfbuzz/depcomp create mode 100644 extensions/externals/src/harfbuzz/docs/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/docs/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/docs/reference/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/docs/reference/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/docs/reference/harfbuzz-docs.xml create mode 100644 extensions/externals/src/harfbuzz/docs/reference/harfbuzz-overrides.txt create mode 100644 extensions/externals/src/harfbuzz/docs/reference/harfbuzz-sections.txt create mode 100644 extensions/externals/src/harfbuzz/docs/reference/version.xml.in create mode 100644 extensions/externals/src/harfbuzz/git.mk create mode 100644 extensions/externals/src/harfbuzz/gtk-doc.make create mode 100644 extensions/externals/src/harfbuzz/harfbuzz.doap create mode 100644 extensions/externals/src/harfbuzz/harfbuzz_2008.vcproj create mode 100644 extensions/externals/src/harfbuzz/harfbuzz_2010.vcxproj create mode 100644 extensions/externals/src/harfbuzz/harfbuzz_2012.vcxproj create mode 100755 extensions/externals/src/harfbuzz/install-sh create mode 100755 extensions/externals/src/harfbuzz/libtool create mode 100644 extensions/externals/src/harfbuzz/ltmain.sh create mode 100644 extensions/externals/src/harfbuzz/m4/ax_pthread.m4 create mode 100644 extensions/externals/src/harfbuzz/m4/gtk-doc.m4 create mode 100644 extensions/externals/src/harfbuzz/m4/pkg.m4 create mode 100755 extensions/externals/src/harfbuzz/missing create mode 100644 extensions/externals/src/harfbuzz/src/.hb-buffer.h.swp create mode 100644 extensions/externals/src/harfbuzz/src/.hb-icu.h.swp create mode 100644 extensions/externals/src/harfbuzz/src/.hb-shape.h.swp create mode 100644 extensions/externals/src/harfbuzz/src/.hb.h.swp create mode 100644 extensions/externals/src/harfbuzz/src/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/src/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/src/check-c-linkage-decls.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-defs.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-header-guards.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-includes.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-libstdc++.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-static-inits.sh create mode 100644 extensions/externals/src/harfbuzz/src/check-symbols.sh create mode 100644 extensions/externals/src/harfbuzz/src/gen-arabic-table.py create mode 100644 extensions/externals/src/harfbuzz/src/gen-indic-table.py create mode 100644 extensions/externals/src/harfbuzz/src/harfbuzz-gobject.pc.in create mode 100644 extensions/externals/src/harfbuzz/src/harfbuzz-icu.pc.in create mode 100644 extensions/externals/src/harfbuzz/src/harfbuzz.pc.in create mode 100644 extensions/externals/src/harfbuzz/src/hb-atomic-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-blob.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-blob.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-deserialize-json.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-deserialize-json.rl create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-deserialize-text.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-deserialize-text.rl create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer-serialize.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-buffer.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-cache-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-common.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-common.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-coretext.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-coretext.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-deprecated.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-face-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-face.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-face.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-fallback-shape.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-font-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-font.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-font.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-ft.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ft.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-glib.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-glib.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-gobject-enums.cc.tmpl create mode 100644 extensions/externals/src/harfbuzz/src/hb-gobject-enums.h.tmpl create mode 100644 extensions/externals/src/harfbuzz/src/hb-gobject-structs.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-gobject-structs.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-gobject.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-graphite2.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-graphite2.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-icu.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-icu.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-mutex-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-object-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-open-file-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-open-type-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-head-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-hhea-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-hmtx-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-common-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-gdef-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-gpos-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-gsub-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-gsubgpos-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-jstf-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-layout.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-map-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-map.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-maxp-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-name-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-arabic-fallback.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-arabic-table.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-arabic.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-default.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-indic-machine.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-indic-machine.rl create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-indic-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-indic-table.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-indic.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-myanmar-machine.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-myanmar-machine.rl create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-myanmar.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-sea-machine.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-sea-machine.rl create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-sea.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-complex-thai.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-fallback-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-fallback.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-normalize-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-normalize.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-shape.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-tag.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot-tag.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-ot.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-set-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-set.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-set.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-shape-plan-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-shape-plan.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-shape-plan.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-shape.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-shape.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-shaper-impl-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-shaper-list.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-shaper-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-shaper.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-tt-font.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/COPYING create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/README create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/ucdn.c create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/ucdn.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-ucdn/unicodedata_db.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-unicode-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-unicode.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-unicode.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-uniscribe.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb-uniscribe.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-utf-private.hh create mode 100644 extensions/externals/src/harfbuzz/src/hb-version.h create mode 100644 extensions/externals/src/harfbuzz/src/hb-version.h.in create mode 100644 extensions/externals/src/harfbuzz/src/hb-warning.cc create mode 100644 extensions/externals/src/harfbuzz/src/hb.h create mode 100644 extensions/externals/src/harfbuzz/src/main.cc create mode 100644 extensions/externals/src/harfbuzz/src/sample.py create mode 100644 extensions/externals/src/harfbuzz/src/test-buffer-serialize.cc create mode 100644 extensions/externals/src/harfbuzz/src/test-size-params.cc create mode 100644 extensions/externals/src/harfbuzz/src/test-would-substitute.cc create mode 100644 extensions/externals/src/harfbuzz/src/test.cc create mode 100644 extensions/externals/src/harfbuzz/util/Makefile.am create mode 100644 extensions/externals/src/harfbuzz/util/Makefile.in create mode 100644 extensions/externals/src/harfbuzz/util/ansi-print.cc create mode 100644 extensions/externals/src/harfbuzz/util/ansi-print.hh create mode 100644 extensions/externals/src/harfbuzz/util/hb-ot-shape-closure.cc create mode 100644 extensions/externals/src/harfbuzz/util/hb-shape.cc create mode 100644 extensions/externals/src/harfbuzz/util/hb-view.cc create mode 100644 extensions/externals/src/harfbuzz/util/helper-cairo-ansi.cc create mode 100644 extensions/externals/src/harfbuzz/util/helper-cairo-ansi.hh create mode 100644 extensions/externals/src/harfbuzz/util/helper-cairo.cc create mode 100644 extensions/externals/src/harfbuzz/util/helper-cairo.hh create mode 100644 extensions/externals/src/harfbuzz/util/main-font-text.hh create mode 100644 extensions/externals/src/harfbuzz/util/options.cc create mode 100644 extensions/externals/src/harfbuzz/util/options.hh create mode 100644 extensions/externals/src/harfbuzz/util/shape-consumer.hh create mode 100644 extensions/externals/src/harfbuzz/util/view-cairo.cc create mode 100644 extensions/externals/src/harfbuzz/util/view-cairo.hh create mode 100644 extensions/externals/src/ucdn/CMakeLists.txt create mode 100644 extensions/externals/src/ucdn/PYTHON-LICENSE create mode 100644 extensions/externals/src/ucdn/README create mode 100644 extensions/externals/src/ucdn/hb-ucdn.h create mode 100644 extensions/externals/src/ucdn/makeunicodedata.py create mode 100644 extensions/externals/src/ucdn/ucdn-test.c create mode 100644 extensions/externals/src/ucdn/ucdn.c create mode 100644 extensions/externals/src/ucdn/ucdn.h create mode 100644 extensions/externals/src/ucdn/unicodedata_db.h create mode 100644 samples/build/linux-arm32/CursiveES.xpj.CursiveES.Makefile create mode 100644 samples/build/linux-arm32/Makefile.CursiveES.mk create mode 100644 samples/build/linux-arm32/Makefile.ShapedTextES.mk create mode 100644 samples/build/linux-arm32/Makefile.TextWheelES.mk create mode 100644 samples/build/linux-arm32/Makefile.Tiger3DES.mk create mode 100644 samples/build/linux-arm32/Makefile.TigerWarpES.mk create mode 100644 samples/build/linux-arm32/ShapedTextES.xpj.ShapedTextES.Makefile create mode 100644 samples/build/linux-arm32/TextWheelES.xpj.TextWheelES.Makefile create mode 100644 samples/build/linux-arm32/Tiger3DES.xpj.Tiger3DES.Makefile create mode 100644 samples/build/linux-arm32/TigerWarpES.xpj.TigerWarpES.Makefile create mode 100644 samples/build/linux32/Makefile.CursiveES.mk create mode 100644 samples/build/linux32/Makefile.ShapedTextES.mk create mode 100644 samples/build/linux32/Makefile.TextWheelES.mk create mode 100644 samples/build/linux32/Makefile.Tiger3DES.mk create mode 100644 samples/build/linux32/Makefile.TigerWarpES.mk create mode 100644 samples/build/linux32/Makefile.cg4cpp.mk create mode 100644 samples/build/linux32/Makefile.freetype.mk create mode 100644 samples/build/linux32/Makefile.harfbuzz.mk create mode 100644 samples/build/linux64/Makefile.CursiveES.mk create mode 100644 samples/build/linux64/Makefile.ShapedTextES.mk create mode 100644 samples/build/linux64/Makefile.TextWheelES.mk create mode 100644 samples/build/linux64/Makefile.Tiger3DES.mk create mode 100644 samples/build/linux64/Makefile.TigerWarpES.mk create mode 100644 samples/build/linux64/Makefile.cg4cpp.mk create mode 100644 samples/build/linux64/Makefile.freetype.mk create mode 100644 samples/build/linux64/Makefile.harfbuzz.mk create mode 100644 samples/build/makeandroid/Makefile.CursiveES.mk create mode 100644 samples/build/makeandroid/Makefile.ShapedTextES.mk create mode 100644 samples/build/makeandroid/Makefile.TextWheelES.mk create mode 100644 samples/build/makeandroid/Makefile.Tiger3DES.mk create mode 100644 samples/build/makeandroid/Makefile.TigerWarpES.mk create mode 100644 samples/build/makeandroid/Makefile.cg4cpp.mk create mode 100644 samples/build/makeandroid/Makefile.freetype.mk create mode 100644 samples/build/makeandroid/Makefile.harfbuzz.mk create mode 100644 samples/build/vs2010android/CursiveES.sln create mode 100644 samples/build/vs2010android/CursiveES.vcxproj create mode 100644 samples/build/vs2010android/CursiveES.vcxproj.filters create mode 100644 samples/build/vs2010android/CursiveES.vcxproj.user create mode 100644 samples/build/vs2010android/ShapedTextES.sln create mode 100644 samples/build/vs2010android/ShapedTextES.vcxproj create mode 100644 samples/build/vs2010android/ShapedTextES.vcxproj.filters create mode 100644 samples/build/vs2010android/ShapedTextES.vcxproj.user create mode 100644 samples/build/vs2010android/TextWheelES.sln create mode 100644 samples/build/vs2010android/TextWheelES.vcxproj create mode 100644 samples/build/vs2010android/TextWheelES.vcxproj.filters create mode 100644 samples/build/vs2010android/TextWheelES.vcxproj.user create mode 100644 samples/build/vs2010android/Tiger3DES.sln create mode 100644 samples/build/vs2010android/Tiger3DES.vcxproj create mode 100644 samples/build/vs2010android/Tiger3DES.vcxproj.filters create mode 100644 samples/build/vs2010android/Tiger3DES.vcxproj.user create mode 100644 samples/build/vs2010android/TigerWarpES.sln create mode 100644 samples/build/vs2010android/TigerWarpES.vcxproj create mode 100644 samples/build/vs2010android/TigerWarpES.vcxproj.filters create mode 100644 samples/build/vs2010android/TigerWarpES.vcxproj.user create mode 100644 samples/build/vs2010win32/CursiveES.sln create mode 100644 samples/build/vs2010win32/CursiveES.vcxproj create mode 100644 samples/build/vs2010win32/CursiveES.vcxproj.filters create mode 100644 samples/build/vs2010win32/ShapedTextES.sln create mode 100644 samples/build/vs2010win32/ShapedTextES.vcxproj create mode 100644 samples/build/vs2010win32/ShapedTextES.vcxproj.filters create mode 100644 samples/build/vs2010win32/TextWheelES.sln create mode 100644 samples/build/vs2010win32/TextWheelES.vcxproj create mode 100644 samples/build/vs2010win32/TextWheelES.vcxproj.filters create mode 100644 samples/build/vs2010win32/Tiger3DES.sln create mode 100644 samples/build/vs2010win32/Tiger3DES.vcxproj create mode 100644 samples/build/vs2010win32/Tiger3DES.vcxproj.filters create mode 100644 samples/build/vs2010win32/TigerWarpES.sln create mode 100644 samples/build/vs2010win32/TigerWarpES.vcxproj create mode 100644 samples/build/vs2010win32/TigerWarpES.vcxproj.filters create mode 100644 samples/build/vs2012win32/CursiveES.sln create mode 100644 samples/build/vs2012win32/CursiveES.vcxproj create mode 100644 samples/build/vs2012win32/CursiveES.vcxproj.filters create mode 100644 samples/build/vs2012win32/ShapedTextES.sln create mode 100644 samples/build/vs2012win32/ShapedTextES.vcxproj create mode 100644 samples/build/vs2012win32/ShapedTextES.vcxproj.filters create mode 100644 samples/build/vs2012win32/TextWheelES.sln create mode 100644 samples/build/vs2012win32/TextWheelES.vcxproj create mode 100644 samples/build/vs2012win32/TextWheelES.vcxproj.filters create mode 100644 samples/build/vs2012win32/Tiger3DES.sln create mode 100644 samples/build/vs2012win32/Tiger3DES.vcxproj create mode 100644 samples/build/vs2012win32/Tiger3DES.vcxproj.filters create mode 100644 samples/build/vs2012win32/TigerWarpES.sln create mode 100644 samples/build/vs2012win32/TigerWarpES.vcxproj create mode 100644 samples/build/vs2012win32/TigerWarpES.vcxproj.filters create mode 100644 samples/es2-aurora/Bloom/res/drawable/banner.png create mode 100644 samples/es2-aurora/InstancedTessellation/res/drawable/banner.png create mode 100644 samples/es2-aurora/InstancingApp/res/drawable/banner.png create mode 100644 samples/es2-aurora/MotionBlur/res/drawable/banner.png create mode 100644 samples/es2-aurora/OptimizationApp/res/drawable/banner.png create mode 100644 samples/es2-aurora/ParticleUpsampling/res/drawable/banner.png create mode 100644 samples/es2-aurora/SkinningApp/res/drawable/banner.png create mode 100644 samples/es2-aurora/TextureArrayTerrain/res/drawable/banner.png create mode 100644 samples/es3-kepler/FXAA/assets/shaders/FXAA_DefaultES.frag create mode 100644 samples/es3-kepler/FXAA/assets/shaders/FXAA_Extreme_QualityES.frag create mode 100644 samples/es3-kepler/FXAA/assets/shaders/FXAA_FastestES.frag create mode 100644 samples/es3-kepler/FXAA/assets/shaders/FXAA_High_QualityES.frag create mode 100644 samples/es3-kepler/FXAA/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/ComputeBasicGLSL/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/ComputeParticles/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/ComputeWaterSimulation/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/FeedbackParticlesApp/res/drawable/banner.png rename samples/{es3-kepler => es3aep-kepler}/HDR/AndroidManifest.xml (75%) rename samples/{es3-kepler => es3aep-kepler}/HDR/AppExtensions.h (93%) rename samples/{es3-kepler => es3aep-kepler}/HDR/BlurShaderGenerator.cpp (97%) rename samples/{es3-kepler => es3aep-kepler}/HDR/BlurShaderGenerator.h (93%) rename samples/{es3-kepler => es3aep-kepler}/HDR/ColorModulation.h (97%) rename samples/{es3-kepler => es3aep-kepler}/HDR/CubeData.h (97%) rename samples/{es3-kepler => es3aep-kepler}/HDR/FileLoader.cpp (95%) rename samples/{es3-kepler => es3aep-kepler}/HDR/FileLoader.h (95%) rename samples/{es3-kepler => es3aep-kepler}/HDR/HDR.cpp (96%) rename samples/{es3-kepler => es3aep-kepler}/HDR/HDR.h (97%) rename samples/{es3-kepler => es3aep-kepler}/HDR/HDRImages.cpp (99%) rename samples/{es3-kepler => es3aep-kepler}/HDR/HDRImages.h (96%) rename samples/{es3-kepler => es3aep-kepler}/HDR/RenderTexture.cpp (95%) rename samples/{es3-kepler => es3aep-kepler}/HDR/RenderTexture.h (95%) rename samples/{es3-kepler => es3aep-kepler}/HDR/ShaderDeclaration.h (90%) rename samples/{es3-kepler => es3aep-kepler}/HDR/ShaderObject.cpp (98%) rename samples/{es3-kepler => es3aep-kepler}/HDR/ShaderObject.h (94%) rename samples/{es3-kepler => es3aep-kepler}/HDR/VertexBufferObject.cpp (95%) rename samples/{es3-kepler => es3aep-kepler}/HDR/VertexBufferObject.h (94%) rename samples/{es3-kepler => es3aep-kepler}/HDR/ant.properties (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/models/knot (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/models/skull (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/models/teapot (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/models/venus (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/raw/cup.dat (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/raw/font8x8.dat (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/raw/gate.dat (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/altar_cross_irrad_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/altar_cross_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/altar_cross_rough_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/grace_cross_irrad_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/grace_cross_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/grace_cross_rough_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/mask.dds (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/nvidia_logo.dds (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/rnl_cross_irrad_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/rnl_cross_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/rnl_cross_rough_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/uffizi_cross_irrad_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/uffizi_cross_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/assets/textures/uffizi_cross_rough_mmp_s.hdr (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/build.xml (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/project.properties (95%) create mode 100644 samples/es3aep-kepler/HDR/res/drawable/banner.png rename samples/{es3-kepler => es3aep-kepler}/HDR/res/values/strings.xml (100%) rename samples/{es3-kepler => es3aep-kepler}/HDR/rgbe.cpp (99%) rename samples/{es3-kepler => es3aep-kepler}/HDR/rgbe.h (96%) rename samples/{es3-kepler => es3aep-kepler}/HDR/src/com/nvidia/HDR/HDR.java (93%) create mode 100644 samples/es3aep-kepler/MotionBlurAdvanced/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/SoftShadows/res/drawable/banner.png create mode 100644 samples/es3aep-kepler/TerrainTessellation/res/drawable/banner.png create mode 100644 samples/gl4-kepler/BindlessApp/res/drawable/banner.png create mode 100644 samples/gl4-kepler/MultiDrawIndirect/res/drawable/banner.png create mode 100644 samples/gl4-kepler/PathRenderingBasic/res/drawable/banner.png create mode 100644 samples/gl4-kepler/WeightedBlendedOIT/res/drawable/banner.png create mode 100644 samples/gl4-maxwell/BlendedAA/res/drawable/banner.png create mode 100644 samples/gl4-maxwell/CascadedShadowMapping/res/drawable/banner.png create mode 100644 samples/gl4-maxwell/ConservativeRaster/res/drawable/banner.png create mode 100644 samples/gl4-maxwell/NormalBlendedDecal/res/drawable/banner.png create mode 100644 samples/gl4-maxwell/PixelShaderInterlockOIT/AndroidManifest.xml create mode 100644 samples/nvpr/CursiveES/AndroidManifest.xml create mode 100644 samples/nvpr/CursiveES/Cursive.cpp create mode 100644 samples/nvpr/CursiveES/Cursive.h create mode 100644 samples/nvpr/CursiveES/ant.properties create mode 100644 samples/nvpr/CursiveES/build.xml create mode 100644 samples/nvpr/CursiveES/cg4cpp_xform.cpp create mode 100644 samples/nvpr/CursiveES/cg4cpp_xform.hpp create mode 100644 samples/nvpr/CursiveES/project.properties create mode 100644 samples/nvpr/CursiveES/res/drawable/banner.png create mode 100644 samples/nvpr/CursiveES/res/drawable/icon.png create mode 100644 samples/nvpr/CursiveES/res/values/strings.xml create mode 100644 samples/nvpr/CursiveES/src/com/nvidia/CursiveES/CursiveES.java create mode 100644 samples/nvpr/CursiveES/this_is_crazy.cpp create mode 100644 samples/nvpr/ShapedTextES/AndroidManifest.xml create mode 100644 samples/nvpr/ShapedTextES/PathSampleApp.cpp create mode 100644 samples/nvpr/ShapedTextES/PathSampleApp.h create mode 100644 samples/nvpr/ShapedTextES/ShapedText.cpp create mode 100644 samples/nvpr/ShapedTextES/ShapedText.h create mode 100644 samples/nvpr/ShapedTextES/ant.properties create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/APACHE-LICENSE-2.0.html create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/NotoNaskhArabic-Regular.ttf create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/NotoSansCJKtc-Light.otf create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/NotoSansHebrew-Regular.ttf create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/NotoSansTamil-Regular.ttf create mode 100644 samples/nvpr/ShapedTextES/assets/fonts/noto/NotoSerif-Regular.ttf create mode 100644 samples/nvpr/ShapedTextES/build.xml create mode 100644 samples/nvpr/ShapedTextES/cg4cpp_xform.cpp create mode 100644 samples/nvpr/ShapedTextES/cg4cpp_xform.hpp create mode 100644 samples/nvpr/ShapedTextES/countof.h create mode 100644 samples/nvpr/ShapedTextES/project.properties create mode 100644 samples/nvpr/ShapedTextES/res/drawable/banner.png create mode 100644 samples/nvpr/ShapedTextES/res/drawable/icon.png create mode 100644 samples/nvpr/ShapedTextES/res/values/strings.xml create mode 100644 samples/nvpr/ShapedTextES/sRGB_math.cpp create mode 100644 samples/nvpr/ShapedTextES/sRGB_math.hpp create mode 100644 samples/nvpr/ShapedTextES/src/com/nvidia/ShapedTextES/ShapedTextES.java create mode 100644 samples/nvpr/TextWheelES/AndroidManifest.xml create mode 100644 samples/nvpr/TextWheelES/TextWheel.cpp create mode 100644 samples/nvpr/TextWheelES/TextWheel.h create mode 100644 samples/nvpr/TextWheelES/ant.properties create mode 100644 samples/nvpr/TextWheelES/build.xml create mode 100644 samples/nvpr/TextWheelES/cg4cpp_xform.cpp create mode 100644 samples/nvpr/TextWheelES/cg4cpp_xform.hpp create mode 100644 samples/nvpr/TextWheelES/countof.h create mode 100644 samples/nvpr/TextWheelES/project.properties create mode 100644 samples/nvpr/TextWheelES/render_font.cpp create mode 100644 samples/nvpr/TextWheelES/render_font.hpp create mode 100644 samples/nvpr/TextWheelES/res/drawable/banner.png create mode 100644 samples/nvpr/TextWheelES/res/drawable/icon.png create mode 100644 samples/nvpr/TextWheelES/res/values/strings.xml create mode 100644 samples/nvpr/TextWheelES/sRGB_math.cpp create mode 100644 samples/nvpr/TextWheelES/sRGB_math.hpp create mode 100644 samples/nvpr/TextWheelES/src/com/nvidia/TextWheelES/TextWheelES.java create mode 100644 samples/nvpr/Tiger3DES/AndroidManifest.xml create mode 100644 samples/nvpr/Tiger3DES/Tiger3D.cpp create mode 100644 samples/nvpr/Tiger3DES/Tiger3D.h create mode 100644 samples/nvpr/Tiger3DES/ant.properties create mode 100644 samples/nvpr/Tiger3DES/build.xml create mode 100644 samples/nvpr/Tiger3DES/cg4cpp_xform.cpp create mode 100644 samples/nvpr/Tiger3DES/cg4cpp_xform.hpp create mode 100644 samples/nvpr/Tiger3DES/glut_teapot.cpp create mode 100644 samples/nvpr/Tiger3DES/glut_teapot.h create mode 100644 samples/nvpr/Tiger3DES/project.properties create mode 100644 samples/nvpr/Tiger3DES/render_font.cpp create mode 100644 samples/nvpr/Tiger3DES/render_font.hpp create mode 100644 samples/nvpr/Tiger3DES/res/drawable/banner.png create mode 100644 samples/nvpr/Tiger3DES/res/drawable/icon.png create mode 100644 samples/nvpr/Tiger3DES/res/values/strings.xml create mode 100644 samples/nvpr/Tiger3DES/src/com/nvidia/Tiger3DES/Tiger3DES.java create mode 100644 samples/nvpr/Tiger3DES/teapot.cpp create mode 100644 samples/nvpr/Tiger3DES/teapot.h create mode 100644 samples/nvpr/Tiger3DES/teapot_data.h create mode 100644 samples/nvpr/Tiger3DES/tiger.cpp create mode 100644 samples/nvpr/Tiger3DES/tiger.h create mode 100644 samples/nvpr/Tiger3DES/tiger_paths.h create mode 100644 samples/nvpr/Tiger3DES/tiger_style.h create mode 100644 samples/nvpr/Tiger3DES/trackball.cpp create mode 100644 samples/nvpr/Tiger3DES/trackball.h create mode 100644 samples/nvpr/TigerWarpES/AndroidManifest.xml create mode 100644 samples/nvpr/TigerWarpES/TigerWarp.cpp create mode 100644 samples/nvpr/TigerWarpES/TigerWarp.h create mode 100644 samples/nvpr/TigerWarpES/ant.properties create mode 100644 samples/nvpr/TigerWarpES/build.xml create mode 100644 samples/nvpr/TigerWarpES/cg4cpp_xform.cpp create mode 100644 samples/nvpr/TigerWarpES/cg4cpp_xform.hpp create mode 100644 samples/nvpr/TigerWarpES/project.properties create mode 100644 samples/nvpr/TigerWarpES/res/drawable/banner.png create mode 100644 samples/nvpr/TigerWarpES/res/drawable/icon.png create mode 100644 samples/nvpr/TigerWarpES/res/values/strings.xml create mode 100644 samples/nvpr/TigerWarpES/src/com/nvidia/TigerWarpES/TigerWarpES.java create mode 100644 samples/nvpr/TigerWarpES/tiger.cpp create mode 100644 samples/nvpr/TigerWarpES/tiger.h create mode 100644 samples/nvpr/TigerWarpES/tiger_paths.h create mode 100644 samples/nvpr/TigerWarpES/tiger_style.h diff --git a/extensions/build/linux-arm32/Makefile.NvAppBase.mk b/extensions/build/linux-arm32/Makefile.NvAppBase.mk index 84d399c..978cc3d 100644 --- a/extensions/build/linux-arm32/Makefile.NvAppBase.mk +++ b/extensions/build/linux-arm32/Makefile.NvAppBase.mk @@ -31,9 +31,9 @@ NvAppBase_debug_libraries += glfw3 NvAppBase_debug_cflags := $(NvAppBase_custom_cflags) NvAppBase_debug_cflags += $(addprefix -D, $(NvAppBase_debug_defines)) NvAppBase_debug_cflags += $(addprefix -I, $(NvAppBase_debug_hpaths)) -NvAppBase_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_debug_cflags += -Wno-reorder -NvAppBase_debug_cflags += -g +NvAppBase_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_lflags := $(NvAppBase_custom_lflags) NvAppBase_debug_lflags += $(addprefix -L, $(NvAppBase_debug_lpaths)) NvAppBase_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_debug_libraries)) -Wl,--end-group @@ -89,9 +89,9 @@ NvAppBase_release_libraries += glfw3 NvAppBase_release_cflags := $(NvAppBase_custom_cflags) NvAppBase_release_cflags += $(addprefix -D, $(NvAppBase_release_defines)) NvAppBase_release_cflags += $(addprefix -I, $(NvAppBase_release_hpaths)) -NvAppBase_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_release_cflags += -Wno-reorder -NvAppBase_release_cflags += -O2 +NvAppBase_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_lflags := $(NvAppBase_custom_lflags) NvAppBase_release_lflags += $(addprefix -L, $(NvAppBase_release_lpaths)) NvAppBase_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux-arm32/Makefile.NvAssetLoader.mk b/extensions/build/linux-arm32/Makefile.NvAssetLoader.mk index 7a0350e..93e027b 100644 --- a/extensions/build/linux-arm32/Makefile.NvAssetLoader.mk +++ b/extensions/build/linux-arm32/Makefile.NvAssetLoader.mk @@ -20,9 +20,9 @@ NvAssetLoader_debug_libraries += glfw3 NvAssetLoader_debug_cflags := $(NvAssetLoader_custom_cflags) NvAssetLoader_debug_cflags += $(addprefix -D, $(NvAssetLoader_debug_defines)) NvAssetLoader_debug_cflags += $(addprefix -I, $(NvAssetLoader_debug_hpaths)) -NvAssetLoader_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_debug_cflags += -Wno-reorder -NvAssetLoader_debug_cflags += -g +NvAssetLoader_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_debug_lflags += $(addprefix -L, $(NvAssetLoader_debug_lpaths)) NvAssetLoader_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_debug_libraries)) -Wl,--end-group @@ -71,9 +71,9 @@ NvAssetLoader_release_libraries += glfw3 NvAssetLoader_release_cflags := $(NvAssetLoader_custom_cflags) NvAssetLoader_release_cflags += $(addprefix -D, $(NvAssetLoader_release_defines)) NvAssetLoader_release_cflags += $(addprefix -I, $(NvAssetLoader_release_hpaths)) -NvAssetLoader_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_release_cflags += -Wno-reorder -NvAssetLoader_release_cflags += -O2 +NvAssetLoader_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_release_lflags += $(addprefix -L, $(NvAssetLoader_release_lpaths)) NvAssetLoader_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux-arm32/Makefile.NvGLUtils.mk b/extensions/build/linux-arm32/Makefile.NvGLUtils.mk index 235260e..962c9cc 100644 --- a/extensions/build/linux-arm32/Makefile.NvGLUtils.mk +++ b/extensions/build/linux-arm32/Makefile.NvGLUtils.mk @@ -27,9 +27,9 @@ NvGLUtils_debug_libraries += glfw3 NvGLUtils_debug_cflags := $(NvGLUtils_custom_cflags) NvGLUtils_debug_cflags += $(addprefix -D, $(NvGLUtils_debug_defines)) NvGLUtils_debug_cflags += $(addprefix -I, $(NvGLUtils_debug_hpaths)) -NvGLUtils_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_debug_cflags += -Wno-reorder -NvGLUtils_debug_cflags += -g +NvGLUtils_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_debug_lflags += $(addprefix -L, $(NvGLUtils_debug_lpaths)) NvGLUtils_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_debug_libraries)) -Wl,--end-group @@ -78,9 +78,9 @@ NvGLUtils_release_libraries += glfw3 NvGLUtils_release_cflags := $(NvGLUtils_custom_cflags) NvGLUtils_release_cflags += $(addprefix -D, $(NvGLUtils_release_defines)) NvGLUtils_release_cflags += $(addprefix -I, $(NvGLUtils_release_hpaths)) -NvGLUtils_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_release_cflags += -Wno-reorder -NvGLUtils_release_cflags += -O2 +NvGLUtils_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_release_lflags += $(addprefix -L, $(NvGLUtils_release_lpaths)) NvGLUtils_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux-arm32/Makefile.NvGamepad.mk b/extensions/build/linux-arm32/Makefile.NvGamepad.mk index 6f72e6a..82f0f3b 100644 --- a/extensions/build/linux-arm32/Makefile.NvGamepad.mk +++ b/extensions/build/linux-arm32/Makefile.NvGamepad.mk @@ -22,9 +22,9 @@ NvGamepad_debug_libraries += glfw3 NvGamepad_debug_cflags := $(NvGamepad_custom_cflags) NvGamepad_debug_cflags += $(addprefix -D, $(NvGamepad_debug_defines)) NvGamepad_debug_cflags += $(addprefix -I, $(NvGamepad_debug_hpaths)) -NvGamepad_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_debug_cflags += -Wno-reorder -NvGamepad_debug_cflags += -g +NvGamepad_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_lflags := $(NvGamepad_custom_lflags) NvGamepad_debug_lflags += $(addprefix -L, $(NvGamepad_debug_lpaths)) NvGamepad_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_debug_libraries)) -Wl,--end-group @@ -73,9 +73,9 @@ NvGamepad_release_libraries += glfw3 NvGamepad_release_cflags := $(NvGamepad_custom_cflags) NvGamepad_release_cflags += $(addprefix -D, $(NvGamepad_release_defines)) NvGamepad_release_cflags += $(addprefix -I, $(NvGamepad_release_hpaths)) -NvGamepad_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_release_cflags += -Wno-reorder -NvGamepad_release_cflags += -O2 +NvGamepad_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_lflags := $(NvGamepad_custom_lflags) NvGamepad_release_lflags += $(addprefix -L, $(NvGamepad_release_lpaths)) NvGamepad_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux-arm32/Makefile.NvModel.mk b/extensions/build/linux-arm32/Makefile.NvModel.mk index 84575a1..d380b21 100644 --- a/extensions/build/linux-arm32/Makefile.NvModel.mk +++ b/extensions/build/linux-arm32/Makefile.NvModel.mk @@ -24,9 +24,9 @@ NvModel_debug_libraries += glfw3 NvModel_debug_cflags := $(NvModel_custom_cflags) NvModel_debug_cflags += $(addprefix -D, $(NvModel_debug_defines)) NvModel_debug_cflags += $(addprefix -I, $(NvModel_debug_hpaths)) -NvModel_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_debug_cflags += -Wno-reorder -NvModel_debug_cflags += -g +NvModel_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_lflags := $(NvModel_custom_lflags) NvModel_debug_lflags += $(addprefix -L, $(NvModel_debug_lpaths)) NvModel_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_debug_libraries)) -Wl,--end-group @@ -75,9 +75,9 @@ NvModel_release_libraries += glfw3 NvModel_release_cflags := $(NvModel_custom_cflags) NvModel_release_cflags += $(addprefix -D, $(NvModel_release_defines)) NvModel_release_cflags += $(addprefix -I, $(NvModel_release_hpaths)) -NvModel_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_release_cflags += -Wno-reorder -NvModel_release_cflags += -O2 +NvModel_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_lflags := $(NvModel_custom_lflags) NvModel_release_lflags += $(addprefix -L, $(NvModel_release_lpaths)) NvModel_release_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux-arm32/Makefile.NvUI.mk b/extensions/build/linux-arm32/Makefile.NvUI.mk index c7c9539..0e3f2c6 100644 --- a/extensions/build/linux-arm32/Makefile.NvUI.mk +++ b/extensions/build/linux-arm32/Makefile.NvUI.mk @@ -36,9 +36,9 @@ NvUI_debug_libraries += glfw3 NvUI_debug_cflags := $(NvUI_custom_cflags) NvUI_debug_cflags += $(addprefix -D, $(NvUI_debug_defines)) NvUI_debug_cflags += $(addprefix -I, $(NvUI_debug_hpaths)) -NvUI_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_debug_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_debug_cflags += -Wno-reorder -NvUI_debug_cflags += -g +NvUI_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_lflags := $(NvUI_custom_lflags) NvUI_debug_lflags += $(addprefix -L, $(NvUI_debug_lpaths)) NvUI_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_debug_libraries)) -Wl,--end-group @@ -87,9 +87,9 @@ NvUI_release_libraries += glfw3 NvUI_release_cflags := $(NvUI_custom_cflags) NvUI_release_cflags += $(addprefix -D, $(NvUI_release_defines)) NvUI_release_cflags += $(addprefix -I, $(NvUI_release_hpaths)) -NvUI_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_release_cflags += -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_release_cflags += -Wno-reorder -NvUI_release_cflags += -O2 +NvUI_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_lflags := $(NvUI_custom_lflags) NvUI_release_lflags += $(addprefix -L, $(NvUI_release_lpaths)) NvUI_release_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_release_libraries)) -Wl,--end-group diff --git a/extensions/build/linux32/Makefile b/extensions/build/linux32/Makefile index 5bd23e0..8d3db21 100644 --- a/extensions/build/linux32/Makefile +++ b/extensions/build/linux32/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for linux32 DEPSDIR = .deps -SILENT_FLAG ?= @ #default defines OBJS_DIR = build RMDIR = rm -fr @@ -24,15 +23,15 @@ debug: build_NvUI_debug release: build_NvUI_release clean: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_debug: clean_NvUI_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_release: clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) include Makefile.NvUI.mk @@ -192,3 +191,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvAppBase.mk b/extensions/build/linux32/Makefile.NvAppBase.mk index 410f516..3b30864 100644 --- a/extensions/build/linux32/Makefile.NvAppBase.mk +++ b/extensions/build/linux32/Makefile.NvAppBase.mk @@ -43,12 +43,12 @@ NvAppBase_debug_common_cflags += $(addprefix -D, $(NvAppBase_debug_defines)) NvAppBase_debug_common_cflags += $(addprefix -I, $(NvAppBase_debug_hpaths)) NvAppBase_debug_common_cflags += -m32 NvAppBase_debug_cflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAppBase_debug_cflags += -g +NvAppBase_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_cppflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_debug_cppflags += -Wno-reorder -NvAppBase_debug_cppflags += -g +NvAppBase_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_lflags := $(NvAppBase_custom_lflags) NvAppBase_debug_lflags += $(addprefix -L, $(NvAppBase_debug_lpaths)) NvAppBase_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_debug_libraries)) -Wl,--end-group @@ -61,9 +61,9 @@ NvAppBase_debug_obj = $(NvAppBase_debug_cpp_o) $(NvAppBase_debug_cc_o) $(Nv NvAppBase_debug_bin := ./../../lib/linux32/libNvAppBaseD.a clean_NvAppBase_debug: - $(SILENT_FLAG)$(ECHO) clean NvAppBase debug - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_bin) + $(ECHO) clean NvAppBase debug + $(RMDIR) $(NvAppBase_debug_objsdir) + $(RMDIR) $(NvAppBase_debug_bin) build_NvAppBase_debug: postbuild_NvAppBase_debug postbuild_NvAppBase_debug: mainbuild_NvAppBase_debug @@ -71,37 +71,37 @@ mainbuild_NvAppBase_debug: prebuild_NvAppBase_debug $(NvAppBase_debug_bin) prebuild_NvAppBase_debug: $(NvAppBase_debug_bin): $(NvAppBase_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvAppBaseD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvAppBaseD.a` + $(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) + $(ECHO) building $@ complete! NvAppBase_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_debug_cpp_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_cc_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_c_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d @@ -125,12 +125,12 @@ NvAppBase_release_common_cflags += $(addprefix -D, $(NvAppBase_release_define NvAppBase_release_common_cflags += $(addprefix -I, $(NvAppBase_release_hpaths)) NvAppBase_release_common_cflags += -m32 NvAppBase_release_cflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAppBase_release_cflags += -O2 +NvAppBase_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_cppflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_release_cppflags += -Wno-reorder -NvAppBase_release_cppflags += -O2 +NvAppBase_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_lflags := $(NvAppBase_custom_lflags) NvAppBase_release_lflags += $(addprefix -L, $(NvAppBase_release_lpaths)) NvAppBase_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_release_libraries)) -Wl,--end-group @@ -143,9 +143,9 @@ NvAppBase_release_obj = $(NvAppBase_release_cpp_o) $(NvAppBase_release_cc_o NvAppBase_release_bin := ./../../lib/linux32/libNvAppBase.a clean_NvAppBase_release: - $(SILENT_FLAG)$(ECHO) clean NvAppBase release - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_bin) + $(ECHO) clean NvAppBase release + $(RMDIR) $(NvAppBase_release_objsdir) + $(RMDIR) $(NvAppBase_release_bin) build_NvAppBase_release: postbuild_NvAppBase_release postbuild_NvAppBase_release: mainbuild_NvAppBase_release @@ -153,40 +153,45 @@ mainbuild_NvAppBase_release: prebuild_NvAppBase_release $(NvAppBase_release_bin) prebuild_NvAppBase_release: $(NvAppBase_release_bin): $(NvAppBase_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvAppBase.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvAppBase.a` + $(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) + $(ECHO) building $@ complete! NvAppBase_release_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_release_cpp_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_cc_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_c_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d clean_NvAppBase: clean_NvAppBase_debug clean_NvAppBase_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvAssetLoader.mk b/extensions/build/linux32/Makefile.NvAssetLoader.mk index f0eff2e..fa58f85 100644 --- a/extensions/build/linux32/Makefile.NvAssetLoader.mk +++ b/extensions/build/linux32/Makefile.NvAssetLoader.mk @@ -32,12 +32,12 @@ NvAssetLoader_debug_common_cflags += $(addprefix -D, $(NvAssetLoader_debug_de NvAssetLoader_debug_common_cflags += $(addprefix -I, $(NvAssetLoader_debug_hpaths)) NvAssetLoader_debug_common_cflags += -m32 NvAssetLoader_debug_cflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAssetLoader_debug_cflags += -g +NvAssetLoader_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_cppflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_debug_cppflags += -Wno-reorder -NvAssetLoader_debug_cppflags += -g +NvAssetLoader_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_debug_lflags += $(addprefix -L, $(NvAssetLoader_debug_lpaths)) NvAssetLoader_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_debug_libraries)) -Wl,--end-group @@ -50,9 +50,9 @@ NvAssetLoader_debug_obj = $(NvAssetLoader_debug_cpp_o) $(NvAssetLoader_debu NvAssetLoader_debug_bin := ./../../lib/linux32/libNvAssetLoaderD.a clean_NvAssetLoader_debug: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader debug - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_bin) + $(ECHO) clean NvAssetLoader debug + $(RMDIR) $(NvAssetLoader_debug_objsdir) + $(RMDIR) $(NvAssetLoader_debug_bin) build_NvAssetLoader_debug: postbuild_NvAssetLoader_debug postbuild_NvAssetLoader_debug: mainbuild_NvAssetLoader_debug @@ -60,37 +60,37 @@ mainbuild_NvAssetLoader_debug: prebuild_NvAssetLoader_debug $(NvAssetLoader_debu prebuild_NvAssetLoader_debug: $(NvAssetLoader_debug_bin): $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvAssetLoaderD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvAssetLoaderD.a` + $(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) + $(ECHO) building $@ complete! NvAssetLoader_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_debug_cpp_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_cc_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_c_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d @@ -114,12 +114,12 @@ NvAssetLoader_release_common_cflags += $(addprefix -D, $(NvAssetLoader_releas NvAssetLoader_release_common_cflags += $(addprefix -I, $(NvAssetLoader_release_hpaths)) NvAssetLoader_release_common_cflags += -m32 NvAssetLoader_release_cflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAssetLoader_release_cflags += -O2 +NvAssetLoader_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_cppflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_release_cppflags += -Wno-reorder -NvAssetLoader_release_cppflags += -O2 +NvAssetLoader_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_release_lflags += $(addprefix -L, $(NvAssetLoader_release_lpaths)) NvAssetLoader_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_release_libraries)) -Wl,--end-group @@ -132,9 +132,9 @@ NvAssetLoader_release_obj = $(NvAssetLoader_release_cpp_o) $(NvAssetLoader_ NvAssetLoader_release_bin := ./../../lib/linux32/libNvAssetLoader.a clean_NvAssetLoader_release: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader release - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_bin) + $(ECHO) clean NvAssetLoader release + $(RMDIR) $(NvAssetLoader_release_objsdir) + $(RMDIR) $(NvAssetLoader_release_bin) build_NvAssetLoader_release: postbuild_NvAssetLoader_release postbuild_NvAssetLoader_release: mainbuild_NvAssetLoader_release @@ -142,40 +142,45 @@ mainbuild_NvAssetLoader_release: prebuild_NvAssetLoader_release $(NvAssetLoader_ prebuild_NvAssetLoader_release: $(NvAssetLoader_release_bin): $(NvAssetLoader_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvAssetLoader.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvAssetLoader.a` + $(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) + $(ECHO) building $@ complete! NvAssetLoader_release_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_release_cpp_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_cc_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_c_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d clean_NvAssetLoader: clean_NvAssetLoader_debug clean_NvAssetLoader_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvGLUtils.mk b/extensions/build/linux32/Makefile.NvGLUtils.mk index a9725de..ca5d3f5 100644 --- a/extensions/build/linux32/Makefile.NvGLUtils.mk +++ b/extensions/build/linux32/Makefile.NvGLUtils.mk @@ -39,12 +39,12 @@ NvGLUtils_debug_common_cflags += $(addprefix -D, $(NvGLUtils_debug_defines)) NvGLUtils_debug_common_cflags += $(addprefix -I, $(NvGLUtils_debug_hpaths)) NvGLUtils_debug_common_cflags += -m32 NvGLUtils_debug_cflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGLUtils_debug_cflags += -g +NvGLUtils_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_cppflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_debug_cppflags += -Wno-reorder -NvGLUtils_debug_cppflags += -g +NvGLUtils_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_debug_lflags += $(addprefix -L, $(NvGLUtils_debug_lpaths)) NvGLUtils_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_debug_libraries)) -Wl,--end-group @@ -57,9 +57,9 @@ NvGLUtils_debug_obj = $(NvGLUtils_debug_cpp_o) $(NvGLUtils_debug_cc_o) $(Nv NvGLUtils_debug_bin := ./../../lib/linux32/libNvGLUtilsD.a clean_NvGLUtils_debug: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils debug - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_bin) + $(ECHO) clean NvGLUtils debug + $(RMDIR) $(NvGLUtils_debug_objsdir) + $(RMDIR) $(NvGLUtils_debug_bin) build_NvGLUtils_debug: postbuild_NvGLUtils_debug postbuild_NvGLUtils_debug: mainbuild_NvGLUtils_debug @@ -67,37 +67,37 @@ mainbuild_NvGLUtils_debug: prebuild_NvGLUtils_debug $(NvGLUtils_debug_bin) prebuild_NvGLUtils_debug: $(NvGLUtils_debug_bin): $(NvGLUtils_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvGLUtilsD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvGLUtilsD.a` + $(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) + $(ECHO) building $@ complete! NvGLUtils_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_debug_cpp_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_cc_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_c_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d @@ -121,12 +121,12 @@ NvGLUtils_release_common_cflags += $(addprefix -D, $(NvGLUtils_release_define NvGLUtils_release_common_cflags += $(addprefix -I, $(NvGLUtils_release_hpaths)) NvGLUtils_release_common_cflags += -m32 NvGLUtils_release_cflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGLUtils_release_cflags += -O2 +NvGLUtils_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_cppflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_release_cppflags += -Wno-reorder -NvGLUtils_release_cppflags += -O2 +NvGLUtils_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_release_lflags += $(addprefix -L, $(NvGLUtils_release_lpaths)) NvGLUtils_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_release_libraries)) -Wl,--end-group @@ -139,9 +139,9 @@ NvGLUtils_release_obj = $(NvGLUtils_release_cpp_o) $(NvGLUtils_release_cc_o NvGLUtils_release_bin := ./../../lib/linux32/libNvGLUtils.a clean_NvGLUtils_release: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils release - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_bin) + $(ECHO) clean NvGLUtils release + $(RMDIR) $(NvGLUtils_release_objsdir) + $(RMDIR) $(NvGLUtils_release_bin) build_NvGLUtils_release: postbuild_NvGLUtils_release postbuild_NvGLUtils_release: mainbuild_NvGLUtils_release @@ -149,40 +149,45 @@ mainbuild_NvGLUtils_release: prebuild_NvGLUtils_release $(NvGLUtils_release_bin) prebuild_NvGLUtils_release: $(NvGLUtils_release_bin): $(NvGLUtils_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvGLUtils.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvGLUtils.a` + $(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) + $(ECHO) building $@ complete! NvGLUtils_release_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_release_cpp_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_cc_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_c_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d clean_NvGLUtils: clean_NvGLUtils_debug clean_NvGLUtils_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvGamepad.mk b/extensions/build/linux32/Makefile.NvGamepad.mk index 6b39e72..8117169 100644 --- a/extensions/build/linux32/Makefile.NvGamepad.mk +++ b/extensions/build/linux32/Makefile.NvGamepad.mk @@ -34,12 +34,12 @@ NvGamepad_debug_common_cflags += $(addprefix -D, $(NvGamepad_debug_defines)) NvGamepad_debug_common_cflags += $(addprefix -I, $(NvGamepad_debug_hpaths)) NvGamepad_debug_common_cflags += -m32 NvGamepad_debug_cflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGamepad_debug_cflags += -g +NvGamepad_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_cppflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_debug_cppflags += -Wno-reorder -NvGamepad_debug_cppflags += -g +NvGamepad_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_lflags := $(NvGamepad_custom_lflags) NvGamepad_debug_lflags += $(addprefix -L, $(NvGamepad_debug_lpaths)) NvGamepad_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_debug_libraries)) -Wl,--end-group @@ -52,9 +52,9 @@ NvGamepad_debug_obj = $(NvGamepad_debug_cpp_o) $(NvGamepad_debug_cc_o) $(Nv NvGamepad_debug_bin := ./../../lib/linux32/libNvGamepadD.a clean_NvGamepad_debug: - $(SILENT_FLAG)$(ECHO) clean NvGamepad debug - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_bin) + $(ECHO) clean NvGamepad debug + $(RMDIR) $(NvGamepad_debug_objsdir) + $(RMDIR) $(NvGamepad_debug_bin) build_NvGamepad_debug: postbuild_NvGamepad_debug postbuild_NvGamepad_debug: mainbuild_NvGamepad_debug @@ -62,37 +62,37 @@ mainbuild_NvGamepad_debug: prebuild_NvGamepad_debug $(NvGamepad_debug_bin) prebuild_NvGamepad_debug: $(NvGamepad_debug_bin): $(NvGamepad_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvGamepadD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvGamepadD.a` + $(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) + $(ECHO) building $@ complete! NvGamepad_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_debug_cpp_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_cc_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_c_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d @@ -116,12 +116,12 @@ NvGamepad_release_common_cflags += $(addprefix -D, $(NvGamepad_release_define NvGamepad_release_common_cflags += $(addprefix -I, $(NvGamepad_release_hpaths)) NvGamepad_release_common_cflags += -m32 NvGamepad_release_cflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGamepad_release_cflags += -O2 +NvGamepad_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_cppflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_release_cppflags += -Wno-reorder -NvGamepad_release_cppflags += -O2 +NvGamepad_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_lflags := $(NvGamepad_custom_lflags) NvGamepad_release_lflags += $(addprefix -L, $(NvGamepad_release_lpaths)) NvGamepad_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_release_libraries)) -Wl,--end-group @@ -134,9 +134,9 @@ NvGamepad_release_obj = $(NvGamepad_release_cpp_o) $(NvGamepad_release_cc_o NvGamepad_release_bin := ./../../lib/linux32/libNvGamepad.a clean_NvGamepad_release: - $(SILENT_FLAG)$(ECHO) clean NvGamepad release - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_bin) + $(ECHO) clean NvGamepad release + $(RMDIR) $(NvGamepad_release_objsdir) + $(RMDIR) $(NvGamepad_release_bin) build_NvGamepad_release: postbuild_NvGamepad_release postbuild_NvGamepad_release: mainbuild_NvGamepad_release @@ -144,40 +144,45 @@ mainbuild_NvGamepad_release: prebuild_NvGamepad_release $(NvGamepad_release_bin) prebuild_NvGamepad_release: $(NvGamepad_release_bin): $(NvGamepad_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvGamepad.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvGamepad.a` + $(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) + $(ECHO) building $@ complete! NvGamepad_release_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_release_cpp_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_cc_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_c_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d clean_NvGamepad: clean_NvGamepad_debug clean_NvGamepad_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvModel.mk b/extensions/build/linux32/Makefile.NvModel.mk index 063f71c..b701c07 100644 --- a/extensions/build/linux32/Makefile.NvModel.mk +++ b/extensions/build/linux32/Makefile.NvModel.mk @@ -36,12 +36,12 @@ NvModel_debug_common_cflags += $(addprefix -D, $(NvModel_debug_defines)) NvModel_debug_common_cflags += $(addprefix -I, $(NvModel_debug_hpaths)) NvModel_debug_common_cflags += -m32 NvModel_debug_cflags := $(NvModel_debug_common_cflags) -NvModel_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvModel_debug_cflags += -g +NvModel_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_cppflags := $(NvModel_debug_common_cflags) -NvModel_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_debug_cppflags += -Wno-reorder -NvModel_debug_cppflags += -g +NvModel_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_lflags := $(NvModel_custom_lflags) NvModel_debug_lflags += $(addprefix -L, $(NvModel_debug_lpaths)) NvModel_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_debug_libraries)) -Wl,--end-group @@ -54,9 +54,9 @@ NvModel_debug_obj = $(NvModel_debug_cpp_o) $(NvModel_debug_cc_o) $(NvModel_ NvModel_debug_bin := ./../../lib/linux32/libNvModelD.a clean_NvModel_debug: - $(SILENT_FLAG)$(ECHO) clean NvModel debug - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_bin) + $(ECHO) clean NvModel debug + $(RMDIR) $(NvModel_debug_objsdir) + $(RMDIR) $(NvModel_debug_bin) build_NvModel_debug: postbuild_NvModel_debug postbuild_NvModel_debug: mainbuild_NvModel_debug @@ -64,37 +64,37 @@ mainbuild_NvModel_debug: prebuild_NvModel_debug $(NvModel_debug_bin) prebuild_NvModel_debug: $(NvModel_debug_bin): $(NvModel_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvModelD.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvModelD.a` + $(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) + $(ECHO) building $@ complete! NvModel_debug_DEPDIR = $(dir $(@))/$(*F) $(NvModel_debug_cpp_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_cc_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_c_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d @@ -118,12 +118,12 @@ NvModel_release_common_cflags += $(addprefix -D, $(NvModel_release_defines)) NvModel_release_common_cflags += $(addprefix -I, $(NvModel_release_hpaths)) NvModel_release_common_cflags += -m32 NvModel_release_cflags := $(NvModel_release_common_cflags) -NvModel_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvModel_release_cflags += -O2 +NvModel_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_cppflags := $(NvModel_release_common_cflags) -NvModel_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_release_cppflags += -Wno-reorder -NvModel_release_cppflags += -O2 +NvModel_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_lflags := $(NvModel_custom_lflags) NvModel_release_lflags += $(addprefix -L, $(NvModel_release_lpaths)) NvModel_release_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_release_libraries)) -Wl,--end-group @@ -136,9 +136,9 @@ NvModel_release_obj = $(NvModel_release_cpp_o) $(NvModel_release_cc_o) $(Nv NvModel_release_bin := ./../../lib/linux32/libNvModel.a clean_NvModel_release: - $(SILENT_FLAG)$(ECHO) clean NvModel release - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_bin) + $(ECHO) clean NvModel release + $(RMDIR) $(NvModel_release_objsdir) + $(RMDIR) $(NvModel_release_bin) build_NvModel_release: postbuild_NvModel_release postbuild_NvModel_release: mainbuild_NvModel_release @@ -146,40 +146,45 @@ mainbuild_NvModel_release: prebuild_NvModel_release $(NvModel_release_bin) prebuild_NvModel_release: $(NvModel_release_bin): $(NvModel_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvModel.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvModel.a` + $(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) + $(ECHO) building $@ complete! NvModel_release_DEPDIR = $(dir $(@))/$(*F) $(NvModel_release_cpp_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_cc_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_c_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d clean_NvModel: clean_NvModel_debug clean_NvModel_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux32/Makefile.NvUI.mk b/extensions/build/linux32/Makefile.NvUI.mk index be1b420..55d9a27 100644 --- a/extensions/build/linux32/Makefile.NvUI.mk +++ b/extensions/build/linux32/Makefile.NvUI.mk @@ -48,12 +48,12 @@ NvUI_debug_common_cflags += $(addprefix -D, $(NvUI_debug_defines)) NvUI_debug_common_cflags += $(addprefix -I, $(NvUI_debug_hpaths)) NvUI_debug_common_cflags += -m32 NvUI_debug_cflags := $(NvUI_debug_common_cflags) -NvUI_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvUI_debug_cflags += -g +NvUI_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_cppflags := $(NvUI_debug_common_cflags) -NvUI_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_debug_cppflags += -Wno-reorder -NvUI_debug_cppflags += -g +NvUI_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_lflags := $(NvUI_custom_lflags) NvUI_debug_lflags += $(addprefix -L, $(NvUI_debug_lpaths)) NvUI_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_debug_libraries)) -Wl,--end-group @@ -66,9 +66,9 @@ NvUI_debug_obj = $(NvUI_debug_cpp_o) $(NvUI_debug_cc_o) $(NvUI_debug_c_o) NvUI_debug_bin := ./../../lib/linux32/libNvUID.a clean_NvUI_debug: - $(SILENT_FLAG)$(ECHO) clean NvUI debug - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_bin) + $(ECHO) clean NvUI debug + $(RMDIR) $(NvUI_debug_objsdir) + $(RMDIR) $(NvUI_debug_bin) build_NvUI_debug: postbuild_NvUI_debug postbuild_NvUI_debug: mainbuild_NvUI_debug @@ -76,37 +76,37 @@ mainbuild_NvUI_debug: prebuild_NvUI_debug $(NvUI_debug_bin) prebuild_NvUI_debug: $(NvUI_debug_bin): $(NvUI_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvUID.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvUID.a` + $(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) + $(ECHO) building $@ complete! NvUI_debug_DEPDIR = $(dir $(@))/$(*F) $(NvUI_debug_cpp_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_cc_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_c_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d @@ -130,12 +130,12 @@ NvUI_release_common_cflags += $(addprefix -D, $(NvUI_release_defines)) NvUI_release_common_cflags += $(addprefix -I, $(NvUI_release_hpaths)) NvUI_release_common_cflags += -m32 NvUI_release_cflags := $(NvUI_release_common_cflags) -NvUI_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvUI_release_cflags += -O2 +NvUI_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_cppflags := $(NvUI_release_common_cflags) -NvUI_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_release_cppflags += -Wno-reorder -NvUI_release_cppflags += -O2 +NvUI_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_lflags := $(NvUI_custom_lflags) NvUI_release_lflags += $(addprefix -L, $(NvUI_release_lpaths)) NvUI_release_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_release_libraries)) -Wl,--end-group @@ -148,9 +148,9 @@ NvUI_release_obj = $(NvUI_release_cpp_o) $(NvUI_release_cc_o) $(NvUI_releas NvUI_release_bin := ./../../lib/linux32/libNvUI.a clean_NvUI_release: - $(SILENT_FLAG)$(ECHO) clean NvUI release - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_bin) + $(ECHO) clean NvUI release + $(RMDIR) $(NvUI_release_objsdir) + $(RMDIR) $(NvUI_release_bin) build_NvUI_release: postbuild_NvUI_release postbuild_NvUI_release: mainbuild_NvUI_release @@ -158,40 +158,45 @@ mainbuild_NvUI_release: prebuild_NvUI_release $(NvUI_release_bin) prebuild_NvUI_release: $(NvUI_release_bin): $(NvUI_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libNvUI.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libNvUI.a` + $(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) + $(ECHO) building $@ complete! NvUI_release_DEPDIR = $(dir $(@))/$(*F) $(NvUI_release_cpp_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_cc_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_c_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d clean_NvUI: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile b/extensions/build/linux64/Makefile index 2805b7b..3ab52b2 100644 --- a/extensions/build/linux64/Makefile +++ b/extensions/build/linux64/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for linux64 DEPSDIR = .deps -SILENT_FLAG ?= @ #default defines OBJS_DIR = build RMDIR = rm -fr @@ -24,15 +23,15 @@ debug: build_NvUI_debug release: build_NvUI_release clean: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_debug: clean_NvUI_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_release: clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) include Makefile.NvUI.mk @@ -192,3 +191,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvAppBase.mk b/extensions/build/linux64/Makefile.NvAppBase.mk index a87a71f..7aa5b57 100644 --- a/extensions/build/linux64/Makefile.NvAppBase.mk +++ b/extensions/build/linux64/Makefile.NvAppBase.mk @@ -43,12 +43,12 @@ NvAppBase_debug_common_cflags += $(addprefix -D, $(NvAppBase_debug_defines)) NvAppBase_debug_common_cflags += $(addprefix -I, $(NvAppBase_debug_hpaths)) NvAppBase_debug_common_cflags += -m64 NvAppBase_debug_cflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAppBase_debug_cflags += -g +NvAppBase_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_cppflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_debug_cppflags += -Wno-reorder -NvAppBase_debug_cppflags += -g +NvAppBase_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_lflags := $(NvAppBase_custom_lflags) NvAppBase_debug_lflags += $(addprefix -L, $(NvAppBase_debug_lpaths)) NvAppBase_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_debug_libraries)) -Wl,--end-group @@ -62,9 +62,9 @@ NvAppBase_debug_obj = $(NvAppBase_debug_cpp_o) $(NvAppBase_debug_cc_o) $(Nv NvAppBase_debug_bin := ./../../lib/linux64/libNvAppBaseD.a clean_NvAppBase_debug: - $(SILENT_FLAG)$(ECHO) clean NvAppBase debug - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_bin) + $(ECHO) clean NvAppBase debug + $(RMDIR) $(NvAppBase_debug_objsdir) + $(RMDIR) $(NvAppBase_debug_bin) build_NvAppBase_debug: postbuild_NvAppBase_debug postbuild_NvAppBase_debug: mainbuild_NvAppBase_debug @@ -72,37 +72,37 @@ mainbuild_NvAppBase_debug: prebuild_NvAppBase_debug $(NvAppBase_debug_bin) prebuild_NvAppBase_debug: $(NvAppBase_debug_bin): $(NvAppBase_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvAppBaseD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvAppBaseD.a` + $(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) + $(ECHO) building $@ complete! NvAppBase_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_debug_cpp_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_cc_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_c_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d @@ -126,12 +126,12 @@ NvAppBase_release_common_cflags += $(addprefix -D, $(NvAppBase_release_define NvAppBase_release_common_cflags += $(addprefix -I, $(NvAppBase_release_hpaths)) NvAppBase_release_common_cflags += -m64 NvAppBase_release_cflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAppBase_release_cflags += -O2 +NvAppBase_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_cppflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAppBase_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAppBase_release_cppflags += -Wno-reorder -NvAppBase_release_cppflags += -O2 +NvAppBase_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_lflags := $(NvAppBase_custom_lflags) NvAppBase_release_lflags += $(addprefix -L, $(NvAppBase_release_lpaths)) NvAppBase_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_release_libraries)) -Wl,--end-group @@ -145,9 +145,9 @@ NvAppBase_release_obj = $(NvAppBase_release_cpp_o) $(NvAppBase_release_cc_o NvAppBase_release_bin := ./../../lib/linux64/libNvAppBase.a clean_NvAppBase_release: - $(SILENT_FLAG)$(ECHO) clean NvAppBase release - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_bin) + $(ECHO) clean NvAppBase release + $(RMDIR) $(NvAppBase_release_objsdir) + $(RMDIR) $(NvAppBase_release_bin) build_NvAppBase_release: postbuild_NvAppBase_release postbuild_NvAppBase_release: mainbuild_NvAppBase_release @@ -155,40 +155,45 @@ mainbuild_NvAppBase_release: prebuild_NvAppBase_release $(NvAppBase_release_bin) prebuild_NvAppBase_release: $(NvAppBase_release_bin): $(NvAppBase_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvAppBase.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvAppBase.a` + $(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) + $(ECHO) building $@ complete! NvAppBase_release_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_release_cpp_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_cc_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_c_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d clean_NvAppBase: clean_NvAppBase_debug clean_NvAppBase_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvAssetLoader.mk b/extensions/build/linux64/Makefile.NvAssetLoader.mk index 6f5a5c8..dbb0873 100644 --- a/extensions/build/linux64/Makefile.NvAssetLoader.mk +++ b/extensions/build/linux64/Makefile.NvAssetLoader.mk @@ -32,12 +32,12 @@ NvAssetLoader_debug_common_cflags += $(addprefix -D, $(NvAssetLoader_debug_de NvAssetLoader_debug_common_cflags += $(addprefix -I, $(NvAssetLoader_debug_hpaths)) NvAssetLoader_debug_common_cflags += -m64 NvAssetLoader_debug_cflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAssetLoader_debug_cflags += -g +NvAssetLoader_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_cppflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_debug_cppflags += -Wno-reorder -NvAssetLoader_debug_cppflags += -g +NvAssetLoader_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_debug_lflags += $(addprefix -L, $(NvAssetLoader_debug_lpaths)) NvAssetLoader_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_debug_libraries)) -Wl,--end-group @@ -51,9 +51,9 @@ NvAssetLoader_debug_obj = $(NvAssetLoader_debug_cpp_o) $(NvAssetLoader_debu NvAssetLoader_debug_bin := ./../../lib/linux64/libNvAssetLoaderD.a clean_NvAssetLoader_debug: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader debug - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_bin) + $(ECHO) clean NvAssetLoader debug + $(RMDIR) $(NvAssetLoader_debug_objsdir) + $(RMDIR) $(NvAssetLoader_debug_bin) build_NvAssetLoader_debug: postbuild_NvAssetLoader_debug postbuild_NvAssetLoader_debug: mainbuild_NvAssetLoader_debug @@ -61,37 +61,37 @@ mainbuild_NvAssetLoader_debug: prebuild_NvAssetLoader_debug $(NvAssetLoader_debu prebuild_NvAssetLoader_debug: $(NvAssetLoader_debug_bin): $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvAssetLoaderD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvAssetLoaderD.a` + $(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) + $(ECHO) building $@ complete! NvAssetLoader_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_debug_cpp_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_cc_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_c_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d @@ -115,12 +115,12 @@ NvAssetLoader_release_common_cflags += $(addprefix -D, $(NvAssetLoader_releas NvAssetLoader_release_common_cflags += $(addprefix -I, $(NvAssetLoader_release_hpaths)) NvAssetLoader_release_common_cflags += -m64 NvAssetLoader_release_cflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvAssetLoader_release_cflags += -O2 +NvAssetLoader_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_cppflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvAssetLoader_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvAssetLoader_release_cppflags += -Wno-reorder -NvAssetLoader_release_cppflags += -O2 +NvAssetLoader_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_release_lflags += $(addprefix -L, $(NvAssetLoader_release_lpaths)) NvAssetLoader_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_release_libraries)) -Wl,--end-group @@ -134,9 +134,9 @@ NvAssetLoader_release_obj = $(NvAssetLoader_release_cpp_o) $(NvAssetLoader_ NvAssetLoader_release_bin := ./../../lib/linux64/libNvAssetLoader.a clean_NvAssetLoader_release: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader release - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_bin) + $(ECHO) clean NvAssetLoader release + $(RMDIR) $(NvAssetLoader_release_objsdir) + $(RMDIR) $(NvAssetLoader_release_bin) build_NvAssetLoader_release: postbuild_NvAssetLoader_release postbuild_NvAssetLoader_release: mainbuild_NvAssetLoader_release @@ -144,40 +144,45 @@ mainbuild_NvAssetLoader_release: prebuild_NvAssetLoader_release $(NvAssetLoader_ prebuild_NvAssetLoader_release: $(NvAssetLoader_release_bin): $(NvAssetLoader_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvAssetLoader.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvAssetLoader.a` + $(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) + $(ECHO) building $@ complete! NvAssetLoader_release_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_release_cpp_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_cc_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_c_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d clean_NvAssetLoader: clean_NvAssetLoader_debug clean_NvAssetLoader_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvGLUtils.mk b/extensions/build/linux64/Makefile.NvGLUtils.mk index af250b6..c89cab3 100644 --- a/extensions/build/linux64/Makefile.NvGLUtils.mk +++ b/extensions/build/linux64/Makefile.NvGLUtils.mk @@ -39,12 +39,12 @@ NvGLUtils_debug_common_cflags += $(addprefix -D, $(NvGLUtils_debug_defines)) NvGLUtils_debug_common_cflags += $(addprefix -I, $(NvGLUtils_debug_hpaths)) NvGLUtils_debug_common_cflags += -m64 NvGLUtils_debug_cflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGLUtils_debug_cflags += -g +NvGLUtils_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_cppflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_debug_cppflags += -Wno-reorder -NvGLUtils_debug_cppflags += -g +NvGLUtils_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_debug_lflags += $(addprefix -L, $(NvGLUtils_debug_lpaths)) NvGLUtils_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_debug_libraries)) -Wl,--end-group @@ -58,9 +58,9 @@ NvGLUtils_debug_obj = $(NvGLUtils_debug_cpp_o) $(NvGLUtils_debug_cc_o) $(Nv NvGLUtils_debug_bin := ./../../lib/linux64/libNvGLUtilsD.a clean_NvGLUtils_debug: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils debug - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_bin) + $(ECHO) clean NvGLUtils debug + $(RMDIR) $(NvGLUtils_debug_objsdir) + $(RMDIR) $(NvGLUtils_debug_bin) build_NvGLUtils_debug: postbuild_NvGLUtils_debug postbuild_NvGLUtils_debug: mainbuild_NvGLUtils_debug @@ -68,37 +68,37 @@ mainbuild_NvGLUtils_debug: prebuild_NvGLUtils_debug $(NvGLUtils_debug_bin) prebuild_NvGLUtils_debug: $(NvGLUtils_debug_bin): $(NvGLUtils_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvGLUtilsD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvGLUtilsD.a` + $(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) + $(ECHO) building $@ complete! NvGLUtils_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_debug_cpp_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_cc_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_c_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d @@ -122,12 +122,12 @@ NvGLUtils_release_common_cflags += $(addprefix -D, $(NvGLUtils_release_define NvGLUtils_release_common_cflags += $(addprefix -I, $(NvGLUtils_release_hpaths)) NvGLUtils_release_common_cflags += -m64 NvGLUtils_release_cflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGLUtils_release_cflags += -O2 +NvGLUtils_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_cppflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGLUtils_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGLUtils_release_cppflags += -Wno-reorder -NvGLUtils_release_cppflags += -O2 +NvGLUtils_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_release_lflags += $(addprefix -L, $(NvGLUtils_release_lpaths)) NvGLUtils_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_release_libraries)) -Wl,--end-group @@ -141,9 +141,9 @@ NvGLUtils_release_obj = $(NvGLUtils_release_cpp_o) $(NvGLUtils_release_cc_o NvGLUtils_release_bin := ./../../lib/linux64/libNvGLUtils.a clean_NvGLUtils_release: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils release - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_bin) + $(ECHO) clean NvGLUtils release + $(RMDIR) $(NvGLUtils_release_objsdir) + $(RMDIR) $(NvGLUtils_release_bin) build_NvGLUtils_release: postbuild_NvGLUtils_release postbuild_NvGLUtils_release: mainbuild_NvGLUtils_release @@ -151,40 +151,45 @@ mainbuild_NvGLUtils_release: prebuild_NvGLUtils_release $(NvGLUtils_release_bin) prebuild_NvGLUtils_release: $(NvGLUtils_release_bin): $(NvGLUtils_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvGLUtils.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvGLUtils.a` + $(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) + $(ECHO) building $@ complete! NvGLUtils_release_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_release_cpp_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_cc_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_c_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d clean_NvGLUtils: clean_NvGLUtils_debug clean_NvGLUtils_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvGamepad.mk b/extensions/build/linux64/Makefile.NvGamepad.mk index 4f7e30a..024bcae 100644 --- a/extensions/build/linux64/Makefile.NvGamepad.mk +++ b/extensions/build/linux64/Makefile.NvGamepad.mk @@ -34,12 +34,12 @@ NvGamepad_debug_common_cflags += $(addprefix -D, $(NvGamepad_debug_defines)) NvGamepad_debug_common_cflags += $(addprefix -I, $(NvGamepad_debug_hpaths)) NvGamepad_debug_common_cflags += -m64 NvGamepad_debug_cflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGamepad_debug_cflags += -g +NvGamepad_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_cppflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_debug_cppflags += -Wno-reorder -NvGamepad_debug_cppflags += -g +NvGamepad_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_lflags := $(NvGamepad_custom_lflags) NvGamepad_debug_lflags += $(addprefix -L, $(NvGamepad_debug_lpaths)) NvGamepad_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_debug_libraries)) -Wl,--end-group @@ -53,9 +53,9 @@ NvGamepad_debug_obj = $(NvGamepad_debug_cpp_o) $(NvGamepad_debug_cc_o) $(Nv NvGamepad_debug_bin := ./../../lib/linux64/libNvGamepadD.a clean_NvGamepad_debug: - $(SILENT_FLAG)$(ECHO) clean NvGamepad debug - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_bin) + $(ECHO) clean NvGamepad debug + $(RMDIR) $(NvGamepad_debug_objsdir) + $(RMDIR) $(NvGamepad_debug_bin) build_NvGamepad_debug: postbuild_NvGamepad_debug postbuild_NvGamepad_debug: mainbuild_NvGamepad_debug @@ -63,37 +63,37 @@ mainbuild_NvGamepad_debug: prebuild_NvGamepad_debug $(NvGamepad_debug_bin) prebuild_NvGamepad_debug: $(NvGamepad_debug_bin): $(NvGamepad_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvGamepadD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvGamepadD.a` + $(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) + $(ECHO) building $@ complete! NvGamepad_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_debug_cpp_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_cc_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_c_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d @@ -117,12 +117,12 @@ NvGamepad_release_common_cflags += $(addprefix -D, $(NvGamepad_release_define NvGamepad_release_common_cflags += $(addprefix -I, $(NvGamepad_release_hpaths)) NvGamepad_release_common_cflags += -m64 NvGamepad_release_cflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvGamepad_release_cflags += -O2 +NvGamepad_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_cppflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvGamepad_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvGamepad_release_cppflags += -Wno-reorder -NvGamepad_release_cppflags += -O2 +NvGamepad_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_lflags := $(NvGamepad_custom_lflags) NvGamepad_release_lflags += $(addprefix -L, $(NvGamepad_release_lpaths)) NvGamepad_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_release_libraries)) -Wl,--end-group @@ -136,9 +136,9 @@ NvGamepad_release_obj = $(NvGamepad_release_cpp_o) $(NvGamepad_release_cc_o NvGamepad_release_bin := ./../../lib/linux64/libNvGamepad.a clean_NvGamepad_release: - $(SILENT_FLAG)$(ECHO) clean NvGamepad release - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_bin) + $(ECHO) clean NvGamepad release + $(RMDIR) $(NvGamepad_release_objsdir) + $(RMDIR) $(NvGamepad_release_bin) build_NvGamepad_release: postbuild_NvGamepad_release postbuild_NvGamepad_release: mainbuild_NvGamepad_release @@ -146,40 +146,45 @@ mainbuild_NvGamepad_release: prebuild_NvGamepad_release $(NvGamepad_release_bin) prebuild_NvGamepad_release: $(NvGamepad_release_bin): $(NvGamepad_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvGamepad.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvGamepad.a` + $(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) + $(ECHO) building $@ complete! NvGamepad_release_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_release_cpp_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_cc_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_c_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d clean_NvGamepad: clean_NvGamepad_debug clean_NvGamepad_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvModel.mk b/extensions/build/linux64/Makefile.NvModel.mk index 16521ae..ab0a5e2 100644 --- a/extensions/build/linux64/Makefile.NvModel.mk +++ b/extensions/build/linux64/Makefile.NvModel.mk @@ -36,12 +36,12 @@ NvModel_debug_common_cflags += $(addprefix -D, $(NvModel_debug_defines)) NvModel_debug_common_cflags += $(addprefix -I, $(NvModel_debug_hpaths)) NvModel_debug_common_cflags += -m64 NvModel_debug_cflags := $(NvModel_debug_common_cflags) -NvModel_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvModel_debug_cflags += -g +NvModel_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_cppflags := $(NvModel_debug_common_cflags) -NvModel_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_debug_cppflags += -Wno-reorder -NvModel_debug_cppflags += -g +NvModel_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_lflags := $(NvModel_custom_lflags) NvModel_debug_lflags += $(addprefix -L, $(NvModel_debug_lpaths)) NvModel_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_debug_libraries)) -Wl,--end-group @@ -55,9 +55,9 @@ NvModel_debug_obj = $(NvModel_debug_cpp_o) $(NvModel_debug_cc_o) $(NvModel_ NvModel_debug_bin := ./../../lib/linux64/libNvModelD.a clean_NvModel_debug: - $(SILENT_FLAG)$(ECHO) clean NvModel debug - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_bin) + $(ECHO) clean NvModel debug + $(RMDIR) $(NvModel_debug_objsdir) + $(RMDIR) $(NvModel_debug_bin) build_NvModel_debug: postbuild_NvModel_debug postbuild_NvModel_debug: mainbuild_NvModel_debug @@ -65,37 +65,37 @@ mainbuild_NvModel_debug: prebuild_NvModel_debug $(NvModel_debug_bin) prebuild_NvModel_debug: $(NvModel_debug_bin): $(NvModel_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvModelD.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvModelD.a` + $(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) + $(ECHO) building $@ complete! NvModel_debug_DEPDIR = $(dir $(@))/$(*F) $(NvModel_debug_cpp_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_cc_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_c_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d @@ -119,12 +119,12 @@ NvModel_release_common_cflags += $(addprefix -D, $(NvModel_release_defines)) NvModel_release_common_cflags += $(addprefix -I, $(NvModel_release_hpaths)) NvModel_release_common_cflags += -m64 NvModel_release_cflags := $(NvModel_release_common_cflags) -NvModel_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvModel_release_cflags += -O2 +NvModel_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_cppflags := $(NvModel_release_common_cflags) -NvModel_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvModel_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvModel_release_cppflags += -Wno-reorder -NvModel_release_cppflags += -O2 +NvModel_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_lflags := $(NvModel_custom_lflags) NvModel_release_lflags += $(addprefix -L, $(NvModel_release_lpaths)) NvModel_release_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_release_libraries)) -Wl,--end-group @@ -138,9 +138,9 @@ NvModel_release_obj = $(NvModel_release_cpp_o) $(NvModel_release_cc_o) $(Nv NvModel_release_bin := ./../../lib/linux64/libNvModel.a clean_NvModel_release: - $(SILENT_FLAG)$(ECHO) clean NvModel release - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_bin) + $(ECHO) clean NvModel release + $(RMDIR) $(NvModel_release_objsdir) + $(RMDIR) $(NvModel_release_bin) build_NvModel_release: postbuild_NvModel_release postbuild_NvModel_release: mainbuild_NvModel_release @@ -148,40 +148,45 @@ mainbuild_NvModel_release: prebuild_NvModel_release $(NvModel_release_bin) prebuild_NvModel_release: $(NvModel_release_bin): $(NvModel_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvModel.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvModel.a` + $(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) + $(ECHO) building $@ complete! NvModel_release_DEPDIR = $(dir $(@))/$(*F) $(NvModel_release_cpp_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_cc_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_c_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d clean_NvModel: clean_NvModel_debug clean_NvModel_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/linux64/Makefile.NvUI.mk b/extensions/build/linux64/Makefile.NvUI.mk index 88a4325..e57b954 100644 --- a/extensions/build/linux64/Makefile.NvUI.mk +++ b/extensions/build/linux64/Makefile.NvUI.mk @@ -48,12 +48,12 @@ NvUI_debug_common_cflags += $(addprefix -D, $(NvUI_debug_defines)) NvUI_debug_common_cflags += $(addprefix -I, $(NvUI_debug_hpaths)) NvUI_debug_common_cflags += -m64 NvUI_debug_cflags := $(NvUI_debug_common_cflags) -NvUI_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvUI_debug_cflags += -g +NvUI_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_cppflags := $(NvUI_debug_common_cflags) -NvUI_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_debug_cppflags += -Wno-reorder -NvUI_debug_cppflags += -g +NvUI_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_lflags := $(NvUI_custom_lflags) NvUI_debug_lflags += $(addprefix -L, $(NvUI_debug_lpaths)) NvUI_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_debug_libraries)) -Wl,--end-group @@ -67,9 +67,9 @@ NvUI_debug_obj = $(NvUI_debug_cpp_o) $(NvUI_debug_cc_o) $(NvUI_debug_c_o) NvUI_debug_bin := ./../../lib/linux64/libNvUID.a clean_NvUI_debug: - $(SILENT_FLAG)$(ECHO) clean NvUI debug - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_bin) + $(ECHO) clean NvUI debug + $(RMDIR) $(NvUI_debug_objsdir) + $(RMDIR) $(NvUI_debug_bin) build_NvUI_debug: postbuild_NvUI_debug postbuild_NvUI_debug: mainbuild_NvUI_debug @@ -77,37 +77,37 @@ mainbuild_NvUI_debug: prebuild_NvUI_debug $(NvUI_debug_bin) prebuild_NvUI_debug: $(NvUI_debug_bin): $(NvUI_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvUID.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvUID.a` + $(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) + $(ECHO) building $@ complete! NvUI_debug_DEPDIR = $(dir $(@))/$(*F) $(NvUI_debug_cpp_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_cc_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_c_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d @@ -131,12 +131,12 @@ NvUI_release_common_cflags += $(addprefix -D, $(NvUI_release_defines)) NvUI_release_common_cflags += $(addprefix -I, $(NvUI_release_hpaths)) NvUI_release_common_cflags += -m64 NvUI_release_cflags := $(NvUI_release_common_cflags) -NvUI_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -NvUI_release_cflags += -O2 +NvUI_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_cppflags := $(NvUI_release_common_cflags) -NvUI_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +NvUI_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function NvUI_release_cppflags += -Wno-reorder -NvUI_release_cppflags += -O2 +NvUI_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_lflags := $(NvUI_custom_lflags) NvUI_release_lflags += $(addprefix -L, $(NvUI_release_lpaths)) NvUI_release_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_release_libraries)) -Wl,--end-group @@ -150,9 +150,9 @@ NvUI_release_obj = $(NvUI_release_cpp_o) $(NvUI_release_cc_o) $(NvUI_releas NvUI_release_bin := ./../../lib/linux64/libNvUI.a clean_NvUI_release: - $(SILENT_FLAG)$(ECHO) clean NvUI release - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_bin) + $(ECHO) clean NvUI release + $(RMDIR) $(NvUI_release_objsdir) + $(RMDIR) $(NvUI_release_bin) build_NvUI_release: postbuild_NvUI_release postbuild_NvUI_release: mainbuild_NvUI_release @@ -160,40 +160,45 @@ mainbuild_NvUI_release: prebuild_NvUI_release $(NvUI_release_bin) prebuild_NvUI_release: $(NvUI_release_bin): $(NvUI_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libNvUI.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libNvUI.a` + $(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) + $(ECHO) building $@ complete! NvUI_release_DEPDIR = $(dir $(@))/$(*F) $(NvUI_release_cpp_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_cc_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_c_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d clean_NvUI: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile b/extensions/build/makeandroid/Makefile index ab145bf..2f92d51 100644 --- a/extensions/build/makeandroid/Makefile +++ b/extensions/build/makeandroid/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for android DEPSDIR = .deps -SILENT_FLAG ?= @ NDKROOT = $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d) NDK_BIN_DIR = $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin NDK_PREFIX = arm-linux-androideabi- @@ -36,15 +35,15 @@ debug: build_NvUI_debug release: build_NvUI_release clean: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_debug: clean_NvUI_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) clean_release: clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) include Makefile.NvUI.mk @@ -204,3 +203,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvAppBase.mk b/extensions/build/makeandroid/Makefile.NvAppBase.mk index a73fccf..c04cbea 100644 --- a/extensions/build/makeandroid/Makefile.NvAppBase.mk +++ b/extensions/build/makeandroid/Makefile.NvAppBase.mk @@ -44,9 +44,11 @@ NvAppBase_debug_common_cflags += -MMD NvAppBase_debug_common_cflags += $(addprefix -D, $(NvAppBase_debug_defines)) NvAppBase_debug_common_cflags += $(addprefix -I, $(NvAppBase_debug_hpaths)) NvAppBase_debug_cflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_cppflags := $(NvAppBase_debug_common_cflags) -NvAppBase_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAppBase_debug_lflags := $(NvAppBase_custom_lflags) NvAppBase_debug_lflags += $(addprefix -L, $(NvAppBase_debug_lpaths)) NvAppBase_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_debug_libraries)) -Wl,--end-group @@ -58,9 +60,9 @@ NvAppBase_debug_obj = $(NvAppBase_debug_cpp_o) $(NvAppBase_debug_cc_o) $(Nv NvAppBase_debug_bin := ./../../lib/Tegra-Android/libNvAppBaseD.a clean_NvAppBase_debug: - $(SILENT_FLAG)$(ECHO) clean NvAppBase debug - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_debug_bin) + $(ECHO) clean NvAppBase debug + $(RMDIR) $(NvAppBase_debug_objsdir) + $(RMDIR) $(NvAppBase_debug_bin) build_NvAppBase_debug: postbuild_NvAppBase_debug postbuild_NvAppBase_debug: mainbuild_NvAppBase_debug @@ -68,37 +70,37 @@ mainbuild_NvAppBase_debug: prebuild_NvAppBase_debug $(NvAppBase_debug_bin) prebuild_NvAppBase_debug: $(NvAppBase_debug_bin): $(NvAppBase_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvAppBaseD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvAppBaseD.a` + $(AR) rcs $(NvAppBase_debug_bin) $(NvAppBase_debug_obj) + $(ECHO) building $@ complete! NvAppBase_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_debug_cpp_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cppfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_cc_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_ccfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d $(NvAppBase_debug_c_o): $(NvAppBase_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ + $(ECHO) NvAppBase: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_debug_objsdir),, $@))), $(NvAppBase_cfiles))))).debug.P; \ rm -f $(NvAppBase_debug_DEPDIR).d @@ -123,9 +125,11 @@ NvAppBase_release_common_cflags += -MMD NvAppBase_release_common_cflags += $(addprefix -D, $(NvAppBase_release_defines)) NvAppBase_release_common_cflags += $(addprefix -I, $(NvAppBase_release_hpaths)) NvAppBase_release_cflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_cppflags := $(NvAppBase_release_common_cflags) -NvAppBase_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAppBase_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAppBase_release_lflags := $(NvAppBase_custom_lflags) NvAppBase_release_lflags += $(addprefix -L, $(NvAppBase_release_lpaths)) NvAppBase_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAppBase_release_libraries)) -Wl,--end-group @@ -137,9 +141,9 @@ NvAppBase_release_obj = $(NvAppBase_release_cpp_o) $(NvAppBase_release_cc_o NvAppBase_release_bin := ./../../lib/Tegra-Android/libNvAppBase.a clean_NvAppBase_release: - $(SILENT_FLAG)$(ECHO) clean NvAppBase release - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAppBase_release_bin) + $(ECHO) clean NvAppBase release + $(RMDIR) $(NvAppBase_release_objsdir) + $(RMDIR) $(NvAppBase_release_bin) build_NvAppBase_release: postbuild_NvAppBase_release postbuild_NvAppBase_release: mainbuild_NvAppBase_release @@ -147,40 +151,45 @@ mainbuild_NvAppBase_release: prebuild_NvAppBase_release $(NvAppBase_release_bin) prebuild_NvAppBase_release: $(NvAppBase_release_bin): $(NvAppBase_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvAppBase.a` - $(SILENT_FLAG)$(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvAppBase.a` + $(AR) rcs $(NvAppBase_release_bin) $(NvAppBase_release_obj) + $(ECHO) building $@ complete! NvAppBase_release_DEPDIR = $(dir $(@))/$(*F) $(NvAppBase_release_cpp_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cppfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_cc_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAppBase_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_ccfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d $(NvAppBase_release_c_o): $(NvAppBase_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) - $(SILENT_FLAG)cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ + $(ECHO) NvAppBase: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAppBase_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles)))))) + cp $(NvAppBase_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAppBase_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAppBase_release_objsdir),, $@))), $(NvAppBase_cfiles))))).release.P; \ rm -f $(NvAppBase_release_DEPDIR).d clean_NvAppBase: clean_NvAppBase_debug clean_NvAppBase_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvAssetLoader.mk b/extensions/build/makeandroid/Makefile.NvAssetLoader.mk index 589184e..050ec33 100644 --- a/extensions/build/makeandroid/Makefile.NvAssetLoader.mk +++ b/extensions/build/makeandroid/Makefile.NvAssetLoader.mk @@ -33,9 +33,11 @@ NvAssetLoader_debug_common_cflags += -MMD NvAssetLoader_debug_common_cflags += $(addprefix -D, $(NvAssetLoader_debug_defines)) NvAssetLoader_debug_common_cflags += $(addprefix -I, $(NvAssetLoader_debug_hpaths)) NvAssetLoader_debug_cflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_cppflags := $(NvAssetLoader_debug_common_cflags) -NvAssetLoader_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvAssetLoader_debug_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_debug_lflags += $(addprefix -L, $(NvAssetLoader_debug_lpaths)) NvAssetLoader_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_debug_libraries)) -Wl,--end-group @@ -47,9 +49,9 @@ NvAssetLoader_debug_obj = $(NvAssetLoader_debug_cpp_o) $(NvAssetLoader_debu NvAssetLoader_debug_bin := ./../../lib/Tegra-Android/libNvAssetLoaderD.a clean_NvAssetLoader_debug: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader debug - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_debug_bin) + $(ECHO) clean NvAssetLoader debug + $(RMDIR) $(NvAssetLoader_debug_objsdir) + $(RMDIR) $(NvAssetLoader_debug_bin) build_NvAssetLoader_debug: postbuild_NvAssetLoader_debug postbuild_NvAssetLoader_debug: mainbuild_NvAssetLoader_debug @@ -57,37 +59,37 @@ mainbuild_NvAssetLoader_debug: prebuild_NvAssetLoader_debug $(NvAssetLoader_debu prebuild_NvAssetLoader_debug: $(NvAssetLoader_debug_bin): $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvAssetLoaderD.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvAssetLoaderD.a` + $(AR) rcs $(NvAssetLoader_debug_bin) $(NvAssetLoader_debug_obj) + $(ECHO) building $@ complete! NvAssetLoader_debug_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_debug_cpp_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_cc_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d $(NvAssetLoader_debug_c_o): $(NvAssetLoader_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ + $(ECHO) NvAssetLoader: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_debug_objsdir),, $@))), $(NvAssetLoader_cfiles))))).debug.P; \ rm -f $(NvAssetLoader_debug_DEPDIR).d @@ -112,9 +114,11 @@ NvAssetLoader_release_common_cflags += -MMD NvAssetLoader_release_common_cflags += $(addprefix -D, $(NvAssetLoader_release_defines)) NvAssetLoader_release_common_cflags += $(addprefix -I, $(NvAssetLoader_release_hpaths)) NvAssetLoader_release_cflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_cppflags := $(NvAssetLoader_release_common_cflags) -NvAssetLoader_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvAssetLoader_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvAssetLoader_release_lflags := $(NvAssetLoader_custom_lflags) NvAssetLoader_release_lflags += $(addprefix -L, $(NvAssetLoader_release_lpaths)) NvAssetLoader_release_lflags += -Wl,--start-group $(addprefix -l, $(NvAssetLoader_release_libraries)) -Wl,--end-group @@ -126,9 +130,9 @@ NvAssetLoader_release_obj = $(NvAssetLoader_release_cpp_o) $(NvAssetLoader_ NvAssetLoader_release_bin := ./../../lib/Tegra-Android/libNvAssetLoader.a clean_NvAssetLoader_release: - $(SILENT_FLAG)$(ECHO) clean NvAssetLoader release - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvAssetLoader_release_bin) + $(ECHO) clean NvAssetLoader release + $(RMDIR) $(NvAssetLoader_release_objsdir) + $(RMDIR) $(NvAssetLoader_release_bin) build_NvAssetLoader_release: postbuild_NvAssetLoader_release postbuild_NvAssetLoader_release: mainbuild_NvAssetLoader_release @@ -136,40 +140,45 @@ mainbuild_NvAssetLoader_release: prebuild_NvAssetLoader_release $(NvAssetLoader_ prebuild_NvAssetLoader_release: $(NvAssetLoader_release_bin): $(NvAssetLoader_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvAssetLoader.a` - $(SILENT_FLAG)$(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvAssetLoader.a` + $(AR) rcs $(NvAssetLoader_release_bin) $(NvAssetLoader_release_obj) + $(ECHO) building $@ complete! NvAssetLoader_release_DEPDIR = $(dir $(@))/$(*F) $(NvAssetLoader_release_cpp_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cppfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_cc_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvAssetLoader_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_ccfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d $(NvAssetLoader_release_c_o): $(NvAssetLoader_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) - $(SILENT_FLAG)cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ + $(ECHO) NvAssetLoader: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvAssetLoader_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles)))))) + cp $(NvAssetLoader_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvAssetLoader_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvAssetLoader_release_objsdir),, $@))), $(NvAssetLoader_cfiles))))).release.P; \ rm -f $(NvAssetLoader_release_DEPDIR).d clean_NvAssetLoader: clean_NvAssetLoader_debug clean_NvAssetLoader_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvEGLUtil.mk b/extensions/build/makeandroid/Makefile.NvEGLUtil.mk index b3da3bf..93c80ca 100644 --- a/extensions/build/makeandroid/Makefile.NvEGLUtil.mk +++ b/extensions/build/makeandroid/Makefile.NvEGLUtil.mk @@ -32,9 +32,11 @@ NvEGLUtil_debug_common_cflags += -MMD NvEGLUtil_debug_common_cflags += $(addprefix -D, $(NvEGLUtil_debug_defines)) NvEGLUtil_debug_common_cflags += $(addprefix -I, $(NvEGLUtil_debug_hpaths)) NvEGLUtil_debug_cflags := $(NvEGLUtil_debug_common_cflags) -NvEGLUtil_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvEGLUtil_debug_cppflags := $(NvEGLUtil_debug_common_cflags) -NvEGLUtil_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvEGLUtil_debug_lflags := $(NvEGLUtil_custom_lflags) NvEGLUtil_debug_lflags += $(addprefix -L, $(NvEGLUtil_debug_lpaths)) NvEGLUtil_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvEGLUtil_debug_libraries)) -Wl,--end-group @@ -46,9 +48,9 @@ NvEGLUtil_debug_obj = $(NvEGLUtil_debug_cpp_o) $(NvEGLUtil_debug_cc_o) $(Nv NvEGLUtil_debug_bin := ./../../lib/Tegra-Android/libNvEGLUtilD.a clean_NvEGLUtil_debug: - $(SILENT_FLAG)$(ECHO) clean NvEGLUtil debug - $(SILENT_FLAG)$(RMDIR) $(NvEGLUtil_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvEGLUtil_debug_bin) + $(ECHO) clean NvEGLUtil debug + $(RMDIR) $(NvEGLUtil_debug_objsdir) + $(RMDIR) $(NvEGLUtil_debug_bin) build_NvEGLUtil_debug: postbuild_NvEGLUtil_debug postbuild_NvEGLUtil_debug: mainbuild_NvEGLUtil_debug @@ -56,37 +58,37 @@ mainbuild_NvEGLUtil_debug: prebuild_NvEGLUtil_debug $(NvEGLUtil_debug_bin) prebuild_NvEGLUtil_debug: $(NvEGLUtil_debug_bin): $(NvEGLUtil_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvEGLUtilD.a` - $(SILENT_FLAG)$(AR) rcs $(NvEGLUtil_debug_bin) $(NvEGLUtil_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvEGLUtilD.a` + $(AR) rcs $(NvEGLUtil_debug_bin) $(NvEGLUtil_debug_obj) + $(ECHO) building $@ complete! NvEGLUtil_debug_DEPDIR = $(dir $(@))/$(*F) $(NvEGLUtil_debug_cpp_o): $(NvEGLUtil_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvEGLUtil_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).debug.P; \ + $(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvEGLUtil_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles)))))) + cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).debug.P; \ rm -f $(NvEGLUtil_debug_DEPDIR).d $(NvEGLUtil_debug_cc_o): $(NvEGLUtil_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvEGLUtil_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).debug.P; \ + $(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvEGLUtil_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles)))))) + cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).debug.P; \ rm -f $(NvEGLUtil_debug_DEPDIR).d $(NvEGLUtil_debug_c_o): $(NvEGLUtil_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvEGLUtil_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles))))).debug.P; \ + $(ECHO) NvEGLUtil: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvEGLUtil_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles)))))) + cp $(NvEGLUtil_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_debug_objsdir),, $@))), $(NvEGLUtil_cfiles))))).debug.P; \ rm -f $(NvEGLUtil_debug_DEPDIR).d @@ -110,9 +112,11 @@ NvEGLUtil_release_common_cflags += -MMD NvEGLUtil_release_common_cflags += $(addprefix -D, $(NvEGLUtil_release_defines)) NvEGLUtil_release_common_cflags += $(addprefix -I, $(NvEGLUtil_release_hpaths)) NvEGLUtil_release_cflags := $(NvEGLUtil_release_common_cflags) -NvEGLUtil_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvEGLUtil_release_cppflags := $(NvEGLUtil_release_common_cflags) -NvEGLUtil_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvEGLUtil_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvEGLUtil_release_lflags := $(NvEGLUtil_custom_lflags) NvEGLUtil_release_lflags += $(addprefix -L, $(NvEGLUtil_release_lpaths)) NvEGLUtil_release_lflags += -Wl,--start-group $(addprefix -l, $(NvEGLUtil_release_libraries)) -Wl,--end-group @@ -124,9 +128,9 @@ NvEGLUtil_release_obj = $(NvEGLUtil_release_cpp_o) $(NvEGLUtil_release_cc_o NvEGLUtil_release_bin := ./../../lib/Tegra-Android/libNvEGLUtil.a clean_NvEGLUtil_release: - $(SILENT_FLAG)$(ECHO) clean NvEGLUtil release - $(SILENT_FLAG)$(RMDIR) $(NvEGLUtil_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvEGLUtil_release_bin) + $(ECHO) clean NvEGLUtil release + $(RMDIR) $(NvEGLUtil_release_objsdir) + $(RMDIR) $(NvEGLUtil_release_bin) build_NvEGLUtil_release: postbuild_NvEGLUtil_release postbuild_NvEGLUtil_release: mainbuild_NvEGLUtil_release @@ -134,40 +138,45 @@ mainbuild_NvEGLUtil_release: prebuild_NvEGLUtil_release $(NvEGLUtil_release_bin) prebuild_NvEGLUtil_release: $(NvEGLUtil_release_bin): $(NvEGLUtil_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvEGLUtil.a` - $(SILENT_FLAG)$(AR) rcs $(NvEGLUtil_release_bin) $(NvEGLUtil_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvEGLUtil.a` + $(AR) rcs $(NvEGLUtil_release_bin) $(NvEGLUtil_release_obj) + $(ECHO) building $@ complete! NvEGLUtil_release_DEPDIR = $(dir $(@))/$(*F) $(NvEGLUtil_release_cpp_o): $(NvEGLUtil_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvEGLUtil_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).release.P; \ + $(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvEGLUtil_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles)))))) + cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cppfiles))))).release.P; \ rm -f $(NvEGLUtil_release_DEPDIR).d $(NvEGLUtil_release_cc_o): $(NvEGLUtil_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvEGLUtil_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).release.P; \ + $(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvEGLUtil_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles)))))) + cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_ccfiles))))).release.P; \ rm -f $(NvEGLUtil_release_DEPDIR).d $(NvEGLUtil_release_c_o): $(NvEGLUtil_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvEGLUtil_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles)))))) - $(SILENT_FLAG)cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles))))).release.P; \ + $(ECHO) NvEGLUtil: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvEGLUtil_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles)))))) + cp $(NvEGLUtil_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvEGLUtil_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvEGLUtil_release_objsdir),, $@))), $(NvEGLUtil_cfiles))))).release.P; \ rm -f $(NvEGLUtil_release_DEPDIR).d clean_NvEGLUtil: clean_NvEGLUtil_debug clean_NvEGLUtil_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvGLUtils.mk b/extensions/build/makeandroid/Makefile.NvGLUtils.mk index a968f77..15db4c9 100644 --- a/extensions/build/makeandroid/Makefile.NvGLUtils.mk +++ b/extensions/build/makeandroid/Makefile.NvGLUtils.mk @@ -39,9 +39,11 @@ NvGLUtils_debug_common_cflags += -MMD NvGLUtils_debug_common_cflags += $(addprefix -D, $(NvGLUtils_debug_defines)) NvGLUtils_debug_common_cflags += $(addprefix -I, $(NvGLUtils_debug_hpaths)) NvGLUtils_debug_cflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_cppflags := $(NvGLUtils_debug_common_cflags) -NvGLUtils_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGLUtils_debug_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_debug_lflags += $(addprefix -L, $(NvGLUtils_debug_lpaths)) NvGLUtils_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_debug_libraries)) -Wl,--end-group @@ -53,9 +55,9 @@ NvGLUtils_debug_obj = $(NvGLUtils_debug_cpp_o) $(NvGLUtils_debug_cc_o) $(Nv NvGLUtils_debug_bin := ./../../lib/Tegra-Android/libNvGLUtilsD.a clean_NvGLUtils_debug: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils debug - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_debug_bin) + $(ECHO) clean NvGLUtils debug + $(RMDIR) $(NvGLUtils_debug_objsdir) + $(RMDIR) $(NvGLUtils_debug_bin) build_NvGLUtils_debug: postbuild_NvGLUtils_debug postbuild_NvGLUtils_debug: mainbuild_NvGLUtils_debug @@ -63,37 +65,37 @@ mainbuild_NvGLUtils_debug: prebuild_NvGLUtils_debug $(NvGLUtils_debug_bin) prebuild_NvGLUtils_debug: $(NvGLUtils_debug_bin): $(NvGLUtils_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvGLUtilsD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvGLUtilsD.a` + $(AR) rcs $(NvGLUtils_debug_bin) $(NvGLUtils_debug_obj) + $(ECHO) building $@ complete! NvGLUtils_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_debug_cpp_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cppfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_cc_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_ccfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d $(NvGLUtils_debug_c_o): $(NvGLUtils_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ + $(ECHO) NvGLUtils: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_debug_objsdir),, $@))), $(NvGLUtils_cfiles))))).debug.P; \ rm -f $(NvGLUtils_debug_DEPDIR).d @@ -117,9 +119,11 @@ NvGLUtils_release_common_cflags += -MMD NvGLUtils_release_common_cflags += $(addprefix -D, $(NvGLUtils_release_defines)) NvGLUtils_release_common_cflags += $(addprefix -I, $(NvGLUtils_release_hpaths)) NvGLUtils_release_cflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_cppflags := $(NvGLUtils_release_common_cflags) -NvGLUtils_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGLUtils_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGLUtils_release_lflags := $(NvGLUtils_custom_lflags) NvGLUtils_release_lflags += $(addprefix -L, $(NvGLUtils_release_lpaths)) NvGLUtils_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGLUtils_release_libraries)) -Wl,--end-group @@ -131,9 +135,9 @@ NvGLUtils_release_obj = $(NvGLUtils_release_cpp_o) $(NvGLUtils_release_cc_o NvGLUtils_release_bin := ./../../lib/Tegra-Android/libNvGLUtils.a clean_NvGLUtils_release: - $(SILENT_FLAG)$(ECHO) clean NvGLUtils release - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGLUtils_release_bin) + $(ECHO) clean NvGLUtils release + $(RMDIR) $(NvGLUtils_release_objsdir) + $(RMDIR) $(NvGLUtils_release_bin) build_NvGLUtils_release: postbuild_NvGLUtils_release postbuild_NvGLUtils_release: mainbuild_NvGLUtils_release @@ -141,40 +145,45 @@ mainbuild_NvGLUtils_release: prebuild_NvGLUtils_release $(NvGLUtils_release_bin) prebuild_NvGLUtils_release: $(NvGLUtils_release_bin): $(NvGLUtils_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvGLUtils.a` - $(SILENT_FLAG)$(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvGLUtils.a` + $(AR) rcs $(NvGLUtils_release_bin) $(NvGLUtils_release_obj) + $(ECHO) building $@ complete! NvGLUtils_release_DEPDIR = $(dir $(@))/$(*F) $(NvGLUtils_release_cpp_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cppfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_cc_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGLUtils_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_ccfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d $(NvGLUtils_release_c_o): $(NvGLUtils_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) - $(SILENT_FLAG)cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ + $(ECHO) NvGLUtils: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGLUtils_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles)))))) + cp $(NvGLUtils_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGLUtils_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGLUtils_release_objsdir),, $@))), $(NvGLUtils_cfiles))))).release.P; \ rm -f $(NvGLUtils_release_DEPDIR).d clean_NvGLUtils: clean_NvGLUtils_debug clean_NvGLUtils_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvGamepad.mk b/extensions/build/makeandroid/Makefile.NvGamepad.mk index b0b00be..d5ee4f2 100644 --- a/extensions/build/makeandroid/Makefile.NvGamepad.mk +++ b/extensions/build/makeandroid/Makefile.NvGamepad.mk @@ -34,9 +34,11 @@ NvGamepad_debug_common_cflags += -MMD NvGamepad_debug_common_cflags += $(addprefix -D, $(NvGamepad_debug_defines)) NvGamepad_debug_common_cflags += $(addprefix -I, $(NvGamepad_debug_hpaths)) NvGamepad_debug_cflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_cppflags := $(NvGamepad_debug_common_cflags) -NvGamepad_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvGamepad_debug_lflags := $(NvGamepad_custom_lflags) NvGamepad_debug_lflags += $(addprefix -L, $(NvGamepad_debug_lpaths)) NvGamepad_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_debug_libraries)) -Wl,--end-group @@ -48,9 +50,9 @@ NvGamepad_debug_obj = $(NvGamepad_debug_cpp_o) $(NvGamepad_debug_cc_o) $(Nv NvGamepad_debug_bin := ./../../lib/Tegra-Android/libNvGamepadD.a clean_NvGamepad_debug: - $(SILENT_FLAG)$(ECHO) clean NvGamepad debug - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_debug_bin) + $(ECHO) clean NvGamepad debug + $(RMDIR) $(NvGamepad_debug_objsdir) + $(RMDIR) $(NvGamepad_debug_bin) build_NvGamepad_debug: postbuild_NvGamepad_debug postbuild_NvGamepad_debug: mainbuild_NvGamepad_debug @@ -58,37 +60,37 @@ mainbuild_NvGamepad_debug: prebuild_NvGamepad_debug $(NvGamepad_debug_bin) prebuild_NvGamepad_debug: $(NvGamepad_debug_bin): $(NvGamepad_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvGamepadD.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvGamepadD.a` + $(AR) rcs $(NvGamepad_debug_bin) $(NvGamepad_debug_obj) + $(ECHO) building $@ complete! NvGamepad_debug_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_debug_cpp_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cppfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_cc_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_ccfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d $(NvGamepad_debug_c_o): $(NvGamepad_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ + $(ECHO) NvGamepad: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_debug_objsdir),, $@))), $(NvGamepad_cfiles))))).debug.P; \ rm -f $(NvGamepad_debug_DEPDIR).d @@ -112,9 +114,11 @@ NvGamepad_release_common_cflags += -MMD NvGamepad_release_common_cflags += $(addprefix -D, $(NvGamepad_release_defines)) NvGamepad_release_common_cflags += $(addprefix -I, $(NvGamepad_release_hpaths)) NvGamepad_release_cflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_cppflags := $(NvGamepad_release_common_cflags) -NvGamepad_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvGamepad_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvGamepad_release_lflags := $(NvGamepad_custom_lflags) NvGamepad_release_lflags += $(addprefix -L, $(NvGamepad_release_lpaths)) NvGamepad_release_lflags += -Wl,--start-group $(addprefix -l, $(NvGamepad_release_libraries)) -Wl,--end-group @@ -126,9 +130,9 @@ NvGamepad_release_obj = $(NvGamepad_release_cpp_o) $(NvGamepad_release_cc_o NvGamepad_release_bin := ./../../lib/Tegra-Android/libNvGamepad.a clean_NvGamepad_release: - $(SILENT_FLAG)$(ECHO) clean NvGamepad release - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvGamepad_release_bin) + $(ECHO) clean NvGamepad release + $(RMDIR) $(NvGamepad_release_objsdir) + $(RMDIR) $(NvGamepad_release_bin) build_NvGamepad_release: postbuild_NvGamepad_release postbuild_NvGamepad_release: mainbuild_NvGamepad_release @@ -136,40 +140,45 @@ mainbuild_NvGamepad_release: prebuild_NvGamepad_release $(NvGamepad_release_bin) prebuild_NvGamepad_release: $(NvGamepad_release_bin): $(NvGamepad_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvGamepad.a` - $(SILENT_FLAG)$(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvGamepad.a` + $(AR) rcs $(NvGamepad_release_bin) $(NvGamepad_release_obj) + $(ECHO) building $@ complete! NvGamepad_release_DEPDIR = $(dir $(@))/$(*F) $(NvGamepad_release_cpp_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cppfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_cc_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvGamepad_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_ccfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d $(NvGamepad_release_c_o): $(NvGamepad_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) - $(SILENT_FLAG)cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ + $(ECHO) NvGamepad: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvGamepad_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles)))))) + cp $(NvGamepad_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvGamepad_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvGamepad_release_objsdir),, $@))), $(NvGamepad_cfiles))))).release.P; \ rm -f $(NvGamepad_release_DEPDIR).d clean_NvGamepad: clean_NvGamepad_debug clean_NvGamepad_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvModel.mk b/extensions/build/makeandroid/Makefile.NvModel.mk index 1a750cd..9299742 100644 --- a/extensions/build/makeandroid/Makefile.NvModel.mk +++ b/extensions/build/makeandroid/Makefile.NvModel.mk @@ -36,9 +36,11 @@ NvModel_debug_common_cflags += -MMD NvModel_debug_common_cflags += $(addprefix -D, $(NvModel_debug_defines)) NvModel_debug_common_cflags += $(addprefix -I, $(NvModel_debug_hpaths)) NvModel_debug_cflags := $(NvModel_debug_common_cflags) -NvModel_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_cppflags := $(NvModel_debug_common_cflags) -NvModel_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvModel_debug_lflags := $(NvModel_custom_lflags) NvModel_debug_lflags += $(addprefix -L, $(NvModel_debug_lpaths)) NvModel_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_debug_libraries)) -Wl,--end-group @@ -50,9 +52,9 @@ NvModel_debug_obj = $(NvModel_debug_cpp_o) $(NvModel_debug_cc_o) $(NvModel_ NvModel_debug_bin := ./../../lib/Tegra-Android/libNvModelD.a clean_NvModel_debug: - $(SILENT_FLAG)$(ECHO) clean NvModel debug - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_debug_bin) + $(ECHO) clean NvModel debug + $(RMDIR) $(NvModel_debug_objsdir) + $(RMDIR) $(NvModel_debug_bin) build_NvModel_debug: postbuild_NvModel_debug postbuild_NvModel_debug: mainbuild_NvModel_debug @@ -60,37 +62,37 @@ mainbuild_NvModel_debug: prebuild_NvModel_debug $(NvModel_debug_bin) prebuild_NvModel_debug: $(NvModel_debug_bin): $(NvModel_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvModelD.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvModelD.a` + $(AR) rcs $(NvModel_debug_bin) $(NvModel_debug_obj) + $(ECHO) building $@ complete! NvModel_debug_DEPDIR = $(dir $(@))/$(*F) $(NvModel_debug_cpp_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cppfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_cc_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_ccfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d $(NvModel_debug_c_o): $(NvModel_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ + $(ECHO) NvModel: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_debug_objsdir),, $@))), $(NvModel_cfiles))))).debug.P; \ rm -f $(NvModel_debug_DEPDIR).d @@ -114,9 +116,11 @@ NvModel_release_common_cflags += -MMD NvModel_release_common_cflags += $(addprefix -D, $(NvModel_release_defines)) NvModel_release_common_cflags += $(addprefix -I, $(NvModel_release_hpaths)) NvModel_release_cflags := $(NvModel_release_common_cflags) -NvModel_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_cppflags := $(NvModel_release_common_cflags) -NvModel_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvModel_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvModel_release_lflags := $(NvModel_custom_lflags) NvModel_release_lflags += $(addprefix -L, $(NvModel_release_lpaths)) NvModel_release_lflags += -Wl,--start-group $(addprefix -l, $(NvModel_release_libraries)) -Wl,--end-group @@ -128,9 +132,9 @@ NvModel_release_obj = $(NvModel_release_cpp_o) $(NvModel_release_cc_o) $(Nv NvModel_release_bin := ./../../lib/Tegra-Android/libNvModel.a clean_NvModel_release: - $(SILENT_FLAG)$(ECHO) clean NvModel release - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvModel_release_bin) + $(ECHO) clean NvModel release + $(RMDIR) $(NvModel_release_objsdir) + $(RMDIR) $(NvModel_release_bin) build_NvModel_release: postbuild_NvModel_release postbuild_NvModel_release: mainbuild_NvModel_release @@ -138,40 +142,45 @@ mainbuild_NvModel_release: prebuild_NvModel_release $(NvModel_release_bin) prebuild_NvModel_release: $(NvModel_release_bin): $(NvModel_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvModel.a` - $(SILENT_FLAG)$(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvModel.a` + $(AR) rcs $(NvModel_release_bin) $(NvModel_release_obj) + $(ECHO) building $@ complete! NvModel_release_DEPDIR = $(dir $(@))/$(*F) $(NvModel_release_cpp_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cppfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_cc_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvModel_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_ccfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d $(NvModel_release_c_o): $(NvModel_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) - $(SILENT_FLAG)cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ + $(ECHO) NvModel: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvModel_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles)))))) + cp $(NvModel_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvModel_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvModel_release_objsdir),, $@))), $(NvModel_cfiles))))).release.P; \ rm -f $(NvModel_release_DEPDIR).d clean_NvModel: clean_NvModel_debug clean_NvModel_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/makeandroid/Makefile.NvUI.mk b/extensions/build/makeandroid/Makefile.NvUI.mk index a0d128e..cc3abaa 100644 --- a/extensions/build/makeandroid/Makefile.NvUI.mk +++ b/extensions/build/makeandroid/Makefile.NvUI.mk @@ -48,9 +48,11 @@ NvUI_debug_common_cflags += -MMD NvUI_debug_common_cflags += $(addprefix -D, $(NvUI_debug_defines)) NvUI_debug_common_cflags += $(addprefix -I, $(NvUI_debug_hpaths)) NvUI_debug_cflags := $(NvUI_debug_common_cflags) -NvUI_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_cppflags := $(NvUI_debug_common_cflags) -NvUI_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer NvUI_debug_lflags := $(NvUI_custom_lflags) NvUI_debug_lflags += $(addprefix -L, $(NvUI_debug_lpaths)) NvUI_debug_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_debug_libraries)) -Wl,--end-group @@ -62,9 +64,9 @@ NvUI_debug_obj = $(NvUI_debug_cpp_o) $(NvUI_debug_cc_o) $(NvUI_debug_c_o) NvUI_debug_bin := ./../../lib/Tegra-Android/libNvUID.a clean_NvUI_debug: - $(SILENT_FLAG)$(ECHO) clean NvUI debug - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_debug_bin) + $(ECHO) clean NvUI debug + $(RMDIR) $(NvUI_debug_objsdir) + $(RMDIR) $(NvUI_debug_bin) build_NvUI_debug: postbuild_NvUI_debug postbuild_NvUI_debug: mainbuild_NvUI_debug @@ -72,37 +74,37 @@ mainbuild_NvUI_debug: prebuild_NvUI_debug $(NvUI_debug_bin) prebuild_NvUI_debug: $(NvUI_debug_bin): $(NvUI_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvUID.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvUID.a` + $(AR) rcs $(NvUI_debug_bin) $(NvUI_debug_obj) + $(ECHO) building $@ complete! NvUI_debug_DEPDIR = $(dir $(@))/$(*F) $(NvUI_debug_cpp_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cppfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_cc_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_ccfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d $(NvUI_debug_c_o): $(NvUI_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ + $(ECHO) NvUI: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_debug_objsdir),, $@))), $(NvUI_cfiles))))).debug.P; \ rm -f $(NvUI_debug_DEPDIR).d @@ -126,9 +128,11 @@ NvUI_release_common_cflags += -MMD NvUI_release_common_cflags += $(addprefix -D, $(NvUI_release_defines)) NvUI_release_common_cflags += $(addprefix -I, $(NvUI_release_hpaths)) NvUI_release_cflags := $(NvUI_release_common_cflags) -NvUI_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_cppflags := $(NvUI_release_common_cflags) -NvUI_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +NvUI_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer NvUI_release_lflags := $(NvUI_custom_lflags) NvUI_release_lflags += $(addprefix -L, $(NvUI_release_lpaths)) NvUI_release_lflags += -Wl,--start-group $(addprefix -l, $(NvUI_release_libraries)) -Wl,--end-group @@ -140,9 +144,9 @@ NvUI_release_obj = $(NvUI_release_cpp_o) $(NvUI_release_cc_o) $(NvUI_releas NvUI_release_bin := ./../../lib/Tegra-Android/libNvUI.a clean_NvUI_release: - $(SILENT_FLAG)$(ECHO) clean NvUI release - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(NvUI_release_bin) + $(ECHO) clean NvUI release + $(RMDIR) $(NvUI_release_objsdir) + $(RMDIR) $(NvUI_release_bin) build_NvUI_release: postbuild_NvUI_release postbuild_NvUI_release: mainbuild_NvUI_release @@ -150,40 +154,45 @@ mainbuild_NvUI_release: prebuild_NvUI_release $(NvUI_release_bin) prebuild_NvUI_release: $(NvUI_release_bin): $(NvUI_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libNvUI.a` - $(SILENT_FLAG)$(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libNvUI.a` + $(AR) rcs $(NvUI_release_bin) $(NvUI_release_obj) + $(ECHO) building $@ complete! NvUI_release_DEPDIR = $(dir $(@))/$(*F) $(NvUI_release_cpp_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cppfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_cc_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(NvUI_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_ccfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d $(NvUI_release_c_o): $(NvUI_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) - $(SILENT_FLAG)cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ + $(ECHO) NvUI: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(NvUI_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles)))))) + cp $(NvUI_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(NvUI_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(NvUI_release_objsdir),, $@))), $(NvUI_cfiles))))).release.P; \ rm -f $(NvUI_release_DEPDIR).d clean_NvUI: clean_NvUI_debug clean_NvUI_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/build/vs2010android/NvAppBase.vcxproj b/extensions/build/vs2010android/NvAppBase.vcxproj index 0606795..8f83c81 100644 --- a/extensions/build/vs2010android/NvAppBase.vcxproj +++ b/extensions/build/vs2010android/NvAppBase.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src;./../../src/NvAppBase;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src;./../../src/NvAppBase;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvAssetLoader.vcxproj b/extensions/build/vs2010android/NvAssetLoader.vcxproj index 378ae33..82f49ca 100644 --- a/extensions/build/vs2010android/NvAssetLoader.vcxproj +++ b/extensions/build/vs2010android/NvAssetLoader.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src;./../../src/NvAssetLoader;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src;./../../src/NvAssetLoader;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvEGLUtil.vcxproj b/extensions/build/vs2010android/NvEGLUtil.vcxproj index d6307ae..d6ee3d6 100644 --- a/extensions/build/vs2010android/NvEGLUtil.vcxproj +++ b/extensions/build/vs2010android/NvEGLUtil.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/NvEGLUtil;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/NvEGLUtil;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvGLUtils.vcxproj b/extensions/build/vs2010android/NvGLUtils.vcxproj index 11ae14d..7355770 100644 --- a/extensions/build/vs2010android/NvGLUtils.vcxproj +++ b/extensions/build/vs2010android/NvGLUtils.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/NvGLUtils;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/NvGLUtils;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvGamepad.vcxproj b/extensions/build/vs2010android/NvGamepad.vcxproj index 03b2081..7dfd7cc 100644 --- a/extensions/build/vs2010android/NvGamepad.vcxproj +++ b/extensions/build/vs2010android/NvGamepad.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/NvGamepad;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/NvGamepad;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvModel.vcxproj b/extensions/build/vs2010android/NvModel.vcxproj index 7136038..b4f19b3 100644 --- a/extensions/build/vs2010android/NvModel.vcxproj +++ b/extensions/build/vs2010android/NvModel.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/NvModel;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/NvModel;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/build/vs2010android/NvUI.vcxproj b/extensions/build/vs2010android/NvUI.vcxproj index 3f3f251..5f91189 100644 --- a/extensions/build/vs2010android/NvUI.vcxproj +++ b/extensions/build/vs2010android/NvUI.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/NvUI;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/NvUI;./../../include;./../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/externals/build/linux-arm32/Makefile.Half.mk b/extensions/externals/build/linux-arm32/Makefile.Half.mk index 02838f5..9e95fbd 100644 --- a/extensions/externals/build/linux-arm32/Makefile.Half.mk +++ b/extensions/externals/build/linux-arm32/Makefile.Half.mk @@ -18,8 +18,8 @@ Half_debug_libraries += glfw3 Half_debug_cflags := $(Half_custom_cflags) Half_debug_cflags += $(addprefix -D, $(Half_debug_defines)) Half_debug_cflags += $(addprefix -I, $(Half_debug_hpaths)) -Half_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder -Half_debug_cflags += -g +Half_debug_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +Half_debug_cflags += -O0 -ggdb Half_debug_lflags := $(Half_custom_lflags) Half_debug_lflags += $(addprefix -L, $(Half_debug_lpaths)) Half_debug_lflags += -Wl,--start-group $(addprefix -l, $(Half_debug_libraries)) -Wl,--end-group @@ -66,8 +66,8 @@ Half_release_libraries += glfw3 Half_release_cflags := $(Half_custom_cflags) Half_release_cflags += $(addprefix -D, $(Half_release_defines)) Half_release_cflags += $(addprefix -I, $(Half_release_hpaths)) -Half_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder -Half_release_cflags += -O2 +Half_release_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +Half_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_lflags := $(Half_custom_lflags) Half_release_lflags += $(addprefix -L, $(Half_release_lpaths)) Half_release_lflags += -Wl,--start-group $(addprefix -l, $(Half_release_libraries)) -Wl,--end-group diff --git a/extensions/externals/build/linux-arm32/Makefile.R3.mk b/extensions/externals/build/linux-arm32/Makefile.R3.mk index 401ba5f..055b3ae 100644 --- a/extensions/externals/build/linux-arm32/Makefile.R3.mk +++ b/extensions/externals/build/linux-arm32/Makefile.R3.mk @@ -18,8 +18,8 @@ R3_debug_libraries += glfw3 R3_debug_cflags := $(R3_custom_cflags) R3_debug_cflags += $(addprefix -D, $(R3_debug_defines)) R3_debug_cflags += $(addprefix -I, $(R3_debug_hpaths)) -R3_debug_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder -R3_debug_cflags += -g +R3_debug_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +R3_debug_cflags += -O0 -ggdb R3_debug_lflags := $(R3_custom_lflags) R3_debug_lflags += $(addprefix -L, $(R3_debug_lpaths)) R3_debug_lflags += -Wl,--start-group $(addprefix -l, $(R3_debug_libraries)) -Wl,--end-group @@ -66,8 +66,8 @@ R3_release_libraries += glfw3 R3_release_cflags := $(R3_custom_cflags) R3_release_cflags += $(addprefix -D, $(R3_release_defines)) R3_release_cflags += $(addprefix -I, $(R3_release_hpaths)) -R3_release_cflags += -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder -R3_release_cflags += -O2 +R3_release_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +R3_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_lflags := $(R3_custom_lflags) R3_release_lflags += $(addprefix -L, $(R3_release_lpaths)) R3_release_lflags += -Wl,--start-group $(addprefix -l, $(R3_release_libraries)) -Wl,--end-group diff --git a/extensions/externals/build/linux-arm32/Makefile.cg4cpp.mk b/extensions/externals/build/linux-arm32/Makefile.cg4cpp.mk new file mode 100644 index 0000000..1435cae --- /dev/null +++ b/extensions/externals/build/linux-arm32/Makefile.cg4cpp.mk @@ -0,0 +1,178 @@ +# Makefile generated by XPJ for linux-arm32 +-include Makefile.custom +ProjectName = cg4cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/abs.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/acos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/all.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/any.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/asin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ceil.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/clamp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cosh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cross.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/degrees.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/determinant.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/distance.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/dot.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/faceforward.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToRawIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floor.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fmod.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frac.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fresnel.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/intBitsToFloat.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/inverse.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/iostream.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isfinite.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isinf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isnan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ldexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/length.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lerp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lit.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log10.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/max.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/min.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/modf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/mul.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/normalize.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/pow.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/radians.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/reflect.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/refract.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/round.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/rsqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/saturate.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sign.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sincos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sinh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/smoothstep.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/step.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tanh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/transpose.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/trunc.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x4.cpp + +cg4cpp_debug_hpaths := +cg4cpp_debug_hpaths += ./../../src/cg4cpp +cg4cpp_debug_hpaths += ./../../include +cg4cpp_debug_lpaths := +cg4cpp_debug_defines := $(cg4cpp_custom_defines) +cg4cpp_debug_defines += LINUX=1 +cg4cpp_debug_defines += _LIB +cg4cpp_debug_defines += GLEW_NO_GLU=1 +cg4cpp_debug_defines += _DEBUG +cg4cpp_debug_libraries := +cg4cpp_debug_libraries += pthread +cg4cpp_debug_libraries += glfw3 +cg4cpp_debug_cflags := $(cg4cpp_custom_cflags) +cg4cpp_debug_cflags += $(addprefix -D, $(cg4cpp_debug_defines)) +cg4cpp_debug_cflags += $(addprefix -I, $(cg4cpp_debug_hpaths)) +cg4cpp_debug_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +cg4cpp_debug_cflags += -O0 -ggdb +cg4cpp_debug_lflags := $(cg4cpp_custom_lflags) +cg4cpp_debug_lflags += $(addprefix -L, $(cg4cpp_debug_lpaths)) +cg4cpp_debug_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_debug_libraries)) -Wl,--end-group +cg4cpp_debug_objsdir := $(OBJS_DIR)/cg4cpp_debug +cg4cpp_debug_obj := +cg4cpp_debug_cpp_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_debug_obj += $(cg4cpp_debug_cpp_o) +cg4cpp_debug_bin := ./../../lib/linux-arm32/libcg4cppD.a + +clean_cg4cpp_debug: + @$(ECHO) clean cg4cpp debug + @$(RMDIR) $(cg4cpp_debug_objsdir) + @$(RMDIR) $(cg4cpp_debug_bin) + +build_cg4cpp_debug: postbuild_cg4cpp_debug +postbuild_cg4cpp_debug: mainbuild_cg4cpp_debug +mainbuild_cg4cpp_debug: prebuild_cg4cpp_debug $(cg4cpp_debug_bin) +prebuild_cg4cpp_debug: + +-include $(cg4cpp_debug_cpp_o:%o=%d) + +$(cg4cpp_debug_bin): $(cg4cpp_debug_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libcg4cppD.a` + @$(AR) r $(cg4cpp_debug_bin) $^ + @$(RANLIB) $(cg4cpp_debug_bin) + @$(ECHO) building $@ complete! + +$(cg4cpp_debug_cpp_o): $(cg4cpp_debug_objsdir)/%.o: + @$(ECHO) cg4cpp: compiling debug $(filter %$*,$(cg4cpp_cppfiles))... + @mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cflags) -MMD -MP -MF $(subst .cpp.o,.cpp.d,$@) -c $(filter %$*,$(cg4cpp_cppfiles)) -o $@ +cg4cpp_release_hpaths := +cg4cpp_release_hpaths += ./../../src/cg4cpp +cg4cpp_release_hpaths += ./../../include +cg4cpp_release_lpaths := +cg4cpp_release_defines := $(cg4cpp_custom_defines) +cg4cpp_release_defines += LINUX=1 +cg4cpp_release_defines += _LIB +cg4cpp_release_defines += GLEW_NO_GLU=1 +cg4cpp_release_defines += NDEBUG +cg4cpp_release_libraries := +cg4cpp_release_libraries += pthread +cg4cpp_release_libraries += glfw3 +cg4cpp_release_cflags := $(cg4cpp_custom_cflags) +cg4cpp_release_cflags += $(addprefix -D, $(cg4cpp_release_defines)) +cg4cpp_release_cflags += $(addprefix -I, $(cg4cpp_release_hpaths)) +cg4cpp_release_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +cg4cpp_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_lflags := $(cg4cpp_custom_lflags) +cg4cpp_release_lflags += $(addprefix -L, $(cg4cpp_release_lpaths)) +cg4cpp_release_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_release_libraries)) -Wl,--end-group +cg4cpp_release_objsdir := $(OBJS_DIR)/cg4cpp_release +cg4cpp_release_obj := +cg4cpp_release_cpp_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_release_obj += $(cg4cpp_release_cpp_o) +cg4cpp_release_bin := ./../../lib/linux-arm32/libcg4cpp.a + +clean_cg4cpp_release: + @$(ECHO) clean cg4cpp release + @$(RMDIR) $(cg4cpp_release_objsdir) + @$(RMDIR) $(cg4cpp_release_bin) + +build_cg4cpp_release: postbuild_cg4cpp_release +postbuild_cg4cpp_release: mainbuild_cg4cpp_release +mainbuild_cg4cpp_release: prebuild_cg4cpp_release $(cg4cpp_release_bin) +prebuild_cg4cpp_release: + +-include $(cg4cpp_release_cpp_o:%o=%d) + +$(cg4cpp_release_bin): $(cg4cpp_release_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libcg4cpp.a` + @$(AR) r $(cg4cpp_release_bin) $^ + @$(RANLIB) $(cg4cpp_release_bin) + @$(ECHO) building $@ complete! + +$(cg4cpp_release_cpp_o): $(cg4cpp_release_objsdir)/%.o: + @$(ECHO) cg4cpp: compiling release $(filter %$*,$(cg4cpp_cppfiles))... + @mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cflags) -MMD -MP -MF $(subst .cpp.o,.cpp.d,$@) -c $(filter %$*,$(cg4cpp_cppfiles)) -o $@ diff --git a/extensions/externals/build/linux-arm32/Makefile.freetype.mk b/extensions/externals/build/linux-arm32/Makefile.freetype.mk new file mode 100644 index 0000000..6f79e8a --- /dev/null +++ b/extensions/externals/build/linux-arm32/Makefile.freetype.mk @@ -0,0 +1,143 @@ +# Makefile generated by XPJ for linux-arm32 +-include Makefile.custom +ProjectName = freetype +freetype_cfiles += ./../../src/freetype-2.4.9/src/autofit/autofit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/bdf/bdf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cff/cff.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbase.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbitmap.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cache/ftcache.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftdebug.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftfstype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgasp.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftglyph.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/gzip/ftgzip.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftinit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/lzw/ftlzw.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftstroke.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsystem.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/smooth/smooth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbbox.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgxval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftlcdfil.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftmm.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftotval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpatent.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsynth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/fttype1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftwinfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftxf86.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pcf/pcf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pfr/pfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psaux/psaux.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pshinter/pshinter.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psnames/psmodule.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/raster/raster.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/sfnt/sfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/truetype/truetype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type1/type1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cid/type1cid.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type42/type42.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/winfonts/winfnt.c + +freetype_debug_hpaths := +freetype_debug_hpaths += ./../../src/freetype-2.4.9/include +freetype_debug_hpaths += ./../../src/freetype-2.4.9/src +freetype_debug_hpaths += ./../../include +freetype_debug_lpaths := +freetype_debug_defines := $(freetype_custom_defines) +freetype_debug_defines += FT2_BUILD_LIBRARY +freetype_debug_defines += LINUX=1 +freetype_debug_defines += _LIB +freetype_debug_defines += GLEW_NO_GLU=1 +freetype_debug_defines += _DEBUG +freetype_debug_libraries := +freetype_debug_libraries += pthread +freetype_debug_libraries += glfw3 +freetype_debug_cflags := $(freetype_custom_cflags) +freetype_debug_cflags += $(addprefix -D, $(freetype_debug_defines)) +freetype_debug_cflags += $(addprefix -I, $(freetype_debug_hpaths)) +freetype_debug_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +freetype_debug_cflags += -O0 -ggdb +freetype_debug_lflags := $(freetype_custom_lflags) +freetype_debug_lflags += $(addprefix -L, $(freetype_debug_lpaths)) +freetype_debug_lflags += -Wl,--start-group $(addprefix -l, $(freetype_debug_libraries)) -Wl,--end-group +freetype_debug_objsdir := $(OBJS_DIR)/freetype_debug +freetype_debug_obj := +freetype_debug_c_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_debug_obj += $(freetype_debug_c_o) +freetype_debug_bin := ./../../lib/linux-arm32/libfreetypeD.a + +clean_freetype_debug: + @$(ECHO) clean freetype debug + @$(RMDIR) $(freetype_debug_objsdir) + @$(RMDIR) $(freetype_debug_bin) + +build_freetype_debug: postbuild_freetype_debug +postbuild_freetype_debug: mainbuild_freetype_debug +mainbuild_freetype_debug: prebuild_freetype_debug $(freetype_debug_bin) +prebuild_freetype_debug: + +-include $(freetype_debug_c_o:%o=%d) + +$(freetype_debug_bin): $(freetype_debug_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libfreetypeD.a` + @$(AR) r $(freetype_debug_bin) $^ + @$(RANLIB) $(freetype_debug_bin) + @$(ECHO) building $@ complete! + +$(freetype_debug_c_o): $(freetype_debug_objsdir)/%.o: + @$(ECHO) freetype: compiling debug $(filter %$*,$(freetype_cfiles))... + @mkdir -p $(dir $(@)) + $(CC) $(freetype_debug_cflags) -MMD -MP -MF $(subst .c.o,.c.d,$@) -c $(filter %$*,$(freetype_cfiles)) -o $@ +freetype_release_hpaths := +freetype_release_hpaths += ./../../src/freetype-2.4.9/include +freetype_release_hpaths += ./../../src/freetype-2.4.9/src +freetype_release_hpaths += ./../../include +freetype_release_lpaths := +freetype_release_defines := $(freetype_custom_defines) +freetype_release_defines += FT2_BUILD_LIBRARY +freetype_release_defines += LINUX=1 +freetype_release_defines += _LIB +freetype_release_defines += GLEW_NO_GLU=1 +freetype_release_defines += NDEBUG +freetype_release_libraries := +freetype_release_libraries += pthread +freetype_release_libraries += glfw3 +freetype_release_cflags := $(freetype_custom_cflags) +freetype_release_cflags += $(addprefix -D, $(freetype_release_defines)) +freetype_release_cflags += $(addprefix -I, $(freetype_release_hpaths)) +freetype_release_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +freetype_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_lflags := $(freetype_custom_lflags) +freetype_release_lflags += $(addprefix -L, $(freetype_release_lpaths)) +freetype_release_lflags += -Wl,--start-group $(addprefix -l, $(freetype_release_libraries)) -Wl,--end-group +freetype_release_objsdir := $(OBJS_DIR)/freetype_release +freetype_release_obj := +freetype_release_c_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_release_obj += $(freetype_release_c_o) +freetype_release_bin := ./../../lib/linux-arm32/libfreetype.a + +clean_freetype_release: + @$(ECHO) clean freetype release + @$(RMDIR) $(freetype_release_objsdir) + @$(RMDIR) $(freetype_release_bin) + +build_freetype_release: postbuild_freetype_release +postbuild_freetype_release: mainbuild_freetype_release +mainbuild_freetype_release: prebuild_freetype_release $(freetype_release_bin) +prebuild_freetype_release: + +-include $(freetype_release_c_o:%o=%d) + +$(freetype_release_bin): $(freetype_release_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libfreetype.a` + @$(AR) r $(freetype_release_bin) $^ + @$(RANLIB) $(freetype_release_bin) + @$(ECHO) building $@ complete! + +$(freetype_release_c_o): $(freetype_release_objsdir)/%.o: + @$(ECHO) freetype: compiling release $(filter %$*,$(freetype_cfiles))... + @mkdir -p $(dir $(@)) + $(CC) $(freetype_release_cflags) -MMD -MP -MF $(subst .c.o,.c.d,$@) -c $(filter %$*,$(freetype_cfiles)) -o $@ diff --git a/extensions/externals/build/linux-arm32/Makefile.harfbuzz.mk b/extensions/externals/build/linux-arm32/Makefile.harfbuzz.mk new file mode 100644 index 0000000..d6ddce4 --- /dev/null +++ b/extensions/externals/build/linux-arm32/Makefile.harfbuzz.mk @@ -0,0 +1,160 @@ +# Makefile generated by XPJ for linux-arm32 +-include Makefile.custom +ProjectName = harfbuzz +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-blob.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer-serialize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-common.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-face.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-fallback-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ft.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-layout.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-map.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-arabic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-default.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic-table.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-myanmar.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-sea.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-thai.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-fallback.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-normalize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-tag.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-set.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape-plan.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shaper.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-tt-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-unicode.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-warning.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ucdn.cc +harfbuzz_cfiles += ./../../src/ucdn/ucdn.c + +harfbuzz_debug_hpaths := +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src +harfbuzz_debug_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_debug_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_debug_hpaths += ./../../include +harfbuzz_debug_lpaths := +harfbuzz_debug_defines := $(harfbuzz_custom_defines) +harfbuzz_debug_defines += HAVE_CONFIG_H +harfbuzz_debug_defines += HB_NO_MT +harfbuzz_debug_defines += HAVE_OT +harfbuzz_debug_defines += HAVE_ICU +harfbuzz_debug_defines += LINUX=1 +harfbuzz_debug_defines += _LIB +harfbuzz_debug_defines += GLEW_NO_GLU=1 +harfbuzz_debug_defines += _DEBUG +harfbuzz_debug_libraries := +harfbuzz_debug_libraries += pthread +harfbuzz_debug_libraries += glfw3 +harfbuzz_debug_cflags := $(harfbuzz_custom_cflags) +harfbuzz_debug_cflags += $(addprefix -D, $(harfbuzz_debug_defines)) +harfbuzz_debug_cflags += $(addprefix -I, $(harfbuzz_debug_hpaths)) +harfbuzz_debug_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_debug_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +harfbuzz_debug_cflags += -O0 -ggdb +harfbuzz_debug_lflags := $(harfbuzz_custom_lflags) +harfbuzz_debug_lflags += $(addprefix -L, $(harfbuzz_debug_lpaths)) +harfbuzz_debug_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_debug_libraries)) -Wl,--end-group +harfbuzz_debug_objsdir := $(OBJS_DIR)/harfbuzz_debug +harfbuzz_debug_obj := +harfbuzz_debug_cc_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_debug_obj += $(harfbuzz_debug_cc_o) +harfbuzz_debug_c_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_debug_obj += $(harfbuzz_debug_c_o) +harfbuzz_debug_bin := ./../../lib/linux-arm32/libharfbuzzD.a + +clean_harfbuzz_debug: + @$(ECHO) clean harfbuzz debug + @$(RMDIR) $(harfbuzz_debug_objsdir) + @$(RMDIR) $(harfbuzz_debug_bin) + +build_harfbuzz_debug: postbuild_harfbuzz_debug +postbuild_harfbuzz_debug: mainbuild_harfbuzz_debug +mainbuild_harfbuzz_debug: prebuild_harfbuzz_debug $(harfbuzz_debug_bin) +prebuild_harfbuzz_debug: + +-include $(harfbuzz_debug_cc_o:%o=%d) +-include $(harfbuzz_debug_c_o:%o=%d) + +$(harfbuzz_debug_bin): $(harfbuzz_debug_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libharfbuzzD.a` + @$(AR) r $(harfbuzz_debug_bin) $^ + @$(RANLIB) $(harfbuzz_debug_bin) + @$(ECHO) building $@ complete! + +$(harfbuzz_debug_cc_o): $(harfbuzz_debug_objsdir)/%.o: + @$(ECHO) harfbuzz: compiling debug $(filter %$*,$(harfbuzz_ccfiles))... + @mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cflags) -MMD -MP -MF $(subst .cc.o,.cc.d,$@) -c $(filter %$*,$(harfbuzz_ccfiles)) -o $@ +$(harfbuzz_debug_c_o): $(harfbuzz_debug_objsdir)/%.o: + @$(ECHO) harfbuzz: compiling debug $(filter %$*,$(harfbuzz_cfiles))... + @mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_debug_cflags) -MMD -MP -MF $(subst .c.o,.c.d,$@) -c $(filter %$*,$(harfbuzz_cfiles)) -o $@ +harfbuzz_release_hpaths := +harfbuzz_release_hpaths += ./../../src/harfbuzz/src +harfbuzz_release_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_release_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_release_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_release_hpaths += ./../../include +harfbuzz_release_lpaths := +harfbuzz_release_defines := $(harfbuzz_custom_defines) +harfbuzz_release_defines += HAVE_CONFIG_H +harfbuzz_release_defines += HB_NO_MT +harfbuzz_release_defines += HAVE_OT +harfbuzz_release_defines += HAVE_ICU +harfbuzz_release_defines += LINUX=1 +harfbuzz_release_defines += _LIB +harfbuzz_release_defines += GLEW_NO_GLU=1 +harfbuzz_release_defines += NDEBUG +harfbuzz_release_libraries := +harfbuzz_release_libraries += pthread +harfbuzz_release_libraries += glfw3 +harfbuzz_release_cflags := $(harfbuzz_custom_cflags) +harfbuzz_release_cflags += $(addprefix -D, $(harfbuzz_release_defines)) +harfbuzz_release_cflags += $(addprefix -I, $(harfbuzz_release_hpaths)) +harfbuzz_release_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_release_cflags += -g -fno-omit-frame-pointer -marm -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Wno-reorder +harfbuzz_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_lflags := $(harfbuzz_custom_lflags) +harfbuzz_release_lflags += $(addprefix -L, $(harfbuzz_release_lpaths)) +harfbuzz_release_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_release_libraries)) -Wl,--end-group +harfbuzz_release_objsdir := $(OBJS_DIR)/harfbuzz_release +harfbuzz_release_obj := +harfbuzz_release_cc_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_release_obj += $(harfbuzz_release_cc_o) +harfbuzz_release_c_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_release_obj += $(harfbuzz_release_c_o) +harfbuzz_release_bin := ./../../lib/linux-arm32/libharfbuzz.a + +clean_harfbuzz_release: + @$(ECHO) clean harfbuzz release + @$(RMDIR) $(harfbuzz_release_objsdir) + @$(RMDIR) $(harfbuzz_release_bin) + +build_harfbuzz_release: postbuild_harfbuzz_release +postbuild_harfbuzz_release: mainbuild_harfbuzz_release +mainbuild_harfbuzz_release: prebuild_harfbuzz_release $(harfbuzz_release_bin) +prebuild_harfbuzz_release: + +-include $(harfbuzz_release_cc_o:%o=%d) +-include $(harfbuzz_release_c_o:%o=%d) + +$(harfbuzz_release_bin): $(harfbuzz_release_obj) + @mkdir -p `dirname ./../../lib/linux-arm32/libharfbuzz.a` + @$(AR) r $(harfbuzz_release_bin) $^ + @$(RANLIB) $(harfbuzz_release_bin) + @$(ECHO) building $@ complete! + +$(harfbuzz_release_cc_o): $(harfbuzz_release_objsdir)/%.o: + @$(ECHO) harfbuzz: compiling release $(filter %$*,$(harfbuzz_ccfiles))... + @mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cflags) -MMD -MP -MF $(subst .cc.o,.cc.d,$@) -c $(filter %$*,$(harfbuzz_ccfiles)) -o $@ +$(harfbuzz_release_c_o): $(harfbuzz_release_objsdir)/%.o: + @$(ECHO) harfbuzz: compiling release $(filter %$*,$(harfbuzz_cfiles))... + @mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_release_cflags) -MMD -MP -MF $(subst .c.o,.c.d,$@) -c $(filter %$*,$(harfbuzz_cfiles)) -o $@ diff --git a/extensions/externals/build/linux-arm32/cg4cpp.xpj.cg4cpp.Makefile b/extensions/externals/build/linux-arm32/cg4cpp.xpj.cg4cpp.Makefile new file mode 100644 index 0000000..c5f0ae3 --- /dev/null +++ b/extensions/externals/build/linux-arm32/cg4cpp.xpj.cg4cpp.Makefile @@ -0,0 +1,32 @@ +#!/usr/bin/make +# Makefile generated by XPJ for linux-arm32 + +CROSS_COMPILER_ROOT = $(if $(ARM_COMPILER_ROOT),$(ARM_COMPILER_ROOT),/usr/bin) +CROSS_COMPILER_PREFIX = $(if $(ARM_COMPILER_PREFIX),$(ARM_COMPILER_PREFIX),arm-linux-gnueabihf-) +#default defines +OBJS_DIR = build +RMDIR = rm -fr +ECHO = echo +CCLD = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CXX = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CC = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)gcc +RANLIB = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ranlib +AR = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ar +STRIP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)strip +OBJDUMP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objdump +OBJCOPY = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objcopy +-include Makedefs.linux-arm32.mk + +all: debug release + +debug: build_import_cg4cpp_debug + +release: build_import_cg4cpp_release + +clean: clean_import_cg4cpp_debug clean_import_cg4cpp_release + +include Makefile.cg4cpp.mk + + + + diff --git a/extensions/externals/build/linux-arm32/freetype.xpj.freetype.Makefile b/extensions/externals/build/linux-arm32/freetype.xpj.freetype.Makefile new file mode 100644 index 0000000..28a9137 --- /dev/null +++ b/extensions/externals/build/linux-arm32/freetype.xpj.freetype.Makefile @@ -0,0 +1,32 @@ +#!/usr/bin/make +# Makefile generated by XPJ for linux-arm32 + +CROSS_COMPILER_ROOT = $(if $(ARM_COMPILER_ROOT),$(ARM_COMPILER_ROOT),/usr/bin) +CROSS_COMPILER_PREFIX = $(if $(ARM_COMPILER_PREFIX),$(ARM_COMPILER_PREFIX),arm-linux-gnueabihf-) +#default defines +OBJS_DIR = build +RMDIR = rm -fr +ECHO = echo +CCLD = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CXX = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CC = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)gcc +RANLIB = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ranlib +AR = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ar +STRIP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)strip +OBJDUMP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objdump +OBJCOPY = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objcopy +-include Makedefs.linux-arm32.mk + +all: debug release + +debug: build_import_freetype_debug + +release: build_import_freetype_release + +clean: clean_import_freetype_debug clean_import_freetype_release + +include Makefile.freetype.mk + + + + diff --git a/extensions/externals/build/linux-arm32/harfbuzz.xpj.harfbuzz.Makefile b/extensions/externals/build/linux-arm32/harfbuzz.xpj.harfbuzz.Makefile new file mode 100644 index 0000000..fe94a5f --- /dev/null +++ b/extensions/externals/build/linux-arm32/harfbuzz.xpj.harfbuzz.Makefile @@ -0,0 +1,32 @@ +#!/usr/bin/make +# Makefile generated by XPJ for linux-arm32 + +CROSS_COMPILER_ROOT = $(if $(ARM_COMPILER_ROOT),$(ARM_COMPILER_ROOT),/usr/bin) +CROSS_COMPILER_PREFIX = $(if $(ARM_COMPILER_PREFIX),$(ARM_COMPILER_PREFIX),arm-linux-gnueabihf-) +#default defines +OBJS_DIR = build +RMDIR = rm -fr +ECHO = echo +CCLD = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CXX = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)g++ +CC = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)gcc +RANLIB = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ranlib +AR = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)ar +STRIP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)strip +OBJDUMP = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objdump +OBJCOPY = $(CROSS_COMPILER_ROOT)/$(CROSS_COMPILER_PREFIX)objcopy +-include Makedefs.linux-arm32.mk + +all: debug release + +debug: build_import_harfbuzz_debug + +release: build_import_harfbuzz_release + +clean: clean_import_harfbuzz_debug clean_import_harfbuzz_release + +include Makefile.harfbuzz.mk + + + + diff --git a/extensions/externals/build/linux32/Makefile b/extensions/externals/build/linux32/Makefile index 4c6e846..9449ec6 100644 --- a/extensions/externals/build/linux32/Makefile +++ b/extensions/externals/build/linux32/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for linux32 DEPSDIR = .deps -SILENT_FLAG ?= @ #default defines OBJS_DIR = build RMDIR = rm -fr @@ -19,23 +18,23 @@ OBJCOPY = objcopy all: debug release -debug: build_R3_debug +debug: build_harfbuzz_debug -release: build_R3_release +release: build_harfbuzz_release -clean: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) -clean_debug: clean_R3_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_debug: clean_harfbuzz_debug + rm -rf $(DEPSDIR) -clean_release: clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_release: clean_harfbuzz_release + rm -rf $(DEPSDIR) -include Makefile.R3.mk +include Makefile.harfbuzz.mk # Disable implicit rules to speedup build @@ -192,3 +191,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux32/Makefile.Half.mk b/extensions/externals/build/linux32/Makefile.Half.mk index 169af28..1fd2d47 100644 --- a/extensions/externals/build/linux32/Makefile.Half.mk +++ b/extensions/externals/build/linux32/Makefile.Half.mk @@ -30,12 +30,12 @@ Half_debug_common_cflags += $(addprefix -D, $(Half_debug_defines)) Half_debug_common_cflags += $(addprefix -I, $(Half_debug_hpaths)) Half_debug_common_cflags += -m32 Half_debug_cflags := $(Half_debug_common_cflags) -Half_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Half_debug_cflags += -g +Half_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_debug_cflags += -O0 -ggdb Half_debug_cppflags := $(Half_debug_common_cflags) -Half_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function Half_debug_cppflags += -Wno-reorder -Half_debug_cppflags += -g +Half_debug_cppflags += -O0 -ggdb Half_debug_lflags := $(Half_custom_lflags) Half_debug_lflags += $(addprefix -L, $(Half_debug_lpaths)) Half_debug_lflags += -Wl,--start-group $(addprefix -l, $(Half_debug_libraries)) -Wl,--end-group @@ -48,9 +48,9 @@ Half_debug_obj = $(Half_debug_cpp_o) $(Half_debug_cc_o) $(Half_debug_c_o) Half_debug_bin := ./../../lib/linux32/libHalfD.a clean_Half_debug: - $(SILENT_FLAG)$(ECHO) clean Half debug - $(SILENT_FLAG)$(RMDIR) $(Half_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_debug_bin) + $(ECHO) clean Half debug + $(RMDIR) $(Half_debug_objsdir) + $(RMDIR) $(Half_debug_bin) build_Half_debug: postbuild_Half_debug postbuild_Half_debug: mainbuild_Half_debug @@ -58,37 +58,37 @@ mainbuild_Half_debug: prebuild_Half_debug $(Half_debug_bin) prebuild_Half_debug: $(Half_debug_bin): $(Half_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libHalfD.a` - $(SILENT_FLAG)$(AR) rcs $(Half_debug_bin) $(Half_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libHalfD.a` + $(AR) rcs $(Half_debug_bin) $(Half_debug_obj) + $(ECHO) building $@ complete! Half_debug_DEPDIR = $(dir $(@))/$(*F) $(Half_debug_cpp_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_cc_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_c_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d @@ -110,12 +110,12 @@ Half_release_common_cflags += $(addprefix -D, $(Half_release_defines)) Half_release_common_cflags += $(addprefix -I, $(Half_release_hpaths)) Half_release_common_cflags += -m32 Half_release_cflags := $(Half_release_common_cflags) -Half_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Half_release_cflags += -O2 +Half_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_cppflags := $(Half_release_common_cflags) -Half_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function Half_release_cppflags += -Wno-reorder -Half_release_cppflags += -O2 +Half_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_lflags := $(Half_custom_lflags) Half_release_lflags += $(addprefix -L, $(Half_release_lpaths)) Half_release_lflags += -Wl,--start-group $(addprefix -l, $(Half_release_libraries)) -Wl,--end-group @@ -128,9 +128,9 @@ Half_release_obj = $(Half_release_cpp_o) $(Half_release_cc_o) $(Half_releas Half_release_bin := ./../../lib/linux32/libHalf.a clean_Half_release: - $(SILENT_FLAG)$(ECHO) clean Half release - $(SILENT_FLAG)$(RMDIR) $(Half_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_release_bin) + $(ECHO) clean Half release + $(RMDIR) $(Half_release_objsdir) + $(RMDIR) $(Half_release_bin) build_Half_release: postbuild_Half_release postbuild_Half_release: mainbuild_Half_release @@ -138,40 +138,45 @@ mainbuild_Half_release: prebuild_Half_release $(Half_release_bin) prebuild_Half_release: $(Half_release_bin): $(Half_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libHalf.a` - $(SILENT_FLAG)$(AR) rcs $(Half_release_bin) $(Half_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libHalf.a` + $(AR) rcs $(Half_release_bin) $(Half_release_obj) + $(ECHO) building $@ complete! Half_release_DEPDIR = $(dir $(@))/$(*F) $(Half_release_cpp_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_cc_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_c_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d clean_Half: clean_Half_debug clean_Half_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux32/Makefile.R3.mk b/extensions/externals/build/linux32/Makefile.R3.mk index ec7eefa..0d8fab6 100644 --- a/extensions/externals/build/linux32/Makefile.R3.mk +++ b/extensions/externals/build/linux32/Makefile.R3.mk @@ -30,12 +30,12 @@ R3_debug_common_cflags += $(addprefix -D, $(R3_debug_defines)) R3_debug_common_cflags += $(addprefix -I, $(R3_debug_hpaths)) R3_debug_common_cflags += -m32 R3_debug_cflags := $(R3_debug_common_cflags) -R3_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -R3_debug_cflags += -g +R3_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_debug_cflags += -O0 -ggdb R3_debug_cppflags := $(R3_debug_common_cflags) -R3_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function R3_debug_cppflags += -Wno-reorder -R3_debug_cppflags += -g +R3_debug_cppflags += -O0 -ggdb R3_debug_lflags := $(R3_custom_lflags) R3_debug_lflags += $(addprefix -L, $(R3_debug_lpaths)) R3_debug_lflags += -Wl,--start-group $(addprefix -l, $(R3_debug_libraries)) -Wl,--end-group @@ -48,9 +48,9 @@ R3_debug_obj = $(R3_debug_cpp_o) $(R3_debug_cc_o) $(R3_debug_c_o) R3_debug_bin := ./../../lib/linux32/libR3D.a clean_R3_debug: - $(SILENT_FLAG)$(ECHO) clean R3 debug - $(SILENT_FLAG)$(RMDIR) $(R3_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_debug_bin) + $(ECHO) clean R3 debug + $(RMDIR) $(R3_debug_objsdir) + $(RMDIR) $(R3_debug_bin) build_R3_debug: postbuild_R3_debug postbuild_R3_debug: mainbuild_R3_debug @@ -58,37 +58,37 @@ mainbuild_R3_debug: prebuild_R3_debug $(R3_debug_bin) prebuild_R3_debug: $(R3_debug_bin): $(R3_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libR3D.a` - $(SILENT_FLAG)$(AR) rcs $(R3_debug_bin) $(R3_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libR3D.a` + $(AR) rcs $(R3_debug_bin) $(R3_debug_obj) + $(ECHO) building $@ complete! R3_debug_DEPDIR = $(dir $(@))/$(*F) $(R3_debug_cpp_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_cc_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_c_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d @@ -110,12 +110,12 @@ R3_release_common_cflags += $(addprefix -D, $(R3_release_defines)) R3_release_common_cflags += $(addprefix -I, $(R3_release_hpaths)) R3_release_common_cflags += -m32 R3_release_cflags := $(R3_release_common_cflags) -R3_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -R3_release_cflags += -O2 +R3_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_cppflags := $(R3_release_common_cflags) -R3_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function R3_release_cppflags += -Wno-reorder -R3_release_cppflags += -O2 +R3_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_lflags := $(R3_custom_lflags) R3_release_lflags += $(addprefix -L, $(R3_release_lpaths)) R3_release_lflags += -Wl,--start-group $(addprefix -l, $(R3_release_libraries)) -Wl,--end-group @@ -128,9 +128,9 @@ R3_release_obj = $(R3_release_cpp_o) $(R3_release_cc_o) $(R3_release_c_o) R3_release_bin := ./../../lib/linux32/libR3.a clean_R3_release: - $(SILENT_FLAG)$(ECHO) clean R3 release - $(SILENT_FLAG)$(RMDIR) $(R3_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_release_bin) + $(ECHO) clean R3 release + $(RMDIR) $(R3_release_objsdir) + $(RMDIR) $(R3_release_bin) build_R3_release: postbuild_R3_release postbuild_R3_release: mainbuild_R3_release @@ -138,40 +138,45 @@ mainbuild_R3_release: prebuild_R3_release $(R3_release_bin) prebuild_R3_release: $(R3_release_bin): $(R3_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux32/libR3.a` - $(SILENT_FLAG)$(AR) rcs $(R3_release_bin) $(R3_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux32/libR3.a` + $(AR) rcs $(R3_release_bin) $(R3_release_obj) + $(ECHO) building $@ complete! R3_release_DEPDIR = $(dir $(@))/$(*F) $(R3_release_cpp_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_cc_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_c_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d clean_R3: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux32/Makefile.cg4cpp.mk b/extensions/externals/build/linux32/Makefile.cg4cpp.mk new file mode 100644 index 0000000..9e035c9 --- /dev/null +++ b/extensions/externals/build/linux32/Makefile.cg4cpp.mk @@ -0,0 +1,259 @@ +# Makefile generated by XPJ for linux32 +-include Makefile.custom +ProjectName = cg4cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/abs.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/acos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/all.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/any.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/asin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ceil.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/clamp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cosh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cross.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/degrees.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/determinant.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/distance.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/dot.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/faceforward.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToRawIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floor.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fmod.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frac.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fresnel.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/intBitsToFloat.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/inverse.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/iostream.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isfinite.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isinf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isnan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ldexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/length.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lerp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lit.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log10.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/max.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/min.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/modf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/mul.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/normalize.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/pow.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/radians.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/reflect.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/refract.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/round.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/rsqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/saturate.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sign.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sincos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sinh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/smoothstep.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/step.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tanh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/transpose.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/trunc.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x4.cpp + +cg4cpp_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(cg4cpp_cfiles))))) +cg4cpp_debug_dep = $(cg4cpp_cpp_debug_dep) $(cg4cpp_cc_debug_dep) $(cg4cpp_c_debug_dep) +-include $(cg4cpp_debug_dep) +cg4cpp_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(cg4cpp_cfiles))))) +cg4cpp_release_dep = $(cg4cpp_cpp_release_dep) $(cg4cpp_cc_release_dep) $(cg4cpp_c_release_dep) +-include $(cg4cpp_release_dep) +cg4cpp_debug_hpaths := +cg4cpp_debug_hpaths += ./../../src/cg4cpp +cg4cpp_debug_hpaths += ./../../include +cg4cpp_debug_lpaths := +cg4cpp_debug_defines := $(cg4cpp_custom_defines) +cg4cpp_debug_defines += LINUX=1 +cg4cpp_debug_defines += _LIB +cg4cpp_debug_defines += _DEBUG +cg4cpp_debug_libraries := +cg4cpp_debug_libraries += pthread +cg4cpp_debug_libraries += glfw3 +cg4cpp_debug_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_debug_common_cflags += -MMD +cg4cpp_debug_common_cflags += $(addprefix -D, $(cg4cpp_debug_defines)) +cg4cpp_debug_common_cflags += $(addprefix -I, $(cg4cpp_debug_hpaths)) +cg4cpp_debug_common_cflags += -m32 +cg4cpp_debug_cflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_debug_cflags += -O0 -ggdb +cg4cpp_debug_cppflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_debug_cppflags += -Wno-reorder +cg4cpp_debug_cppflags += -O0 -ggdb +cg4cpp_debug_lflags := $(cg4cpp_custom_lflags) +cg4cpp_debug_lflags += $(addprefix -L, $(cg4cpp_debug_lpaths)) +cg4cpp_debug_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_debug_libraries)) -Wl,--end-group +cg4cpp_debug_lflags += -m32 +cg4cpp_debug_objsdir = $(OBJS_DIR)/cg4cpp_debug +cg4cpp_debug_cpp_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_debug_cc_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_debug_c_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_debug_obj = $(cg4cpp_debug_cpp_o) $(cg4cpp_debug_cc_o) $(cg4cpp_debug_c_o) +cg4cpp_debug_bin := ./../../lib/linux32/libcg4cppD.a + +clean_cg4cpp_debug: + $(ECHO) clean cg4cpp debug + $(RMDIR) $(cg4cpp_debug_objsdir) + $(RMDIR) $(cg4cpp_debug_bin) + +build_cg4cpp_debug: postbuild_cg4cpp_debug +postbuild_cg4cpp_debug: mainbuild_cg4cpp_debug +mainbuild_cg4cpp_debug: prebuild_cg4cpp_debug $(cg4cpp_debug_bin) +prebuild_cg4cpp_debug: + +$(cg4cpp_debug_bin): $(cg4cpp_debug_obj) + mkdir -p `dirname ./../../lib/linux32/libcg4cppD.a` + $(AR) rcs $(cg4cpp_debug_bin) $(cg4cpp_debug_obj) + $(ECHO) building $@ complete! + +cg4cpp_debug_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_debug_cpp_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_cc_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_c_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +cg4cpp_release_hpaths := +cg4cpp_release_hpaths += ./../../src/cg4cpp +cg4cpp_release_hpaths += ./../../include +cg4cpp_release_lpaths := +cg4cpp_release_defines := $(cg4cpp_custom_defines) +cg4cpp_release_defines += LINUX=1 +cg4cpp_release_defines += _LIB +cg4cpp_release_defines += NDEBUG +cg4cpp_release_libraries := +cg4cpp_release_libraries += pthread +cg4cpp_release_libraries += glfw3 +cg4cpp_release_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_release_common_cflags += -MMD +cg4cpp_release_common_cflags += $(addprefix -D, $(cg4cpp_release_defines)) +cg4cpp_release_common_cflags += $(addprefix -I, $(cg4cpp_release_hpaths)) +cg4cpp_release_common_cflags += -m32 +cg4cpp_release_cflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_cppflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_release_cppflags += -Wno-reorder +cg4cpp_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_lflags := $(cg4cpp_custom_lflags) +cg4cpp_release_lflags += $(addprefix -L, $(cg4cpp_release_lpaths)) +cg4cpp_release_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_release_libraries)) -Wl,--end-group +cg4cpp_release_lflags += -m32 +cg4cpp_release_objsdir = $(OBJS_DIR)/cg4cpp_release +cg4cpp_release_cpp_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_release_cc_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_release_c_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_release_obj = $(cg4cpp_release_cpp_o) $(cg4cpp_release_cc_o) $(cg4cpp_release_c_o) +cg4cpp_release_bin := ./../../lib/linux32/libcg4cpp.a + +clean_cg4cpp_release: + $(ECHO) clean cg4cpp release + $(RMDIR) $(cg4cpp_release_objsdir) + $(RMDIR) $(cg4cpp_release_bin) + +build_cg4cpp_release: postbuild_cg4cpp_release +postbuild_cg4cpp_release: mainbuild_cg4cpp_release +mainbuild_cg4cpp_release: prebuild_cg4cpp_release $(cg4cpp_release_bin) +prebuild_cg4cpp_release: + +$(cg4cpp_release_bin): $(cg4cpp_release_obj) + mkdir -p `dirname ./../../lib/linux32/libcg4cpp.a` + $(AR) rcs $(cg4cpp_release_bin) $(cg4cpp_release_obj) + $(ECHO) building $@ complete! + +cg4cpp_release_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_release_cpp_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_cc_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_c_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +clean_cg4cpp: clean_cg4cpp_debug clean_cg4cpp_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux32/Makefile.freetype.mk b/extensions/externals/build/linux32/Makefile.freetype.mk new file mode 100644 index 0000000..6dfe219 --- /dev/null +++ b/extensions/externals/build/linux32/Makefile.freetype.mk @@ -0,0 +1,224 @@ +# Makefile generated by XPJ for linux32 +-include Makefile.custom +ProjectName = freetype +freetype_cfiles += ./../../src/freetype-2.4.9/src/autofit/autofit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/bdf/bdf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cff/cff.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbase.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbitmap.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cache/ftcache.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftdebug.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftfstype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgasp.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftglyph.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/gzip/ftgzip.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftinit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/lzw/ftlzw.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftstroke.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsystem.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/smooth/smooth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbbox.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgxval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftlcdfil.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftmm.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftotval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpatent.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsynth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/fttype1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftwinfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftxf86.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pcf/pcf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pfr/pfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psaux/psaux.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pshinter/pshinter.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psnames/psmodule.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/raster/raster.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/sfnt/sfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/truetype/truetype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type1/type1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cid/type1cid.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type42/type42.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/winfonts/winfnt.c + +freetype_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(freetype_cppfiles))))) +freetype_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(freetype_ccfiles))))) +freetype_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(freetype_cfiles))))) +freetype_debug_dep = $(freetype_cpp_debug_dep) $(freetype_cc_debug_dep) $(freetype_c_debug_dep) +-include $(freetype_debug_dep) +freetype_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(freetype_cppfiles))))) +freetype_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(freetype_ccfiles))))) +freetype_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(freetype_cfiles))))) +freetype_release_dep = $(freetype_cpp_release_dep) $(freetype_cc_release_dep) $(freetype_c_release_dep) +-include $(freetype_release_dep) +freetype_debug_hpaths := +freetype_debug_hpaths += ./../../src/freetype-2.4.9/include +freetype_debug_hpaths += ./../../src/freetype-2.4.9/src +freetype_debug_hpaths += ./../../include +freetype_debug_lpaths := +freetype_debug_defines := $(freetype_custom_defines) +freetype_debug_defines += FT2_BUILD_LIBRARY +freetype_debug_defines += LINUX=1 +freetype_debug_defines += _LIB +freetype_debug_defines += _DEBUG +freetype_debug_libraries := +freetype_debug_libraries += pthread +freetype_debug_libraries += glfw3 +freetype_debug_common_cflags := $(freetype_custom_cflags) +freetype_debug_common_cflags += -MMD +freetype_debug_common_cflags += $(addprefix -D, $(freetype_debug_defines)) +freetype_debug_common_cflags += $(addprefix -I, $(freetype_debug_hpaths)) +freetype_debug_common_cflags += -m32 +freetype_debug_cflags := $(freetype_debug_common_cflags) +freetype_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_debug_cflags += -O0 -ggdb +freetype_debug_cppflags := $(freetype_debug_common_cflags) +freetype_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_debug_cppflags += -Wno-reorder +freetype_debug_cppflags += -O0 -ggdb +freetype_debug_lflags := $(freetype_custom_lflags) +freetype_debug_lflags += $(addprefix -L, $(freetype_debug_lpaths)) +freetype_debug_lflags += -Wl,--start-group $(addprefix -l, $(freetype_debug_libraries)) -Wl,--end-group +freetype_debug_lflags += -m32 +freetype_debug_objsdir = $(OBJS_DIR)/freetype_debug +freetype_debug_cpp_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_debug_cc_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_debug_c_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_debug_obj = $(freetype_debug_cpp_o) $(freetype_debug_cc_o) $(freetype_debug_c_o) +freetype_debug_bin := ./../../lib/linux32/libfreetypeD.a + +clean_freetype_debug: + $(ECHO) clean freetype debug + $(RMDIR) $(freetype_debug_objsdir) + $(RMDIR) $(freetype_debug_bin) + +build_freetype_debug: postbuild_freetype_debug +postbuild_freetype_debug: mainbuild_freetype_debug +mainbuild_freetype_debug: prebuild_freetype_debug $(freetype_debug_bin) +prebuild_freetype_debug: + +$(freetype_debug_bin): $(freetype_debug_obj) + mkdir -p `dirname ./../../lib/linux32/libfreetypeD.a` + $(AR) rcs $(freetype_debug_bin) $(freetype_debug_obj) + $(ECHO) building $@ complete! + +freetype_debug_DEPDIR = $(dir $(@))/$(*F) +$(freetype_debug_cpp_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_cc_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_c_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +freetype_release_hpaths := +freetype_release_hpaths += ./../../src/freetype-2.4.9/include +freetype_release_hpaths += ./../../src/freetype-2.4.9/src +freetype_release_hpaths += ./../../include +freetype_release_lpaths := +freetype_release_defines := $(freetype_custom_defines) +freetype_release_defines += FT2_BUILD_LIBRARY +freetype_release_defines += LINUX=1 +freetype_release_defines += _LIB +freetype_release_defines += NDEBUG +freetype_release_libraries := +freetype_release_libraries += pthread +freetype_release_libraries += glfw3 +freetype_release_common_cflags := $(freetype_custom_cflags) +freetype_release_common_cflags += -MMD +freetype_release_common_cflags += $(addprefix -D, $(freetype_release_defines)) +freetype_release_common_cflags += $(addprefix -I, $(freetype_release_hpaths)) +freetype_release_common_cflags += -m32 +freetype_release_cflags := $(freetype_release_common_cflags) +freetype_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_cppflags := $(freetype_release_common_cflags) +freetype_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_release_cppflags += -Wno-reorder +freetype_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_lflags := $(freetype_custom_lflags) +freetype_release_lflags += $(addprefix -L, $(freetype_release_lpaths)) +freetype_release_lflags += -Wl,--start-group $(addprefix -l, $(freetype_release_libraries)) -Wl,--end-group +freetype_release_lflags += -m32 +freetype_release_objsdir = $(OBJS_DIR)/freetype_release +freetype_release_cpp_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_release_cc_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_release_c_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_release_obj = $(freetype_release_cpp_o) $(freetype_release_cc_o) $(freetype_release_c_o) +freetype_release_bin := ./../../lib/linux32/libfreetype.a + +clean_freetype_release: + $(ECHO) clean freetype release + $(RMDIR) $(freetype_release_objsdir) + $(RMDIR) $(freetype_release_bin) + +build_freetype_release: postbuild_freetype_release +postbuild_freetype_release: mainbuild_freetype_release +mainbuild_freetype_release: prebuild_freetype_release $(freetype_release_bin) +prebuild_freetype_release: + +$(freetype_release_bin): $(freetype_release_obj) + mkdir -p `dirname ./../../lib/linux32/libfreetype.a` + $(AR) rcs $(freetype_release_bin) $(freetype_release_obj) + $(ECHO) building $@ complete! + +freetype_release_DEPDIR = $(dir $(@))/$(*F) +$(freetype_release_cpp_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_cc_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_c_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +clean_freetype: clean_freetype_debug clean_freetype_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux32/Makefile.harfbuzz.mk b/extensions/externals/build/linux32/Makefile.harfbuzz.mk new file mode 100644 index 0000000..1426d04 --- /dev/null +++ b/extensions/externals/build/linux32/Makefile.harfbuzz.mk @@ -0,0 +1,229 @@ +# Makefile generated by XPJ for linux32 +-include Makefile.custom +ProjectName = harfbuzz +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-blob.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer-serialize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-common.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-face.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-fallback-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ft.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-layout.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-map.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-arabic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-default.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic-table.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-myanmar.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-sea.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-thai.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-fallback.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-normalize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-tag.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-set.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape-plan.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shaper.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-tt-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-unicode.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-warning.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ucdn.cc +harfbuzz_cfiles += ./../../src/ucdn/ucdn.c + +harfbuzz_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(harfbuzz_cfiles))))) +harfbuzz_debug_dep = $(harfbuzz_cpp_debug_dep) $(harfbuzz_cc_debug_dep) $(harfbuzz_c_debug_dep) +-include $(harfbuzz_debug_dep) +harfbuzz_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(harfbuzz_cfiles))))) +harfbuzz_release_dep = $(harfbuzz_cpp_release_dep) $(harfbuzz_cc_release_dep) $(harfbuzz_c_release_dep) +-include $(harfbuzz_release_dep) +harfbuzz_debug_hpaths := +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src +harfbuzz_debug_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_debug_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_debug_hpaths += ./../../include +harfbuzz_debug_lpaths := +harfbuzz_debug_defines := $(harfbuzz_custom_defines) +harfbuzz_debug_defines += HAVE_CONFIG_H +harfbuzz_debug_defines += HB_NO_MT +harfbuzz_debug_defines += HAVE_OT +harfbuzz_debug_defines += HAVE_ICU +harfbuzz_debug_defines += LINUX=1 +harfbuzz_debug_defines += _LIB +harfbuzz_debug_defines += _DEBUG +harfbuzz_debug_libraries := +harfbuzz_debug_libraries += pthread +harfbuzz_debug_libraries += glfw3 +harfbuzz_debug_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_debug_common_cflags += -MMD +harfbuzz_debug_common_cflags += $(addprefix -D, $(harfbuzz_debug_defines)) +harfbuzz_debug_common_cflags += $(addprefix -I, $(harfbuzz_debug_hpaths)) +harfbuzz_debug_common_cflags += -m32 +harfbuzz_debug_cflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_debug_cflags += -O0 -ggdb +harfbuzz_debug_cppflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cppflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_debug_cppflags += -Wno-reorder +harfbuzz_debug_cppflags += -O0 -ggdb +harfbuzz_debug_lflags := $(harfbuzz_custom_lflags) +harfbuzz_debug_lflags += $(addprefix -L, $(harfbuzz_debug_lpaths)) +harfbuzz_debug_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_debug_libraries)) -Wl,--end-group +harfbuzz_debug_lflags += -m32 +harfbuzz_debug_objsdir = $(OBJS_DIR)/harfbuzz_debug +harfbuzz_debug_cpp_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_debug_cc_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_debug_c_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_debug_obj = $(harfbuzz_debug_cpp_o) $(harfbuzz_debug_cc_o) $(harfbuzz_debug_c_o) +harfbuzz_debug_bin := ./../../lib/linux32/libharfbuzzD.a + +clean_harfbuzz_debug: + $(ECHO) clean harfbuzz debug + $(RMDIR) $(harfbuzz_debug_objsdir) + $(RMDIR) $(harfbuzz_debug_bin) + +build_harfbuzz_debug: postbuild_harfbuzz_debug +postbuild_harfbuzz_debug: mainbuild_harfbuzz_debug +mainbuild_harfbuzz_debug: prebuild_harfbuzz_debug $(harfbuzz_debug_bin) +prebuild_harfbuzz_debug: + +$(harfbuzz_debug_bin): $(harfbuzz_debug_obj) + mkdir -p `dirname ./../../lib/linux32/libharfbuzzD.a` + $(AR) rcs $(harfbuzz_debug_bin) $(harfbuzz_debug_obj) + $(ECHO) building $@ complete! + +harfbuzz_debug_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_debug_cpp_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_cc_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_c_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +harfbuzz_release_hpaths := +harfbuzz_release_hpaths += ./../../src/harfbuzz/src +harfbuzz_release_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_release_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_release_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_release_hpaths += ./../../include +harfbuzz_release_lpaths := +harfbuzz_release_defines := $(harfbuzz_custom_defines) +harfbuzz_release_defines += HAVE_CONFIG_H +harfbuzz_release_defines += HB_NO_MT +harfbuzz_release_defines += HAVE_OT +harfbuzz_release_defines += HAVE_ICU +harfbuzz_release_defines += LINUX=1 +harfbuzz_release_defines += _LIB +harfbuzz_release_defines += NDEBUG +harfbuzz_release_libraries := +harfbuzz_release_libraries += pthread +harfbuzz_release_libraries += glfw3 +harfbuzz_release_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_release_common_cflags += -MMD +harfbuzz_release_common_cflags += $(addprefix -D, $(harfbuzz_release_defines)) +harfbuzz_release_common_cflags += $(addprefix -I, $(harfbuzz_release_hpaths)) +harfbuzz_release_common_cflags += -m32 +harfbuzz_release_cflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_cppflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cppflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_release_cppflags += -Wno-reorder +harfbuzz_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_lflags := $(harfbuzz_custom_lflags) +harfbuzz_release_lflags += $(addprefix -L, $(harfbuzz_release_lpaths)) +harfbuzz_release_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_release_libraries)) -Wl,--end-group +harfbuzz_release_lflags += -m32 +harfbuzz_release_objsdir = $(OBJS_DIR)/harfbuzz_release +harfbuzz_release_cpp_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_release_cc_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_release_c_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_release_obj = $(harfbuzz_release_cpp_o) $(harfbuzz_release_cc_o) $(harfbuzz_release_c_o) +harfbuzz_release_bin := ./../../lib/linux32/libharfbuzz.a + +clean_harfbuzz_release: + $(ECHO) clean harfbuzz release + $(RMDIR) $(harfbuzz_release_objsdir) + $(RMDIR) $(harfbuzz_release_bin) + +build_harfbuzz_release: postbuild_harfbuzz_release +postbuild_harfbuzz_release: mainbuild_harfbuzz_release +mainbuild_harfbuzz_release: prebuild_harfbuzz_release $(harfbuzz_release_bin) +prebuild_harfbuzz_release: + +$(harfbuzz_release_bin): $(harfbuzz_release_obj) + mkdir -p `dirname ./../../lib/linux32/libharfbuzz.a` + $(AR) rcs $(harfbuzz_release_bin) $(harfbuzz_release_obj) + $(ECHO) building $@ complete! + +harfbuzz_release_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_release_cpp_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_cc_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_c_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +clean_harfbuzz: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile b/extensions/externals/build/linux64/Makefile index 4dc0c04..af0e2b5 100644 --- a/extensions/externals/build/linux64/Makefile +++ b/extensions/externals/build/linux64/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for linux64 DEPSDIR = .deps -SILENT_FLAG ?= @ #default defines OBJS_DIR = build RMDIR = rm -fr @@ -19,23 +18,23 @@ OBJCOPY = objcopy all: debug release -debug: build_R3_debug +debug: build_harfbuzz_debug -release: build_R3_release +release: build_harfbuzz_release -clean: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) -clean_debug: clean_R3_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_debug: clean_harfbuzz_debug + rm -rf $(DEPSDIR) -clean_release: clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_release: clean_harfbuzz_release + rm -rf $(DEPSDIR) -include Makefile.R3.mk +include Makefile.harfbuzz.mk # Disable implicit rules to speedup build @@ -192,3 +191,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile.Half.mk b/extensions/externals/build/linux64/Makefile.Half.mk index cf950cf..9d7872c 100644 --- a/extensions/externals/build/linux64/Makefile.Half.mk +++ b/extensions/externals/build/linux64/Makefile.Half.mk @@ -30,12 +30,12 @@ Half_debug_common_cflags += $(addprefix -D, $(Half_debug_defines)) Half_debug_common_cflags += $(addprefix -I, $(Half_debug_hpaths)) Half_debug_common_cflags += -m64 Half_debug_cflags := $(Half_debug_common_cflags) -Half_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Half_debug_cflags += -g +Half_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_debug_cflags += -O0 -ggdb Half_debug_cppflags := $(Half_debug_common_cflags) -Half_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function Half_debug_cppflags += -Wno-reorder -Half_debug_cppflags += -g +Half_debug_cppflags += -O0 -ggdb Half_debug_lflags := $(Half_custom_lflags) Half_debug_lflags += $(addprefix -L, $(Half_debug_lpaths)) Half_debug_lflags += -Wl,--start-group $(addprefix -l, $(Half_debug_libraries)) -Wl,--end-group @@ -49,9 +49,9 @@ Half_debug_obj = $(Half_debug_cpp_o) $(Half_debug_cc_o) $(Half_debug_c_o) Half_debug_bin := ./../../lib/linux64/libHalfD.a clean_Half_debug: - $(SILENT_FLAG)$(ECHO) clean Half debug - $(SILENT_FLAG)$(RMDIR) $(Half_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_debug_bin) + $(ECHO) clean Half debug + $(RMDIR) $(Half_debug_objsdir) + $(RMDIR) $(Half_debug_bin) build_Half_debug: postbuild_Half_debug postbuild_Half_debug: mainbuild_Half_debug @@ -59,37 +59,37 @@ mainbuild_Half_debug: prebuild_Half_debug $(Half_debug_bin) prebuild_Half_debug: $(Half_debug_bin): $(Half_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libHalfD.a` - $(SILENT_FLAG)$(AR) rcs $(Half_debug_bin) $(Half_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libHalfD.a` + $(AR) rcs $(Half_debug_bin) $(Half_debug_obj) + $(ECHO) building $@ complete! Half_debug_DEPDIR = $(dir $(@))/$(*F) $(Half_debug_cpp_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_cc_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_c_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d @@ -111,12 +111,12 @@ Half_release_common_cflags += $(addprefix -D, $(Half_release_defines)) Half_release_common_cflags += $(addprefix -I, $(Half_release_hpaths)) Half_release_common_cflags += -m64 Half_release_cflags := $(Half_release_common_cflags) -Half_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -Half_release_cflags += -O2 +Half_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_cppflags := $(Half_release_common_cflags) -Half_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +Half_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function Half_release_cppflags += -Wno-reorder -Half_release_cppflags += -O2 +Half_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_lflags := $(Half_custom_lflags) Half_release_lflags += $(addprefix -L, $(Half_release_lpaths)) Half_release_lflags += -Wl,--start-group $(addprefix -l, $(Half_release_libraries)) -Wl,--end-group @@ -130,9 +130,9 @@ Half_release_obj = $(Half_release_cpp_o) $(Half_release_cc_o) $(Half_releas Half_release_bin := ./../../lib/linux64/libHalf.a clean_Half_release: - $(SILENT_FLAG)$(ECHO) clean Half release - $(SILENT_FLAG)$(RMDIR) $(Half_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_release_bin) + $(ECHO) clean Half release + $(RMDIR) $(Half_release_objsdir) + $(RMDIR) $(Half_release_bin) build_Half_release: postbuild_Half_release postbuild_Half_release: mainbuild_Half_release @@ -140,40 +140,45 @@ mainbuild_Half_release: prebuild_Half_release $(Half_release_bin) prebuild_Half_release: $(Half_release_bin): $(Half_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libHalf.a` - $(SILENT_FLAG)$(AR) rcs $(Half_release_bin) $(Half_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libHalf.a` + $(AR) rcs $(Half_release_bin) $(Half_release_obj) + $(ECHO) building $@ complete! Half_release_DEPDIR = $(dir $(@))/$(*F) $(Half_release_cpp_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_cc_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_c_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d clean_Half: clean_Half_debug clean_Half_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile.R3.mk b/extensions/externals/build/linux64/Makefile.R3.mk index ec9966a..dfbc6d6 100644 --- a/extensions/externals/build/linux64/Makefile.R3.mk +++ b/extensions/externals/build/linux64/Makefile.R3.mk @@ -30,12 +30,12 @@ R3_debug_common_cflags += $(addprefix -D, $(R3_debug_defines)) R3_debug_common_cflags += $(addprefix -I, $(R3_debug_hpaths)) R3_debug_common_cflags += -m64 R3_debug_cflags := $(R3_debug_common_cflags) -R3_debug_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -R3_debug_cflags += -g +R3_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_debug_cflags += -O0 -ggdb R3_debug_cppflags := $(R3_debug_common_cflags) -R3_debug_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function R3_debug_cppflags += -Wno-reorder -R3_debug_cppflags += -g +R3_debug_cppflags += -O0 -ggdb R3_debug_lflags := $(R3_custom_lflags) R3_debug_lflags += $(addprefix -L, $(R3_debug_lpaths)) R3_debug_lflags += -Wl,--start-group $(addprefix -l, $(R3_debug_libraries)) -Wl,--end-group @@ -49,9 +49,9 @@ R3_debug_obj = $(R3_debug_cpp_o) $(R3_debug_cc_o) $(R3_debug_c_o) R3_debug_bin := ./../../lib/linux64/libR3D.a clean_R3_debug: - $(SILENT_FLAG)$(ECHO) clean R3 debug - $(SILENT_FLAG)$(RMDIR) $(R3_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_debug_bin) + $(ECHO) clean R3 debug + $(RMDIR) $(R3_debug_objsdir) + $(RMDIR) $(R3_debug_bin) build_R3_debug: postbuild_R3_debug postbuild_R3_debug: mainbuild_R3_debug @@ -59,37 +59,37 @@ mainbuild_R3_debug: prebuild_R3_debug $(R3_debug_bin) prebuild_R3_debug: $(R3_debug_bin): $(R3_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libR3D.a` - $(SILENT_FLAG)$(AR) rcs $(R3_debug_bin) $(R3_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libR3D.a` + $(AR) rcs $(R3_debug_bin) $(R3_debug_obj) + $(ECHO) building $@ complete! R3_debug_DEPDIR = $(dir $(@))/$(*F) $(R3_debug_cpp_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_cc_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_c_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d @@ -111,12 +111,12 @@ R3_release_common_cflags += $(addprefix -D, $(R3_release_defines)) R3_release_common_cflags += $(addprefix -I, $(R3_release_hpaths)) R3_release_common_cflags += -m64 R3_release_cflags := $(R3_release_common_cflags) -R3_release_cflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function -R3_release_cflags += -O2 +R3_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_cppflags := $(R3_release_common_cflags) -R3_release_cppflags += -malign-double -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +R3_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function R3_release_cppflags += -Wno-reorder -R3_release_cppflags += -O2 +R3_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_lflags := $(R3_custom_lflags) R3_release_lflags += $(addprefix -L, $(R3_release_lpaths)) R3_release_lflags += -Wl,--start-group $(addprefix -l, $(R3_release_libraries)) -Wl,--end-group @@ -130,9 +130,9 @@ R3_release_obj = $(R3_release_cpp_o) $(R3_release_cc_o) $(R3_release_c_o) R3_release_bin := ./../../lib/linux64/libR3.a clean_R3_release: - $(SILENT_FLAG)$(ECHO) clean R3 release - $(SILENT_FLAG)$(RMDIR) $(R3_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_release_bin) + $(ECHO) clean R3 release + $(RMDIR) $(R3_release_objsdir) + $(RMDIR) $(R3_release_bin) build_R3_release: postbuild_R3_release postbuild_R3_release: mainbuild_R3_release @@ -140,40 +140,45 @@ mainbuild_R3_release: prebuild_R3_release $(R3_release_bin) prebuild_R3_release: $(R3_release_bin): $(R3_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/linux64/libR3.a` - $(SILENT_FLAG)$(AR) rcs $(R3_release_bin) $(R3_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/linux64/libR3.a` + $(AR) rcs $(R3_release_bin) $(R3_release_obj) + $(ECHO) building $@ complete! R3_release_DEPDIR = $(dir $(@))/$(*F) $(R3_release_cpp_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_cc_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_c_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d clean_R3: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile.cg4cpp.mk b/extensions/externals/build/linux64/Makefile.cg4cpp.mk new file mode 100644 index 0000000..f8bff4b --- /dev/null +++ b/extensions/externals/build/linux64/Makefile.cg4cpp.mk @@ -0,0 +1,261 @@ +# Makefile generated by XPJ for linux64 +-include Makefile.custom +ProjectName = cg4cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/abs.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/acos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/all.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/any.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/asin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ceil.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/clamp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cosh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cross.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/degrees.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/determinant.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/distance.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/dot.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/faceforward.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToRawIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floor.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fmod.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frac.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fresnel.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/intBitsToFloat.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/inverse.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/iostream.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isfinite.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isinf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isnan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ldexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/length.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lerp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lit.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log10.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/max.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/min.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/modf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/mul.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/normalize.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/pow.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/radians.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/reflect.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/refract.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/round.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/rsqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/saturate.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sign.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sincos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sinh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/smoothstep.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/step.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tanh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/transpose.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/trunc.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x4.cpp + +cg4cpp_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(cg4cpp_cfiles))))) +cg4cpp_debug_dep = $(cg4cpp_cpp_debug_dep) $(cg4cpp_cc_debug_dep) $(cg4cpp_c_debug_dep) +-include $(cg4cpp_debug_dep) +cg4cpp_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(cg4cpp_cfiles))))) +cg4cpp_release_dep = $(cg4cpp_cpp_release_dep) $(cg4cpp_cc_release_dep) $(cg4cpp_c_release_dep) +-include $(cg4cpp_release_dep) +cg4cpp_debug_hpaths := +cg4cpp_debug_hpaths += ./../../src/cg4cpp +cg4cpp_debug_hpaths += ./../../include +cg4cpp_debug_lpaths := +cg4cpp_debug_defines := $(cg4cpp_custom_defines) +cg4cpp_debug_defines += LINUX=1 +cg4cpp_debug_defines += _LIB +cg4cpp_debug_defines += _DEBUG +cg4cpp_debug_libraries := +cg4cpp_debug_libraries += pthread +cg4cpp_debug_libraries += glfw3 +cg4cpp_debug_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_debug_common_cflags += -MMD +cg4cpp_debug_common_cflags += $(addprefix -D, $(cg4cpp_debug_defines)) +cg4cpp_debug_common_cflags += $(addprefix -I, $(cg4cpp_debug_hpaths)) +cg4cpp_debug_common_cflags += -m64 +cg4cpp_debug_cflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_debug_cflags += -O0 -ggdb +cg4cpp_debug_cppflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_debug_cppflags += -Wno-reorder +cg4cpp_debug_cppflags += -O0 -ggdb +cg4cpp_debug_lflags := $(cg4cpp_custom_lflags) +cg4cpp_debug_lflags += $(addprefix -L, $(cg4cpp_debug_lpaths)) +cg4cpp_debug_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_debug_libraries)) -Wl,--end-group +cg4cpp_debug_lflags += -m64 +cg4cpp_debug_lflags += -m64 +cg4cpp_debug_objsdir = $(OBJS_DIR)/cg4cpp_debug +cg4cpp_debug_cpp_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_debug_cc_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_debug_c_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_debug_obj = $(cg4cpp_debug_cpp_o) $(cg4cpp_debug_cc_o) $(cg4cpp_debug_c_o) +cg4cpp_debug_bin := ./../../lib/linux64/libcg4cppD.a + +clean_cg4cpp_debug: + $(ECHO) clean cg4cpp debug + $(RMDIR) $(cg4cpp_debug_objsdir) + $(RMDIR) $(cg4cpp_debug_bin) + +build_cg4cpp_debug: postbuild_cg4cpp_debug +postbuild_cg4cpp_debug: mainbuild_cg4cpp_debug +mainbuild_cg4cpp_debug: prebuild_cg4cpp_debug $(cg4cpp_debug_bin) +prebuild_cg4cpp_debug: + +$(cg4cpp_debug_bin): $(cg4cpp_debug_obj) + mkdir -p `dirname ./../../lib/linux64/libcg4cppD.a` + $(AR) rcs $(cg4cpp_debug_bin) $(cg4cpp_debug_obj) + $(ECHO) building $@ complete! + +cg4cpp_debug_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_debug_cpp_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_cc_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_c_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +cg4cpp_release_hpaths := +cg4cpp_release_hpaths += ./../../src/cg4cpp +cg4cpp_release_hpaths += ./../../include +cg4cpp_release_lpaths := +cg4cpp_release_defines := $(cg4cpp_custom_defines) +cg4cpp_release_defines += LINUX=1 +cg4cpp_release_defines += _LIB +cg4cpp_release_defines += NDEBUG +cg4cpp_release_libraries := +cg4cpp_release_libraries += pthread +cg4cpp_release_libraries += glfw3 +cg4cpp_release_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_release_common_cflags += -MMD +cg4cpp_release_common_cflags += $(addprefix -D, $(cg4cpp_release_defines)) +cg4cpp_release_common_cflags += $(addprefix -I, $(cg4cpp_release_hpaths)) +cg4cpp_release_common_cflags += -m64 +cg4cpp_release_cflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_cppflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +cg4cpp_release_cppflags += -Wno-reorder +cg4cpp_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_lflags := $(cg4cpp_custom_lflags) +cg4cpp_release_lflags += $(addprefix -L, $(cg4cpp_release_lpaths)) +cg4cpp_release_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_release_libraries)) -Wl,--end-group +cg4cpp_release_lflags += -m64 +cg4cpp_release_lflags += -m64 +cg4cpp_release_objsdir = $(OBJS_DIR)/cg4cpp_release +cg4cpp_release_cpp_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_release_cc_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_release_c_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_release_obj = $(cg4cpp_release_cpp_o) $(cg4cpp_release_cc_o) $(cg4cpp_release_c_o) +cg4cpp_release_bin := ./../../lib/linux64/libcg4cpp.a + +clean_cg4cpp_release: + $(ECHO) clean cg4cpp release + $(RMDIR) $(cg4cpp_release_objsdir) + $(RMDIR) $(cg4cpp_release_bin) + +build_cg4cpp_release: postbuild_cg4cpp_release +postbuild_cg4cpp_release: mainbuild_cg4cpp_release +mainbuild_cg4cpp_release: prebuild_cg4cpp_release $(cg4cpp_release_bin) +prebuild_cg4cpp_release: + +$(cg4cpp_release_bin): $(cg4cpp_release_obj) + mkdir -p `dirname ./../../lib/linux64/libcg4cpp.a` + $(AR) rcs $(cg4cpp_release_bin) $(cg4cpp_release_obj) + $(ECHO) building $@ complete! + +cg4cpp_release_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_release_cpp_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_cc_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_c_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +clean_cg4cpp: clean_cg4cpp_debug clean_cg4cpp_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile.freetype.mk b/extensions/externals/build/linux64/Makefile.freetype.mk new file mode 100644 index 0000000..cf8484d --- /dev/null +++ b/extensions/externals/build/linux64/Makefile.freetype.mk @@ -0,0 +1,226 @@ +# Makefile generated by XPJ for linux64 +-include Makefile.custom +ProjectName = freetype +freetype_cfiles += ./../../src/freetype-2.4.9/src/autofit/autofit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/bdf/bdf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cff/cff.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbase.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbitmap.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cache/ftcache.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftdebug.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftfstype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgasp.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftglyph.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/gzip/ftgzip.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftinit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/lzw/ftlzw.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftstroke.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsystem.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/smooth/smooth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbbox.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgxval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftlcdfil.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftmm.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftotval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpatent.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsynth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/fttype1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftwinfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftxf86.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pcf/pcf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pfr/pfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psaux/psaux.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pshinter/pshinter.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psnames/psmodule.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/raster/raster.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/sfnt/sfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/truetype/truetype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type1/type1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cid/type1cid.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type42/type42.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/winfonts/winfnt.c + +freetype_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(freetype_cppfiles))))) +freetype_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(freetype_ccfiles))))) +freetype_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(freetype_cfiles))))) +freetype_debug_dep = $(freetype_cpp_debug_dep) $(freetype_cc_debug_dep) $(freetype_c_debug_dep) +-include $(freetype_debug_dep) +freetype_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(freetype_cppfiles))))) +freetype_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(freetype_ccfiles))))) +freetype_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(freetype_cfiles))))) +freetype_release_dep = $(freetype_cpp_release_dep) $(freetype_cc_release_dep) $(freetype_c_release_dep) +-include $(freetype_release_dep) +freetype_debug_hpaths := +freetype_debug_hpaths += ./../../src/freetype-2.4.9/include +freetype_debug_hpaths += ./../../src/freetype-2.4.9/src +freetype_debug_hpaths += ./../../include +freetype_debug_lpaths := +freetype_debug_defines := $(freetype_custom_defines) +freetype_debug_defines += FT2_BUILD_LIBRARY +freetype_debug_defines += LINUX=1 +freetype_debug_defines += _LIB +freetype_debug_defines += _DEBUG +freetype_debug_libraries := +freetype_debug_libraries += pthread +freetype_debug_libraries += glfw3 +freetype_debug_common_cflags := $(freetype_custom_cflags) +freetype_debug_common_cflags += -MMD +freetype_debug_common_cflags += $(addprefix -D, $(freetype_debug_defines)) +freetype_debug_common_cflags += $(addprefix -I, $(freetype_debug_hpaths)) +freetype_debug_common_cflags += -m64 +freetype_debug_cflags := $(freetype_debug_common_cflags) +freetype_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_debug_cflags += -O0 -ggdb +freetype_debug_cppflags := $(freetype_debug_common_cflags) +freetype_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_debug_cppflags += -Wno-reorder +freetype_debug_cppflags += -O0 -ggdb +freetype_debug_lflags := $(freetype_custom_lflags) +freetype_debug_lflags += $(addprefix -L, $(freetype_debug_lpaths)) +freetype_debug_lflags += -Wl,--start-group $(addprefix -l, $(freetype_debug_libraries)) -Wl,--end-group +freetype_debug_lflags += -m64 +freetype_debug_lflags += -m64 +freetype_debug_objsdir = $(OBJS_DIR)/freetype_debug +freetype_debug_cpp_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_debug_cc_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_debug_c_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_debug_obj = $(freetype_debug_cpp_o) $(freetype_debug_cc_o) $(freetype_debug_c_o) +freetype_debug_bin := ./../../lib/linux64/libfreetypeD.a + +clean_freetype_debug: + $(ECHO) clean freetype debug + $(RMDIR) $(freetype_debug_objsdir) + $(RMDIR) $(freetype_debug_bin) + +build_freetype_debug: postbuild_freetype_debug +postbuild_freetype_debug: mainbuild_freetype_debug +mainbuild_freetype_debug: prebuild_freetype_debug $(freetype_debug_bin) +prebuild_freetype_debug: + +$(freetype_debug_bin): $(freetype_debug_obj) + mkdir -p `dirname ./../../lib/linux64/libfreetypeD.a` + $(AR) rcs $(freetype_debug_bin) $(freetype_debug_obj) + $(ECHO) building $@ complete! + +freetype_debug_DEPDIR = $(dir $(@))/$(*F) +$(freetype_debug_cpp_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_cc_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_c_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +freetype_release_hpaths := +freetype_release_hpaths += ./../../src/freetype-2.4.9/include +freetype_release_hpaths += ./../../src/freetype-2.4.9/src +freetype_release_hpaths += ./../../include +freetype_release_lpaths := +freetype_release_defines := $(freetype_custom_defines) +freetype_release_defines += FT2_BUILD_LIBRARY +freetype_release_defines += LINUX=1 +freetype_release_defines += _LIB +freetype_release_defines += NDEBUG +freetype_release_libraries := +freetype_release_libraries += pthread +freetype_release_libraries += glfw3 +freetype_release_common_cflags := $(freetype_custom_cflags) +freetype_release_common_cflags += -MMD +freetype_release_common_cflags += $(addprefix -D, $(freetype_release_defines)) +freetype_release_common_cflags += $(addprefix -I, $(freetype_release_hpaths)) +freetype_release_common_cflags += -m64 +freetype_release_cflags := $(freetype_release_common_cflags) +freetype_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_cppflags := $(freetype_release_common_cflags) +freetype_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +freetype_release_cppflags += -Wno-reorder +freetype_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_lflags := $(freetype_custom_lflags) +freetype_release_lflags += $(addprefix -L, $(freetype_release_lpaths)) +freetype_release_lflags += -Wl,--start-group $(addprefix -l, $(freetype_release_libraries)) -Wl,--end-group +freetype_release_lflags += -m64 +freetype_release_lflags += -m64 +freetype_release_objsdir = $(OBJS_DIR)/freetype_release +freetype_release_cpp_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_release_cc_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_release_c_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_release_obj = $(freetype_release_cpp_o) $(freetype_release_cc_o) $(freetype_release_c_o) +freetype_release_bin := ./../../lib/linux64/libfreetype.a + +clean_freetype_release: + $(ECHO) clean freetype release + $(RMDIR) $(freetype_release_objsdir) + $(RMDIR) $(freetype_release_bin) + +build_freetype_release: postbuild_freetype_release +postbuild_freetype_release: mainbuild_freetype_release +mainbuild_freetype_release: prebuild_freetype_release $(freetype_release_bin) +prebuild_freetype_release: + +$(freetype_release_bin): $(freetype_release_obj) + mkdir -p `dirname ./../../lib/linux64/libfreetype.a` + $(AR) rcs $(freetype_release_bin) $(freetype_release_obj) + $(ECHO) building $@ complete! + +freetype_release_DEPDIR = $(dir $(@))/$(*F) +$(freetype_release_cpp_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_cc_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_c_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +clean_freetype: clean_freetype_debug clean_freetype_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/linux64/Makefile.harfbuzz.mk b/extensions/externals/build/linux64/Makefile.harfbuzz.mk new file mode 100644 index 0000000..03ebf7d --- /dev/null +++ b/extensions/externals/build/linux64/Makefile.harfbuzz.mk @@ -0,0 +1,231 @@ +# Makefile generated by XPJ for linux64 +-include Makefile.custom +ProjectName = harfbuzz +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-blob.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer-serialize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-common.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-face.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-fallback-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ft.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-layout.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-map.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-arabic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-default.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic-table.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-myanmar.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-sea.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-thai.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-fallback.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-normalize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-tag.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-set.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape-plan.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shaper.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-tt-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-unicode.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-warning.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ucdn.cc +harfbuzz_cfiles += ./../../src/ucdn/ucdn.c + +harfbuzz_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(harfbuzz_cfiles))))) +harfbuzz_debug_dep = $(harfbuzz_cpp_debug_dep) $(harfbuzz_cc_debug_dep) $(harfbuzz_c_debug_dep) +-include $(harfbuzz_debug_dep) +harfbuzz_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(harfbuzz_cfiles))))) +harfbuzz_release_dep = $(harfbuzz_cpp_release_dep) $(harfbuzz_cc_release_dep) $(harfbuzz_c_release_dep) +-include $(harfbuzz_release_dep) +harfbuzz_debug_hpaths := +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src +harfbuzz_debug_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_debug_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_debug_hpaths += ./../../include +harfbuzz_debug_lpaths := +harfbuzz_debug_defines := $(harfbuzz_custom_defines) +harfbuzz_debug_defines += HAVE_CONFIG_H +harfbuzz_debug_defines += HB_NO_MT +harfbuzz_debug_defines += HAVE_OT +harfbuzz_debug_defines += HAVE_ICU +harfbuzz_debug_defines += LINUX=1 +harfbuzz_debug_defines += _LIB +harfbuzz_debug_defines += _DEBUG +harfbuzz_debug_libraries := +harfbuzz_debug_libraries += pthread +harfbuzz_debug_libraries += glfw3 +harfbuzz_debug_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_debug_common_cflags += -MMD +harfbuzz_debug_common_cflags += $(addprefix -D, $(harfbuzz_debug_defines)) +harfbuzz_debug_common_cflags += $(addprefix -I, $(harfbuzz_debug_hpaths)) +harfbuzz_debug_common_cflags += -m64 +harfbuzz_debug_cflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_debug_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_debug_cflags += -O0 -ggdb +harfbuzz_debug_cppflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cppflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_debug_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_debug_cppflags += -Wno-reorder +harfbuzz_debug_cppflags += -O0 -ggdb +harfbuzz_debug_lflags := $(harfbuzz_custom_lflags) +harfbuzz_debug_lflags += $(addprefix -L, $(harfbuzz_debug_lpaths)) +harfbuzz_debug_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_debug_libraries)) -Wl,--end-group +harfbuzz_debug_lflags += -m64 +harfbuzz_debug_lflags += -m64 +harfbuzz_debug_objsdir = $(OBJS_DIR)/harfbuzz_debug +harfbuzz_debug_cpp_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_debug_cc_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_debug_c_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_debug_obj = $(harfbuzz_debug_cpp_o) $(harfbuzz_debug_cc_o) $(harfbuzz_debug_c_o) +harfbuzz_debug_bin := ./../../lib/linux64/libharfbuzzD.a + +clean_harfbuzz_debug: + $(ECHO) clean harfbuzz debug + $(RMDIR) $(harfbuzz_debug_objsdir) + $(RMDIR) $(harfbuzz_debug_bin) + +build_harfbuzz_debug: postbuild_harfbuzz_debug +postbuild_harfbuzz_debug: mainbuild_harfbuzz_debug +mainbuild_harfbuzz_debug: prebuild_harfbuzz_debug $(harfbuzz_debug_bin) +prebuild_harfbuzz_debug: + +$(harfbuzz_debug_bin): $(harfbuzz_debug_obj) + mkdir -p `dirname ./../../lib/linux64/libharfbuzzD.a` + $(AR) rcs $(harfbuzz_debug_bin) $(harfbuzz_debug_obj) + $(ECHO) building $@ complete! + +harfbuzz_debug_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_debug_cpp_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_cc_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_c_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +harfbuzz_release_hpaths := +harfbuzz_release_hpaths += ./../../src/harfbuzz/src +harfbuzz_release_hpaths += ./../../src/harfbuzz/config/linux +harfbuzz_release_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_release_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_release_hpaths += ./../../include +harfbuzz_release_lpaths := +harfbuzz_release_defines := $(harfbuzz_custom_defines) +harfbuzz_release_defines += HAVE_CONFIG_H +harfbuzz_release_defines += HB_NO_MT +harfbuzz_release_defines += HAVE_OT +harfbuzz_release_defines += HAVE_ICU +harfbuzz_release_defines += LINUX=1 +harfbuzz_release_defines += _LIB +harfbuzz_release_defines += NDEBUG +harfbuzz_release_libraries := +harfbuzz_release_libraries += pthread +harfbuzz_release_libraries += glfw3 +harfbuzz_release_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_release_common_cflags += -MMD +harfbuzz_release_common_cflags += $(addprefix -D, $(harfbuzz_release_defines)) +harfbuzz_release_common_cflags += $(addprefix -I, $(harfbuzz_release_hpaths)) +harfbuzz_release_common_cflags += -m64 +harfbuzz_release_cflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_release_cflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_cppflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cppflags += -Wno-missing-field-initializers -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-sign-compare +harfbuzz_release_cppflags += -malign-double -funwind-tables -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-but-set-variable -Wno-switch -Wno-unused-variable -Wno-unused-function +harfbuzz_release_cppflags += -Wno-reorder +harfbuzz_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_lflags := $(harfbuzz_custom_lflags) +harfbuzz_release_lflags += $(addprefix -L, $(harfbuzz_release_lpaths)) +harfbuzz_release_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_release_libraries)) -Wl,--end-group +harfbuzz_release_lflags += -m64 +harfbuzz_release_lflags += -m64 +harfbuzz_release_objsdir = $(OBJS_DIR)/harfbuzz_release +harfbuzz_release_cpp_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_release_cc_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_release_c_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_release_obj = $(harfbuzz_release_cpp_o) $(harfbuzz_release_cc_o) $(harfbuzz_release_c_o) +harfbuzz_release_bin := ./../../lib/linux64/libharfbuzz.a + +clean_harfbuzz_release: + $(ECHO) clean harfbuzz release + $(RMDIR) $(harfbuzz_release_objsdir) + $(RMDIR) $(harfbuzz_release_bin) + +build_harfbuzz_release: postbuild_harfbuzz_release +postbuild_harfbuzz_release: mainbuild_harfbuzz_release +mainbuild_harfbuzz_release: prebuild_harfbuzz_release $(harfbuzz_release_bin) +prebuild_harfbuzz_release: + +$(harfbuzz_release_bin): $(harfbuzz_release_obj) + mkdir -p `dirname ./../../lib/linux64/libharfbuzz.a` + $(AR) rcs $(harfbuzz_release_bin) $(harfbuzz_release_obj) + $(ECHO) building $@ complete! + +harfbuzz_release_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_release_cpp_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_cc_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_c_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +clean_harfbuzz: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile b/extensions/externals/build/makeandroid/Makefile index b130b76..74a2b10 100644 --- a/extensions/externals/build/makeandroid/Makefile +++ b/extensions/externals/build/makeandroid/Makefile @@ -2,7 +2,6 @@ # Makefile generated by XPJ for android DEPSDIR = .deps -SILENT_FLAG ?= @ NDKROOT = $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d) NDK_BIN_DIR = $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin NDK_PREFIX = arm-linux-androideabi- @@ -31,23 +30,23 @@ OBJCOPY = $(NDK_BIN_DIR)/$(NDK_PREFIX)objcopy all: debug release -debug: build_R3_debug +debug: build_harfbuzz_debug -release: build_R3_release +release: build_harfbuzz_release -clean: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) -clean_debug: clean_R3_debug - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_debug: clean_harfbuzz_debug + rm -rf $(DEPSDIR) -clean_release: clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) +clean_release: clean_harfbuzz_release + rm -rf $(DEPSDIR) -include Makefile.R3.mk +include Makefile.harfbuzz.mk # Disable implicit rules to speedup build @@ -204,3 +203,7 @@ SUFFIXES := .sym: .f: .f.o: +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile.Half.mk b/extensions/externals/build/makeandroid/Makefile.Half.mk index d3ca1a4..87cd905 100644 --- a/extensions/externals/build/makeandroid/Makefile.Half.mk +++ b/extensions/externals/build/makeandroid/Makefile.Half.mk @@ -32,9 +32,11 @@ Half_debug_common_cflags += -MMD Half_debug_common_cflags += $(addprefix -D, $(Half_debug_defines)) Half_debug_common_cflags += $(addprefix -I, $(Half_debug_hpaths)) Half_debug_cflags := $(Half_debug_common_cflags) -Half_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Half_debug_cppflags := $(Half_debug_common_cflags) -Half_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Half_debug_lflags := $(Half_custom_lflags) Half_debug_lflags += $(addprefix -L, $(Half_debug_lpaths)) Half_debug_lflags += -Wl,--start-group $(addprefix -l, $(Half_debug_libraries)) -Wl,--end-group @@ -46,9 +48,9 @@ Half_debug_obj = $(Half_debug_cpp_o) $(Half_debug_cc_o) $(Half_debug_c_o) Half_debug_bin := ./../../lib/Tegra-Android/libHalfD.a clean_Half_debug: - $(SILENT_FLAG)$(ECHO) clean Half debug - $(SILENT_FLAG)$(RMDIR) $(Half_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_debug_bin) + $(ECHO) clean Half debug + $(RMDIR) $(Half_debug_objsdir) + $(RMDIR) $(Half_debug_bin) build_Half_debug: postbuild_Half_debug postbuild_Half_debug: mainbuild_Half_debug @@ -56,37 +58,37 @@ mainbuild_Half_debug: prebuild_Half_debug $(Half_debug_bin) prebuild_Half_debug: $(Half_debug_bin): $(Half_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libHalfD.a` - $(SILENT_FLAG)$(AR) rcs $(Half_debug_bin) $(Half_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libHalfD.a` + $(AR) rcs $(Half_debug_bin) $(Half_debug_obj) + $(ECHO) building $@ complete! Half_debug_DEPDIR = $(dir $(@))/$(*F) $(Half_debug_cpp_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_debug_objsdir),, $@))), $(Half_cppfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_cc_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_debug_objsdir),, $@))), $(Half_ccfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d $(Half_debug_c_o): $(Half_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ + $(ECHO) Half: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_debug_objsdir),, $@))), $(Half_cfiles))))).debug.P; \ rm -f $(Half_debug_DEPDIR).d @@ -110,9 +112,11 @@ Half_release_common_cflags += -MMD Half_release_common_cflags += $(addprefix -D, $(Half_release_defines)) Half_release_common_cflags += $(addprefix -I, $(Half_release_hpaths)) Half_release_cflags := $(Half_release_common_cflags) -Half_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_cppflags := $(Half_release_common_cflags) -Half_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +Half_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer Half_release_lflags := $(Half_custom_lflags) Half_release_lflags += $(addprefix -L, $(Half_release_lpaths)) Half_release_lflags += -Wl,--start-group $(addprefix -l, $(Half_release_libraries)) -Wl,--end-group @@ -124,9 +128,9 @@ Half_release_obj = $(Half_release_cpp_o) $(Half_release_cc_o) $(Half_releas Half_release_bin := ./../../lib/Tegra-Android/libHalf.a clean_Half_release: - $(SILENT_FLAG)$(ECHO) clean Half release - $(SILENT_FLAG)$(RMDIR) $(Half_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(Half_release_bin) + $(ECHO) clean Half release + $(RMDIR) $(Half_release_objsdir) + $(RMDIR) $(Half_release_bin) build_Half_release: postbuild_Half_release postbuild_Half_release: mainbuild_Half_release @@ -134,40 +138,45 @@ mainbuild_Half_release: prebuild_Half_release $(Half_release_bin) prebuild_Half_release: $(Half_release_bin): $(Half_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libHalf.a` - $(SILENT_FLAG)$(AR) rcs $(Half_release_bin) $(Half_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libHalf.a` + $(AR) rcs $(Half_release_bin) $(Half_release_obj) + $(ECHO) building $@ complete! Half_release_DEPDIR = $(dir $(@))/$(*F) $(Half_release_cpp_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(Half_release_objsdir),, $@))), $(Half_cppfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_cc_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(Half_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(Half_release_objsdir),, $@))), $(Half_ccfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d $(Half_release_c_o): $(Half_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) - $(SILENT_FLAG)cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ + $(ECHO) Half: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(Half_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles)))))) + cp $(Half_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(Half_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(Half_release_objsdir),, $@))), $(Half_cfiles))))).release.P; \ rm -f $(Half_release_DEPDIR).d clean_Half: clean_Half_debug clean_Half_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile.R3.mk b/extensions/externals/build/makeandroid/Makefile.R3.mk index 7143ae6..b49e13a 100644 --- a/extensions/externals/build/makeandroid/Makefile.R3.mk +++ b/extensions/externals/build/makeandroid/Makefile.R3.mk @@ -32,9 +32,11 @@ R3_debug_common_cflags += -MMD R3_debug_common_cflags += $(addprefix -D, $(R3_debug_defines)) R3_debug_common_cflags += $(addprefix -I, $(R3_debug_hpaths)) R3_debug_cflags := $(R3_debug_common_cflags) -R3_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer R3_debug_cppflags := $(R3_debug_common_cflags) -R3_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer R3_debug_lflags := $(R3_custom_lflags) R3_debug_lflags += $(addprefix -L, $(R3_debug_lpaths)) R3_debug_lflags += -Wl,--start-group $(addprefix -l, $(R3_debug_libraries)) -Wl,--end-group @@ -46,9 +48,9 @@ R3_debug_obj = $(R3_debug_cpp_o) $(R3_debug_cc_o) $(R3_debug_c_o) R3_debug_bin := ./../../lib/Tegra-Android/libR3D.a clean_R3_debug: - $(SILENT_FLAG)$(ECHO) clean R3 debug - $(SILENT_FLAG)$(RMDIR) $(R3_debug_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_debug_bin) + $(ECHO) clean R3 debug + $(RMDIR) $(R3_debug_objsdir) + $(RMDIR) $(R3_debug_bin) build_R3_debug: postbuild_R3_debug postbuild_R3_debug: mainbuild_R3_debug @@ -56,37 +58,37 @@ mainbuild_R3_debug: prebuild_R3_debug $(R3_debug_bin) prebuild_R3_debug: $(R3_debug_bin): $(R3_debug_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libR3D.a` - $(SILENT_FLAG)$(AR) rcs $(R3_debug_bin) $(R3_debug_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libR3D.a` + $(AR) rcs $(R3_debug_bin) $(R3_debug_obj) + $(ECHO) building $@ complete! R3_debug_DEPDIR = $(dir $(@))/$(*F) $(R3_debug_cpp_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_debug_objsdir),, $@))), $(R3_cppfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_cc_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_debug_objsdir),, $@))), $(R3_ccfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d $(R3_debug_c_o): $(R3_debug_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ + $(ECHO) R3: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_debug_objsdir),, $@))), $(R3_cfiles))))).debug.P; \ rm -f $(R3_debug_DEPDIR).d @@ -110,9 +112,11 @@ R3_release_common_cflags += -MMD R3_release_common_cflags += $(addprefix -D, $(R3_release_defines)) R3_release_common_cflags += $(addprefix -I, $(R3_release_hpaths)) R3_release_cflags := $(R3_release_common_cflags) -R3_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_cppflags := $(R3_release_common_cflags) -R3_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -O2 -g -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +R3_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer R3_release_lflags := $(R3_custom_lflags) R3_release_lflags += $(addprefix -L, $(R3_release_lpaths)) R3_release_lflags += -Wl,--start-group $(addprefix -l, $(R3_release_libraries)) -Wl,--end-group @@ -124,9 +128,9 @@ R3_release_obj = $(R3_release_cpp_o) $(R3_release_cc_o) $(R3_release_c_o) R3_release_bin := ./../../lib/Tegra-Android/libR3.a clean_R3_release: - $(SILENT_FLAG)$(ECHO) clean R3 release - $(SILENT_FLAG)$(RMDIR) $(R3_release_objsdir) - $(SILENT_FLAG)$(RMDIR) $(R3_release_bin) + $(ECHO) clean R3 release + $(RMDIR) $(R3_release_objsdir) + $(RMDIR) $(R3_release_bin) build_R3_release: postbuild_R3_release postbuild_R3_release: mainbuild_R3_release @@ -134,40 +138,45 @@ mainbuild_R3_release: prebuild_R3_release $(R3_release_bin) prebuild_R3_release: $(R3_release_bin): $(R3_release_obj) - $(SILENT_FLAG)mkdir -p `dirname ./../../lib/Tegra-Android/libR3.a` - $(SILENT_FLAG)$(AR) rcs $(R3_release_bin) $(R3_release_obj) - $(SILENT_FLAG)$(ECHO) building $@ complete! + mkdir -p `dirname ./../../lib/Tegra-Android/libR3.a` + $(AR) rcs $(R3_release_bin) $(R3_release_obj) + $(ECHO) building $@ complete! R3_release_DEPDIR = $(dir $(@))/$(*F) $(R3_release_cpp_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(R3_release_objsdir),, $@))), $(R3_cppfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_cc_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(R3_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(R3_release_objsdir),, $@))), $(R3_ccfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d $(R3_release_c_o): $(R3_release_objsdir)/%.o: - $(SILENT_FLAG)$(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... - $(SILENT_FLAG)mkdir -p $(dir $(@)) - $(SILENT_FLAG)$(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ - $(SILENT_FLAG)mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) - $(SILENT_FLAG)cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ + $(ECHO) R3: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(R3_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles)))))) + cp $(R3_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(R3_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(R3_release_objsdir),, $@))), $(R3_cfiles))))).release.P; \ rm -f $(R3_release_DEPDIR).d clean_R3: clean_R3_debug clean_R3_release - $(SILENT_FLAG)rm -rf $(DEPSDIR) + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile.cg4cpp.mk b/extensions/externals/build/makeandroid/Makefile.cg4cpp.mk new file mode 100644 index 0000000..ba4207d --- /dev/null +++ b/extensions/externals/build/makeandroid/Makefile.cg4cpp.mk @@ -0,0 +1,259 @@ +# Makefile generated by XPJ for android +-include Makefile.custom +ProjectName = cg4cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/abs.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/acos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/all.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/any.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/asin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/atan2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ceil.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/clamp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cosh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/cross.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/degrees.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/determinant.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/distance.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/dot.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/exp2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/faceforward.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floatToRawIntBits.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/floor.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fmod.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frac.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/fresnel.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/frexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/intBitsToFloat.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/inverse.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/iostream.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isfinite.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isinf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/isnan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/ldexp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/length.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lerp.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/lit.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log10.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/log2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/max.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/min.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/modf.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/mul.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/normalize.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/pow.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/radians.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/reflect.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/refract.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/round.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/rsqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/saturate.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sign.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sin.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sincos.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sinh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/smoothstep.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/sqrt.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/step.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tan.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/tanh.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/transpose.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/trunc.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper1x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper2x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper3x4.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x1.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x2.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x3.cpp +cg4cpp_cppfiles += ./../../src/cg4cpp/upper4x4.cpp + +cg4cpp_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(cg4cpp_cfiles))))) +cg4cpp_debug_dep = $(cg4cpp_cpp_debug_dep) $(cg4cpp_cc_debug_dep) $(cg4cpp_c_debug_dep) +-include $(cg4cpp_debug_dep) +cg4cpp_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(cg4cpp_cppfiles))))) +cg4cpp_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(cg4cpp_ccfiles))))) +cg4cpp_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(cg4cpp_cfiles))))) +cg4cpp_release_dep = $(cg4cpp_cpp_release_dep) $(cg4cpp_cc_release_dep) $(cg4cpp_c_release_dep) +-include $(cg4cpp_release_dep) +cg4cpp_debug_hpaths := +cg4cpp_debug_hpaths += ./../../src/cg4cpp +cg4cpp_debug_hpaths += ./../../include +cg4cpp_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +cg4cpp_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +cg4cpp_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +cg4cpp_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +cg4cpp_debug_lpaths := +cg4cpp_debug_defines := $(cg4cpp_custom_defines) +cg4cpp_debug_defines += ANDROID +cg4cpp_debug_defines += _LIB +cg4cpp_debug_defines += GL_API_LEVEL_ES2 +cg4cpp_debug_defines += _DEBUG +cg4cpp_debug_libraries := +cg4cpp_debug_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_debug_common_cflags += -MMD +cg4cpp_debug_common_cflags += $(addprefix -D, $(cg4cpp_debug_defines)) +cg4cpp_debug_common_cflags += $(addprefix -I, $(cg4cpp_debug_hpaths)) +cg4cpp_debug_cflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +cg4cpp_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +cg4cpp_debug_cppflags := $(cg4cpp_debug_common_cflags) +cg4cpp_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +cg4cpp_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +cg4cpp_debug_lflags := $(cg4cpp_custom_lflags) +cg4cpp_debug_lflags += $(addprefix -L, $(cg4cpp_debug_lpaths)) +cg4cpp_debug_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_debug_libraries)) -Wl,--end-group +cg4cpp_debug_objsdir = $(OBJS_DIR)/cg4cpp_debug +cg4cpp_debug_cpp_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_debug_cc_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_debug_c_o = $(addprefix $(cg4cpp_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_debug_obj = $(cg4cpp_debug_cpp_o) $(cg4cpp_debug_cc_o) $(cg4cpp_debug_c_o) +cg4cpp_debug_bin := ./../../lib/Tegra-Android/libcg4cppD.a + +clean_cg4cpp_debug: + $(ECHO) clean cg4cpp debug + $(RMDIR) $(cg4cpp_debug_objsdir) + $(RMDIR) $(cg4cpp_debug_bin) + +build_cg4cpp_debug: postbuild_cg4cpp_debug +postbuild_cg4cpp_debug: mainbuild_cg4cpp_debug +mainbuild_cg4cpp_debug: prebuild_cg4cpp_debug $(cg4cpp_debug_bin) +prebuild_cg4cpp_debug: + +$(cg4cpp_debug_bin): $(cg4cpp_debug_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libcg4cppD.a` + $(AR) rcs $(cg4cpp_debug_bin) $(cg4cpp_debug_obj) + $(ECHO) building $@ complete! + +cg4cpp_debug_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_debug_cpp_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cppfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_cc_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_ccfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +$(cg4cpp_debug_c_o): $(cg4cpp_debug_objsdir)/%.o: + $(ECHO) cg4cpp: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_debug_objsdir),, $@))), $(cg4cpp_cfiles))))).debug.P; \ + rm -f $(cg4cpp_debug_DEPDIR).d + +cg4cpp_release_hpaths := +cg4cpp_release_hpaths += ./../../src/cg4cpp +cg4cpp_release_hpaths += ./../../include +cg4cpp_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +cg4cpp_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +cg4cpp_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +cg4cpp_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +cg4cpp_release_lpaths := +cg4cpp_release_defines := $(cg4cpp_custom_defines) +cg4cpp_release_defines += ANDROID +cg4cpp_release_defines += _LIB +cg4cpp_release_defines += GL_API_LEVEL_ES2 +cg4cpp_release_defines += NDEBUG +cg4cpp_release_libraries := +cg4cpp_release_common_cflags := $(cg4cpp_custom_cflags) +cg4cpp_release_common_cflags += -MMD +cg4cpp_release_common_cflags += $(addprefix -D, $(cg4cpp_release_defines)) +cg4cpp_release_common_cflags += $(addprefix -I, $(cg4cpp_release_hpaths)) +cg4cpp_release_cflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +cg4cpp_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_cppflags := $(cg4cpp_release_common_cflags) +cg4cpp_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +cg4cpp_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +cg4cpp_release_lflags := $(cg4cpp_custom_lflags) +cg4cpp_release_lflags += $(addprefix -L, $(cg4cpp_release_lpaths)) +cg4cpp_release_lflags += -Wl,--start-group $(addprefix -l, $(cg4cpp_release_libraries)) -Wl,--end-group +cg4cpp_release_objsdir = $(OBJS_DIR)/cg4cpp_release +cg4cpp_release_cpp_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(cg4cpp_cppfiles))))) +cg4cpp_release_cc_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(cg4cpp_ccfiles))))) +cg4cpp_release_c_o = $(addprefix $(cg4cpp_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(cg4cpp_cfiles))))) +cg4cpp_release_obj = $(cg4cpp_release_cpp_o) $(cg4cpp_release_cc_o) $(cg4cpp_release_c_o) +cg4cpp_release_bin := ./../../lib/Tegra-Android/libcg4cpp.a + +clean_cg4cpp_release: + $(ECHO) clean cg4cpp release + $(RMDIR) $(cg4cpp_release_objsdir) + $(RMDIR) $(cg4cpp_release_bin) + +build_cg4cpp_release: postbuild_cg4cpp_release +postbuild_cg4cpp_release: mainbuild_cg4cpp_release +mainbuild_cg4cpp_release: prebuild_cg4cpp_release $(cg4cpp_release_bin) +prebuild_cg4cpp_release: + +$(cg4cpp_release_bin): $(cg4cpp_release_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libcg4cpp.a` + $(AR) rcs $(cg4cpp_release_bin) $(cg4cpp_release_obj) + $(ECHO) building $@ complete! + +cg4cpp_release_DEPDIR = $(dir $(@))/$(*F) +$(cg4cpp_release_cpp_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cppfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_cc_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(cg4cpp_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_ccfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +$(cg4cpp_release_c_o): $(cg4cpp_release_objsdir)/%.o: + $(ECHO) cg4cpp: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(cg4cpp_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles)))))) + cp $(cg4cpp_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(cg4cpp_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(cg4cpp_release_objsdir),, $@))), $(cg4cpp_cfiles))))).release.P; \ + rm -f $(cg4cpp_release_DEPDIR).d + +clean_cg4cpp: clean_cg4cpp_debug clean_cg4cpp_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile.freetype.mk b/extensions/externals/build/makeandroid/Makefile.freetype.mk new file mode 100644 index 0000000..63642fa --- /dev/null +++ b/extensions/externals/build/makeandroid/Makefile.freetype.mk @@ -0,0 +1,224 @@ +# Makefile generated by XPJ for android +-include Makefile.custom +ProjectName = freetype +freetype_cfiles += ./../../src/freetype-2.4.9/src/autofit/autofit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/bdf/bdf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cff/cff.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbase.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbitmap.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cache/ftcache.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftdebug.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftfstype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgasp.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftglyph.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/gzip/ftgzip.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftinit.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/lzw/ftlzw.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftstroke.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsystem.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/smooth/smooth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftbbox.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftgxval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftlcdfil.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftmm.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftotval.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpatent.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftpfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftsynth.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/fttype1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftwinfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/base/ftxf86.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pcf/pcf.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pfr/pfr.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psaux/psaux.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/pshinter/pshinter.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/psnames/psmodule.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/raster/raster.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/sfnt/sfnt.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/truetype/truetype.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type1/type1.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/cid/type1cid.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/type42/type42.c +freetype_cfiles += ./../../src/freetype-2.4.9/src/winfonts/winfnt.c + +freetype_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(freetype_cppfiles))))) +freetype_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(freetype_ccfiles))))) +freetype_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(freetype_cfiles))))) +freetype_debug_dep = $(freetype_cpp_debug_dep) $(freetype_cc_debug_dep) $(freetype_c_debug_dep) +-include $(freetype_debug_dep) +freetype_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(freetype_cppfiles))))) +freetype_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(freetype_ccfiles))))) +freetype_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(freetype_cfiles))))) +freetype_release_dep = $(freetype_cpp_release_dep) $(freetype_cc_release_dep) $(freetype_c_release_dep) +-include $(freetype_release_dep) +freetype_debug_hpaths := +freetype_debug_hpaths += ./../../src/freetype-2.4.9/include +freetype_debug_hpaths += ./../../src/freetype-2.4.9/src +freetype_debug_hpaths += ./../../include +freetype_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +freetype_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +freetype_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +freetype_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +freetype_debug_lpaths := +freetype_debug_defines := $(freetype_custom_defines) +freetype_debug_defines += FT2_BUILD_LIBRARY +freetype_debug_defines += ANDROID +freetype_debug_defines += _LIB +freetype_debug_defines += GL_API_LEVEL_ES2 +freetype_debug_defines += _DEBUG +freetype_debug_libraries := +freetype_debug_common_cflags := $(freetype_custom_cflags) +freetype_debug_common_cflags += -MMD +freetype_debug_common_cflags += $(addprefix -D, $(freetype_debug_defines)) +freetype_debug_common_cflags += $(addprefix -I, $(freetype_debug_hpaths)) +freetype_debug_cflags := $(freetype_debug_common_cflags) +freetype_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +freetype_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +freetype_debug_cppflags := $(freetype_debug_common_cflags) +freetype_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +freetype_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +freetype_debug_lflags := $(freetype_custom_lflags) +freetype_debug_lflags += $(addprefix -L, $(freetype_debug_lpaths)) +freetype_debug_lflags += -Wl,--start-group $(addprefix -l, $(freetype_debug_libraries)) -Wl,--end-group +freetype_debug_objsdir = $(OBJS_DIR)/freetype_debug +freetype_debug_cpp_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_debug_cc_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_debug_c_o = $(addprefix $(freetype_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_debug_obj = $(freetype_debug_cpp_o) $(freetype_debug_cc_o) $(freetype_debug_c_o) +freetype_debug_bin := ./../../lib/Tegra-Android/libfreetypeD.a + +clean_freetype_debug: + $(ECHO) clean freetype debug + $(RMDIR) $(freetype_debug_objsdir) + $(RMDIR) $(freetype_debug_bin) + +build_freetype_debug: postbuild_freetype_debug +postbuild_freetype_debug: mainbuild_freetype_debug +mainbuild_freetype_debug: prebuild_freetype_debug $(freetype_debug_bin) +prebuild_freetype_debug: + +$(freetype_debug_bin): $(freetype_debug_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libfreetypeD.a` + $(AR) rcs $(freetype_debug_bin) $(freetype_debug_obj) + $(ECHO) building $@ complete! + +freetype_debug_DEPDIR = $(dir $(@))/$(*F) +$(freetype_debug_cpp_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cppfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_cc_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_ccfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +$(freetype_debug_c_o): $(freetype_debug_objsdir)/%.o: + $(ECHO) freetype: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_debug_objsdir),, $@))), $(freetype_cfiles))))).debug.P; \ + rm -f $(freetype_debug_DEPDIR).d + +freetype_release_hpaths := +freetype_release_hpaths += ./../../src/freetype-2.4.9/include +freetype_release_hpaths += ./../../src/freetype-2.4.9/src +freetype_release_hpaths += ./../../include +freetype_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +freetype_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +freetype_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +freetype_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +freetype_release_lpaths := +freetype_release_defines := $(freetype_custom_defines) +freetype_release_defines += FT2_BUILD_LIBRARY +freetype_release_defines += ANDROID +freetype_release_defines += _LIB +freetype_release_defines += GL_API_LEVEL_ES2 +freetype_release_defines += NDEBUG +freetype_release_libraries := +freetype_release_common_cflags := $(freetype_custom_cflags) +freetype_release_common_cflags += -MMD +freetype_release_common_cflags += $(addprefix -D, $(freetype_release_defines)) +freetype_release_common_cflags += $(addprefix -I, $(freetype_release_hpaths)) +freetype_release_cflags := $(freetype_release_common_cflags) +freetype_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +freetype_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_cppflags := $(freetype_release_common_cflags) +freetype_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +freetype_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +freetype_release_lflags := $(freetype_custom_lflags) +freetype_release_lflags += $(addprefix -L, $(freetype_release_lpaths)) +freetype_release_lflags += -Wl,--start-group $(addprefix -l, $(freetype_release_libraries)) -Wl,--end-group +freetype_release_objsdir = $(OBJS_DIR)/freetype_release +freetype_release_cpp_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(freetype_cppfiles))))) +freetype_release_cc_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(freetype_ccfiles))))) +freetype_release_c_o = $(addprefix $(freetype_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(freetype_cfiles))))) +freetype_release_obj = $(freetype_release_cpp_o) $(freetype_release_cc_o) $(freetype_release_c_o) +freetype_release_bin := ./../../lib/Tegra-Android/libfreetype.a + +clean_freetype_release: + $(ECHO) clean freetype release + $(RMDIR) $(freetype_release_objsdir) + $(RMDIR) $(freetype_release_bin) + +build_freetype_release: postbuild_freetype_release +postbuild_freetype_release: mainbuild_freetype_release +mainbuild_freetype_release: prebuild_freetype_release $(freetype_release_bin) +prebuild_freetype_release: + +$(freetype_release_bin): $(freetype_release_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libfreetype.a` + $(AR) rcs $(freetype_release_bin) $(freetype_release_obj) + $(ECHO) building $@ complete! + +freetype_release_DEPDIR = $(dir $(@))/$(*F) +$(freetype_release_cpp_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cppfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_cc_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(freetype_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(freetype_release_objsdir),, $@))), $(freetype_ccfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +$(freetype_release_c_o): $(freetype_release_objsdir)/%.o: + $(ECHO) freetype: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(freetype_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles)))))) + cp $(freetype_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(freetype_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(freetype_release_objsdir),, $@))), $(freetype_cfiles))))).release.P; \ + rm -f $(freetype_release_DEPDIR).d + +clean_freetype: clean_freetype_debug clean_freetype_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/makeandroid/Makefile.harfbuzz.mk b/extensions/externals/build/makeandroid/Makefile.harfbuzz.mk new file mode 100644 index 0000000..2993a9a --- /dev/null +++ b/extensions/externals/build/makeandroid/Makefile.harfbuzz.mk @@ -0,0 +1,225 @@ +# Makefile generated by XPJ for android +-include Makefile.custom +ProjectName = harfbuzz +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-blob.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer-serialize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-buffer.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-common.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-face.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-fallback-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ft.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-layout.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-map.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-arabic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-default.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic-table.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-indic.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-myanmar.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-sea.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-complex-thai.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-fallback.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape-normalize.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ot-tag.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-set.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape-plan.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shape.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-shaper.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-tt-font.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-unicode.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-warning.cc +harfbuzz_ccfiles += ./../../src/harfbuzz/src/hb-ucdn.cc +harfbuzz_cfiles += ./../../src/ucdn/ucdn.c + +harfbuzz_cpp_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.debug.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.debug.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_debug_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.debug.P, $(harfbuzz_cfiles))))) +harfbuzz_debug_dep = $(harfbuzz_cpp_debug_dep) $(harfbuzz_cc_debug_dep) $(harfbuzz_c_debug_dep) +-include $(harfbuzz_debug_dep) +harfbuzz_cpp_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.release.P, $(harfbuzz_cppfiles))))) +harfbuzz_cc_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.release.P, $(harfbuzz_ccfiles))))) +harfbuzz_c_release_dep = $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.release.P, $(harfbuzz_cfiles))))) +harfbuzz_release_dep = $(harfbuzz_cpp_release_dep) $(harfbuzz_cc_release_dep) $(harfbuzz_c_release_dep) +-include $(harfbuzz_release_dep) +harfbuzz_debug_hpaths := +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src +harfbuzz_debug_hpaths += ./../../src/harfbuzz/config/android +harfbuzz_debug_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_debug_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_debug_hpaths += ./../../include +harfbuzz_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +harfbuzz_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +harfbuzz_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +harfbuzz_debug_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +harfbuzz_debug_lpaths := +harfbuzz_debug_defines := $(harfbuzz_custom_defines) +harfbuzz_debug_defines += HAVE_CONFIG_H +harfbuzz_debug_defines += HB_NO_MT +harfbuzz_debug_defines += HAVE_OT +harfbuzz_debug_defines += HAVE_ICU +harfbuzz_debug_defines += ANDROID +harfbuzz_debug_defines += _LIB +harfbuzz_debug_defines += GL_API_LEVEL_ES2 +harfbuzz_debug_defines += _DEBUG +harfbuzz_debug_libraries := +harfbuzz_debug_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_debug_common_cflags += -MMD +harfbuzz_debug_common_cflags += $(addprefix -D, $(harfbuzz_debug_defines)) +harfbuzz_debug_common_cflags += $(addprefix -I, $(harfbuzz_debug_hpaths)) +harfbuzz_debug_cflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +harfbuzz_debug_cflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +harfbuzz_debug_cppflags := $(harfbuzz_debug_common_cflags) +harfbuzz_debug_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +harfbuzz_debug_cppflags += -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer +harfbuzz_debug_lflags := $(harfbuzz_custom_lflags) +harfbuzz_debug_lflags += $(addprefix -L, $(harfbuzz_debug_lpaths)) +harfbuzz_debug_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_debug_libraries)) -Wl,--end-group +harfbuzz_debug_objsdir = $(OBJS_DIR)/harfbuzz_debug +harfbuzz_debug_cpp_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_debug_cc_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_debug_c_o = $(addprefix $(harfbuzz_debug_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_debug_obj = $(harfbuzz_debug_cpp_o) $(harfbuzz_debug_cc_o) $(harfbuzz_debug_c_o) +harfbuzz_debug_bin := ./../../lib/Tegra-Android/libharfbuzzD.a + +clean_harfbuzz_debug: + $(ECHO) clean harfbuzz debug + $(RMDIR) $(harfbuzz_debug_objsdir) + $(RMDIR) $(harfbuzz_debug_bin) + +build_harfbuzz_debug: postbuild_harfbuzz_debug +postbuild_harfbuzz_debug: mainbuild_harfbuzz_debug +mainbuild_harfbuzz_debug: prebuild_harfbuzz_debug $(harfbuzz_debug_bin) +prebuild_harfbuzz_debug: + +$(harfbuzz_debug_bin): $(harfbuzz_debug_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libharfbuzzD.a` + $(AR) rcs $(harfbuzz_debug_bin) $(harfbuzz_debug_obj) + $(ECHO) building $@ complete! + +harfbuzz_debug_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_debug_cpp_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cppfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_cc_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_debug_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_ccfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +$(harfbuzz_debug_c_o): $(harfbuzz_debug_objsdir)/%.o: + $(ECHO) harfbuzz: compiling debug $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_debug_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_debug_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_debug_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_debug_objsdir),, $@))), $(harfbuzz_cfiles))))).debug.P; \ + rm -f $(harfbuzz_debug_DEPDIR).d + +harfbuzz_release_hpaths := +harfbuzz_release_hpaths += ./../../src/harfbuzz/src +harfbuzz_release_hpaths += ./../../src/harfbuzz/config/android +harfbuzz_release_hpaths += ./../../src/harfbuzz/src/hb-ucdn +harfbuzz_release_hpaths += ./../../src/freetype-2.4.9/include +harfbuzz_release_hpaths += ./../../include +harfbuzz_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/platforms/android-14/arch-arm/usr/include +harfbuzz_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include +harfbuzz_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include +harfbuzz_release_hpaths += $(if $(NVPACK_ROOT),$(NVPACK_ROOT),$(error the environment must define NVPACK_ROOT))/$(if $(NVPACK_NDK_VERSION),$(NVPACK_NDK_VERSION),android-ndk-r9d)/sources/cxx-stl/gnu-libstdc++/4.8/include/backward +harfbuzz_release_lpaths := +harfbuzz_release_defines := $(harfbuzz_custom_defines) +harfbuzz_release_defines += HAVE_CONFIG_H +harfbuzz_release_defines += HB_NO_MT +harfbuzz_release_defines += HAVE_OT +harfbuzz_release_defines += HAVE_ICU +harfbuzz_release_defines += ANDROID +harfbuzz_release_defines += _LIB +harfbuzz_release_defines += GL_API_LEVEL_ES2 +harfbuzz_release_defines += NDEBUG +harfbuzz_release_libraries := +harfbuzz_release_common_cflags := $(harfbuzz_custom_cflags) +harfbuzz_release_common_cflags += -MMD +harfbuzz_release_common_cflags += $(addprefix -D, $(harfbuzz_release_defines)) +harfbuzz_release_common_cflags += $(addprefix -I, $(harfbuzz_release_hpaths)) +harfbuzz_release_cflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +harfbuzz_release_cflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_cppflags := $(harfbuzz_release_common_cflags) +harfbuzz_release_cppflags += -fpic -fPIC -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fstrict-aliasing -funswitch-loops -finline-limit=300 +harfbuzz_release_cppflags += -funwind-tables -O2 -fno-omit-frame-pointer +harfbuzz_release_lflags := $(harfbuzz_custom_lflags) +harfbuzz_release_lflags += $(addprefix -L, $(harfbuzz_release_lpaths)) +harfbuzz_release_lflags += -Wl,--start-group $(addprefix -l, $(harfbuzz_release_libraries)) -Wl,--end-group +harfbuzz_release_objsdir = $(OBJS_DIR)/harfbuzz_release +harfbuzz_release_cpp_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cpp, %.cpp.o, $(harfbuzz_cppfiles))))) +harfbuzz_release_cc_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.cc, %.cc.o, $(harfbuzz_ccfiles))))) +harfbuzz_release_c_o = $(addprefix $(harfbuzz_release_objsdir)/, $(subst ./, , $(subst ../, , $(patsubst %.c, %.c.o, $(harfbuzz_cfiles))))) +harfbuzz_release_obj = $(harfbuzz_release_cpp_o) $(harfbuzz_release_cc_o) $(harfbuzz_release_c_o) +harfbuzz_release_bin := ./../../lib/Tegra-Android/libharfbuzz.a + +clean_harfbuzz_release: + $(ECHO) clean harfbuzz release + $(RMDIR) $(harfbuzz_release_objsdir) + $(RMDIR) $(harfbuzz_release_bin) + +build_harfbuzz_release: postbuild_harfbuzz_release +postbuild_harfbuzz_release: mainbuild_harfbuzz_release +mainbuild_harfbuzz_release: prebuild_harfbuzz_release $(harfbuzz_release_bin) +prebuild_harfbuzz_release: + +$(harfbuzz_release_bin): $(harfbuzz_release_obj) + mkdir -p `dirname ./../../lib/Tegra-Android/libharfbuzz.a` + $(AR) rcs $(harfbuzz_release_bin) $(harfbuzz_release_obj) + $(ECHO) building $@ complete! + +harfbuzz_release_DEPDIR = $(dir $(@))/$(*F) +$(harfbuzz_release_cpp_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cpp.o,.cpp, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cppfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_cc_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))... + mkdir -p $(dir $(@)) + $(CXX) $(harfbuzz_release_cppflags) -c $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .cc.o,.cc, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_ccfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +$(harfbuzz_release_c_o): $(harfbuzz_release_objsdir)/%.o: + $(ECHO) harfbuzz: compiling release $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))... + mkdir -p $(dir $(@)) + $(CC) $(harfbuzz_release_cflags) -c $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)) -o $@ + mkdir -p $(dir $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles)))))) + cp $(harfbuzz_release_DEPDIR).d $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $(harfbuzz_release_DEPDIR).d >> $(addprefix $(DEPSDIR)/, $(subst ./, , $(subst ../, , $(filter %$(strip $(subst .c.o,.c, $(subst $(harfbuzz_release_objsdir),, $@))), $(harfbuzz_cfiles))))).release.P; \ + rm -f $(harfbuzz_release_DEPDIR).d + +clean_harfbuzz: clean_harfbuzz_debug clean_harfbuzz_release + rm -rf $(DEPSDIR) + +export VERBOSE +ifndef VERBOSE +.SILENT: +endif diff --git a/extensions/externals/build/vs2010android/Half.vcxproj b/extensions/externals/build/vs2010android/Half.vcxproj index ca98510..59d9444 100644 --- a/extensions/externals/build/vs2010android/Half.vcxproj +++ b/extensions/externals/build/vs2010android/Half.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/Half;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/Half;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/externals/build/vs2010android/R3.vcxproj b/extensions/externals/build/vs2010android/R3.vcxproj index 50dd3f5..6f2343c 100644 --- a/extensions/externals/build/vs2010android/R3.vcxproj +++ b/extensions/externals/build/vs2010android/R3.vcxproj @@ -23,7 +23,9 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-21 + android-16 + android-16 StaticLibrary @@ -31,7 +33,8 @@ arm-linux-androideabi-4.8 armv7-a gnustl_static - android-14 + android-16 + android-16 @@ -54,6 +57,7 @@ Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer Disabled ./../../src/R3;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) @@ -85,6 +89,7 @@ Precise + -funwind-tables -O2 -fno-omit-frame-pointer Disabled ./../../src/R3;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) diff --git a/extensions/externals/build/vs2010android/cg4cpp.sln b/extensions/externals/build/vs2010android/cg4cpp.sln new file mode 100644 index 0000000..8483397 --- /dev/null +++ b/extensions/externals/build/vs2010android/cg4cpp.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cg4cpp", "cg4cpp.vcxproj", "{4112EB99-7188-FDC3-4A6B-CD6F86863DCF}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Tegra-Android = debug|Tegra-Android + release|Tegra-Android = release|Tegra-Android + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Tegra-Android.ActiveCfg = debug|Tegra-Android + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Tegra-Android.Build.0 = debug|Tegra-Android + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Tegra-Android.ActiveCfg = release|Tegra-Android + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Tegra-Android.Build.0 = release|Tegra-Android + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010android/cg4cpp.vcxproj b/extensions/externals/build/vs2010android/cg4cpp.vcxproj new file mode 100644 index 0000000..b829484 --- /dev/null +++ b/extensions/externals/build/vs2010android/cg4cpp.vcxproj @@ -0,0 +1,460 @@ + + + + 6 + + + + debug + Tegra-Android + + + release + Tegra-Android + + + + {402BCAA2-D025-49F2-82B0-CF522012BF71} + + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-21 + android-16 + android-16 + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-16 + android-16 + + + + + + + + + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/cg4cpp/Tegra-Android/debug/ + .a + libcg4cppD + AllRules.ruleset + + + + + + Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer + Disabled + ./../../src/cg4cpp;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libcg4cppD.a + %(AdditionalLibraryDirectories) + $(OutDir)/libcg4cppD.a.pdb + + + + + true + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/cg4cpp/Tegra-Android/release/ + .a + libcg4cpp + AllRules.ruleset + + + + + + Precise + -funwind-tables -O2 -fno-omit-frame-pointer + Disabled + ./../../src/cg4cpp;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libcg4cpp.a + %(AdditionalLibraryDirectories) + $(OutDir)/libcg4cpp.a.pdb + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010android/cg4cpp.vcxproj.filters b/extensions/externals/build/vs2010android/cg4cpp.vcxproj.filters new file mode 100644 index 0000000..8ce27da --- /dev/null +++ b/extensions/externals/build/vs2010android/cg4cpp.vcxproj.filters @@ -0,0 +1,522 @@ + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010android/cg4cpp.vcxproj.user b/extensions/externals/build/vs2010android/cg4cpp.vcxproj.user new file mode 100644 index 0000000..6950d03 --- /dev/null +++ b/extensions/externals/build/vs2010android/cg4cpp.vcxproj.user @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010android/freetype.sln b/extensions/externals/build/vs2010android/freetype.sln new file mode 100644 index 0000000..7868aff --- /dev/null +++ b/extensions/externals/build/vs2010android/freetype.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Tegra-Android = debug|Tegra-Android + release|Tegra-Android = release|Tegra-Android + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Tegra-Android.ActiveCfg = debug|Tegra-Android + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Tegra-Android.Build.0 = debug|Tegra-Android + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Tegra-Android.ActiveCfg = release|Tegra-Android + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Tegra-Android.Build.0 = release|Tegra-Android + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010android/freetype.vcxproj b/extensions/externals/build/vs2010android/freetype.vcxproj new file mode 100644 index 0000000..d063ff1 --- /dev/null +++ b/extensions/externals/build/vs2010android/freetype.vcxproj @@ -0,0 +1,256 @@ + + + + 6 + + + + debug + Tegra-Android + + + release + Tegra-Android + + + + {402BCAA2-D025-49F2-82B0-CF522012BF71} + + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-21 + android-16 + android-16 + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-16 + android-16 + + + + + + + + + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/freetype/Tegra-Android/debug/ + .a + libfreetypeD + AllRules.ruleset + + + + + + Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libfreetypeD.a + %(AdditionalLibraryDirectories) + $(OutDir)/libfreetypeD.a.pdb + + + + + true + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/freetype/Tegra-Android/release/ + .a + libfreetype + AllRules.ruleset + + + + + + Precise + -funwind-tables -O2 -fno-omit-frame-pointer + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libfreetype.a + %(AdditionalLibraryDirectories) + $(OutDir)/libfreetype.a.pdb + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010android/freetype.vcxproj.filters b/extensions/externals/build/vs2010android/freetype.vcxproj.filters new file mode 100644 index 0000000..5d12ed1 --- /dev/null +++ b/extensions/externals/build/vs2010android/freetype.vcxproj.filters @@ -0,0 +1,282 @@ + + + + + + + + + + + + + src\autofit + + + + + + + + + src\bdf + + + + + + + + + src\cff + + + + + + + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + + + + + + + src\cache + + + + + + + + + src\gzip + + + + + + + + + src\lzw + + + + + + + + + src\smooth + + + + + + + + + src\pcf + + + + + + + + + src\pfr + + + + + + + + + src\psaux + + + + + + + + + src\pshinter + + + + + + + + + src\psnames + + + + + + + + + src\raster + + + + + + + + + src\sfnt + + + + + + + + + src\truetype + + + + + + + + + src\type1 + + + + + + + + + src\cid + + + + + + + + + src\type42 + + + + + + + + + src\winfonts + + + + + + + + + + + + + + + + + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + + + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010android/freetype.vcxproj.user b/extensions/externals/build/vs2010android/freetype.vcxproj.user new file mode 100644 index 0000000..6950d03 --- /dev/null +++ b/extensions/externals/build/vs2010android/freetype.vcxproj.user @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010android/harfbuzz.sln b/extensions/externals/build/vs2010android/harfbuzz.sln new file mode 100644 index 0000000..a61d0cf --- /dev/null +++ b/extensions/externals/build/vs2010android/harfbuzz.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "harfbuzz", "harfbuzz.vcxproj", "{6C20DB90-0E90-FCA5-2490-A8E03E21D944}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Tegra-Android = debug|Tegra-Android + release|Tegra-Android = release|Tegra-Android + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Tegra-Android.ActiveCfg = debug|Tegra-Android + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Tegra-Android.Build.0 = debug|Tegra-Android + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Tegra-Android.ActiveCfg = release|Tegra-Android + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Tegra-Android.Build.0 = release|Tegra-Android + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010android/harfbuzz.vcxproj b/extensions/externals/build/vs2010android/harfbuzz.vcxproj new file mode 100644 index 0000000..cb1ab2a --- /dev/null +++ b/extensions/externals/build/vs2010android/harfbuzz.vcxproj @@ -0,0 +1,320 @@ + + + + 6 + + + + debug + Tegra-Android + + + release + Tegra-Android + + + + {402BCAA2-D025-49F2-82B0-CF522012BF71} + + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-21 + android-16 + android-16 + + + StaticLibrary + false + arm-linux-androideabi-4.8 + armv7-a + gnustl_static + android-16 + android-16 + + + + + + + + + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/harfbuzz/Tegra-Android/debug/ + .a + libharfbuzzD + AllRules.ruleset + + + + + + Precise + -funwind-tables -O0 -g -ggdb -fno-omit-frame-pointer + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/android;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;HB_NO_MT;HAVE_OT;HAVE_ICU;ANDROID;_LIB;GL_API_LEVEL_ES2;_DEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libharfbuzzD.a + %(AdditionalLibraryDirectories) + $(OutDir)/libharfbuzzD.a.pdb + + + + + true + + + + $(ProjectDir)./../../lib/Tegra-Android\ + ./intermediate/harfbuzz/Tegra-Android/release/ + .a + libharfbuzz + AllRules.ruleset + + + + + + Precise + -funwind-tables -O2 -fno-omit-frame-pointer + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/android;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;./../../../../../../../../../../../../../../platforms/android-14/arch-arm/usr/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include;./../../../../../../../../../../../../../../sources/cxx-stl/gnu-libstdc++/include/backward;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;HB_NO_MT;HAVE_OT;HAVE_ICU;ANDROID;_LIB;GL_API_LEVEL_ES2;NDEBUG;%(PreprocessorDefinitions) + Level3 + NotUsing + + + + -Wl,--start-group -lc -lm -lgcc -Wl,--end-group + $(OutDir)libharfbuzz.a + %(AdditionalLibraryDirectories) + $(OutDir)/libharfbuzz.a.pdb + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010android/harfbuzz.vcxproj.filters b/extensions/externals/build/vs2010android/harfbuzz.vcxproj.filters new file mode 100644 index 0000000..bd3e8c4 --- /dev/null +++ b/extensions/externals/build/vs2010android/harfbuzz.vcxproj.filters @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + src\..\..\ucdn + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010android/harfbuzz.vcxproj.user b/extensions/externals/build/vs2010android/harfbuzz.vcxproj.user new file mode 100644 index 0000000..6950d03 --- /dev/null +++ b/extensions/externals/build/vs2010android/harfbuzz.vcxproj.user @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010win32/cg4cpp.sln b/extensions/externals/build/vs2010win32/cg4cpp.sln new file mode 100644 index 0000000..ef299e0 --- /dev/null +++ b/extensions/externals/build/vs2010win32/cg4cpp.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cg4cpp", "cg4cpp.vcxproj", "{4112EB99-7188-FDC3-4A6B-CD6F86863DCF}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Win32.ActiveCfg = debug|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Win32.Build.0 = debug|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Win32.ActiveCfg = release|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010win32/cg4cpp.vcxproj b/extensions/externals/build/vs2010win32/cg4cpp.vcxproj new file mode 100644 index 0000000..330072e --- /dev/null +++ b/extensions/externals/build/vs2010win32/cg4cpp.vcxproj @@ -0,0 +1,455 @@ + + + + + debug + Win32 + + + release + Win32 + + + + + + + StaticLibrary + false + + + StaticLibrary + false + true + + + + + + + + + + + + ./../../lib/vs2010x86\ + ./intermediate/cg4cpp/vs2010x86/release/ + .lib + cg4cppD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/cg4cpp;./../../include;%(AdditionalIncludeDirectories) + WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)cg4cppD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/cg4cppD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2010x86\ + ./intermediate/cg4cpp/vs2010x86/release/ + .lib + cg4cpp + AllRules.ruleset + + + + + + true + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/cg4cpp;./../../include;%(AdditionalIncludeDirectories) + WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)cg4cpp.lib + %(AdditionalLibraryDirectories) + $(OutDir)/cg4cpp.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010win32/cg4cpp.vcxproj.filters b/extensions/externals/build/vs2010win32/cg4cpp.vcxproj.filters new file mode 100644 index 0000000..8ce27da --- /dev/null +++ b/extensions/externals/build/vs2010win32/cg4cpp.vcxproj.filters @@ -0,0 +1,522 @@ + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010win32/freetype.sln b/extensions/externals/build/vs2010win32/freetype.sln new file mode 100644 index 0000000..f0cf073 --- /dev/null +++ b/extensions/externals/build/vs2010win32/freetype.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Win32.ActiveCfg = debug|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Win32.Build.0 = debug|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Win32.ActiveCfg = release|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010win32/freetype.vcxproj b/extensions/externals/build/vs2010win32/freetype.vcxproj new file mode 100644 index 0000000..903302f --- /dev/null +++ b/extensions/externals/build/vs2010win32/freetype.vcxproj @@ -0,0 +1,251 @@ + + + + + debug + Win32 + + + release + Win32 + + + + + + + StaticLibrary + false + + + StaticLibrary + false + true + + + + + + + + + + + + ./../../lib/vs2010x86\ + ./intermediate/freetype/vs2010x86/release/ + .lib + freetypeD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)freetypeD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/freetypeD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2010x86\ + ./intermediate/freetype/vs2010x86/release/ + .lib + freetype + AllRules.ruleset + + + + + + true + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)freetype.lib + %(AdditionalLibraryDirectories) + $(OutDir)/freetype.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010win32/freetype.vcxproj.filters b/extensions/externals/build/vs2010win32/freetype.vcxproj.filters new file mode 100644 index 0000000..5d12ed1 --- /dev/null +++ b/extensions/externals/build/vs2010win32/freetype.vcxproj.filters @@ -0,0 +1,282 @@ + + + + + + + + + + + + + src\autofit + + + + + + + + + src\bdf + + + + + + + + + src\cff + + + + + + + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + + + + + + + src\cache + + + + + + + + + src\gzip + + + + + + + + + src\lzw + + + + + + + + + src\smooth + + + + + + + + + src\pcf + + + + + + + + + src\pfr + + + + + + + + + src\psaux + + + + + + + + + src\pshinter + + + + + + + + + src\psnames + + + + + + + + + src\raster + + + + + + + + + src\sfnt + + + + + + + + + src\truetype + + + + + + + + + src\type1 + + + + + + + + + src\cid + + + + + + + + + src\type42 + + + + + + + + + src\winfonts + + + + + + + + + + + + + + + + + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + + + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2010win32/harfbuzz.sln b/extensions/externals/build/vs2010win32/harfbuzz.sln new file mode 100644 index 0000000..029ae3e --- /dev/null +++ b/extensions/externals/build/vs2010win32/harfbuzz.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "harfbuzz", "harfbuzz.vcxproj", "{6C20DB90-0E90-FCA5-2490-A8E03E21D944}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Win32.ActiveCfg = debug|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Win32.Build.0 = debug|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Win32.ActiveCfg = release|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2010win32/harfbuzz.vcxproj b/extensions/externals/build/vs2010win32/harfbuzz.vcxproj new file mode 100644 index 0000000..5fb8e79 --- /dev/null +++ b/extensions/externals/build/vs2010win32/harfbuzz.vcxproj @@ -0,0 +1,317 @@ + + + + + debug + Win32 + + + release + Win32 + + + + + + + StaticLibrary + false + + + StaticLibrary + false + true + + + + + + + + + + + + ./../../lib/vs2010x86\ + ./intermediate/harfbuzz/vs2010x86/release/ + .lib + harfbuzzD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /wd4800 /wd4018 /wd4244 /wd4805 /wd4146 /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/win32;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + Usp10.lib;Rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)harfbuzzD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/harfbuzzD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2010x86\ + ./intermediate/harfbuzz/vs2010x86/release/ + .lib + harfbuzz + AllRules.ruleset + + + + + + true + true + true + Fast + /wd4800 /wd4018 /wd4244 /wd4805 /wd4146 /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/win32;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + Usp10.lib;Rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)harfbuzz.lib + %(AdditionalLibraryDirectories) + $(OutDir)/harfbuzz.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2010win32/harfbuzz.vcxproj.filters b/extensions/externals/build/vs2010win32/harfbuzz.vcxproj.filters new file mode 100644 index 0000000..85380e5 --- /dev/null +++ b/extensions/externals/build/vs2010win32/harfbuzz.vcxproj.filters @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + src\..\..\ucdn + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2012win32/cg4cpp.sln b/extensions/externals/build/vs2012win32/cg4cpp.sln new file mode 100644 index 0000000..9b92faf --- /dev/null +++ b/extensions/externals/build/vs2012win32/cg4cpp.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 11 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cg4cpp", "cg4cpp.vcxproj", "{4112EB99-7188-FDC3-4A6B-CD6F86863DCF}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Win32.ActiveCfg = debug|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.debug|Win32.Build.0 = debug|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Win32.ActiveCfg = release|Win32 + {4112EB99-7188-FDC3-4A6B-CD6F86863DCF}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2012win32/cg4cpp.vcxproj b/extensions/externals/build/vs2012win32/cg4cpp.vcxproj new file mode 100644 index 0000000..cbd64be --- /dev/null +++ b/extensions/externals/build/vs2012win32/cg4cpp.vcxproj @@ -0,0 +1,461 @@ + + + + + debug + Win32 + + + release + Win32 + + + + title + + v110 + 11.0 + + + + StaticLibrary + false + v110 + + + StaticLibrary + false + v110 + true + + + + + + + + + + + + ./../../lib/vs2012x86\ + ./intermediate/cg4cpp/vs2012x86/release/ + .lib + cg4cppD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/cg4cpp;./../../include;%(AdditionalIncludeDirectories) + WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)cg4cppD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/cg4cppD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2012x86\ + ./intermediate/cg4cpp/vs2012x86/release/ + .lib + cg4cpp + AllRules.ruleset + + + + + + true + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/cg4cpp;./../../include;%(AdditionalIncludeDirectories) + WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)cg4cpp.lib + %(AdditionalLibraryDirectories) + $(OutDir)/cg4cpp.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2012win32/cg4cpp.vcxproj.filters b/extensions/externals/build/vs2012win32/cg4cpp.vcxproj.filters new file mode 100644 index 0000000..8ce27da --- /dev/null +++ b/extensions/externals/build/vs2012win32/cg4cpp.vcxproj.filters @@ -0,0 +1,522 @@ + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2012win32/freetype.sln b/extensions/externals/build/vs2012win32/freetype.sln new file mode 100644 index 0000000..13803a4 --- /dev/null +++ b/extensions/externals/build/vs2012win32/freetype.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 11 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Win32.ActiveCfg = debug|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.debug|Win32.Build.0 = debug|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Win32.ActiveCfg = release|Win32 + {642095FC-9144-8C05-CEC4-DEA4CAA6B3F4}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2012win32/freetype.vcxproj b/extensions/externals/build/vs2012win32/freetype.vcxproj new file mode 100644 index 0000000..b34710c --- /dev/null +++ b/extensions/externals/build/vs2012win32/freetype.vcxproj @@ -0,0 +1,257 @@ + + + + + debug + Win32 + + + release + Win32 + + + + title + + v110 + 11.0 + + + + StaticLibrary + false + v110 + + + StaticLibrary + false + v110 + true + + + + + + + + + + + + ./../../lib/vs2012x86\ + ./intermediate/freetype/vs2012x86/release/ + .lib + freetypeD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)freetypeD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/freetypeD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2012x86\ + ./intermediate/freetype/vs2012x86/release/ + .lib + freetype + AllRules.ruleset + + + + + + true + true + true + Fast + /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/freetype-2.4.9/include;./../../src/freetype-2.4.9/src;./../../include;%(AdditionalIncludeDirectories) + FT2_BUILD_LIBRARY;_CRT_SECURE_NO_WARNINGS;WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + %(AdditionalDependencies) + $(OutDir)freetype.lib + %(AdditionalLibraryDirectories) + $(OutDir)/freetype.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2012win32/freetype.vcxproj.filters b/extensions/externals/build/vs2012win32/freetype.vcxproj.filters new file mode 100644 index 0000000..5d12ed1 --- /dev/null +++ b/extensions/externals/build/vs2012win32/freetype.vcxproj.filters @@ -0,0 +1,282 @@ + + + + + + + + + + + + + src\autofit + + + + + + + + + src\bdf + + + + + + + + + src\cff + + + + + + + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + src\base + + + + + + + + + src\cache + + + + + + + + + src\gzip + + + + + + + + + src\lzw + + + + + + + + + src\smooth + + + + + + + + + src\pcf + + + + + + + + + src\pfr + + + + + + + + + src\psaux + + + + + + + + + src\pshinter + + + + + + + + + src\psnames + + + + + + + + + src\raster + + + + + + + + + src\sfnt + + + + + + + + + src\truetype + + + + + + + + + src\type1 + + + + + + + + + src\cid + + + + + + + + + src\type42 + + + + + + + + + src\winfonts + + + + + + + + + + + + + + + + + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + include\freetype\config + + + + + + + include + + + \ No newline at end of file diff --git a/extensions/externals/build/vs2012win32/harfbuzz.sln b/extensions/externals/build/vs2012win32/harfbuzz.sln new file mode 100644 index 0000000..6540aba --- /dev/null +++ b/extensions/externals/build/vs2012win32/harfbuzz.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 11 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "harfbuzz", "harfbuzz.vcxproj", "{6C20DB90-0E90-FCA5-2490-A8E03E21D944}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug|Win32 = debug|Win32 + release|Win32 = release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Win32.ActiveCfg = debug|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.debug|Win32.Build.0 = debug|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Win32.ActiveCfg = release|Win32 + {6C20DB90-0E90-FCA5-2490-A8E03E21D944}.release|Win32.Build.0 = release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddins) = postSolution + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/extensions/externals/build/vs2012win32/harfbuzz.vcxproj b/extensions/externals/build/vs2012win32/harfbuzz.vcxproj new file mode 100644 index 0000000..d4e5b38 --- /dev/null +++ b/extensions/externals/build/vs2012win32/harfbuzz.vcxproj @@ -0,0 +1,323 @@ + + + + + debug + Win32 + + + release + Win32 + + + + title + + v110 + 11.0 + + + + StaticLibrary + false + v110 + + + StaticLibrary + false + v110 + true + + + + + + + + + + + + ./../../lib/vs2012x86\ + ./intermediate/harfbuzz/vs2012x86/release/ + .lib + harfbuzzD + AllRules.ruleset + + + + + + Cdecl + true + true + Fast + /wd4800 /wd4018 /wd4244 /wd4805 /wd4146 /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/win32;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_WIN32;_LIB;_DEBUG;PROFILE;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) + Level3 + MultiThreadedDebug + NotUsing + + ProgramDatabase + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + Usp10.lib;Rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)harfbuzzD.lib + %(AdditionalLibraryDirectories) + $(OutDir)/harfbuzzD.lib.pdb + MachineX86 + + + + + true + + + + ./../../lib/vs2012x86\ + ./intermediate/harfbuzz/vs2012x86/release/ + .lib + harfbuzz + AllRules.ruleset + + + + + + true + true + true + Fast + /wd4800 /wd4018 /wd4244 /wd4805 /wd4146 /Oy- /EHsc /wd4748 /wd4995 /wd4390 /wd4100 /wd4201 + Disabled + ./../../src/harfbuzz/src;./../../src/harfbuzz/config/win32;./../../src/harfbuzz/src/hb-ucdn;./../../src/freetype-2.4.9/include;./../../include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_WIN32;_LIB;NDEBUG;%(PreprocessorDefinitions) + Level3 + MultiThreaded + NotUsing + + + + /MACHINE:x86 /SUBSYSTEM:WINDOWS /NOLOGO + Usp10.lib;Rpcrt4.lib;%(AdditionalDependencies) + $(OutDir)harfbuzz.lib + %(AdditionalLibraryDirectories) + $(OutDir)/harfbuzz.lib.pdb + MachineX86 + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/build/vs2012win32/harfbuzz.vcxproj.filters b/extensions/externals/build/vs2012win32/harfbuzz.vcxproj.filters new file mode 100644 index 0000000..85380e5 --- /dev/null +++ b/extensions/externals/build/vs2012win32/harfbuzz.vcxproj.filters @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + src\..\..\ucdn + + + + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/extensions/externals/include/Cg/GL/sampler.hpp b/extensions/externals/include/Cg/GL/sampler.hpp new file mode 100644 index 0000000..6d7706b --- /dev/null +++ b/extensions/externals/include/Cg/GL/sampler.hpp @@ -0,0 +1,58 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_GL_sampler_hpp__ +#define __Cg_GL_sampler_hpp__ + +namespace Cg { + +# ifdef __sampler1D_hpp__ +sampler1D Sampler1DFromGLTextureUnit(GLenum texUnit); +sampler1D Sampler1DFromGLTextureObject(GLuint texobj); +sampler1D Sampler1DFromGLActiveTexture();; +# endif + +# ifdef __sampler1DARRAY_hpp__ +sampler1DARRAY Sampler1DARRAYFromGLTextureUnit(GLenum texUnit); +sampler1DARRAY Sampler1DARRAYFromGLTextureObject(GLuint texobj); +sampler1DARRAY Sampler1DARRAYFromGLActiveTexture(); +# endif + +# ifdef __sampler2D_hpp__ +sampler2D Sampler2DFromGLTextureUnit(GLenum texUnit); +sampler2D Sampler2DFromGLTextureObject(GLuint texobj); +sampler2D Sampler2DFromGLActiveTexture(); +# endif + +# ifdef __sampler2DARRAY_hpp__ +sampler2DARRAY Sampler2DARRAYFromGLTextureUnit(GLenum texUnit); +sampler2DARRAY Sampler2DARRAYFromGLTextureObject(GLuint texobj); +sampler2DARRAY Sampler2DARRAYFromGLActiveTexture(); +# endif + +# ifdef __sampler3D_hpp__ +sampler3D Sampler3DFromGLTextureUnit(GLenum texUnit); +sampler3D Sampler3DFromGLTextureObject(GLuint texobj); +sampler3D Sampler3DFromGLActiveTexture(); +# endif + +# ifdef __samplerRECT_hpp__ +samplerRECT SamplerRECTFromGLTextureUnit(GLenum texUnit); +samplerRECT SamplerRECTFromGLTextureObject(GLuint texobj); +samplerRECT SamplerRECTFromGLActiveTexture(); +# endif + +# ifdef __samplerCUBE_hpp__ +samplerCUBE SamplerCUBEFromGLTextureUnit(GLenum texUnit); +samplerCUBE SamplerCUBEFromGLTextureObject(GLuint texobj); +samplerCUBE SamplerCUBEFromGLActiveTexture(); +# endif + +} // namespace Cg + +#endif // __Cg_GL_sampler_hpp__ + diff --git a/extensions/externals/include/Cg/abs.hpp b/extensions/externals/include/Cg/abs.hpp new file mode 100644 index 0000000..50b02d9 --- /dev/null +++ b/extensions/externals/include/Cg/abs.hpp @@ -0,0 +1,70 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_abs_hpp__ +#define __Cg_abs_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::abs +#include // for ::fabs + +namespace Cg { + +template +static inline __CGvector::intType,N> abs(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::intType,N> abs(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::intType,1> abs(const T & v) +{ + __CGvector::intType,1> rv(::abs(static_cast(v))); + return rv; +} + +template +static inline __CGvector::realType,N> abs(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> abs(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> abs(const T & v) +{ + __CGvector::realType,1> rv(::fabs(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_abs_hpp__ diff --git a/extensions/externals/include/Cg/acos.hpp b/extensions/externals/include/Cg/acos.hpp new file mode 100644 index 0000000..1957e82 --- /dev/null +++ b/extensions/externals/include/Cg/acos.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_acos_hpp__ +#define __Cg_acos_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::acos + +namespace Cg { + +template +static inline __CGvector::realType,N> acos(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> acos(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> acos(const T & v) +{ + __CGvector::realType,1> rv(::acos(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_acos_hpp__ diff --git a/extensions/externals/include/Cg/all.hpp b/extensions/externals/include/Cg/all.hpp new file mode 100644 index 0000000..98e2651 --- /dev/null +++ b/extensions/externals/include/Cg/all.hpp @@ -0,0 +1,39 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_all_hpp__ +#define __Cg_all_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline bool1 all(const __CGvector & v) +{ + bool1 rv = v[0]; + for (int i=1; i +static inline bool1 all(const __CGvector_usage & v) +{ + bool1 rv = v[0]; + for (int i=1; i") +#endif + +#include + +namespace Cg { + +template +static inline bool1 any(const __CGvector & v) +{ + bool1 rv = v[0]; + for (int i=1; i +static inline bool1 any(const __CGvector_usage & v) +{ + bool1 rv = v[0]; + for (int i=1; i") +#endif + +#include + +#include // for std::asin + +namespace Cg { + +template +static inline __CGvector::realType,N> asin(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> asin(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> asin(const T & v) +{ + __CGvector::realType,1> rv(std::asin(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_asin_hpp__ diff --git a/extensions/externals/include/Cg/assert.hpp b/extensions/externals/include/Cg/assert.hpp new file mode 100644 index 0000000..e83a2a3 --- /dev/null +++ b/extensions/externals/include/Cg/assert.hpp @@ -0,0 +1,18 @@ +/* + * Copyright 2005-2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_assert_hpp__ +#define __Cg_assert_hpp__ + +#ifndef __CG_NO_ASSERT +#include +#define __CGassert(x) assert(x) +#else +#define __CGassert(x) +#endif + +#endif // __Cg_assert_hpp__ diff --git a/extensions/externals/include/Cg/atan.hpp b/extensions/externals/include/Cg/atan.hpp new file mode 100644 index 0000000..a20e5c4 --- /dev/null +++ b/extensions/externals/include/Cg/atan.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_atan_hpp__ +#define __Cg_atan_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::atan + +namespace Cg { + +template +static inline __CGvector::realType,N> atan(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> atan(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> atan(const T & v) +{ + __CGvector::realType,1> rv(std::atan(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_atan_hpp__ diff --git a/extensions/externals/include/Cg/atan2.hpp b/extensions/externals/include/Cg/atan2.hpp new file mode 100644 index 0000000..ffa1811 --- /dev/null +++ b/extensions/externals/include/Cg/atan2.hpp @@ -0,0 +1,85 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_atan2_hpp__ +#define __Cg_atan2_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::atan2 + +namespace Cg { + +template +static inline __CGvector::realType,N> atan2(const __CGvector & a, const __CGvector & b) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> atan2(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> atan2(const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> atan2(const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> atan2(const __CGvector_usage & a, + const TB & b) +{ + __CGvector::realType,N> rv; + for (int i=0; i(b)); + return rv; +} +template +static inline __CGvector::realType,N> atan2(const TA & a, + const __CGvector_usage & b) +{ + __CGvector::realType,N> rv; + for (int i=0; i(a), b[i]); + return rv; +} +template +static inline __CGvector::realType,1> atan2(const TA & a, + const TB & b) +{ + __CGvector::realType,1> rv(std::atan2(static_cast(a), static_cast(b))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_atan2_hpp__ diff --git a/extensions/externals/include/Cg/ceil.hpp b/extensions/externals/include/Cg/ceil.hpp new file mode 100644 index 0000000..a67df2f --- /dev/null +++ b/extensions/externals/include/Cg/ceil.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_ceil_hpp__ +#define __Cg_ceil_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::ceil + +namespace Cg { + +template +static inline __CGvector::realType,N> ceil(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> ceil(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> ceil(const T & v) +{ + __CGvector::realType,1> rv(std::ceil(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_ceil_hpp__ diff --git a/extensions/externals/include/Cg/clamp.hpp b/extensions/externals/include/Cg/clamp.hpp new file mode 100644 index 0000000..3b55e02 --- /dev/null +++ b/extensions/externals/include/Cg/clamp.hpp @@ -0,0 +1,448 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_clamp_hpp__ +#define __Cg_clamp_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> clamp(const __CGvector & x, + const __CGvector & a, + const __CGvector & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_plural_usage & x, + const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_plural_usage & x, + const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_plural_usage & x, + const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_plural_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + ResultType av = a[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const TA & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const TA & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const TX & x, + const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const TX & x, + const __CGvector_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const TX & x, + const TA & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + ResultType av = ResultType(static_cast(a)); + for (int i=0; i +static inline __CGvector::numericType,1> clamp(const TX & x, + const TA & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + if (bv < xv) + rv = bv; + else if (av < xv) + rv = xv; + else + rv = av; + return rv; +} +#endif +template +static inline __CGvector::numericType,N> clamp(const TX & x, + const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_plural_usage & x, + const TA & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const TX & x, + const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + ResultType av = a[0]; + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_plural_usage & x, + const __CGvector_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const TA & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + ResultType av = ResultType(static_cast(a)); + for (int i=0; i +static inline __CGvector::numericType,N> clamp(const __CGvector_usage & x, + const __CGvector_plural_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i") +#endif + +#include + +#include // for ::cos + +namespace Cg { + +template +static inline __CGvector::realType,N> cos(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> cos(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> cos(const T & v) +{ + __CGvector::realType,1> rv(::cos(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_cos_hpp__ diff --git a/extensions/externals/include/Cg/cosh.hpp b/extensions/externals/include/Cg/cosh.hpp new file mode 100644 index 0000000..ca108c2 --- /dev/null +++ b/extensions/externals/include/Cg/cosh.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_cosh_hpp__ +#define __Cg_cosh_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::cosh + +namespace Cg { + +template +static inline __CGvector::realType,N> cosh(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> cosh(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> cosh(const T & v) +{ + __CGvector::realType,1> rv(std::cosh(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_cosh_hpp__ diff --git a/extensions/externals/include/Cg/cross.hpp b/extensions/externals/include/Cg/cross.hpp new file mode 100644 index 0000000..a3bf2c7 --- /dev/null +++ b/extensions/externals/include/Cg/cross.hpp @@ -0,0 +1,62 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_cross_hpp__ +#define __Cg_cross_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,3> cross(const __CGvector & a, const __CGvector & b) +{ + __CGvector::numericType,3> a_yzx(a[1], a[2], a[0]), + a_zxy(a[2], a[0], a[1]), + b_yzx(b[1], b[2], b[0]), + b_zxy(b[2], b[0], b[1]); + + // Ideally would write "a.yzx * b.zxy - a.zxy * b.yzx" but cannot + // assume has been included. + return a_yzx * b_zxy - a_zxy * b_yzx; +} + +template +static inline __CGvector::numericType,3> cross(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,3> a_yzx(a[1], a[2], a[0]), + a_zxy(a[2], a[0], a[1]), + b_yzx(b[1], b[2], b[0]), + b_zxy(b[2], b[0], b[1]); + + return a_yzx * b_zxy - a_zxy * b_yzx; +} + + +template +static inline __CGvector::numericType,3> crossv1(const __CGvector & a, const __CGvector & b) +{ + return __CGvector::numericType,3>( + a[1] - b[1], b[0] - a[0], a[0]*b[1] - a[1]*b[0]); +} + +template +static inline __CGvector::numericType,3> crossv1(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + return __CGvector::numericType,3>( + a[1] - b[1], b[0] - a[0], a[0]*b[1] - a[1]*b[0]); +} + +} // namespace Cg + +#endif // __Cg_cross_hpp__ diff --git a/extensions/externals/include/Cg/degrees.hpp b/extensions/externals/include/Cg/degrees.hpp new file mode 100644 index 0000000..8f9d6e0 --- /dev/null +++ b/extensions/externals/include/Cg/degrees.hpp @@ -0,0 +1,41 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_degrees_hpp__ +#define __Cg_degrees_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::realType,N> degrees(const __CGvector & v) +{ + return T(57.29577951) * v; +} +template +static inline __CGvector::realType,N> degrees(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> degrees(const T & v) +{ + __CGvector::realType,1> rv(T(57.29577951) * static_cast(v)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_degrees_hpp__ diff --git a/extensions/externals/include/Cg/determinant.hpp b/extensions/externals/include/Cg/determinant.hpp new file mode 100644 index 0000000..736d4f8 --- /dev/null +++ b/extensions/externals/include/Cg/determinant.hpp @@ -0,0 +1,32 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_determinant_hpp__ +#define __Cg_determinant_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +extern float1 determinant(float1x1 A); +extern float1 determinant(float2x2 A); +extern float1 determinant(float3x3 A); +extern float1 determinant(float4x4 A); +#ifdef __Cg_double_hpp__ +extern double1 determinant(double1x1 A); +extern double1 determinant(double2x2 A); +extern double1 determinant(double3x3 A); +extern double1 determinant(double4x4 A); +#endif + +} // namespace Cg + +#endif // __Cg_determinant_hpp__ diff --git a/extensions/externals/include/Cg/distance.hpp b/extensions/externals/include/Cg/distance.hpp new file mode 100644 index 0000000..c51b27a --- /dev/null +++ b/extensions/externals/include/Cg/distance.hpp @@ -0,0 +1,44 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_distance_hpp__ +#define __Cg_distance_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::sqrt + +namespace Cg { + +template +static inline __CGvector::numericType,1> distance(const __CGvector & a, + const __CGvector & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType distsq = (a[0] - b[0])*(a[0] - b[0]); + for (int i=1; i(numericType(::sqrt(distsq))); +} +template +static inline __CGvector::numericType,1> distance(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType distsq = (a[0] - b[0])*(a[0] - b[0]); + for (int i=1; i(numericType(::sqrt(distsq))); +} + +} // namespace Cg + +#endif // __Cg_distance_hpp__ diff --git a/extensions/externals/include/Cg/dot.hpp b/extensions/externals/include/Cg/dot.hpp new file mode 100644 index 0000000..6ae9350 --- /dev/null +++ b/extensions/externals/include/Cg/dot.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_dot_hpp__ +#define __Cg_dot_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,1> dot(const __CGvector & a, const __CGvector & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::numericType,1> dot(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::resultType,1> dot(const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::resultType,1> dot(const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::resultType,1> dot(const __CGvector_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * static_cast(b); + for (int i=1; i(b); + return __CGvector(numericType(sum)); +} +template +static inline __CGvector::resultType,1> dot(const TA & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = static_cast(a) * b[0]; + for (int i=1; i(a) * b[i]; + return __CGvector(numericType(sum)); +} +template +static inline __CGvector::resultType,1> dot(const TA & a, + const TB & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = static_cast(a) * static_cast(b); + return __CGvector(numericType(sum)); +} + +} // namespace Cg + +#endif // __Cg_dot_hpp__ diff --git a/extensions/externals/include/Cg/dotv1.hpp b/extensions/externals/include/Cg/dotv1.hpp new file mode 100644 index 0000000..7653438 --- /dev/null +++ b/extensions/externals/include/Cg/dotv1.hpp @@ -0,0 +1,69 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_dotv1_hpp__ +#define __Cg_dotv1_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// A one shorter than B + +template +static inline __CGvector::numericType,1> dotv1(const __CGvector & a, const __CGvector & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::numericType,1> dotv1(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} + +// B one shorter than A + +template +static inline __CGvector::numericType,1> dotv1(const __CGvector & a, const __CGvector & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} +template +static inline __CGvector::numericType,1> dotv1(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType numericType; + typename __CGtype_trait::dotType sum = a[0] * b[0]; + for (int i=1; i(numericType(sum)); +} + +} // namespace Cg + +#endif // __Cg_dotv1_hpp__ diff --git a/extensions/externals/include/Cg/double.hpp b/extensions/externals/include/Cg/double.hpp new file mode 100644 index 0000000..1af397e --- /dev/null +++ b/extensions/externals/include/Cg/double.hpp @@ -0,0 +1,14 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_double_hpp__ +#define __Cg_double_hpp__ + +/* Only defines __Cg_double_hpp__ so other headers can know double support + is desired. */ + +#endif // __Cg_double_hpp__ diff --git a/extensions/externals/include/Cg/exp.hpp b/extensions/externals/include/Cg/exp.hpp new file mode 100644 index 0000000..03bdd82 --- /dev/null +++ b/extensions/externals/include/Cg/exp.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_exp_hpp__ +#define __Cg_exp_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::exp + +namespace Cg { + +template +static inline __CGvector::realType,N> exp(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> exp(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> exp(const T & v) +{ + __CGvector::realType,1> rv(std::exp(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_exp_hpp__ diff --git a/extensions/externals/include/Cg/exp2.hpp b/extensions/externals/include/Cg/exp2.hpp new file mode 100644 index 0000000..8fcc592 --- /dev/null +++ b/extensions/externals/include/Cg/exp2.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_exp2_hpp__ +#define __Cg_exp2_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::pow + +namespace Cg { + +template +static inline __CGvector::realType,N> exp2(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> exp2(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> exp2(const T & v) +{ + __CGvector::realType,1> rv(::pow(typename __CGtype_trait::realType(2), static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_exp2_hpp__ diff --git a/extensions/externals/include/Cg/faceforward.hpp b/extensions/externals/include/Cg/faceforward.hpp new file mode 100644 index 0000000..a0029a8 --- /dev/null +++ b/extensions/externals/include/Cg/faceforward.hpp @@ -0,0 +1,44 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_faceforward_hpp__ +#define __Cg_faceforward_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> faceforward(const __CGvector & n, + const __CGvector & iv, + const __CGvector & ng) +{ + typedef typename __CGtype_trait::resultType ResultType; + typename __CGtype_trait::dotType sum = iv[0] * ng[0]; + for (int i=1; i(sum < 0 ? n : -n); +} +template +static inline __CGvector::numericType,N> faceforward(const __CGvector_usage & n, + const __CGvector_usage & iv, + const __CGvector_usage & ng) +{ + typedef typename __CGtype_trait3::resultType ResultType; + typename __CGtype_trait3::dotType sum = iv[0] * ng[0]; + for (int i=1; i(sum < 0 ? n : -n); +} + +} // namespace Cg + +#endif // __Cg_faceforward_hpp__ diff --git a/extensions/externals/include/Cg/fixed.hpp b/extensions/externals/include/Cg/fixed.hpp new file mode 100644 index 0000000..dd3a6a3 --- /dev/null +++ b/extensions/externals/include/Cg/fixed.hpp @@ -0,0 +1,246 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_fixed_hpp__ +#define __Cg_fixed_hpp__ + +#include // for __CGassert + +#include // for std::floor + +namespace Cg { + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(push) +#pragma warning(disable:4127) // conditional expression is constant +#endif + +#if defined(__GNUC__) && (__GNUC__>3 || (__GNUC__==3 && __GNUC_MINOR__>=3)) +#define __CGmay_alias __attribute__((__may_alias__)) +#else +#define __CGmay_alias +#endif + +/* __CGcustom_fixed_storage is the pure storage required for a cgCustomFloat. + Importantly, it has no constructor, destructor, etc. so it can be + kept within a union, unlike __CGcustom_fixed that has a constructor, etc. */ + +// intBits is number of integer bits +// fracBits is number of fractional bits +// sgnBit is whether or not a sign bit is provided +template +struct __CGcustom_fixed_storage { + static const unsigned int bits = (intBits+fracBits+sgnBit); // 16 bits for s1.10 + static const unsigned int bytesPerFixed = (bits + 7) / 8; // 2 bytes for s1.10 + + unsigned char v[bytesPerFixed]; +} __CGmay_alias; + +template +struct __CGcustom_fixed : private __CGcustom_fixed_storage { + +private: + static const unsigned int fp32ManBits = 23u; // 23 mantissa bits for s23e8 + static const unsigned int fp32ManMask = ((1u<::bits; + static const unsigned int fixedShift = 8*sizeof(int) - bits; // 20 for s1.10 + static const int minFixed = sgnBit ? -(1<<(intBits+fracBits)) : 0; // -2048 for s1.10 + static const int maxFixed = (1<<(intBits+fracBits)) - 1; // 2047 for s1.10 + + static int floatToCustomFixed(float f); + float customFixedToFloat() const; + +public: + __CGcustom_fixed() {} + // FLOAT-TO-FIXED CONSTRUCTOR + __CGcustom_fixed(float val) { + int fx = floatToCustomFixed(val); + + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + __CGcustom_fixed::v[i] = fx & 0xFF; + fx >>= 8; + } + } + // DOUBLE-TO-FIXED CONSTRUCTOR + __CGcustom_fixed(double val) { + int fx = floatToCustomFixed(float(val)); + + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + __CGcustom_fixed::v[i] = fx & 0xFF; + fx >>= 8; + } + } + // INT-TO-FIXED CONSTRUCTOR + // (should this be marked explicit?) requires fixed3(fixed(0),fixed(4),fixed(5)) + __CGcustom_fixed(int val) { + int fx = floatToCustomFixed(float(val)); + + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + __CGcustom_fixed::v[i] = fx & 0xFF; + fx >>= 8; + } + } + + inline __CGcustom_fixed(const __CGcustom_fixed &rhs) + { + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + __CGcustom_fixed::v[i] = rhs.v[i]; + } + } + + inline operator float() + { + float f = customFixedToFloat(); + return f; + } + + inline operator float() const + { + float f = customFixedToFloat(); + return f; + } + + __CGcustom_fixed & operator = (const __CGcustom_fixed & val) { + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + __CGcustom_fixed::v[i] = val.v[i]; + } + return *this; + } + + template + inline __CGcustom_fixed & operator += (const T & val) { + float floatVersion = *this; + floatVersion += val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_fixed & operator -= (const T & val) { + float floatVersion = *this; + floatVersion -= val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_fixed & operator *= (const T & val) { + float floatVersion = *this; + floatVersion *= val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_fixed & operator /= (const T & val) { + float floatVersion = *this; + floatVersion /= val; + *this = floatVersion; + return *this; + } + + inline __CGcustom_fixed & operator ++ () { + float floatVersion = *this; + ++floatVersion; + *this = floatVersion; + return *this; + } + inline __CGcustom_fixed operator ++ (int) { + __CGcustom_fixed oldValue = *this; + float floatVersion = *this; + ++floatVersion; + *this = floatVersion; + return oldValue; + } + inline __CGcustom_fixed & operator -- () { + float floatVersion = *this; + --floatVersion; + *this = floatVersion; + return *this; + } + inline __CGcustom_fixed operator -- (int) { + __CGcustom_fixed oldValue = *this; + float floatVersion = *this; + --floatVersion; + *this = floatVersion; + return oldValue; + } +}; + +template +float __CGcustom_fixed::customFixedToFloat() const +{ + static const float oneOverFixedScale = 1.0f / fixedScale; + + int fx = 0; + for (int i=0; i<__CGcustom_fixed::bytesPerFixed; i++) { + fx |= __CGcustom_fixed::v[i] << i*8; + } + + if (sgnBit) { + // Make sure fixed MSB is replicated for all MSBs of int above the fixed MSB + fx <<= fixedShift; + fx >>= fixedShift; + } + + float f = fx * oneOverFixedScale; + return f; +} + +template +int __CGcustom_fixed::floatToCustomFixed(float f) +{ + float fs = std::floor(f * fixedScale); + + if (fs >= maxFixed) { + return maxFixed; + } else if (fs > minFixed) { + // Clever code that performs proper rounding but assumes IEEE 754 floating-point. + const float bigBias = float(3<<(fp32ManBits-1)); + float fsbias = fs + bigBias; + int *ip = reinterpret_cast(&fsbias); + int i = *ip; + + const int lessBigBias = 1<<(fp32ManBits-1); + int fx = (i & fp32ManMask) - lessBigBias; + __CGassert(fx >= minFixed); + __CGassert(fx <= maxFixed); + return fx; + } else if (fs <= minFixed) { + return minFixed; + } else { + // NaN maps to zero. + return 0; + } +} + +// Undefine helper #defines +#undef __CGmay_alias + +typedef __CGcustom_fixed<1,10,1> __CGcustom_fixedS1_10; +typedef __CGcustom_fixed_storage<1,10,1> __CGcustom_fixed_storageS1_10; + +typedef __CGcustom_fixed<0,8,0> __CGcustom_fixedU0_8; +typedef __CGcustom_fixed_storage<0,8,0> __CGcustom_fixed_storageU0_8; + +// Cg data type for fp30/fp40 profile +typedef __CGcustom_fixedS1_10 fixed; +typedef __CGcustom_fixed_storageS1_10 cgFixedStorage; + +// Cg data type for OpenGL texenv profile +//typedef __CGcustom_fixedU0_8 fixed; +//typedef __CGcustom_fixed_storageU0_8 cgFixedStorage; + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(pop) +#endif + +} // namespace Cg + +#endif // __Cg_fixed_hpp__ diff --git a/extensions/externals/include/Cg/floatToIntBits.hpp b/extensions/externals/include/Cg/floatToIntBits.hpp new file mode 100644 index 0000000..60d76d8 --- /dev/null +++ b/extensions/externals/include/Cg/floatToIntBits.hpp @@ -0,0 +1,68 @@ +/* + * Copyright 2007 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_floatToIntBits_hpp__ +#define __Cg_floatToIntBits_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector floatToIntBits(const __CGvector & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i +static inline __CGvector floatToIntBits(const __CGvector_usage & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i floatToIntBits(const float & v) +{ + // By IEEE 754 rule, NaN is not equal to NaN + if (v != v) { + return 0x7fc00000; // Canonical NaN value. + } else { + union { float f; int i; } combo; + combo.f = v; + __CGvector rv(combo.i); + return rv; + } +} + +} // namespace Cg + +#endif // __Cg_floatToIntBits_hpp__ diff --git a/extensions/externals/include/Cg/floatToRawIntBits.hpp b/extensions/externals/include/Cg/floatToRawIntBits.hpp new file mode 100644 index 0000000..e1b140e --- /dev/null +++ b/extensions/externals/include/Cg/floatToRawIntBits.hpp @@ -0,0 +1,53 @@ +/* + * Copyright 2007 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_floatToRawIntBits_hpp__ +#define __Cg_floatToRawIntBits_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector floatToRawIntBits(const __CGvector & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i +static inline __CGvector floatToRawIntBits(const __CGvector_usage & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i floatToRawIntBits(const float & v) +{ + union { float f; int i; } combo; + combo.f = v; + __CGvector rv(combo.i); + return rv; +} + +} // namespace Cg + +#endif // __Cg_floatToRawIntBits_hpp__ diff --git a/extensions/externals/include/Cg/floor.hpp b/extensions/externals/include/Cg/floor.hpp new file mode 100644 index 0000000..f20d748 --- /dev/null +++ b/extensions/externals/include/Cg/floor.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_floor_hpp__ +#define __Cg_floor_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::floor + +namespace Cg { + +template +static inline __CGvector::realType,N> floor(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> floor(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> floor(const T & v) +{ + __CGvector::realType,1> rv(std::floor(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_floor_hpp__ diff --git a/extensions/externals/include/Cg/fmod.hpp b/extensions/externals/include/Cg/fmod.hpp new file mode 100644 index 0000000..644385d --- /dev/null +++ b/extensions/externals/include/Cg/fmod.hpp @@ -0,0 +1,121 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_fmod_hpp__ +#define __Cg_fmod_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::abs & ::floor + +namespace Cg { + +template +static inline __CGvector::realType,N> fmod(const __CGvector & a, + const __CGvector & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> fmod(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> fmod(const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> fmod(const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> fmod(const __CGvector_usage & a, + const TB & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> fmod(const TA & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> fmod(const TA & a, + const TB & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + ResultType div = ResultType(::fabs(a/b)); + rv = ResultType((div - ::floor(div)) * ::fabs(b)); + if (a < 0) + rv = -rv; + return rv; +} + +} // namespace Cg + +#endif // __Cg_fmod_hpp__ diff --git a/extensions/externals/include/Cg/frac.hpp b/extensions/externals/include/Cg/frac.hpp new file mode 100644 index 0000000..ddaea8b --- /dev/null +++ b/extensions/externals/include/Cg/frac.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_frac_hpp__ +#define __Cg_frac_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::frac + +namespace Cg { + +template +static inline __CGvector::realType,N> frac(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> frac(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> frac(const T & v) +{ + __CGvector::realType,1> rv(v - std::floor(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_frac_hpp__ diff --git a/extensions/externals/include/Cg/frexp.hpp b/extensions/externals/include/Cg/frexp.hpp new file mode 100644 index 0000000..21bc61c --- /dev/null +++ b/extensions/externals/include/Cg/frexp.hpp @@ -0,0 +1,48 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_frexp_hpp__ +#define __Cg_frexp_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::frexp + +namespace Cg { + +template +static inline __CGvector frexp(__CGvector x, __CGvector& expOut) +{ + __CGvector rv; + + for (int i=0; i +static inline __CGvector frexp(__CGvector x, __CGvector_usage& expOut) +{ + __CGvector rv; + + for (int i=0; i3 || (__GNUC__==3 && __GNUC_MINOR__>=3)) +#define __CGmay_alias __attribute__((__may_alias__)) +#else +#define __CGmay_alias +#endif + +/* __CGcustom_float_storage is the pure storage required for a __CGcustom_float. + Importantly, it has no constructor, destructor, etc. so it can be + kept within a union, unlike __CGcustom_float that has a constructor, etc. */ + +// manBits is number of mantissa bits +// expBits is number of exponent bias +// sgnBit is whether or not a sign bit is provided +template +struct __CGcustom_float_storage { + static const int bits = manBits + expBits + sgnBit; + static const int bytesPerFloat = (bits + 7) / 8; + + unsigned char v[bytesPerFloat]; +} __CGmay_alias; + +// satToMaxFloat is whether or not values greater than MAXFLOAT map to Infinity +template +struct __CGcustom_float : private __CGcustom_float_storage { + +private: + static const unsigned int fp32ManBits = 23u; // 23 mantissa bits for s23e8 + static const unsigned int fp32ExpBits = 8u; // 8 exponent bits for s23e8 + static const unsigned int fp32Bits = (fp32ManBits+fp32ExpBits+1); // 32 for s23e8 = (includes sign bit) + static const unsigned int fp32ExpBias = ((1u<<(fp32ExpBits-1))-1); // 127 for s23e8 + static const unsigned int fp32ManexpExpLsb = (1u<>= 8; + } + } + // DOUBLE-TO-HALF CONSTRUCTOR + __CGcustom_float(double val) { + unsigned int ui = floatToCustomFloat(float(val)); + + for (int i=0; i<__CGcustom_float::bytesPerFloat; i++) { + __CGcustom_float::v[i] = ui & 0xFF; + ui >>= 8; + } + } + // INT-TO-HALF CONSTRUCTOR + // (should this be marked explicit?) requires half3(half(0),half(4),half(5)) + __CGcustom_float(int val) { + unsigned int ui = floatToCustomFloat(float(val)); + + for (int i=0; i<__CGcustom_float::bytesPerFloat; i++) { + __CGcustom_float::v[i] = ui & 0xFF; + ui >>= 8; + } + } + inline __CGcustom_float(const __CGcustom_float &rhs) + { + for (int i=0; i<__CGcustom_float::bytesPerFloat; i++) { + __CGcustom_float::v[i] = rhs.v[i]; + } + } + + inline operator float() + { + unsigned int ui = custom_floatToFloat(); + float *fp = reinterpret_cast(&ui); + float f = *fp; + return f; + } + + inline operator float() const + { + unsigned int ui = custom_floatToFloat(); + float *fp = reinterpret_cast(&ui); + float f = *fp; + return f; + } + +#if 0 // XXXmjk Do we need these? What about fixed? + inline operator int() + { + // Could do better... + unsigned int ui = custom_floatToFloat(); + float *fp = reinterpret_cast(&ui); + float f = *fp; + return int(f); + } + + inline operator int() const + { + // Could do better... + unsigned int ui = custom_floatToFloat(); + float *fp = reinterpret_cast(&ui); + float f = *fp; + return int(f); + } +#endif + + inline __CGcustom_float & operator = (const __CGcustom_float & val) { + for (int i=0; i<__CGcustom_float::bytesPerFloat; i++) { + __CGcustom_float::v[i] = val.v[i]; + } + return *this; + } + + template + inline __CGcustom_float & operator += (const T & val) { + float floatVersion = *this; + floatVersion += val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_float & operator -= (const T & val) { + float floatVersion = *this; + floatVersion -= val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_float & operator *= (const T & val) { + float floatVersion = *this; + floatVersion *= val; + *this = floatVersion; + return *this; + } + template + inline __CGcustom_float & operator /= (const T & val) { + float floatVersion = *this; + floatVersion /= val; + *this = floatVersion; + return *this; + } + + inline __CGcustom_float & operator ++ () { + float floatVersion = *this; + ++floatVersion; + *this = floatVersion; + return *this; + } + inline __CGcustom_float operator ++ (int) { + __CGcustom_float oldValue = *this; + float floatVersion = *this; + ++floatVersion; + *this = floatVersion; + return oldValue; + } + inline __CGcustom_float & operator -- () { + float floatVersion = *this; + --floatVersion; + *this = floatVersion; + return *this; + } + inline __CGcustom_float operator -- (int) { + __CGcustom_float oldValue = *this; + float floatVersion = *this; + --floatVersion; + *this = floatVersion; + return oldValue; + } +}; + +template +unsigned int __CGcustom_float::custom_floatToFloat() const +{ + unsigned int f = 0; + unsigned int manexp, data; + + for (int i=0; i<__CGcustom_float::bytesPerFloat; i++) { + f |= __CGcustom_float::v[i] << i*8; + } + + // Extract the mantissa and exponent. + manexp = f & manexpMask; + + if (manexp < manexpExpLsb) { + // Exponent == 0, implies 0.0 or Denorm. + if (manexp == 0) { + data = 0; + } else { + // Denorm -- shift the mantissa left until we find a leading one. + // Each shift drops one off the final exponent. + data = convDenormStart; + do { + data -= fp32ManexpExpLsb; // multiply by 1/2 + manexp *= 2; + } while (!(manexp & manexpExpLsb)); + + // Now shift the mantissa into the final location. + data |= (manexp & manexpManMask) << convManexpShift; + } + } else if (manexp >= manexpExpMask) { + // Exponent = ExpMax, implies Inf or NaN. + if (manexp == manexpExpMask) { + data = fp32ManexpInf; // Inf + } else { + data = fp32ManexpNaN; // NaN + } + } else { + // Normal float -- (1) shift over mantissa/exponent, (2) add bias to + // exponent, and (3) + data = (manexp << convManexpShift); + data += (expBiasDiff << fp32ManBits); + } + + // Or in the sign bit and return the result. + return data | (f & sgnMask) << convShift; +} + +template +unsigned int __CGcustom_float::floatToCustomFloat(float f) +{ + unsigned int *uip = reinterpret_cast(&f); + unsigned int ui = *uip; + unsigned int data, exp, man; + + // Extract the exponent and the manBits MSBs of the mantissa from the fp32 + // number. + exp = (ui >> fp32ManBits) & fp32ExpMask; + man = (ui >> convManexpShift) & manexpManMask; + + // Round on type conversion. Check mantissa Bit fp32ManExpShift in the 32-Bit number. + // If set, round the mantissa up. If the mantissa overflows, bump the + // exponent by 1 and clear the mantissa. + if (ui & convManexpSubLsb) { + man++; + if (man & manexpExpLsb) { + man = 0; + exp++; + } + } + + if (exp <= expBiasDiff) { + // |x| < 2^-14, implies 0.0 or Denorm + + // If |x| < 2^-25, we will flush to zero. Otherwise, we will or in + // the leading one and Shift to the appropriate location. + if (exp < (expBiasDiff - manBits)) { + data = 0; // 0.0 + } else { + data = (man | manexpExpLsb) >> (expBiasDiff+1 - exp); + } + } else if (exp > convExpBiasSum) { + // |x| > 2^15, implies overflow, an existing Inf, or NaN. Fp32 NaN is any + // non-zero mantissa with an exponent of +128 (255). Note that our + // rounding algorithm could have kicked the exponent up to 256. + if (exp == fp32ExpMax) { + if (man) { + data = manexpNaN; + // Return allows -NaN to return as NaN even if there is no sign Bit. + return data | ((ui >> convShift) & sgnMask); + } else { + data = manexpInf; + } + } else { + if (satToMaxFloat) { + data = manexpMaxFloat; + } else { + // Values over MaxFloat map to Inf + data = manexpInf; + } + } + } else { + exp -= expBiasDiff; + data = (exp << manBits) | man; + } + + if (sgnBit) { + data |= ((ui >> convShift) & sgnMask); + } else { + if (ui & fp32SgnMask) { + // Clamp negative values (except -NaN, see above) to zero. + data = 0; // 0.0 + } + } + + return data; +} + +typedef __CGcustom_float<10,5,1,0> __CGcustom_floatS10E5; +typedef __CGcustom_float_storage<10,5,1> __CGcustom_float_storageS10E5; + +// Cg data type for fp30/fp40 profile +typedef __CGcustom_floatS10E5 half; +typedef __CGcustom_float_storageS10E5 __CGhalf_storage; + +// Undefine helper #defines +#undef __CGmay_alias + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(pop) +#endif + +} // namespace Cg + +#endif // __Cg_half_hpp__ diff --git a/extensions/externals/include/Cg/inout.hpp b/extensions/externals/include/Cg/inout.hpp new file mode 100644 index 0000000..9a7a6b7 --- /dev/null +++ b/extensions/externals/include/Cg/inout.hpp @@ -0,0 +1,638 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_inout_hpp__ +#define __Cg_inout_hpp__ + +#include + +#include // for std::memcpy + +namespace Cg { + +/// WRAP TYPES + +// Wrapper for classes and structures +template +class __CGwrap_type : public T { +protected: + typedef struct { + T val; // Wrap a value of type T in a structure. + } Wrapper; +public: + inline __CGwrap_type & operator = (const T & v) { + T::operator=(v); + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + this->T::operator++(); + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + this->T::operator++(1); + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + this->T::operator--(); + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + this->T::operator--(1); + return orig; + } +}; + +// Wrapper for built-in float +template <> +class __CGwrap_type { +protected: + typedef float T; + typedef T Wrapper; + float val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for built-in int +template <> +class __CGwrap_type { +protected: + typedef int T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for built-in unsigned int +template <> +class __CGwrap_type { +protected: + typedef unsigned int T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for built-in bool +template <> +class __CGwrap_type { +protected: + typedef bool T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } +}; + +template <> +class __CGwrap_type { +protected: + typedef char T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for built-in short +template <> +class __CGwrap_type { +protected: + typedef short T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for built-in double +template <> +class __CGwrap_type { +protected: + typedef double T; + typedef T Wrapper; + T val; +public: + inline operator T & () { + return val; + } + inline operator const T & () const { + return val; + } + inline operator T () const { // no const needed for function + return val; + } + inline T & operator = (const T & v) { + this->val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->val; + return orig; + } +}; + +// Wrapper for non-const arrays +template +class __CGwrap_type { +protected: + typedef struct { + T val[N]; // Wrap a value of type T in a structure. + } Wrapper; + Wrapper wrapper; +public: + inline T & operator [] (int i) { + return wrapper.val[i]; + } + inline const T & operator [] (int i) const { + return wrapper.val[i]; + } + inline operator T & () { + return wrapper.val; + } + inline T & operator = (const T & v) { + this->wrapper.val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->wrapper.val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->wrapper.val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->wrapper.val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->wrapper.val; + return orig; + } +}; + +// Wrapper for non-const arrays +template +class __CGwrap_type { +protected: + typedef struct { + T val[N]; // Wrap a value of type T in a structure. + } Wrapper; + Wrapper wrapper; +public: + inline const T & operator [] (int i) const { + return wrapper.val[i]; + } + inline operator T & () { + return wrapper.val; + } + inline T & operator = (const T & v) { + this->wrapper.val = v; + return *this; + } + inline __CGwrap_type & operator ++ () { /* prefix */ + ++this->wrapper.val; + return *this; + } + inline __CGwrap_type operator ++ (int) { /* postfix */ + __CGwrap_type orig = *this; + ++this->wrapper.val; + return orig; + } + inline __CGwrap_type & operator -- () { /* prefix */ + --this->wrapper.val; + return *this; + } + inline __CGwrap_type operator -- (int) { /* postfix */ + __CGwrap_type orig = *this; + --this->wrapper.val; + return orig; + } +}; + +/// INOUT + +// InOut for generic types +template +class InOut : public __CGwrap_type { +private: + typedef typename __CGwrap_type::Wrapper Wrapper; + Wrapper *from; +public: + InOut(T & f) : from(reinterpret_cast(&f)) { + std::memcpy(this, from, sizeof(T)); + } + ~InOut() { + std::memcpy(from, reinterpret_cast(this), sizeof(T)); + } + inline InOut & operator = (const T & v) { + __CGwrap_type::operator=(v); + return *this; + } +}; + +// InOut for vector and swizzled types +template +class InOut<__CGvector > : public __CGwrap_type<__CGvector > { +private: + typedef typename __CGwrap_type<__CGvector >::Wrapper Wrapper; + Wrapper *from; + unsigned int swizMask; +public: + // Constructor that registers standard copy-out routine + InOut(__CGvector & f) : from(reinterpret_cast(&f)), + swizMask(0x03020100) { + for (int i=0; i + InOut(__CGswizzle & f) : from(reinterpret_cast(&f)), + swizMask(SMASK) { + for (int i=0; i(this); + T *dst = reinterpret_cast(from); + + for (int i=0; i> (8*i)) & 0xFF; + dst[s] = src[i]; + } + } + template + inline InOut & operator = (const __CGvector_usage & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } + inline InOut & operator = (const __CGvector & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } +}; + +/// IN + +// In for generic types +template +class In : public __CGwrap_type { +private: + // No reference +public: + In(T f) { + *this = f; + } + // No destructor defined. + inline In & operator = (const T & v) { + __CGwrap_type::operator=(v); + return *this; + } +}; + +// In for vector and swizzled types +template +class In<__CGvector > : public __CGwrap_type<__CGvector > { +private: + // No reference +public: + // Constructor that registers standard copy-out routine + In(const __CGvector & f) { + for (int i=0; i + In(const __CGswizzle & f) { + for (int i=0; i + inline In & operator = (const __CGvector_usage & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } + inline In & operator = (const __CGvector & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } +}; + +/// OUT + +// Out for generic types +template +class Out : public __CGwrap_type { +private: + typedef typename __CGwrap_type::Wrapper Wrapper; + Wrapper *from; +public: + Out(T & f) : from(reinterpret_cast(&f)) { } + ~Out() { + std::memcpy(from, reinterpret_cast(this), sizeof(T)); + } + inline Out & operator = (const T & v) { + __CGwrap_type::operator=(v); + return *this; + } +}; + +// Out for vector and swizzled types +template +class Out<__CGvector > : public __CGwrap_type<__CGvector > { +private: + typedef typename __CGwrap_type<__CGvector >::Wrapper Wrapper; + Wrapper *from; + unsigned int swizMask; +public: + // Constructor that registers standard copy-out routine + Out(__CGvector & f) : from(reinterpret_cast(&f)), + swizMask(0x03020100) { + // Nothing + } + template + Out(__CGswizzle & f) : from(reinterpret_cast(&f)), + swizMask(SMASK) { + // Nothing + } + ~Out() { + T *src = reinterpret_cast(this); + T *dst = reinterpret_cast(from); + + for (int i=0; i> (8*i)) & 0xFF; + dst[s] = src[i]; + } + } + template + inline Out & operator = (const __CGvector_usage & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } + inline Out & operator = (const __CGvector & v) { + __CGwrap_type<__CGvector >::operator=(v); + return *this; + } +}; + +/// These __CGtype_trait definitions make sure In, Out, and InOut types participate in operator overloading + +// In and In with conventional types +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,In > : __CGtype_trait { +}; +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,T2> : __CGtype_trait { +}; + +// InOut and InOut with conventional types +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,InOut > : __CGtype_trait { +}; +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,T2> : __CGtype_trait { +}; + +// Out and Out with conventional types +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,Out > : __CGtype_trait { +}; +template +struct __CGtype_trait > : __CGtype_trait { +}; +template +struct __CGtype_trait,T2> : __CGtype_trait { +}; + +// In and InOut mixes +template +struct __CGtype_trait,InOut > : __CGtype_trait { +}; +template +struct __CGtype_trait,In > : __CGtype_trait { +}; + +// In and Out mixes +template +struct __CGtype_trait,Out > : __CGtype_trait { +}; +template +struct __CGtype_trait,In > : __CGtype_trait { +}; + +// Out and InOut mixes +template +struct __CGtype_trait,InOut > : __CGtype_trait { +}; +template +struct __CGtype_trait,Out > : __CGtype_trait { +}; + +} // namespace Cg + +#endif // __Cg_inout_hpp__ diff --git a/extensions/externals/include/Cg/intBitsToFloat.hpp b/extensions/externals/include/Cg/intBitsToFloat.hpp new file mode 100644 index 0000000..ea22656 --- /dev/null +++ b/extensions/externals/include/Cg/intBitsToFloat.hpp @@ -0,0 +1,53 @@ +/* + * Copyright 2007 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_intBitsToFloat_hpp__ +#define __Cg_intBitsToFloat_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector intBitsToFloat(const __CGvector & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i +static inline __CGvector intBitsToFloat(const __CGvector_usage & iv) +{ + __CGvector v = __CGvector(iv); + __CGvector rv; + for (int i=0; i intBitsToFloat(const int & v) +{ + union { float f; int i; } combo; + combo.i = int(v); + __CGvector rv(combo.f); + return rv; +} + +} // namespace Cg + +#endif // __Cg_intBitsToFloat_hpp__ diff --git a/extensions/externals/include/Cg/inverse.hpp b/extensions/externals/include/Cg/inverse.hpp new file mode 100644 index 0000000..771299c --- /dev/null +++ b/extensions/externals/include/Cg/inverse.hpp @@ -0,0 +1,34 @@ + +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_inverse_hpp__ +#define __Cg_inveres_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +extern float1x1 inverse(float1x1 a); +extern float2x2 inverse(float2x2 a); +extern float3x3 inverse(float3x3 a); +extern float4x4 inverse(float4x4 a); + +#ifdef __Cg_double_hpp__ +extern double1x1 inverse(double1x1 a); +extern double2x2 inverse(double2x2 a); +extern double3x3 inverse(double3x3 a); +extern double4x4 inverse(double4x4 a); +#endif + +} // namespace Cg + +#endif // __Cg_inverse_hpp__ diff --git a/extensions/externals/include/Cg/iostream.hpp b/extensions/externals/include/Cg/iostream.hpp new file mode 100644 index 0000000..00ca772 --- /dev/null +++ b/extensions/externals/include/Cg/iostream.hpp @@ -0,0 +1,66 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_iostream_hpp__ +#define __Cg_iostream_hpp__ + +/* + * iostream-based output of Cg-style vector data types. + * + * This file is intended to be included AFTER you include , + * , , and you include. + * + * Possible enhancements: + * - Should there be a and headers? One + * for output, the other for input? + * + * INFORMATION: the C++ standard library declares a function named "fixed" in + * (included by ) that conflicts with the Cg's "fixed" name + * for its fixed-point datatype. + */ + +#include + +namespace Cg { + +#ifdef __Cg_half_hpp__ +std::ostream & operator << (std::ostream & o, const half & v); +#endif + +#ifdef __Cg_fixed_hpp__ +std::ostream & operator << (std::ostream & o, const fixed & v); +#endif + +#ifdef __Cg_vector_hpp__ +template +std::ostream & operator << (std::ostream & o, const __CGvector_usage & v) { + o << "{ "; + int i; + for( i = 0; i < N-1; i++ ) { + o << v[i] << ", "; + } + o << v[i] << " }"; + return o; +} +#endif + +#ifdef __Cg_matrix_hpp__ +template +std::ostream & operator << (std::ostream & o, const __CGmatrix_usage & v) { + o << "{ "; + int i; + for( i = 0; i < ROWS-1; i++ ) { + o << v[i] << ", "; + } + o << v[i] << " }"; + return o; +} +#endif + +} // namespace Cg + +#endif // __Cg_iostream_hpp__ diff --git a/extensions/externals/include/Cg/isfinite.hpp b/extensions/externals/include/Cg/isfinite.hpp new file mode 100644 index 0000000..ba74b89 --- /dev/null +++ b/extensions/externals/include/Cg/isfinite.hpp @@ -0,0 +1,56 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_isfinite_hpp__ +#define __Cg_isfinite_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#undef isfinite // g++ headers may defined this + +#include + +#undef isfinite // g++ header may have defined this + +namespace Cg { + +template +static inline __CGvector isfinite(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, 2*Inf equals Inf + rv[i] = (s == s) && ((s == 0) || (s != 2*s)); + } + return rv; +} +template +static inline __CGvector isfinite(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, 2*Inf equals Inf + rv[i] = (s == s) && ((s == 0) || (s != 2*s)); + } + return rv; +} +template +static inline __CGvector::boolType,1> isfinite(const T & v) +{ + const typename __CGtype_trait::realType s = static_cast(v); + // By IEEE 754 rule, 2*Inf equals Inf + __CGvector::boolType,1> rv((s == s) && ((s == 0) || (s != 2*s))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_isfinite_hpp__ diff --git a/extensions/externals/include/Cg/isinf.hpp b/extensions/externals/include/Cg/isinf.hpp new file mode 100644 index 0000000..c4fbdcc --- /dev/null +++ b/extensions/externals/include/Cg/isinf.hpp @@ -0,0 +1,54 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_isinf_hpp__ +#define __Cg_isinf_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#undef isinf // g++ header may have defined this + +namespace Cg { + +template +static inline __CGvector isinf(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, 2*Inf equals Inf + rv[i] = (2*s == s) && (s != 0); + } + return rv; +} +template +static inline __CGvector isinf(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, 2*Inf equals Inf + rv[i] = (2*s == s) && (s != 0); + } + return rv; +} +template +static inline __CGvector::boolType,1> isinf(const T & v) +{ + const typename __CGtype_trait::realType s = static_cast(v); + // By IEEE 754 rule, 2*Inf equals Inf + __CGvector::boolType,1> rv((2*s == s) && (s != 0)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_isinf_hpp__ diff --git a/extensions/externals/include/Cg/isnan.hpp b/extensions/externals/include/Cg/isnan.hpp new file mode 100644 index 0000000..fbf5f03 --- /dev/null +++ b/extensions/externals/include/Cg/isnan.hpp @@ -0,0 +1,54 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_isnan_hpp__ +#define __Cg_isnan_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#undef isnan // g++ header may have defined this + +namespace Cg { + +template +static inline __CGvector isnan(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, NaN is not equal to NaN + rv[i] = s != s; + } + return rv; +} +template +static inline __CGvector isnan(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i::realType s = v[i]; + // By IEEE 754 rule, NaN is not equal to NaN + rv[i] = s != s; + } + return rv; +} +template +static inline __CGvector::boolType,1> isnan(const T & v) +{ + const typename __CGtype_trait::realType s = static_cast(v); + // By IEEE 754 rule, NaN is not equal to NaN + __CGvector::boolType,1> rv(s != s); + return rv; +} + +} // namespace Cg + +#endif // __Cg_isnan_hpp__ diff --git a/extensions/externals/include/Cg/length.hpp b/extensions/externals/include/Cg/length.hpp new file mode 100644 index 0000000..b81c152 --- /dev/null +++ b/extensions/externals/include/Cg/length.hpp @@ -0,0 +1,42 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_length_hpp__ +#define __Cg_length_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::sqrt + +namespace Cg { + +template +static inline __CGvector::realType,1> length(const __CGvector & v) +{ + typedef typename __CGtype_trait::realType realType; + typename __CGtype_trait::dotType sum = v[0] * v[0]; + for (int i=1; i(realType(::sqrt(sum))); +} +template +static inline __CGvector::realType,1> length(const __CGvector_usage & v) +{ + typedef typename __CGtype_trait::realType realType; + typename __CGtype_trait::dotType sum = v[0] * v[0]; + for (int i=1; i(realType(::sqrt(sum))); +} + +} // namespace Cg + +#endif // __Cg_length_hpp__ diff --git a/extensions/externals/include/Cg/lerp.hpp b/extensions/externals/include/Cg/lerp.hpp new file mode 100644 index 0000000..3dee90d --- /dev/null +++ b/extensions/externals/include/Cg/lerp.hpp @@ -0,0 +1,343 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_lerp_hpp__ +#define __Cg_lerp_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> lerp(const __CGvector & a, + const __CGvector & b, + const __CGvector & t) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_plural_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType tv = t[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + ResultType tv = t[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_plural_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType tv = t[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_usage & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType tv = ResultType(static_cast(t)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const TB & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const TB & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + ResultType tv = ResultType(static_cast(t)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const TA & a, + const __CGvector_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const TA & a, + const __CGvector_usage & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType tv = ResultType(static_cast(t)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const TA & a, + const TB & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,1> lerp(const TA & a, + const TB & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + ResultType tv = ResultType(static_cast(t)); + rv = av + tv*(bv-av); + return rv; +} +#endif +template +static inline __CGvector::numericType,N> lerp(const TA & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType tv = t[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_plural_usage & a, + const TB & b, + const __CGvector_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + ResultType tv = t[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const TA & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + ResultType tv = ResultType(static_cast(t)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const TB & b, + const __CGvector_plural_usage & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> lerp(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const TT & t) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType tv = ResultType(static_cast(t)); + for (int i=0; i") +#endif + +#include + +#include // for std::log + +namespace Cg { + +template +static inline __CGvector::realType,N> log(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> log(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> log(const T & v) +{ + __CGvector::realType,1> rv(std::log(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_log_hpp__ diff --git a/extensions/externals/include/Cg/log10.hpp b/extensions/externals/include/Cg/log10.hpp new file mode 100644 index 0000000..1864c88 --- /dev/null +++ b/extensions/externals/include/Cg/log10.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_log10_hpp__ +#define __Cg_log10_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::log + +namespace Cg { + +template +static inline __CGvector::realType,N> log10(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> log10(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> log10(const T & v) +{ + __CGvector::realType,1> rv(T(0.43429448190325182765) * std::log(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_log10_hpp__ diff --git a/extensions/externals/include/Cg/log2.hpp b/extensions/externals/include/Cg/log2.hpp new file mode 100644 index 0000000..ba59f56 --- /dev/null +++ b/extensions/externals/include/Cg/log2.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_log2_hpp__ +#define __Cg_log2_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::log + +namespace Cg { + +template +static inline __CGvector::realType,N> log2(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> log2(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> log2(const T & v) +{ + __CGvector::realType,1> rv(T(1.44269504088896340737) * std::log(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_log2_hpp__ diff --git a/extensions/externals/include/Cg/matrix.hpp b/extensions/externals/include/Cg/matrix.hpp new file mode 100644 index 0000000..52c162b --- /dev/null +++ b/extensions/externals/include/Cg/matrix.hpp @@ -0,0 +1,2463 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_hpp__ +#define __Cg_matrix_hpp__ + +#include + +namespace Cg { + +#if defined(__GNUC__) && (__GNUC__>3 || (__GNUC__==3 && __GNUC_MINOR__>=3)) +#define __CGmay_alias __attribute__((__may_alias__)) +#else +#define __CGmay_alias +#endif + +// Utility macros for constructing matrix swizzles + +#define __CG_MATRIX_X(row,col) ((row*cols+col)<<0) +#define __CG_MATRIX_Y(row,col) ((row*cols+col)<<8) +#define __CG_MATRIX_Z(row,col) ((row*cols+col)<<16) +#define __CG_MATRIX_W(row,col) ((row*cols+col)<<24) + +#define __CG_MATRIX_SMASK1(x0,y0) \ + __CG_MATRIX_X(x0,y0) +#define __CG_MATRIX_SWIZZLE1(x0,y0) \ + __CGswizzle + +#define __CG_MATRIX_SMASK2(x0,y0,x1,y1) \ + __CG_MATRIX_X(x0,y0)| \ + __CG_MATRIX_Y(x1,y1) +#define __CG_MATRIX_SWIZZLE2(x0,y0,x1,y1) \ + __CGswizzle + +#define __CG_MATRIX_SMASK3(x0,y0,x1,y1,x2,y2) \ + __CG_MATRIX_X(x0,y0)| \ + __CG_MATRIX_Y(x1,y1)| \ + __CG_MATRIX_Z(x2,y2) +#define __CG_MATRIX_SWIZZLE3(x0,y0,x1,y1,x2,y2) \ + __CGswizzle + +#define __CG_MATRIX_SMASK4(x0,y0,x1,y1,x2,y2,x3,y3) \ + __CG_MATRIX_X(x0,y0)| \ + __CG_MATRIX_Y(x1,y1)| \ + __CG_MATRIX_Z(x2,y2)| \ + __CG_MATRIX_W(x3,y3) +#define __CG_MATRIX_SWIZZLE4(x0,y0,x1,y1,x2,y2,x3,y3) \ + __CGswizzle + +#if defined(__Cg_matrix_0based_hpp__) && defined(__Cg_matrix_1based_hpp__) +// include and for +// both _mIJ zero-based and _IJ one-based swizzling +#define __CG_USAGE(zeroBased, oneBased) zeroBased, oneBased +#elif defined(__Cg_matrix_0based_hpp__) +// include for _mIJ zero-based swizzling +#define __CG_USAGE(zeroBased, oneBased) zeroBased +#else +// include (or nothing) for _IJ one-based swizzling +#define __CG_USAGE(zeroBased, oneBased) oneBased +#endif + +#define __CG_MATRIX_ELEMENT(row, x, ms,s) __CG_MATRIX_SWIZZLE1(row,x) __CG_USAGE(ms, s); + +#define __CG_MATRIX_ROW_swizzle2(row, x,y, ms,s) __CG_MATRIX_SWIZZLE2(row,x,row,y) __CG_USAGE(ms, s); +#define __CG_MATRIX_ROW_swizzle3(row, x,y,z, ms,s) __CG_MATRIX_SWIZZLE3(row,x,row,y,row,z) __CG_USAGE(ms, s); +#define __CG_MATRIX_ROW_swizzle4(row, x,y,z,w, ms,s) __CG_MATRIX_SWIZZLE4(row,x,row,y,row,z,row,w) __CG_USAGE(ms, s); + +#if defined(__Cg_matrix_elements_hpp__) || defined(__Cg_matrix_rows_hpp__) || defined(__Cg_matrix_columns_hpp__) +#define __CG_MATRIX_element(row, x, ms,s) __CG_MATRIX_SWIZZLE1(row,x) __CG_USAGE(ms, s); +#else +#define __CG_MATRIX_element(row, x, ms,s) +#endif + +#ifdef __Cg_matrix_columns_hpp__ // include for column swizzling +#define __CG_MATRIX_col_swizzle2(col, x,y, ms,s) __CG_MATRIX_SWIZZLE2(x,col,y,col) __CG_USAGE(ms, s); +#define __CG_MATRIX_col_swizzle3(col, x,y,z, ms,s) __CG_MATRIX_SWIZZLE3(x,col,y,col,z,col) __CG_USAGE(ms, s); +#define __CG_MATRIX_col_swizzle4(col, x,y,z,w, ms,s) __CG_MATRIX_SWIZZLE4(x,col,y,col,z,col,w,col) __CG_USAGE(ms, s); +#else +#define __CG_MATRIX_col_swizzle2(col, x,y, ms,s) +#define __CG_MATRIX_col_swizzle3(col, x,y,z, ms,s) +#define __CG_MATRIX_col_swizzle4(col, x,y,z,w, ms,s) +#endif + +#ifdef __Cg_matrix_rows_hpp__ // include for rows swizzling +#define __CG_MATRIX_row_swizzle2(row, x,y, ms,s) __CG_MATRIX_SWIZZLE2(row,x,row,y) __CG_USAGE(ms, s); +#define __CG_MATRIX_row_swizzle3(row, x,y,z, ms,s) __CG_MATRIX_SWIZZLE3(row,x,row,y,row,z) __CG_USAGE(ms, s); +#define __CG_MATRIX_row_swizzle4(row, x,y,z,w, ms,s) __CG_MATRIX_SWIZZLE4(row,x,row,y,row,z,row,w) __CG_USAGE(ms, s); +#else +#define __CG_MATRIX_row_swizzle2(row, x,y, ms,s) +#define __CG_MATRIX_row_swizzle3(row, x,y,z, ms,s) +#define __CG_MATRIX_row_swizzle4(row, x,y,z,w, ms,s) +#endif + +// Incremental swizzles required for each matrix up to 4x4 + +#define __CG_MATRIX_SWIZZLE_1x1(mode) \ + __CG_MATRIX_##mode(0, 0, _m00, _11) + +#define __CG_MATRIX_SWIZZLE_1x2(mode) \ + __CG_MATRIX_element(0, 1, _m01, _12) \ + __CG_MATRIX_##mode##_swizzle2(0, 0,1, _m00_m01, _11_12) \ + __CG_MATRIX_row_swizzle2(0, 1,0, _m01_m00, _12_11) + +#define __CG_MATRIX_SWIZZLE_1x3(mode) \ + __CG_MATRIX_element(0, 2, _m02, _13) \ + __CG_MATRIX_row_swizzle2(0, 0,2, _m00_m02, _11_13) \ + __CG_MATRIX_row_swizzle2(0, 1,2, _m01_m02, _12_13) \ + __CG_MATRIX_row_swizzle2(0, 2,0, _m02_m00, _13_11) \ + __CG_MATRIX_row_swizzle2(0, 2,1, _m02_m01, _13_12) \ + __CG_MATRIX_##mode##_swizzle3(0, 0,1,2, _m00_m01_m02, _11_12_13) \ + __CG_MATRIX_row_swizzle3(0, 0,2,1, _m00_m02_m01, _11_13_12) \ + __CG_MATRIX_row_swizzle3(0, 1,0,2, _m01_m00_m02, _12_11_13) \ + __CG_MATRIX_row_swizzle3(0, 1,2,0, _m01_m02_m00, _12_13_11) \ + __CG_MATRIX_row_swizzle3(0, 2,0,1, _m02_m00_m01, _13_11_12) \ + __CG_MATRIX_row_swizzle3(0, 2,1,0, _m02_m01_m00, _13_12_11) + +#define __CG_MATRIX_SWIZZLE_1x4(mode) \ + __CG_MATRIX_element(0, 3, _m03, _14) \ + __CG_MATRIX_row_swizzle2(0, 0,3, _m00_m03, _11_14) \ + __CG_MATRIX_row_swizzle2(0, 1,3, _m01_m03, _12_14) \ + __CG_MATRIX_row_swizzle2(0, 2,3, _m02_m03, _13_14) \ + __CG_MATRIX_row_swizzle2(0, 3,0, _m03_m00, _14_11) \ + __CG_MATRIX_row_swizzle2(0, 3,1, _m03_m01, _14_12) \ + __CG_MATRIX_row_swizzle2(0, 3,2, _m03_m02, _14_13) \ + __CG_MATRIX_row_swizzle3(0, 0,1,3, _m00_m01_m03, _11_12_14) \ + __CG_MATRIX_row_swizzle3(0, 0,2,3, _m00_m02_m03, _11_13_14) \ + __CG_MATRIX_row_swizzle3(0, 0,3,1, _m00_m03_m01, _11_14_12) \ + __CG_MATRIX_row_swizzle3(0, 0,3,2, _m00_m03_m02, _11_14_13) \ + __CG_MATRIX_row_swizzle3(0, 1,0,3, _m01_m00_m03, _12_11_14) \ + __CG_MATRIX_row_swizzle3(0, 1,2,3, _m01_m02_m03, _12_13_14) \ + __CG_MATRIX_row_swizzle3(0, 1,3,0, _m01_m03_m00, _12_14_11) \ + __CG_MATRIX_row_swizzle3(0, 1,3,2, _m01_m03_m02, _12_14_13) \ + __CG_MATRIX_row_swizzle3(0, 2,0,3, _m02_m00_m03, _13_11_14) \ + __CG_MATRIX_row_swizzle3(0, 2,1,3, _m02_m01_m03, _13_12_14) \ + __CG_MATRIX_row_swizzle3(0, 2,3,0, _m02_m03_m00, _13_14_11) \ + __CG_MATRIX_row_swizzle3(0, 2,3,1, _m02_m03_m01, _13_14_12) \ + __CG_MATRIX_row_swizzle3(0, 3,0,1, _m03_m00_m01, _14_11_12) \ + __CG_MATRIX_row_swizzle3(0, 3,0,2, _m03_m00_m02, _14_11_13) \ + __CG_MATRIX_row_swizzle3(0, 3,1,0, _m03_m01_m00, _14_12_11) \ + __CG_MATRIX_row_swizzle3(0, 3,1,2, _m03_m01_m02, _14_12_13) \ + __CG_MATRIX_row_swizzle3(0, 3,2,0, _m03_m02_m00, _14_13_11) \ + __CG_MATRIX_row_swizzle3(0, 3,2,1, _m03_m02_m01, _14_13_12) \ + __CG_MATRIX_##mode##_swizzle4(0, 0,1,2,3, _m00_m01_m02_m03, _11_12_13_14) \ + __CG_MATRIX_row_swizzle4(0, 0,1,3,2, _m00_m01_m03_m02, _11_12_14_13) \ + __CG_MATRIX_row_swizzle4(0, 0,2,1,3, _m00_m02_m01_m03, _11_13_12_14) \ + __CG_MATRIX_row_swizzle4(0, 0,2,3,1, _m00_m02_m03_m01, _11_13_14_12) \ + __CG_MATRIX_row_swizzle4(0, 0,3,1,2, _m00_m03_m01_m02, _11_14_12_13) \ + __CG_MATRIX_row_swizzle4(0, 0,3,2,1, _m00_m03_m02_m01, _11_14_13_12) \ + __CG_MATRIX_row_swizzle4(0, 1,0,2,3, _m01_m00_m02_m03, _12_11_13_14) \ + __CG_MATRIX_row_swizzle4(0, 1,0,3,2, _m01_m00_m03_m02, _12_11_14_13) \ + __CG_MATRIX_row_swizzle4(0, 1,2,0,3, _m01_m02_m00_m03, _12_13_11_14) \ + __CG_MATRIX_row_swizzle4(0, 1,2,3,0, _m01_m02_m03_m00, _12_13_14_11) \ + __CG_MATRIX_row_swizzle4(0, 1,3,0,2, _m01_m03_m00_m02, _12_14_11_13) \ + __CG_MATRIX_row_swizzle4(0, 1,3,2,0, _m01_m03_m02_m00, _12_14_13_11) \ + __CG_MATRIX_row_swizzle4(0, 2,0,1,3, _m02_m00_m01_m03, _13_11_12_14) \ + __CG_MATRIX_row_swizzle4(0, 2,0,3,1, _m02_m00_m03_m01, _13_11_14_12) \ + __CG_MATRIX_row_swizzle4(0, 2,1,0,3, _m02_m01_m00_m03, _13_12_11_14) \ + __CG_MATRIX_row_swizzle4(0, 2,1,3,0, _m02_m01_m03_m00, _13_12_14_11) \ + __CG_MATRIX_row_swizzle4(0, 2,3,0,1, _m02_m03_m00_m01, _13_14_11_12) \ + __CG_MATRIX_row_swizzle4(0, 2,3,1,0, _m02_m03_m01_m00, _13_14_12_11) \ + __CG_MATRIX_row_swizzle4(0, 3,0,1,2, _m03_m00_m01_m02, _14_11_12_13) \ + __CG_MATRIX_row_swizzle4(0, 3,0,2,1, _m03_m00_m02_m01, _14_11_13_12) \ + __CG_MATRIX_row_swizzle4(0, 3,1,0,2, _m03_m01_m00_m02, _14_12_11_13) \ + __CG_MATRIX_row_swizzle4(0, 3,1,2,0, _m03_m01_m02_m00, _14_12_13_11) \ + __CG_MATRIX_row_swizzle4(0, 3,2,0,1, _m03_m02_m00_m01, _14_13_11_12) \ + __CG_MATRIX_row_swizzle4(0, 3,2,1,0, _m03_m02_m01_m00, _14_13_12_11) + +#define __CG_MATRIX_SWIZZLE_2x1(mode) \ + __CG_MATRIX_##mode(1, 0, _m10, _21) \ + __CG_MATRIX_col_swizzle2(0, 0,1, _m00_m10, _11_21) \ + __CG_MATRIX_col_swizzle2(0, 1,0, _m10_m00, _21_11) + +#define __CG_MATRIX_SWIZZLE_2x2(mode) \ + __CG_MATRIX_element(1, 1, _m11, _22) \ + __CG_MATRIX_##mode##_swizzle2(1, 0,1, _m10_m11, _21_22) \ + __CG_MATRIX_row_swizzle2(1, 1,0, _m11_m10, _22_21) \ + __CG_MATRIX_col_swizzle2(1, 0,1, _m01_m11, _12_22) \ + __CG_MATRIX_col_swizzle2(1, 1,0, _m11_m01, _22_12) + +#define __CG_MATRIX_SWIZZLE_2x3(mode) \ + __CG_MATRIX_element(1, 2, _m12, _23) \ + __CG_MATRIX_row_swizzle2(1, 0,2, _m10_m12, _21_23) \ + __CG_MATRIX_row_swizzle2(1, 1,2, _m11_m12, _22_23) \ + __CG_MATRIX_row_swizzle2(1, 2,0, _m12_m10, _23_21) \ + __CG_MATRIX_row_swizzle2(1, 2,1, _m12_m11, _23_22) \ + __CG_MATRIX_##mode##_swizzle3(1, 0,1,2, _m10_m11_m12, _21_22_23) \ + __CG_MATRIX_row_swizzle3(1, 0,2,1, _m10_m12_m11, _21_23_22) \ + __CG_MATRIX_row_swizzle3(1, 1,0,2, _m11_m10_m12, _22_21_23) \ + __CG_MATRIX_row_swizzle3(1, 1,2,0, _m11_m12_m10, _22_23_21) \ + __CG_MATRIX_row_swizzle3(1, 2,0,1, _m12_m10_m11, _23_21_22) \ + __CG_MATRIX_row_swizzle3(1, 2,1,0, _m12_m11_m10, _23_22_21) \ + __CG_MATRIX_col_swizzle2(2, 0,1, _m02_m12, _13_23) \ + __CG_MATRIX_col_swizzle2(2, 1,0, _m12_m02, _23_13) + +#define __CG_MATRIX_SWIZZLE_2x4(mode) \ + __CG_MATRIX_element(1, 3, _m13, _24) \ + __CG_MATRIX_row_swizzle2(1, 0,3, _m10_m13, _21_24) \ + __CG_MATRIX_row_swizzle2(1, 1,3, _m11_m13, _22_24) \ + __CG_MATRIX_row_swizzle2(1, 2,3, _m12_m13, _23_24) \ + __CG_MATRIX_row_swizzle2(1, 3,0, _m13_m10, _24_21) \ + __CG_MATRIX_row_swizzle2(1, 3,1, _m13_m11, _24_22) \ + __CG_MATRIX_row_swizzle2(1, 3,2, _m13_m12, _24_23) \ + __CG_MATRIX_row_swizzle3(1, 0,1,3, _m10_m11_m13, _21_22_24) \ + __CG_MATRIX_row_swizzle3(1, 0,2,3, _m10_m12_m13, _21_23_24) \ + __CG_MATRIX_row_swizzle3(1, 0,3,1, _m10_m13_m11, _21_24_22) \ + __CG_MATRIX_row_swizzle3(1, 0,3,2, _m10_m13_m12, _21_24_23) \ + __CG_MATRIX_row_swizzle3(1, 1,0,3, _m11_m10_m13, _22_21_24) \ + __CG_MATRIX_row_swizzle3(1, 1,2,3, _m11_m12_m13, _22_23_24) \ + __CG_MATRIX_row_swizzle3(1, 1,3,0, _m11_m13_m10, _22_24_21) \ + __CG_MATRIX_row_swizzle3(1, 1,3,2, _m11_m13_m12, _22_24_23) \ + __CG_MATRIX_row_swizzle3(1, 2,0,3, _m12_m10_m13, _23_21_24) \ + __CG_MATRIX_row_swizzle3(1, 2,1,3, _m12_m11_m13, _23_22_24) \ + __CG_MATRIX_row_swizzle3(1, 2,3,0, _m12_m13_m10, _23_24_21) \ + __CG_MATRIX_row_swizzle3(1, 2,3,1, _m12_m13_m11, _23_24_22) \ + __CG_MATRIX_row_swizzle3(1, 3,0,1, _m13_m10_m11, _24_21_22) \ + __CG_MATRIX_row_swizzle3(1, 3,0,2, _m13_m10_m12, _24_21_23) \ + __CG_MATRIX_row_swizzle3(1, 3,1,0, _m13_m11_m10, _24_22_21) \ + __CG_MATRIX_row_swizzle3(1, 3,1,2, _m13_m11_m12, _24_22_23) \ + __CG_MATRIX_row_swizzle3(1, 3,2,0, _m13_m12_m10, _24_23_21) \ + __CG_MATRIX_row_swizzle3(1, 3,2,1, _m13_m12_m11, _24_23_22) \ + __CG_MATRIX_##mode##_swizzle4(1, 0,1,2,3, _m10_m11_m12_m13, _21_22_23_24) \ + __CG_MATRIX_row_swizzle4(1, 0,1,3,2, _m10_m11_m13_m12, _21_22_24_23) \ + __CG_MATRIX_row_swizzle4(1, 0,2,1,3, _m10_m12_m11_m13, _21_23_22_24) \ + __CG_MATRIX_row_swizzle4(1, 0,2,3,1, _m10_m12_m13_m11, _21_23_24_22) \ + __CG_MATRIX_row_swizzle4(1, 0,3,1,2, _m10_m13_m11_m12, _21_24_22_23) \ + __CG_MATRIX_row_swizzle4(1, 0,3,2,1, _m10_m13_m12_m11, _21_24_23_22) \ + __CG_MATRIX_row_swizzle4(1, 1,0,2,3, _m11_m10_m12_m13, _22_21_23_24) \ + __CG_MATRIX_row_swizzle4(1, 1,0,3,2, _m11_m10_m13_m12, _22_21_24_23) \ + __CG_MATRIX_row_swizzle4(1, 1,2,0,3, _m11_m12_m10_m13, _22_23_21_24) \ + __CG_MATRIX_row_swizzle4(1, 1,2,3,0, _m11_m12_m13_m10, _22_23_24_21) \ + __CG_MATRIX_row_swizzle4(1, 1,3,0,2, _m11_m13_m10_m12, _22_24_21_23) \ + __CG_MATRIX_row_swizzle4(1, 1,3,2,0, _m11_m13_m12_m10, _22_24_23_21) \ + __CG_MATRIX_row_swizzle4(1, 2,0,1,3, _m12_m10_m11_m13, _23_21_22_24) \ + __CG_MATRIX_row_swizzle4(1, 2,0,3,1, _m12_m10_m13_m11, _23_21_24_22) \ + __CG_MATRIX_row_swizzle4(1, 2,1,0,3, _m12_m11_m10_m13, _23_22_21_24) \ + __CG_MATRIX_row_swizzle4(1, 2,1,3,0, _m12_m11_m13_m10, _23_22_24_21) \ + __CG_MATRIX_row_swizzle4(1, 2,3,0,1, _m12_m13_m10_m11, _23_24_21_22) \ + __CG_MATRIX_row_swizzle4(1, 2,3,1,0, _m12_m13_m11_m10, _23_24_22_21) \ + __CG_MATRIX_row_swizzle4(1, 3,0,1,2, _m13_m10_m11_m12, _24_21_22_23) \ + __CG_MATRIX_row_swizzle4(1, 3,0,2,1, _m13_m10_m12_m11, _24_21_23_22) \ + __CG_MATRIX_row_swizzle4(1, 3,1,0,2, _m13_m11_m10_m12, _24_22_21_23) \ + __CG_MATRIX_row_swizzle4(1, 3,1,2,0, _m13_m11_m12_m10, _24_22_23_21) \ + __CG_MATRIX_row_swizzle4(1, 3,2,0,1, _m13_m12_m10_m11, _24_23_21_22) \ + __CG_MATRIX_row_swizzle4(1, 3,2,1,0, _m13_m12_m11_m10, _24_23_22_21) \ + __CG_MATRIX_col_swizzle2(3, 0,1, _m03_m13, _14_24) \ + __CG_MATRIX_col_swizzle2(3, 1,0, _m13_m03, _24_14) + +#define __CG_MATRIX_SWIZZLE_3x1(mode) \ + __CG_MATRIX_##mode(2, 0, _m20, _31) \ + __CG_MATRIX_col_swizzle2(0, 0,2, _m00_m20, _11_31) \ + __CG_MATRIX_col_swizzle2(0, 1,2, _m10_m20, _21_31) \ + __CG_MATRIX_col_swizzle2(0, 2,0, _m20_m00, _31_11) \ + __CG_MATRIX_col_swizzle2(0, 2,1, _m20_m10, _31_21) \ + __CG_MATRIX_col_swizzle3(0, 0,1,2, _m00_m10_m20, _11_21_31) \ + __CG_MATRIX_col_swizzle3(0, 0,2,1, _m00_m20_m10, _11_31_21) \ + __CG_MATRIX_col_swizzle3(0, 1,0,2, _m10_m00_m20, _21_11_31) \ + __CG_MATRIX_col_swizzle3(0, 1,2,0, _m10_m20_m00, _21_31_11) \ + __CG_MATRIX_col_swizzle3(0, 2,0,1, _m20_m00_m10, _31_11_21) \ + __CG_MATRIX_col_swizzle3(0, 2,1,0, _m20_m10_m00, _31_21_11) + +#define __CG_MATRIX_SWIZZLE_3x2(mode) \ + __CG_MATRIX_element(2, 1, _m21, _32) \ + __CG_MATRIX_##mode##_swizzle2(2, 0,1, _m20_m21, _31_32) \ + __CG_MATRIX_row_swizzle2(2, 1,0, _m21_m20, _32_31) \ + __CG_MATRIX_col_swizzle2(1, 0,2, _m01_m21, _12_32) \ + __CG_MATRIX_col_swizzle2(1, 1,2, _m11_m21, _22_32) \ + __CG_MATRIX_col_swizzle2(1, 2,0, _m21_m01, _32_12) \ + __CG_MATRIX_col_swizzle2(1, 2,1, _m21_m11, _32_22) \ + __CG_MATRIX_col_swizzle3(1, 0,1,2, _m01_m11_m21, _12_22_32) \ + __CG_MATRIX_col_swizzle3(1, 0,2,1, _m01_m21_m11, _12_32_22) \ + __CG_MATRIX_col_swizzle3(1, 1,0,2, _m11_m01_m21, _22_12_32) \ + __CG_MATRIX_col_swizzle3(1, 1,2,0, _m11_m21_m01, _22_32_12) \ + __CG_MATRIX_col_swizzle3(1, 2,0,1, _m21_m01_m11, _32_12_22) \ + __CG_MATRIX_col_swizzle3(1, 2,1,0, _m21_m11_m01, _32_22_12) + +#define __CG_MATRIX_SWIZZLE_3x3(mode) \ + __CG_MATRIX_element(2, 2, _m22, _33) \ + __CG_MATRIX_row_swizzle2(2, 0,2, _m20_m22, _31_33) \ + __CG_MATRIX_row_swizzle2(2, 1,2, _m21_m22, _32_33) \ + __CG_MATRIX_row_swizzle2(2, 2,0, _m22_m20, _33_31) \ + __CG_MATRIX_row_swizzle2(2, 2,1, _m22_m21, _33_32) \ + __CG_MATRIX_##mode##_swizzle3(2, 0,1,2, _m20_m21_m22, _31_32_33) \ + __CG_MATRIX_row_swizzle3(2, 0,2,1, _m20_m22_m21, _31_33_32) \ + __CG_MATRIX_row_swizzle3(2, 1,0,2, _m21_m20_m22, _32_31_33) \ + __CG_MATRIX_row_swizzle3(2, 1,2,0, _m21_m22_m20, _32_33_31) \ + __CG_MATRIX_row_swizzle3(2, 2,0,1, _m22_m20_m21, _33_31_32) \ + __CG_MATRIX_row_swizzle3(2, 2,1,0, _m22_m21_m20, _33_32_31) \ + __CG_MATRIX_col_swizzle2(2, 0,2, _m02_m22, _13_33) \ + __CG_MATRIX_col_swizzle2(2, 1,2, _m12_m22, _23_33) \ + __CG_MATRIX_col_swizzle2(2, 2,0, _m22_m02, _33_13) \ + __CG_MATRIX_col_swizzle2(2, 2,1, _m22_m12, _33_23) \ + __CG_MATRIX_col_swizzle3(2, 0,1,2, _m02_m12_m22, _13_23_33) \ + __CG_MATRIX_col_swizzle3(2, 0,2,1, _m02_m22_m12, _13_33_23) \ + __CG_MATRIX_col_swizzle3(2, 1,0,2, _m12_m02_m22, _23_13_33) \ + __CG_MATRIX_col_swizzle3(2, 1,2,0, _m12_m22_m02, _23_33_13) \ + __CG_MATRIX_col_swizzle3(2, 2,0,1, _m22_m02_m12, _33_13_23) \ + __CG_MATRIX_col_swizzle3(2, 2,1,0, _m22_m12_m02, _33_23_13) + +#define __CG_MATRIX_SWIZZLE_3x4(mode) \ + __CG_MATRIX_element(2, 3, _m23, _34) \ + __CG_MATRIX_row_swizzle2(2, 0,3, _m20_m23, _31_34) \ + __CG_MATRIX_row_swizzle2(2, 1,3, _m21_m23, _32_34) \ + __CG_MATRIX_row_swizzle2(2, 2,3, _m22_m23, _33_34) \ + __CG_MATRIX_row_swizzle2(2, 3,0, _m23_m20, _34_31) \ + __CG_MATRIX_row_swizzle2(2, 3,1, _m23_m21, _34_32) \ + __CG_MATRIX_row_swizzle2(2, 3,2, _m23_m22, _34_33) \ + __CG_MATRIX_row_swizzle3(2, 0,1,3, _m20_m21_m23, _31_32_34) \ + __CG_MATRIX_row_swizzle3(2, 0,2,3, _m20_m22_m23, _31_33_34) \ + __CG_MATRIX_row_swizzle3(2, 0,3,1, _m20_m23_m21, _31_34_32) \ + __CG_MATRIX_row_swizzle3(2, 0,3,2, _m20_m23_m22, _31_34_33) \ + __CG_MATRIX_row_swizzle3(2, 1,0,3, _m21_m20_m23, _32_31_34) \ + __CG_MATRIX_row_swizzle3(2, 1,2,3, _m21_m22_m23, _32_33_34) \ + __CG_MATRIX_row_swizzle3(2, 1,3,0, _m21_m23_m20, _32_34_31) \ + __CG_MATRIX_row_swizzle3(2, 1,3,2, _m21_m23_m22, _32_34_33) \ + __CG_MATRIX_row_swizzle3(2, 2,0,3, _m22_m20_m23, _33_31_34) \ + __CG_MATRIX_row_swizzle3(2, 2,1,3, _m22_m21_m23, _33_32_34) \ + __CG_MATRIX_row_swizzle3(2, 2,3,0, _m22_m23_m20, _33_34_31) \ + __CG_MATRIX_row_swizzle3(2, 2,3,1, _m22_m23_m21, _33_34_32) \ + __CG_MATRIX_row_swizzle3(2, 3,0,1, _m23_m20_m21, _34_31_32) \ + __CG_MATRIX_row_swizzle3(2, 3,0,2, _m23_m20_m22, _34_31_33) \ + __CG_MATRIX_row_swizzle3(2, 3,1,0, _m23_m21_m20, _34_32_31) \ + __CG_MATRIX_row_swizzle3(2, 3,1,2, _m23_m21_m22, _34_32_33) \ + __CG_MATRIX_row_swizzle3(2, 3,2,0, _m23_m22_m20, _34_33_31) \ + __CG_MATRIX_row_swizzle3(2, 3,2,1, _m23_m22_m21, _34_33_32) \ + __CG_MATRIX_##mode##_swizzle4(2, 0,1,2,3, _m20_m21_m22_m23, _31_32_33_34) \ + __CG_MATRIX_row_swizzle4(2, 0,1,3,2, _m20_m21_m23_m22, _31_32_34_33) \ + __CG_MATRIX_row_swizzle4(2, 0,2,1,3, _m20_m22_m21_m23, _31_33_32_34) \ + __CG_MATRIX_row_swizzle4(2, 0,2,3,1, _m20_m22_m23_m21, _31_33_34_32) \ + __CG_MATRIX_row_swizzle4(2, 0,3,1,2, _m20_m23_m21_m22, _31_34_32_33) \ + __CG_MATRIX_row_swizzle4(2, 0,3,2,1, _m20_m23_m22_m21, _31_34_33_32) \ + __CG_MATRIX_row_swizzle4(2, 1,0,2,3, _m21_m20_m22_m23, _32_31_33_34) \ + __CG_MATRIX_row_swizzle4(2, 1,0,3,2, _m21_m20_m23_m22, _32_31_34_33) \ + __CG_MATRIX_row_swizzle4(2, 1,2,0,3, _m21_m22_m20_m23, _32_33_31_34) \ + __CG_MATRIX_row_swizzle4(2, 1,2,3,0, _m21_m22_m23_m20, _32_33_34_31) \ + __CG_MATRIX_row_swizzle4(2, 1,3,0,2, _m21_m23_m20_m22, _32_34_31_33) \ + __CG_MATRIX_row_swizzle4(2, 1,3,2,0, _m21_m23_m22_m20, _32_34_33_31) \ + __CG_MATRIX_row_swizzle4(2, 2,0,1,3, _m22_m20_m21_m23, _33_31_32_34) \ + __CG_MATRIX_row_swizzle4(2, 2,0,3,1, _m22_m20_m23_m21, _33_31_34_32) \ + __CG_MATRIX_row_swizzle4(2, 2,1,0,3, _m22_m21_m20_m23, _33_32_31_34) \ + __CG_MATRIX_row_swizzle4(2, 2,1,3,0, _m22_m21_m23_m20, _33_32_34_31) \ + __CG_MATRIX_row_swizzle4(2, 2,3,0,1, _m22_m23_m20_m21, _33_34_31_32) \ + __CG_MATRIX_row_swizzle4(2, 2,3,1,0, _m22_m23_m21_m20, _33_34_32_31) \ + __CG_MATRIX_row_swizzle4(2, 3,0,1,2, _m23_m20_m21_m22, _34_31_32_33) \ + __CG_MATRIX_row_swizzle4(2, 3,0,2,1, _m23_m20_m22_m21, _34_31_33_32) \ + __CG_MATRIX_row_swizzle4(2, 3,1,0,2, _m23_m21_m20_m22, _34_32_31_33) \ + __CG_MATRIX_row_swizzle4(2, 3,1,2,0, _m23_m21_m22_m20, _34_32_33_31) \ + __CG_MATRIX_row_swizzle4(2, 3,2,0,1, _m23_m22_m20_m21, _34_33_31_32) \ + __CG_MATRIX_row_swizzle4(2, 3,2,1,0, _m23_m22_m21_m20, _34_33_32_31) \ + __CG_MATRIX_col_swizzle2(3, 0,2, _m03_m23, _14_34) \ + __CG_MATRIX_col_swizzle2(3, 1,2, _m13_m23, _24_34) \ + __CG_MATRIX_col_swizzle2(3, 2,0, _m23_m03, _34_14) \ + __CG_MATRIX_col_swizzle2(3, 2,1, _m23_m13, _34_24) \ + __CG_MATRIX_col_swizzle3(3, 0,1,2, _m03_m13_m23, _14_24_34) \ + __CG_MATRIX_col_swizzle3(3, 0,2,1, _m03_m23_m13, _14_34_24) \ + __CG_MATRIX_col_swizzle3(3, 1,0,2, _m13_m03_m23, _24_14_34) \ + __CG_MATRIX_col_swizzle3(3, 1,2,0, _m13_m23_m03, _24_34_14) \ + __CG_MATRIX_col_swizzle3(3, 2,0,1, _m23_m03_m13, _34_14_24) \ + __CG_MATRIX_col_swizzle3(3, 2,1,0, _m23_m13_m03, _34_24_14) + +#define __CG_MATRIX_SWIZZLE_4x1(mode) \ + __CG_MATRIX_##mode(3, 0, _m30, _41) \ + __CG_MATRIX_col_swizzle2(0, 0,3, _m00_m30, _11_41) \ + __CG_MATRIX_col_swizzle2(0, 1,3, _m10_m30, _21_41) \ + __CG_MATRIX_col_swizzle2(0, 2,3, _m20_m30, _31_41) \ + __CG_MATRIX_col_swizzle2(0, 3,0, _m30_m00, _41_11) \ + __CG_MATRIX_col_swizzle2(0, 3,1, _m30_m10, _41_21) \ + __CG_MATRIX_col_swizzle2(0, 3,2, _m30_m20, _41_31) \ + __CG_MATRIX_col_swizzle3(0, 0,1,3, _m00_m10_m30, _11_21_41) \ + __CG_MATRIX_col_swizzle3(0, 0,2,3, _m00_m20_m30, _11_31_41) \ + __CG_MATRIX_col_swizzle3(0, 0,3,1, _m00_m30_m10, _11_41_21) \ + __CG_MATRIX_col_swizzle3(0, 0,3,2, _m00_m30_m20, _11_41_31) \ + __CG_MATRIX_col_swizzle3(0, 1,0,3, _m10_m00_m30, _21_11_41) \ + __CG_MATRIX_col_swizzle3(0, 1,2,3, _m10_m20_m30, _21_31_41) \ + __CG_MATRIX_col_swizzle3(0, 1,3,0, _m10_m30_m00, _21_41_11) \ + __CG_MATRIX_col_swizzle3(0, 1,3,2, _m10_m30_m20, _21_41_31) \ + __CG_MATRIX_col_swizzle3(0, 2,0,3, _m20_m00_m30, _31_11_41) \ + __CG_MATRIX_col_swizzle3(0, 2,1,3, _m20_m10_m30, _31_21_41) \ + __CG_MATRIX_col_swizzle3(0, 2,3,0, _m20_m30_m00, _31_41_11) \ + __CG_MATRIX_col_swizzle3(0, 2,3,1, _m20_m30_m10, _31_41_21) \ + __CG_MATRIX_col_swizzle3(0, 3,0,1, _m30_m00_m10, _41_11_21) \ + __CG_MATRIX_col_swizzle3(0, 3,0,2, _m30_m00_m20, _41_11_31) \ + __CG_MATRIX_col_swizzle3(0, 3,1,0, _m30_m10_m00, _41_21_11) \ + __CG_MATRIX_col_swizzle3(0, 3,1,2, _m30_m10_m20, _41_21_31) \ + __CG_MATRIX_col_swizzle3(0, 3,2,0, _m30_m20_m00, _41_31_11) \ + __CG_MATRIX_col_swizzle3(0, 3,2,1, _m30_m20_m10, _41_31_21) \ + __CG_MATRIX_col_swizzle4(0, 0,1,2,3, _m00_m10_m20_m30, _11_21_31_41) \ + __CG_MATRIX_col_swizzle4(0, 0,1,3,2, _m00_m10_m30_m20, _11_21_41_31) \ + __CG_MATRIX_col_swizzle4(0, 0,2,1,3, _m00_m20_m10_m30, _11_31_21_41) \ + __CG_MATRIX_col_swizzle4(0, 0,2,3,1, _m00_m20_m30_m10, _11_31_41_21) \ + __CG_MATRIX_col_swizzle4(0, 0,3,1,2, _m00_m30_m10_m20, _11_41_21_31) \ + __CG_MATRIX_col_swizzle4(0, 0,3,2,1, _m00_m30_m20_m10, _11_41_31_21) \ + __CG_MATRIX_col_swizzle4(0, 1,0,2,3, _m10_m00_m20_m30, _21_11_31_41) \ + __CG_MATRIX_col_swizzle4(0, 1,0,3,2, _m10_m00_m30_m20, _21_11_41_31) \ + __CG_MATRIX_col_swizzle4(0, 1,2,0,3, _m10_m20_m00_m30, _21_31_11_41) \ + __CG_MATRIX_col_swizzle4(0, 1,2,3,0, _m10_m20_m30_m00, _21_31_41_11) \ + __CG_MATRIX_col_swizzle4(0, 1,3,0,2, _m10_m30_m00_m20, _21_41_11_31) \ + __CG_MATRIX_col_swizzle4(0, 1,3,2,0, _m10_m30_m20_m00, _21_41_31_11) \ + __CG_MATRIX_col_swizzle4(0, 2,0,1,3, _m20_m00_m10_m30, _31_11_21_41) \ + __CG_MATRIX_col_swizzle4(0, 2,0,3,1, _m20_m00_m30_m10, _31_11_41_21) \ + __CG_MATRIX_col_swizzle4(0, 2,1,0,3, _m20_m10_m00_m30, _31_21_11_41) \ + __CG_MATRIX_col_swizzle4(0, 2,1,3,0, _m20_m10_m30_m00, _31_21_41_11) \ + __CG_MATRIX_col_swizzle4(0, 2,3,0,1, _m20_m30_m00_m10, _31_41_11_21) \ + __CG_MATRIX_col_swizzle4(0, 2,3,1,0, _m20_m30_m10_m00, _31_41_21_11) \ + __CG_MATRIX_col_swizzle4(0, 3,0,1,2, _m30_m00_m10_m20, _41_11_21_31) \ + __CG_MATRIX_col_swizzle4(0, 3,0,2,1, _m30_m00_m20_m10, _41_11_31_21) \ + __CG_MATRIX_col_swizzle4(0, 3,1,0,2, _m30_m10_m00_m20, _41_21_11_31) \ + __CG_MATRIX_col_swizzle4(0, 3,1,2,0, _m30_m10_m20_m00, _41_21_31_11) \ + __CG_MATRIX_col_swizzle4(0, 3,2,0,1, _m30_m20_m00_m10, _41_31_11_21) \ + __CG_MATRIX_col_swizzle4(0, 3,2,1,0, _m30_m20_m10_m00, _41_31_21_11) + +#define __CG_MATRIX_SWIZZLE_4x2(mode) \ + __CG_MATRIX_element(3, 1, _m31, _42) \ + __CG_MATRIX_##mode##_swizzle2(3, 0,1, _m30_m31, _41_42) \ + __CG_MATRIX_row_swizzle2(3, 1,0, _m31_m30, _42_41) \ + __CG_MATRIX_col_swizzle2(1, 0,3, _m01_m31, _12_42) \ + __CG_MATRIX_col_swizzle2(1, 1,3, _m11_m31, _22_42) \ + __CG_MATRIX_col_swizzle2(1, 2,3, _m21_m31, _32_42) \ + __CG_MATRIX_col_swizzle2(1, 3,0, _m31_m01, _42_12) \ + __CG_MATRIX_col_swizzle2(1, 3,1, _m31_m11, _42_22) \ + __CG_MATRIX_col_swizzle2(1, 3,2, _m31_m21, _42_32) \ + __CG_MATRIX_col_swizzle3(1, 0,1,3, _m01_m11_m31, _12_22_42) \ + __CG_MATRIX_col_swizzle3(1, 0,2,3, _m01_m21_m31, _12_32_42) \ + __CG_MATRIX_col_swizzle3(1, 0,3,1, _m01_m31_m11, _12_42_22) \ + __CG_MATRIX_col_swizzle3(1, 0,3,2, _m01_m31_m21, _12_42_32) \ + __CG_MATRIX_col_swizzle3(1, 1,0,3, _m11_m01_m31, _22_12_42) \ + __CG_MATRIX_col_swizzle3(1, 1,2,3, _m11_m21_m31, _22_32_42) \ + __CG_MATRIX_col_swizzle3(1, 1,3,0, _m11_m31_m01, _22_42_12) \ + __CG_MATRIX_col_swizzle3(1, 1,3,2, _m11_m31_m21, _22_42_32) \ + __CG_MATRIX_col_swizzle3(1, 2,0,3, _m21_m01_m31, _32_12_42) \ + __CG_MATRIX_col_swizzle3(1, 2,1,3, _m21_m11_m31, _32_22_42) \ + __CG_MATRIX_col_swizzle3(1, 2,3,0, _m21_m31_m01, _32_42_12) \ + __CG_MATRIX_col_swizzle3(1, 2,3,1, _m21_m31_m11, _32_42_22) \ + __CG_MATRIX_col_swizzle3(1, 3,0,1, _m31_m01_m11, _42_12_22) \ + __CG_MATRIX_col_swizzle3(1, 3,0,2, _m31_m01_m21, _42_12_32) \ + __CG_MATRIX_col_swizzle3(1, 3,1,0, _m31_m11_m01, _42_22_12) \ + __CG_MATRIX_col_swizzle3(1, 3,1,2, _m31_m11_m21, _42_22_32) \ + __CG_MATRIX_col_swizzle3(1, 3,2,0, _m31_m21_m01, _42_32_12) \ + __CG_MATRIX_col_swizzle3(1, 3,2,1, _m31_m21_m11, _42_32_22) \ + __CG_MATRIX_col_swizzle4(1, 0,1,2,3, _m01_m11_m21_m31, _12_22_32_42) \ + __CG_MATRIX_col_swizzle4(1, 0,1,3,2, _m01_m11_m31_m21, _12_22_42_32) \ + __CG_MATRIX_col_swizzle4(1, 0,2,1,3, _m01_m21_m11_m31, _12_32_22_42) \ + __CG_MATRIX_col_swizzle4(1, 0,2,3,1, _m01_m21_m31_m11, _12_32_42_22) \ + __CG_MATRIX_col_swizzle4(1, 0,3,1,2, _m01_m31_m11_m21, _12_42_22_32) \ + __CG_MATRIX_col_swizzle4(1, 0,3,2,1, _m01_m31_m21_m11, _12_42_32_22) \ + __CG_MATRIX_col_swizzle4(1, 1,0,2,3, _m11_m01_m21_m31, _22_12_32_42) \ + __CG_MATRIX_col_swizzle4(1, 1,0,3,2, _m11_m01_m31_m21, _22_12_42_32) \ + __CG_MATRIX_col_swizzle4(1, 1,2,0,3, _m11_m21_m01_m31, _22_32_12_42) \ + __CG_MATRIX_col_swizzle4(1, 1,2,3,0, _m11_m21_m31_m01, _22_32_42_12) \ + __CG_MATRIX_col_swizzle4(1, 1,3,0,2, _m11_m31_m01_m21, _22_42_12_32) \ + __CG_MATRIX_col_swizzle4(1, 1,3,2,0, _m11_m31_m21_m01, _22_42_32_12) \ + __CG_MATRIX_col_swizzle4(1, 2,0,1,3, _m21_m01_m11_m31, _32_12_22_42) \ + __CG_MATRIX_col_swizzle4(1, 2,0,3,1, _m21_m01_m31_m11, _32_12_42_22) \ + __CG_MATRIX_col_swizzle4(1, 2,1,0,3, _m21_m11_m01_m31, _32_22_12_42) \ + __CG_MATRIX_col_swizzle4(1, 2,1,3,0, _m21_m11_m31_m01, _32_22_42_12) \ + __CG_MATRIX_col_swizzle4(1, 2,3,0,1, _m21_m31_m01_m11, _32_42_12_22) \ + __CG_MATRIX_col_swizzle4(1, 2,3,1,0, _m21_m31_m11_m01, _32_42_22_12) \ + __CG_MATRIX_col_swizzle4(1, 3,0,1,2, _m31_m01_m11_m21, _42_12_22_32) \ + __CG_MATRIX_col_swizzle4(1, 3,0,2,1, _m31_m01_m21_m11, _42_12_32_22) \ + __CG_MATRIX_col_swizzle4(1, 3,1,0,2, _m31_m11_m01_m21, _42_22_12_32) \ + __CG_MATRIX_col_swizzle4(1, 3,1,2,0, _m31_m11_m21_m01, _42_22_32_12) \ + __CG_MATRIX_col_swizzle4(1, 3,2,0,1, _m31_m21_m01_m11, _42_32_12_22) \ + __CG_MATRIX_col_swizzle4(1, 3,2,1,0, _m31_m21_m11_m01, _42_32_22_12) + +#define __CG_MATRIX_SWIZZLE_4x3(mode) \ + __CG_MATRIX_element(3, 2, _m32, _43) \ + __CG_MATRIX_row_swizzle2(3, 0,2, _m30_m32, _41_43) \ + __CG_MATRIX_row_swizzle2(3, 1,2, _m31_m32, _42_43) \ + __CG_MATRIX_row_swizzle2(3, 2,0, _m32_m30, _43_41) \ + __CG_MATRIX_row_swizzle2(3, 2,1, _m32_m31, _43_42) \ + __CG_MATRIX_##mode##_swizzle3(3, 0,1,2, _m30_m31_m32, _41_42_43) \ + __CG_MATRIX_row_swizzle3(3, 0,2,1, _m30_m32_m31, _41_43_42) \ + __CG_MATRIX_row_swizzle3(3, 1,0,2, _m31_m30_m32, _42_41_43) \ + __CG_MATRIX_row_swizzle3(3, 1,2,0, _m31_m32_m30, _42_43_41) \ + __CG_MATRIX_row_swizzle3(3, 2,0,1, _m32_m30_m31, _43_41_42) \ + __CG_MATRIX_row_swizzle3(3, 2,1,0, _m32_m31_m30, _43_42_41) \ + __CG_MATRIX_col_swizzle2(2, 0,3, _m02_m32, _13_43) \ + __CG_MATRIX_col_swizzle2(2, 1,3, _m12_m32, _23_43) \ + __CG_MATRIX_col_swizzle2(2, 2,3, _m22_m32, _33_43) \ + __CG_MATRIX_col_swizzle2(2, 3,0, _m32_m02, _43_13) \ + __CG_MATRIX_col_swizzle2(2, 3,1, _m32_m12, _43_23) \ + __CG_MATRIX_col_swizzle2(2, 3,2, _m32_m22, _43_33) \ + __CG_MATRIX_col_swizzle3(2, 0,1,3, _m02_m12_m32, _13_23_43) \ + __CG_MATRIX_col_swizzle3(2, 0,2,3, _m02_m22_m32, _13_33_43) \ + __CG_MATRIX_col_swizzle3(2, 0,3,1, _m02_m32_m12, _13_43_23) \ + __CG_MATRIX_col_swizzle3(2, 0,3,2, _m02_m32_m22, _13_43_33) \ + __CG_MATRIX_col_swizzle3(2, 1,0,3, _m12_m02_m32, _23_13_43) \ + __CG_MATRIX_col_swizzle3(2, 1,2,3, _m12_m22_m32, _23_33_43) \ + __CG_MATRIX_col_swizzle3(2, 1,3,0, _m12_m32_m02, _23_43_13) \ + __CG_MATRIX_col_swizzle3(2, 1,3,2, _m12_m32_m22, _23_43_33) \ + __CG_MATRIX_col_swizzle3(2, 2,0,3, _m22_m02_m32, _33_13_43) \ + __CG_MATRIX_col_swizzle3(2, 2,1,3, _m22_m12_m32, _33_23_43) \ + __CG_MATRIX_col_swizzle3(2, 2,3,0, _m22_m32_m02, _33_43_13) \ + __CG_MATRIX_col_swizzle3(2, 2,3,1, _m22_m32_m12, _33_43_23) \ + __CG_MATRIX_col_swizzle3(2, 3,0,1, _m32_m02_m12, _43_13_23) \ + __CG_MATRIX_col_swizzle3(2, 3,0,2, _m32_m02_m22, _43_13_33) \ + __CG_MATRIX_col_swizzle3(2, 3,1,0, _m32_m12_m02, _43_23_13) \ + __CG_MATRIX_col_swizzle3(2, 3,1,2, _m32_m12_m22, _43_23_33) \ + __CG_MATRIX_col_swizzle3(2, 3,2,0, _m32_m22_m02, _43_33_13) \ + __CG_MATRIX_col_swizzle3(2, 3,2,1, _m32_m22_m12, _43_33_23) \ + __CG_MATRIX_col_swizzle4(2, 0,1,2,3, _m02_m12_m22_m32, _13_23_33_43) \ + __CG_MATRIX_col_swizzle4(2, 0,1,3,2, _m02_m12_m32_m22, _13_23_43_33) \ + __CG_MATRIX_col_swizzle4(2, 0,2,1,3, _m02_m22_m12_m32, _13_33_23_43) \ + __CG_MATRIX_col_swizzle4(2, 0,2,3,1, _m02_m22_m32_m12, _13_33_43_23) \ + __CG_MATRIX_col_swizzle4(2, 0,3,1,2, _m02_m32_m12_m22, _13_43_23_33) \ + __CG_MATRIX_col_swizzle4(2, 0,3,2,1, _m02_m32_m22_m12, _13_43_33_23) \ + __CG_MATRIX_col_swizzle4(2, 1,0,2,3, _m12_m02_m22_m32, _23_13_33_43) \ + __CG_MATRIX_col_swizzle4(2, 1,0,3,2, _m12_m02_m32_m22, _23_13_43_33) \ + __CG_MATRIX_col_swizzle4(2, 1,2,0,3, _m12_m22_m02_m32, _23_33_13_43) \ + __CG_MATRIX_col_swizzle4(2, 1,2,3,0, _m12_m22_m32_m02, _23_33_43_13) \ + __CG_MATRIX_col_swizzle4(2, 1,3,0,2, _m12_m32_m02_m22, _23_43_13_33) \ + __CG_MATRIX_col_swizzle4(2, 1,3,2,0, _m12_m32_m22_m02, _23_43_33_13) \ + __CG_MATRIX_col_swizzle4(2, 2,0,1,3, _m22_m02_m12_m32, _33_13_23_43) \ + __CG_MATRIX_col_swizzle4(2, 2,0,3,1, _m22_m02_m32_m12, _33_13_43_23) \ + __CG_MATRIX_col_swizzle4(2, 2,1,0,3, _m22_m12_m02_m32, _33_23_13_43) \ + __CG_MATRIX_col_swizzle4(2, 2,1,3,0, _m22_m12_m32_m02, _33_23_43_13) \ + __CG_MATRIX_col_swizzle4(2, 2,3,0,1, _m22_m32_m02_m12, _33_43_13_23) \ + __CG_MATRIX_col_swizzle4(2, 2,3,1,0, _m22_m32_m12_m02, _33_43_23_13) \ + __CG_MATRIX_col_swizzle4(2, 3,0,1,2, _m32_m02_m12_m22, _43_13_23_33) \ + __CG_MATRIX_col_swizzle4(2, 3,0,2,1, _m32_m02_m22_m12, _43_13_33_23) \ + __CG_MATRIX_col_swizzle4(2, 3,1,0,2, _m32_m12_m02_m22, _43_23_13_33) \ + __CG_MATRIX_col_swizzle4(2, 3,1,2,0, _m32_m12_m22_m02, _43_23_33_13) \ + __CG_MATRIX_col_swizzle4(2, 3,2,0,1, _m32_m22_m02_m12, _43_33_13_23) \ + __CG_MATRIX_col_swizzle4(2, 3,2,1,0, _m32_m22_m12_m02, _43_33_23_13) + +#define __CG_MATRIX_SWIZZLE_4x4(mode) \ + __CG_MATRIX_element(3, 3, _m33, _44) \ + __CG_MATRIX_row_swizzle2(3, 0,3, _m30_m33, _41_44) \ + __CG_MATRIX_row_swizzle2(3, 1,3, _m31_m33, _42_44) \ + __CG_MATRIX_row_swizzle2(3, 2,3, _m32_m33, _43_44) \ + __CG_MATRIX_row_swizzle2(3, 3,0, _m33_m30, _44_41) \ + __CG_MATRIX_row_swizzle2(3, 3,1, _m33_m31, _44_42) \ + __CG_MATRIX_row_swizzle2(3, 3,2, _m33_m32, _44_43) \ + __CG_MATRIX_row_swizzle3(3, 0,1,3, _m30_m31_m33, _41_42_44) \ + __CG_MATRIX_row_swizzle3(3, 0,2,3, _m30_m32_m33, _41_43_44) \ + __CG_MATRIX_row_swizzle3(3, 0,3,1, _m30_m33_m31, _41_44_42) \ + __CG_MATRIX_row_swizzle3(3, 0,3,2, _m30_m33_m32, _41_44_43) \ + __CG_MATRIX_row_swizzle3(3, 1,0,3, _m31_m30_m33, _42_41_44) \ + __CG_MATRIX_row_swizzle3(3, 1,2,3, _m31_m32_m33, _42_43_44) \ + __CG_MATRIX_row_swizzle3(3, 1,3,0, _m31_m33_m30, _42_44_41) \ + __CG_MATRIX_row_swizzle3(3, 1,3,2, _m31_m33_m32, _42_44_43) \ + __CG_MATRIX_row_swizzle3(3, 2,0,3, _m32_m30_m33, _43_41_44) \ + __CG_MATRIX_row_swizzle3(3, 2,1,3, _m32_m31_m33, _43_42_44) \ + __CG_MATRIX_row_swizzle3(3, 2,3,0, _m32_m33_m30, _43_44_41) \ + __CG_MATRIX_row_swizzle3(3, 2,3,1, _m32_m33_m31, _43_44_42) \ + __CG_MATRIX_row_swizzle3(3, 3,0,1, _m33_m30_m31, _44_41_42) \ + __CG_MATRIX_row_swizzle3(3, 3,0,2, _m33_m30_m32, _44_41_43) \ + __CG_MATRIX_row_swizzle3(3, 3,1,0, _m33_m31_m30, _44_42_41) \ + __CG_MATRIX_row_swizzle3(3, 3,1,2, _m33_m31_m32, _44_42_43) \ + __CG_MATRIX_row_swizzle3(3, 3,2,0, _m33_m32_m30, _44_43_41) \ + __CG_MATRIX_row_swizzle3(3, 3,2,1, _m33_m32_m31, _44_43_42) \ + __CG_MATRIX_##mode##_swizzle4(3, 0,1,2,3, _m30_m31_m32_m33, _41_42_43_44) \ + __CG_MATRIX_row_swizzle4(3, 0,1,3,2, _m30_m31_m33_m32, _41_42_44_43) \ + __CG_MATRIX_row_swizzle4(3, 0,2,1,3, _m30_m32_m31_m33, _41_43_42_44) \ + __CG_MATRIX_row_swizzle4(3, 0,2,3,1, _m30_m32_m33_m31, _41_43_44_42) \ + __CG_MATRIX_row_swizzle4(3, 0,3,1,2, _m30_m33_m31_m32, _41_44_42_43) \ + __CG_MATRIX_row_swizzle4(3, 0,3,2,1, _m30_m33_m32_m31, _41_44_43_42) \ + __CG_MATRIX_row_swizzle4(3, 1,0,2,3, _m31_m30_m32_m33, _42_41_43_44) \ + __CG_MATRIX_row_swizzle4(3, 1,0,3,2, _m31_m30_m33_m32, _42_41_44_43) \ + __CG_MATRIX_row_swizzle4(3, 1,2,0,3, _m31_m32_m30_m33, _42_43_41_44) \ + __CG_MATRIX_row_swizzle4(3, 1,2,3,0, _m31_m32_m33_m30, _42_43_44_41) \ + __CG_MATRIX_row_swizzle4(3, 1,3,0,2, _m31_m33_m30_m32, _42_44_41_43) \ + __CG_MATRIX_row_swizzle4(3, 1,3,2,0, _m31_m33_m32_m30, _42_44_43_41) \ + __CG_MATRIX_row_swizzle4(3, 2,0,1,3, _m32_m30_m31_m33, _43_41_42_44) \ + __CG_MATRIX_row_swizzle4(3, 2,0,3,1, _m32_m30_m33_m31, _43_41_44_42) \ + __CG_MATRIX_row_swizzle4(3, 2,1,0,3, _m32_m31_m30_m33, _43_42_41_44) \ + __CG_MATRIX_row_swizzle4(3, 2,1,3,0, _m32_m31_m33_m30, _43_42_44_41) \ + __CG_MATRIX_row_swizzle4(3, 2,3,0,1, _m32_m33_m30_m31, _43_44_41_42) \ + __CG_MATRIX_row_swizzle4(3, 2,3,1,0, _m32_m33_m31_m30, _43_44_42_41) \ + __CG_MATRIX_row_swizzle4(3, 3,0,1,2, _m33_m30_m31_m32, _44_41_42_43) \ + __CG_MATRIX_row_swizzle4(3, 3,0,2,1, _m33_m30_m32_m31, _44_41_43_42) \ + __CG_MATRIX_row_swizzle4(3, 3,1,0,2, _m33_m31_m30_m32, _44_42_41_43) \ + __CG_MATRIX_row_swizzle4(3, 3,1,2,0, _m33_m31_m32_m30, _44_42_43_41) \ + __CG_MATRIX_row_swizzle4(3, 3,2,0,1, _m33_m32_m30_m31, _44_43_41_42) \ + __CG_MATRIX_row_swizzle4(3, 3,2,1,0, _m33_m32_m31_m30, _44_43_42_41) \ + __CG_MATRIX_col_swizzle2(3, 0,3, _m03_m33, _14_44) \ + __CG_MATRIX_col_swizzle2(3, 1,3, _m13_m33, _24_44) \ + __CG_MATRIX_col_swizzle2(3, 2,3, _m23_m33, _34_44) \ + __CG_MATRIX_col_swizzle2(3, 3,0, _m33_m03, _44_14) \ + __CG_MATRIX_col_swizzle2(3, 3,1, _m33_m13, _44_24) \ + __CG_MATRIX_col_swizzle2(3, 3,2, _m33_m23, _44_34) \ + __CG_MATRIX_col_swizzle3(3, 0,1,3, _m03_m13_m33, _14_24_44) \ + __CG_MATRIX_col_swizzle3(3, 0,2,3, _m03_m23_m33, _14_34_44) \ + __CG_MATRIX_col_swizzle3(3, 0,3,1, _m03_m33_m13, _14_44_24) \ + __CG_MATRIX_col_swizzle3(3, 0,3,2, _m03_m33_m23, _14_44_34) \ + __CG_MATRIX_col_swizzle3(3, 1,0,3, _m13_m03_m33, _24_14_44) \ + __CG_MATRIX_col_swizzle3(3, 1,2,3, _m13_m23_m33, _24_34_44) \ + __CG_MATRIX_col_swizzle3(3, 1,3,0, _m13_m33_m03, _24_44_14) \ + __CG_MATRIX_col_swizzle3(3, 1,3,2, _m13_m33_m23, _24_44_34) \ + __CG_MATRIX_col_swizzle3(3, 2,0,3, _m23_m03_m33, _34_14_44) \ + __CG_MATRIX_col_swizzle3(3, 2,1,3, _m23_m13_m33, _34_24_44) \ + __CG_MATRIX_col_swizzle3(3, 2,3,0, _m23_m33_m03, _34_44_14) \ + __CG_MATRIX_col_swizzle3(3, 2,3,1, _m23_m33_m13, _34_44_24) \ + __CG_MATRIX_col_swizzle3(3, 3,0,1, _m33_m03_m13, _44_14_24) \ + __CG_MATRIX_col_swizzle3(3, 3,0,2, _m33_m03_m23, _44_14_34) \ + __CG_MATRIX_col_swizzle3(3, 3,1,0, _m33_m13_m03, _44_24_14) \ + __CG_MATRIX_col_swizzle3(3, 3,1,2, _m33_m13_m23, _44_24_34) \ + __CG_MATRIX_col_swizzle3(3, 3,2,0, _m33_m23_m03, _44_34_14) \ + __CG_MATRIX_col_swizzle3(3, 3,2,1, _m33_m23_m13, _44_34_24) \ + __CG_MATRIX_col_swizzle4(3, 0,1,2,3, _m03_m13_m23_m33, _14_24_34_44) \ + __CG_MATRIX_col_swizzle4(3, 0,1,3,2, _m03_m13_m33_m23, _14_24_44_34) \ + __CG_MATRIX_col_swizzle4(3, 0,2,1,3, _m03_m23_m13_m33, _14_34_24_44) \ + __CG_MATRIX_col_swizzle4(3, 0,2,3,1, _m03_m23_m33_m13, _14_34_44_24) \ + __CG_MATRIX_col_swizzle4(3, 0,3,1,2, _m03_m33_m13_m23, _14_44_24_34) \ + __CG_MATRIX_col_swizzle4(3, 0,3,2,1, _m03_m33_m23_m13, _14_44_34_24) \ + __CG_MATRIX_col_swizzle4(3, 1,0,2,3, _m13_m03_m23_m33, _24_14_34_44) \ + __CG_MATRIX_col_swizzle4(3, 1,0,3,2, _m13_m03_m33_m23, _24_14_44_34) \ + __CG_MATRIX_col_swizzle4(3, 1,2,0,3, _m13_m23_m03_m33, _24_34_14_44) \ + __CG_MATRIX_col_swizzle4(3, 1,2,3,0, _m13_m23_m33_m03, _24_34_44_14) \ + __CG_MATRIX_col_swizzle4(3, 1,3,0,2, _m13_m33_m03_m23, _24_44_14_34) \ + __CG_MATRIX_col_swizzle4(3, 1,3,2,0, _m13_m33_m23_m03, _24_44_34_14) \ + __CG_MATRIX_col_swizzle4(3, 2,0,1,3, _m23_m03_m13_m33, _34_14_24_44) \ + __CG_MATRIX_col_swizzle4(3, 2,0,3,1, _m23_m03_m33_m13, _34_14_44_24) \ + __CG_MATRIX_col_swizzle4(3, 2,1,0,3, _m23_m13_m03_m33, _34_24_14_44) \ + __CG_MATRIX_col_swizzle4(3, 2,1,3,0, _m23_m13_m33_m03, _34_24_44_14) \ + __CG_MATRIX_col_swizzle4(3, 2,3,0,1, _m23_m33_m03_m13, _34_44_14_24) \ + __CG_MATRIX_col_swizzle4(3, 2,3,1,0, _m23_m33_m13_m03, _34_44_24_14) \ + __CG_MATRIX_col_swizzle4(3, 3,0,1,2, _m33_m03_m13_m23, _44_14_24_34) \ + __CG_MATRIX_col_swizzle4(3, 3,0,2,1, _m33_m03_m23_m13, _44_14_34_24) \ + __CG_MATRIX_col_swizzle4(3, 3,1,0,2, _m33_m13_m03_m23, _44_24_14_34) \ + __CG_MATRIX_col_swizzle4(3, 3,1,2,0, _m33_m13_m23_m03, _44_24_34_14) \ + __CG_MATRIX_col_swizzle4(3, 3,2,0,1, _m33_m23_m03_m13, _44_34_14_24) \ + __CG_MATRIX_col_swizzle4(3, 3,2,1,0, _m33_m23_m13_m03, _44_34_24_14) + +template > +class __CGmatrix_storage { } __CGmay_alias; + +template > +class __CGmatrix { }; + +template +class __CGmatrix_usage + : public __CGmatrix_storage + __CG_DERIVE_FROM_BASE_CLASS +{ +private: + static const int rows = ROWS; + static const int cols = COLS; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + // CONSTRUCTORS + inline __CGmatrix_usage() { } + inline __CGmatrix_usage(const T & s) { + for (int i=0; i + inline __CGmatrix_usage(const __CGmatrix_usage & v) { + for (int i=0; i(v[i]); + } + } + + // INDEXING + // Use reinterpret_cast magic to make indexing of rows work. + inline __CGvector & operator [] (int i) { + storageType *base = reinterpret_cast(this); + base += COLS*i; + __CGvector *row = reinterpret_cast<__CGvector* >(base); + return *row; + } + inline const __CGvector & operator [] (int i) const { + const storageType *base = reinterpret_cast(this); + base += COLS*i; + const __CGvector *row = reinterpret_cast* >(base); + return *row; + } + + // BINARY OPERATIONS + template + inline __CGmatrix_usage & operator = (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator = (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator += (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator += (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator -= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator -= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator *= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator *= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator /= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator /= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator %= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator %= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator ^= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator ^= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator &= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator &= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator |= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator |= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator <<= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator <<= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i + inline __CGmatrix_usage & operator >>= (const __CGmatrix_usage & ind) { /* for: foo = bar */ + for (int i=0; i>= __CGvector(ind[i]); + return *this; + } + inline __CGmatrix_usage & operator >>= (const T & s) { /* for: foo = 2.7 */ + for (int i=0; i>= s; + return *this; + } + + // UNARY OPERATIONS + inline __CGmatrix_usage & operator ++ () { /* prefix */ + for (int i=0; i +class __CGmatrix_storage { + static const int rows = 1; + static const int cols = 1; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(ELEMENT) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 1; + static const int cols = 1; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + template + inline __CGmatrix(const __CGvector_usage & v0) { + (*this)[0] = __CGvector(v0); + } + // CONVERSION TO SCALAR (just for 1x1 case) + operator T() const { + return (*this)[0][0]; + } +}; + +template +class __CGmatrix_storage { + static const int rows = 1; + static const int cols = 2; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 1; + static const int cols = 2; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01) { + (*this)[0][0] = m00; (*this)[0][1] = m01; + } + template + inline __CGmatrix(const __CGvector_usage & v0) { + (*this)[0] = __CGvector(v0); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 1; + static const int cols = 3; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 1; + static const int cols = 3; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; + } + template + inline __CGmatrix(const __CGvector_usage & v0) { + (*this)[0] = __CGvector(v0); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 1; + static const int cols = 4; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(row) + __CG_MATRIX_SWIZZLE_1x4(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 1; + static const int cols = 4; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, const T & m03) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; (*this)[0][3] = m03; + } + template + inline __CGmatrix(const __CGvector_usage & v0) { + (*this)[0] = __CGvector(v0); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 2; + static const int cols = 1; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_2x1(ELEMENT) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 2; + static const int cols = 1; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, + const T & m10) { + (*this)[0][0] = m00; + (*this)[1][0] = m10; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 2; + static const int cols = 2; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 2; + static const int cols = 2; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, + const T & m10, const T & m11) { + (*this)[0][0] = m00; (*this)[0][1] = m01; + (*this)[1][0] = m10; (*this)[1][1] = m11; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 2; + static const int cols = 3; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 2; + static const int cols = 3; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, + const T & m10, const T & m11, const T & m12) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 2; + static const int cols = 4; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(row) + __CG_MATRIX_SWIZZLE_1x4(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(row) + __CG_MATRIX_SWIZZLE_2x4(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 2; + static const int cols = 4; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, const T & m03, + const T & m10, const T & m11, const T & m12, const T & m13) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; (*this)[0][3] = m03; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; (*this)[1][3] = m13; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1) { + (*this)[0] = v0; + (*this)[1] = v1; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 3; + static const int cols = 1; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_2x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_3x1(ELEMENT) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 3; + static const int cols = 1; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, + const T & m10, + const T & m20) { + (*this)[0][0] = m00; + (*this)[1][0] = m10; + (*this)[2][0] = m20; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 3; + static const int cols = 2; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 3; + static const int cols = 2; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, + const T & m10, const T & m11, + const T & m20, const T & m21) { + (*this)[0][0] = m00; (*this)[0][1] = m01; + (*this)[1][0] = m10; (*this)[1][1] = m11; + (*this)[2][0] = m20; (*this)[2][1] = m21; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 3; + static const int cols = 3; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(row) + __CG_MATRIX_SWIZZLE_3x3(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 3; + static const int cols = 3; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, + const T & m10, const T & m11, const T & m12, + const T & m20, const T & m21, const T & m22) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; + (*this)[2][0] = m20; (*this)[2][1] = m21; (*this)[2][2] = m22; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 3; + static const int cols = 4; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(row) + __CG_MATRIX_SWIZZLE_1x4(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(row) + __CG_MATRIX_SWIZZLE_2x4(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(row) + __CG_MATRIX_SWIZZLE_3x3(row) + __CG_MATRIX_SWIZZLE_3x4(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 3; + static const int cols = 4; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, const T & m03, + const T & m10, const T & m11, const T & m12, const T & m13, + const T & m20, const T & m21, const T & m22, const T & m23) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; (*this)[0][3] = m03; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; (*this)[1][3] = m13; + (*this)[2][0] = m20; (*this)[2][1] = m21; (*this)[2][2] = m22; (*this)[2][3] = m23; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 4; + static const int cols = 1; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_2x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_3x1(ELEMENT) + + __CG_MATRIX_SWIZZLE_4x1(ELEMENT) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 4; + static const int cols = 1; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, + const T & m10, + const T & m20, + const T & m30) { + (*this)[0][0] = m00; + (*this)[1][0] = m10; + (*this)[2][0] = m20; + (*this)[3][0] = m30; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2, + const __CGvector_usage & v3) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + (*this)[3] = __CGvector(v3); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 4; + static const int cols = 2; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(ROW) + + __CG_MATRIX_SWIZZLE_4x1(element) + __CG_MATRIX_SWIZZLE_4x2(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 4; + static const int cols = 2; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, + const T & m10, const T & m11, + const T & m20, const T & m21, + const T & m30, const T & m31) { + (*this)[0][0] = m00; (*this)[0][1] = m01; + (*this)[1][0] = m10; (*this)[1][1] = m11; + (*this)[2][0] = m20; (*this)[2][1] = m21; + (*this)[3][0] = m30; (*this)[3][1] = m31; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2, + const __CGvector_usage & v3) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + (*this)[3] = __CGvector(v3); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 4; + static const int cols = 3; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(row) + __CG_MATRIX_SWIZZLE_3x3(ROW) + + __CG_MATRIX_SWIZZLE_4x1(element) + __CG_MATRIX_SWIZZLE_4x2(row) + __CG_MATRIX_SWIZZLE_4x3(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 4; + static const int cols = 3; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, + const T & m10, const T & m11, const T & m12, + const T & m20, const T & m21, const T & m22, + const T & m30, const T & m31, const T & m32) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; + (*this)[2][0] = m20; (*this)[2][1] = m21; (*this)[2][2] = m22; + (*this)[3][0] = m30; (*this)[3][1] = m31; (*this)[3][2] = m32; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2, + const __CGvector_usage & v3) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + (*this)[3] = __CGvector(v3); + } +}; + +template +class __CGmatrix_storage { + static const int rows = 4; + static const int cols = 4; + static const int ELEMS = rows * cols; + typedef typename __CGtype_trait::storageType storageType; +public: + union { + __CG_MATRIX_SWIZZLE_1x1(element) + __CG_MATRIX_SWIZZLE_1x2(row) + __CG_MATRIX_SWIZZLE_1x3(row) + __CG_MATRIX_SWIZZLE_1x4(ROW) + + __CG_MATRIX_SWIZZLE_2x1(element) + __CG_MATRIX_SWIZZLE_2x2(row) + __CG_MATRIX_SWIZZLE_2x3(row) + __CG_MATRIX_SWIZZLE_2x4(ROW) + + __CG_MATRIX_SWIZZLE_3x1(element) + __CG_MATRIX_SWIZZLE_3x2(row) + __CG_MATRIX_SWIZZLE_3x3(row) + __CG_MATRIX_SWIZZLE_3x4(ROW) + + __CG_MATRIX_SWIZZLE_4x1(element) + __CG_MATRIX_SWIZZLE_4x2(row) + __CG_MATRIX_SWIZZLE_4x3(row) + __CG_MATRIX_SWIZZLE_4x4(ROW) + }; +#ifndef __GNUC__ + // Visual C++ needs defined default constructor, but g++ balks about + // failure to initialize const members in union if a default + // constructor is provided. + __CGmatrix_storage() { } +#endif +}; + +template +class __CGmatrix : public __CGmatrix_usage { + static const int rows = 4; + static const int cols = 4; +public: + // CONSTRUCTORS + inline __CGmatrix() {} + inline __CGmatrix(const T & s) : __CGmatrix_usage(s) { } + template + inline __CGmatrix(const __CGmatrix & v) : __CGmatrix_usage(v) { } + inline __CGmatrix(const T & m00, const T & m01, const T & m02, const T & m03, + const T & m10, const T & m11, const T & m12, const T & m13, + const T & m20, const T & m21, const T & m22, const T & m23, + const T & m30, const T & m31, const T & m32, const T & m33) { + (*this)[0][0] = m00; (*this)[0][1] = m01; (*this)[0][2] = m02; (*this)[0][3] = m03; + (*this)[1][0] = m10; (*this)[1][1] = m11; (*this)[1][2] = m12; (*this)[1][3] = m13; + (*this)[2][0] = m20; (*this)[2][1] = m21; (*this)[2][2] = m22; (*this)[2][3] = m23; + (*this)[3][0] = m30; (*this)[3][1] = m31; (*this)[3][2] = m32; (*this)[3][3] = m33; + } + template + inline __CGmatrix(const __CGvector_usage & v0, + const __CGvector_usage & v1, + const __CGvector_usage & v2, + const __CGvector_usage & v3) { + (*this)[0] = __CGvector(v0); + (*this)[1] = __CGvector(v1); + (*this)[2] = __CGvector(v2); + (*this)[3] = __CGvector(v3); + } +} __CGmay_alias; + +//// UNARY VECTOR OPERATORS + +// UNARY LOGICAL NEGATE +template +inline __CGmatrix operator!(const __CGmatrix & a) +{ + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix operator~(const __CGmatrix & a) +{ + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix operator-(const __CGmatrix & a) +{ + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator + (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator + (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator + (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator - (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator - (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator - (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator * (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator * (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator * (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator / (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator / (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator / (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator % (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator % (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator % (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator ^ (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator ^ (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator ^ (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator & (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator & (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator & (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator | (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator | (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator | (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator < (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator < (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator < (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i) +template +inline __CGmatrix::boolType,N,M> operator > (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i VectorType(b[i]); + } + return rv; +} +template +inline __CGmatrix::boolType,N,M> operator > (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i VectorType(b); + } + return rv; +} +template +inline __CGmatrix::boolType,N,M> operator > (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i VectorType(b[i]); + } + return rv; +} + +// BINARY LESS THAN OR EQUAL (<=) +template +inline __CGmatrix::boolType,N,M> operator <= (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator <= (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator <= (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i=) +template +inline __CGmatrix::boolType,N,M> operator >= (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i= VectorType(b[i]); + } + return rv; +} +template +inline __CGmatrix::boolType,N,M> operator >= (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i= VectorType(b); + } + return rv; +} +template +inline __CGmatrix::boolType,N,M> operator >= (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i= VectorType(b[i]); + } + return rv; +} + +// BINARY EQUALITY (==) +template +inline __CGmatrix::boolType,N,M> operator == (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator == (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator == (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator != (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator != (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator != (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator << (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator << (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::resultType,N,M> operator << (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i>) +template +inline __CGmatrix::resultType,N,M> operator >> (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i> VectorType(b[i]); + } + return rv; +} +template +inline __CGmatrix::resultType,N,M> operator >> (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i> VectorType(b); + } + return rv; +} +template +inline __CGmatrix::resultType,N,M> operator >> (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i> VectorType(b[i]); + } + return rv; +} + +// BINARY LOGICAL AND (&&) +template +inline __CGmatrix::boolType,N,M> operator && (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator && (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator && (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator || (const __CGmatrix & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator || (const __CGmatrix & a, const T2 & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i +inline __CGmatrix::boolType,N,M> operator || (const T2 & a, const __CGmatrix & b) +{ + typedef typename __CGtype_trait::boolType boolType; + typedef const __CGvector VectorType; + __CGmatrix rv; + for (int i=0; i float1x1; +typedef __CGmatrix float1x2; +typedef __CGmatrix float1x3; +typedef __CGmatrix float1x4; +typedef __CGmatrix float2x1; +typedef __CGmatrix float2x2; +typedef __CGmatrix float2x3; +typedef __CGmatrix float2x4; +typedef __CGmatrix float3x1; +typedef __CGmatrix float3x2; +typedef __CGmatrix float3x3; +typedef __CGmatrix float3x4; +typedef __CGmatrix float4x1; +typedef __CGmatrix float4x2; +typedef __CGmatrix float4x3; +typedef __CGmatrix float4x4; + +typedef __CGmatrix int1x1; +typedef __CGmatrix int1x2; +typedef __CGmatrix int1x3; +typedef __CGmatrix int1x4; +typedef __CGmatrix int2x1; +typedef __CGmatrix int2x2; +typedef __CGmatrix int2x3; +typedef __CGmatrix int2x4; +typedef __CGmatrix int3x1; +typedef __CGmatrix int3x2; +typedef __CGmatrix int3x3; +typedef __CGmatrix int3x4; +typedef __CGmatrix int4x1; +typedef __CGmatrix int4x2; +typedef __CGmatrix int4x3; +typedef __CGmatrix int4x4; + +typedef __CGmatrix bool1x1; +typedef __CGmatrix bool1x2; +typedef __CGmatrix bool1x3; +typedef __CGmatrix bool1x4; +typedef __CGmatrix bool2x1; +typedef __CGmatrix bool2x2; +typedef __CGmatrix bool2x3; +typedef __CGmatrix bool2x4; +typedef __CGmatrix bool3x1; +typedef __CGmatrix bool3x2; +typedef __CGmatrix bool3x3; +typedef __CGmatrix bool3x4; +typedef __CGmatrix bool4x1; +typedef __CGmatrix bool4x2; +typedef __CGmatrix bool4x3; +typedef __CGmatrix bool4x4; + +#if defined(__Cg_double_hpp__) +typedef __CGmatrix double1x1; +typedef __CGmatrix double1x2; +typedef __CGmatrix double1x3; +typedef __CGmatrix double1x4; +typedef __CGmatrix double2x1; +typedef __CGmatrix double2x2; +typedef __CGmatrix double2x3; +typedef __CGmatrix double2x4; +typedef __CGmatrix double3x1; +typedef __CGmatrix double3x2; +typedef __CGmatrix double3x3; +typedef __CGmatrix double3x4; +typedef __CGmatrix double4x1; +typedef __CGmatrix double4x2; +typedef __CGmatrix double4x3; +typedef __CGmatrix double4x4; +#endif +#if defined(__Cg_half_hpp__) +typedef __CGmatrix half1x1; +typedef __CGmatrix half1x2; +typedef __CGmatrix half1x3; +typedef __CGmatrix half1x4; +typedef __CGmatrix half2x1; +typedef __CGmatrix half2x2; +typedef __CGmatrix half2x3; +typedef __CGmatrix half2x4; +typedef __CGmatrix half3x1; +typedef __CGmatrix half3x2; +typedef __CGmatrix half3x3; +typedef __CGmatrix half3x4; +typedef __CGmatrix half4x1; +typedef __CGmatrix half4x2; +typedef __CGmatrix half4x3; +typedef __CGmatrix half4x4; +#endif +#if defined(__Cg_fixed_hpp__) +typedef __CGmatrix fixed1x1; +typedef __CGmatrix fixed1x2; +typedef __CGmatrix fixed1x3; +typedef __CGmatrix fixed1x4; +typedef __CGmatrix fixed2x1; +typedef __CGmatrix fixed2x2; +typedef __CGmatrix fixed2x3; +typedef __CGmatrix fixed2x4; +typedef __CGmatrix fixed3x1; +typedef __CGmatrix fixed3x2; +typedef __CGmatrix fixed3x3; +typedef __CGmatrix fixed3x4; +typedef __CGmatrix fixed4x1; +typedef __CGmatrix fixed4x2; +typedef __CGmatrix fixed4x3; +typedef __CGmatrix fixed4x4; +#endif + +#undef __CG_MATRIX_X +#undef __CG_MATRIX_Y +#undef __CG_MATRIX_Z +#undef __CG_MATRIX_W +#undef __CG_MATRIX_SMASK1 +#undef __CG_MATRIX_SWIZZLE1 +#undef __CG_MATRIX_SMASK2 +#undef __CG_MATRIX_SWIZZLE2 +#undef __CG_MATRIX_SMASK3 +#undef __CG_MATRIX_SWIZZLE3 +#undef __CG_MATRIX_SMASK4 +#undef __CG_MATRIX_SWIZZLE4 +#undef __CG_MATRIX_ELEMENT +#undef __CG_MATRIX_ROW_swizzle2 +#undef __CG_MATRIX_ROW_swizzle3 +#undef __CG_MATRIX_ROW_swizzle4 +#undef __CG_MATRIX_element +#undef __CG_MATRIX_col_swizzle2 +#undef __CG_MATRIX_row_swizzle2 +#undef __CG_MATRIX_col_swizzle3 +#undef __CG_MATRIX_row_swizzle3 +#undef __CG_MATRIX_col_swizzle4 +#undef __CG_MATRIX_row_swizzle4 +#undef __CG_MATRIX_SWIZZLE_1x1 +#undef __CG_MATRIX_SWIZZLE_1x2 +#undef __CG_MATRIX_SWIZZLE_1x3 +#undef __CG_MATRIX_SWIZZLE_1x4 +#undef __CG_MATRIX_SWIZZLE_2x1 +#undef __CG_MATRIX_SWIZZLE_2x2 +#undef __CG_MATRIX_SWIZZLE_2x3 +#undef __CG_MATRIX_SWIZZLE_2x4 +#undef __CG_MATRIX_SWIZZLE_3x1 +#undef __CG_MATRIX_SWIZZLE_3x2 +#undef __CG_MATRIX_SWIZZLE_3x3 +#undef __CG_MATRIX_SWIZZLE_3x4 +#undef __CG_MATRIX_SWIZZLE_4x1 +#undef __CG_MATRIX_SWIZZLE_4x2 +#undef __CG_MATRIX_SWIZZLE_4x3 +#undef __CG_MATRIX_SWIZZLE_4x4 +#undef __CG_ASSIGN_OP +#undef __CG_MODIFY_OP +#undef __CG_MATRIX_MISC +#undef __CGmay_alias + +} // namespace Cg + +#endif // __Cg_matrix_hpp__ diff --git a/extensions/externals/include/Cg/matrix/0based.hpp b/extensions/externals/include/Cg/matrix/0based.hpp new file mode 100644 index 0000000..4b13645 --- /dev/null +++ b/extensions/externals/include/Cg/matrix/0based.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_0based_hpp__ +#define __Cg_matrix_0based_hpp__ + +/* Only defines __Cg_matrix_0based_hpp__ so the header + can know matrix support indexed from zero is desired. */ + +#endif // __Cg_matrix_0based_hpp__ + diff --git a/extensions/externals/include/Cg/matrix/1based.hpp b/extensions/externals/include/Cg/matrix/1based.hpp new file mode 100644 index 0000000..984644a --- /dev/null +++ b/extensions/externals/include/Cg/matrix/1based.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_1based_hpp__ +#define __Cg_matrix_1based_hpp__ + +/* Only defines __Cg_matrix_1based_hpp__ so the header + can know matrix support indexed from one is desired. */ + +#endif // __Cg_matrix_1based_hpp__ + diff --git a/extensions/externals/include/Cg/matrix/columns.hpp b/extensions/externals/include/Cg/matrix/columns.hpp new file mode 100644 index 0000000..23de5cc --- /dev/null +++ b/extensions/externals/include/Cg/matrix/columns.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_columns_hpp__ +#define __Cg_matrix_columns_hpp__ + +/* Only defines __Cg_matrix_columns_hpp__ so the header + can know matrix support for columns is desired. */ + +#endif // __Cg_matrix_columns_hpp__ + diff --git a/extensions/externals/include/Cg/matrix/elements.hpp b/extensions/externals/include/Cg/matrix/elements.hpp new file mode 100644 index 0000000..ca47ec6 --- /dev/null +++ b/extensions/externals/include/Cg/matrix/elements.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_elements_hpp__ +#define __Cg_matrix_elements_hpp__ + +/* Only defines __Cg_matrix_elements_hpp__ so the header + can know matrix support for elements is desired. */ + +#endif // __Cg_matrix_elements_hpp__ + diff --git a/extensions/externals/include/Cg/matrix/rows.hpp b/extensions/externals/include/Cg/matrix/rows.hpp new file mode 100644 index 0000000..808f0cb --- /dev/null +++ b/extensions/externals/include/Cg/matrix/rows.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_matrix_rows_hpp__ +#define __Cg_matrix_rows_hpp__ + +/* Only defines __Cg_matrix_rows_hpp__ so the header + can know matrix support for rows is desired. */ + +#endif // __Cg_matrix_rows_hpp__ + diff --git a/extensions/externals/include/Cg/max.hpp b/extensions/externals/include/Cg/max.hpp new file mode 100644 index 0000000..9aae596 --- /dev/null +++ b/extensions/externals/include/Cg/max.hpp @@ -0,0 +1,128 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_max_hpp__ +#define __Cg_max_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// Win32's windef.h defines max and min macros (unless NOMINMAX is defined) +// Attempt to push/pop the max macro to avoid interference from the macro +# ifdef _MSC_VER +# pragma push_macro("max") +# undef max +# endif + +template +static inline __CGvector::numericType,N> max(const __CGvector & a, const __CGvector & b) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> max(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> max(const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> max(const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> max(const __CGvector_usage & a, + const TB & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i(b)) { + rv[i] = static_cast(b); + } else { + rv[i] = a[i]; + } + } + return rv; +} +template +static inline __CGvector::numericType,N> max(const TA & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i(a) < b[i]) { + rv[i] = b[i]; + } else { + rv[i] = static_cast(a); + } + } + return rv; +} +template +static inline __CGvector::numericType,1> max(const TA & a, + const TB & b) +{ + __CGvector::numericType,1> rv; + if (static_cast(a) < static_cast(b)) { + rv[0] = static_cast(b); + } else { + rv[0] = static_cast(a); + } + return rv; +} + +# ifdef _MSC_VER +# pragma pop_macro("max") +# endif + +} // namespace Cg + +#endif // __Cg_max_hpp__ diff --git a/extensions/externals/include/Cg/min.hpp b/extensions/externals/include/Cg/min.hpp new file mode 100644 index 0000000..03697f4 --- /dev/null +++ b/extensions/externals/include/Cg/min.hpp @@ -0,0 +1,128 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_min_hpp__ +#define __Cg_min_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// Win32's windef.h defines max and min macros (unless NOMINMAX is defined) +// Attempt to push/pop the min macro to avoid interference from the macro +# ifdef _MSC_VER +# pragma push_macro("min") +# undef min +# endif + +template +static inline __CGvector::numericType,N> min(const __CGvector & a, const __CGvector & b) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> min(const __CGvector_usage & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> min(const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> min(const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i +static inline __CGvector::numericType,N> min(const __CGvector_usage & a, + const TB & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i(b) < a[i]) { + rv[i] = static_cast(b); + } else { + rv[i] = a[i]; + } + } + return rv; +} +template +static inline __CGvector::numericType,N> min(const TA & a, + const __CGvector_usage & b) +{ + __CGvector::numericType,N> rv; + for (int i=0; i(a)) { + rv[i] = b[i]; + } else { + rv[i] = static_cast(a); + } + } + return rv; +} +template +static inline __CGvector::numericType,1> min(const TA & a, + const TB & b) +{ + __CGvector::numericType,1> rv; + if (static_cast(b) < static_cast(a)) { + rv[0] = static_cast(b); + } else { + rv[0] = static_cast(a); + } + return rv; +} + +# ifdef _MSC_VER +# pragma pop_macro("min") +# endif + +} // namespace Cg + +#endif // __Cg_min_hpp__ diff --git a/extensions/externals/include/Cg/mul.hpp b/extensions/externals/include/Cg/mul.hpp new file mode 100644 index 0000000..4978933 --- /dev/null +++ b/extensions/externals/include/Cg/mul.hpp @@ -0,0 +1,104 @@ +/* + * Copyright 2006-2012 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_mul_hpp__ +#define __Cg_mul_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// Matrix-by-vector multiplication (assuming a column vector) +template +static inline __CGvector::numericType,M> mul(const __CGmatrix & m, + const __CGvector & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,M> mul(const __CGmatrix & m, + const __CGvector_usage & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +// Vector-by-matrix multiplication (assuming a row vector) +template +static inline __CGvector::numericType,N> mul(const __CGvector & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,N> mul(const __CGvector_usage & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +// Matrix-by-matrix multiplication +template +static inline __CGmatrix::numericType,X,Z> mul(const __CGmatrix & a, + const __CGmatrix & b) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGmatrix::numericType,X,Z> rv; + for (int i=0; i::numericType(sum); + } + } + return rv; +} + +} // namespace Cg + +#endif // __Cg_mul_hpp__ diff --git a/extensions/externals/include/Cg/mulv0.hpp b/extensions/externals/include/Cg/mulv0.hpp new file mode 100644 index 0000000..e437434 --- /dev/null +++ b/extensions/externals/include/Cg/mulv0.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 20062006-2012 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_mulv0_hpp__ +#define __Cg_mulv0_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// Matrix-by-vector multiplication (assuming a column vector) assuming vector has "implied 0" final component +template +static inline __CGvector::numericType,M> mulv0(const __CGmatrix & m, + const __CGvector & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,M> mulv0(const __CGmatrix & m, + const __CGvector_usage & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +// Vector-by-matrix multiplication (assuming a row vector) assuming vector has "implied 0" final component +template +static inline __CGvector::numericType,N> mulv0(const __CGvector & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,N> mulv0(const __CGvector_usage & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +} // namespace Cg + +#endif // __Cg_mul_hpp__ diff --git a/extensions/externals/include/Cg/mulv1.hpp b/extensions/externals/include/Cg/mulv1.hpp new file mode 100644 index 0000000..635107e --- /dev/null +++ b/extensions/externals/include/Cg/mulv1.hpp @@ -0,0 +1,89 @@ +/* + * Copyright 2006-2012 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_mulv1_hpp__ +#define __Cg_mulv1_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +// Matrix-by-vector multiplication (assuming a column vector) assuming vector has "implied 1" final component +template +static inline __CGvector::numericType,M> mulv1(const __CGmatrix & m, + const __CGvector & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,M> mulv1(const __CGmatrix & m, + const __CGvector_usage & v) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,M> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +// Vector-by-matrix multiplication (assuming a row vector) assuming vector has "implied 1" final component +template +static inline __CGvector::numericType,N> mulv1(const __CGvector & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} +template +static inline __CGvector::numericType,N> mulv1(const __CGvector_usage & v, + const __CGmatrix & m) +{ + typedef typename __CGtype_trait::dotType dotType; + __CGvector::numericType,N> rv; + for (int i=0; i::numericType(sum); + } + return rv; +} + +} // namespace Cg + +#endif // __Cg_mul_hpp__ diff --git a/extensions/externals/include/Cg/normalize.hpp b/extensions/externals/include/Cg/normalize.hpp new file mode 100644 index 0000000..f59327b --- /dev/null +++ b/extensions/externals/include/Cg/normalize.hpp @@ -0,0 +1,40 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_normalize_hpp__ +#define __Cg_normalize_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::sqrt + +namespace Cg { + +template +static inline __CGvector::realType,N> normalize(const __CGvector & v) +{ + typename __CGtype_trait::dotType sum = v[0] * v[0]; + for (int i=1; i(v / ::sqrt(sum)); +} +template +static inline __CGvector::realType,N> normalize(const __CGvector_usage & v) +{ + typename __CGtype_trait::dotType sum = v[0] * v[0]; + for (int i=1; i(v / ::sqrt(sum)); +} + +} // namespace Cg + +#endif // __Cg_normalize_hpp__ diff --git a/extensions/externals/include/Cg/pow.hpp b/extensions/externals/include/Cg/pow.hpp new file mode 100644 index 0000000..2a79245 --- /dev/null +++ b/extensions/externals/include/Cg/pow.hpp @@ -0,0 +1,90 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_pow_hpp__ +#define __Cg_pow_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::exp & std::log + +// Actually Cg stdlib really uses exp2 and log2 to implement pow + +namespace Cg { + +template +static inline __CGvector::realType,N> pow(const __CGvector & x, + const __CGvector & y) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> pow(const __CGvector_usage & x, + const __CGvector_usage & y) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> pow(const __CGvector_plural_usage & x, + const __CGvector_usage & y) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> pow(const __CGvector_usage & x, + const __CGvector_plural_usage & y) +{ + __CGvector::realType,N> rv; + for (int i=0; i +static inline __CGvector::realType,N> pow(const __CGvector_usage & x, + const TB & y) +{ + typedef typename __CGtype_trait::realType RealType; + __CGvector rv; + for (int i=0; i(y)))); + return rv; +} +template +static inline __CGvector::realType,N> pow(const TA & x, + const __CGvector_usage & y) +{ + __CGvector::realType,N> rv; + for (int i=0; i(x) * std::log(y[i])); + return rv; +} +template +static inline __CGvector::realType,1> pow(const TA & x, + const TB & y) +{ + typedef typename __CGtype_trait::realType RealType; + __CGvector rv(std::exp(static_cast(x) * std::log(static_cast(y)))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_pow_hpp__ diff --git a/extensions/externals/include/Cg/radians.hpp b/extensions/externals/include/Cg/radians.hpp new file mode 100644 index 0000000..e825ad7 --- /dev/null +++ b/extensions/externals/include/Cg/radians.hpp @@ -0,0 +1,41 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_radians_hpp__ +#define __Cg_radians_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::realType,N> radians(const __CGvector & v) +{ + return T(0.017453292) * v; +} +template +static inline __CGvector::realType,N> radians(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> radians(const T & v) +{ + __CGvector::realType,1> rv(T(0.017453292) * static_cast(v)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_radians_hpp__ diff --git a/extensions/externals/include/Cg/round.hpp b/extensions/externals/include/Cg/round.hpp new file mode 100644 index 0000000..6579496 --- /dev/null +++ b/extensions/externals/include/Cg/round.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_round_hpp__ +#define __Cg_round_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::floor + +namespace Cg { + +template +static inline __CGvector::realType,N> round(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> round(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> round(const T & v) +{ + __CGvector::realType,1> rv(std::floor(static_cast(v)) + T(0.5)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_round_hpp__ diff --git a/extensions/externals/include/Cg/rsqrt.hpp b/extensions/externals/include/Cg/rsqrt.hpp new file mode 100644 index 0000000..6077bdb --- /dev/null +++ b/extensions/externals/include/Cg/rsqrt.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_rsqrt_hpp__ +#define __Cg_rsqrt_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::sqrt + +namespace Cg { + +template +static inline __CGvector::realType,N> rsqrt(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> rsqrt(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> rsqrt(const T & v) +{ + __CGvector::realType,1> rv(1 / std::sqrt(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_rsqrt_hpp__ diff --git a/extensions/externals/include/Cg/sampler.hpp b/extensions/externals/include/Cg/sampler.hpp new file mode 100644 index 0000000..ce9994c --- /dev/null +++ b/extensions/externals/include/Cg/sampler.hpp @@ -0,0 +1,20 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler_hpp__ +#define __sampler_hpp__ + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // __sampler_hpp__ diff --git a/extensions/externals/include/Cg/sampler1D.hpp b/extensions/externals/include/Cg/sampler1D.hpp new file mode 100644 index 0000000..5fb7960 --- /dev/null +++ b/extensions/externals/include/Cg/sampler1D.hpp @@ -0,0 +1,40 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler1D_hpp__ +#define __sampler1D_hpp__ + +#include + +namespace Cg { + +class __CGsampler1D_state; + +class sampler1D { + __CGsampler1D_state *state; + +public: + sampler1D(); + sampler1D(int texUnit); + sampler1D(const sampler1D &src); + ~sampler1D(); + sampler1D & operator = (const sampler1D &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 tex1D(sampler1D, float1 s); +float4 tex1D(sampler1D, float1 s, float1 dx, float1 dy); +float4 tex1D(sampler1D, float2 st); +float4 tex1D(sampler1D, float2 st, float1 dx, float1 dy); +float4 tex1Dproj(sampler1D, float2 sq); +float4 tex1Dproj(sampler1D, float3 srq); + +} // namespace Cg + +#endif // __sampler1D_hpp__ diff --git a/extensions/externals/include/Cg/sampler1DARRAY.hpp b/extensions/externals/include/Cg/sampler1DARRAY.hpp new file mode 100644 index 0000000..3497129 --- /dev/null +++ b/extensions/externals/include/Cg/sampler1DARRAY.hpp @@ -0,0 +1,39 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler1DARRAY_hpp__ +#define __sampler1DARRAY_hpp__ + +#include + +namespace Cg { + +class __CGsampler1DARRAY_state; + +class sampler1DARRAY { + __CGsampler1DARRAY_state *state; + +public: + sampler1DARRAY(); + sampler1DARRAY(const sampler1DARRAY &src); + ~sampler1DARRAY(); + sampler1DARRAY & operator = (const sampler1DARRAY &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 tex1DARRAY(sampler1DARRAY, float2 st); +float4 tex1DARRAY(sampler1DARRAY, float2 st, float2 dx, float2 dy); +float4 tex1DARRAY(sampler1DARRAY, float3 str); +float4 tex1DARRAY(sampler1DARRAY, float3 str, float3 dx, float3 dy); +float4 tex1DARRAYproj(sampler1DARRAY, float3 str); +float4 tex1DARRAYproj(sampler1DARRAY, float4 strq); + +} // namespace Cg + +#endif // __sampler1DARRAY_hpp__ diff --git a/extensions/externals/include/Cg/sampler2D.hpp b/extensions/externals/include/Cg/sampler2D.hpp new file mode 100644 index 0000000..228ae07 --- /dev/null +++ b/extensions/externals/include/Cg/sampler2D.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler2D_hpp__ +#define __sampler2D_hpp__ + +#include + +namespace Cg { + +class __CGsampler2D_state; + +class __CGsampler2D_factory { +public: + virtual __CGsampler2D_state *construct() = 0; +}; + +class sampler2D { + __CGsampler2D_state *state; + +public: + sampler2D(); + sampler2D(const sampler2D &src); + sampler2D(__CGsampler2D_factory &src); + ~sampler2D(); + sampler2D & operator = (const sampler2D &rhs); + float4 sample(float4 strq, float lod); + void update(); +}; + +// Cg Standard Library texture functions + +float4 tex2D(sampler2D, float2 st); +float4 tex2D(sampler2D, float2 st, float2 dx, float2 dy); +float4 tex2D(sampler2D, float3 str); +float4 tex2D(sampler2D, float3 str, float3 dx, float3 dy); +float4 tex2Dproj(sampler2D, float3 str); +float4 tex2Dproj(sampler2D, float4 strq); + +} // namespace Cg + +#endif // __sampler2D_hpp__ diff --git a/extensions/externals/include/Cg/sampler2DARRAY.hpp b/extensions/externals/include/Cg/sampler2DARRAY.hpp new file mode 100644 index 0000000..0987edb --- /dev/null +++ b/extensions/externals/include/Cg/sampler2DARRAY.hpp @@ -0,0 +1,39 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler2DARRAY_hpp__ +#define __sampler2DARRAY_hpp__ + +#include + +namespace Cg { + +class __CGsampler2DARRAY_state; + +class sampler2DARRAY { + __CGsampler2DARRAY_state *state; + +public: + sampler2DARRAY(); + sampler2DARRAY(int texUnit); + sampler2DARRAY(const sampler2DARRAY &src); + ~sampler2DARRAY(); + sampler2DARRAY & operator = (const sampler2DARRAY &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 tex2DARRAY(sampler2DARRAY, float3 str); +float4 tex2DARRAY(sampler2DARRAY, float4 strq); +float4 tex2DARRAY(sampler2DARRAY, float3 str, float3 dx, float3 dy); +float4 tex2DARRAY(sampler2DARRAY, float4 strq, float4 dx, float4 dy); +float4 tex2DARRAYproj(sampler2DARRAY, float4 strq); + +} // namespace Cg + +#endif // __sampler2DARRAY_hpp__ diff --git a/extensions/externals/include/Cg/sampler3D.hpp b/extensions/externals/include/Cg/sampler3D.hpp new file mode 100644 index 0000000..b313f97 --- /dev/null +++ b/extensions/externals/include/Cg/sampler3D.hpp @@ -0,0 +1,37 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler3D_hpp__ +#define __sampler3D_hpp__ + +#include + +namespace Cg { + +class __CGsampler3D_state; + +class sampler3D { + __CGsampler3D_state *state; + +public: + sampler3D(); + sampler3D(int texUnit); + sampler3D(const sampler3D &src); + ~sampler3D(); + sampler3D & operator = (const sampler3D &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 tex3D(sampler3D, float3 str); +float4 tex3D(sampler3D, float3 str, float3 dx, float3 dy); +float4 tex3Dproj(sampler3D, float4 strq); + +} // namespace Cg + +#endif // __sampler3D_hpp__ diff --git a/extensions/externals/include/Cg/samplerBUF.hpp b/extensions/externals/include/Cg/samplerBUF.hpp new file mode 100644 index 0000000..97a4cc0 --- /dev/null +++ b/extensions/externals/include/Cg/samplerBUF.hpp @@ -0,0 +1,35 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __samplerBUF_hpp__ +#define __samplerBUF_hpp__ + +#include + +namespace Cg { + +class __CGsamplerBUF_state; + +class samplerBUF { + __CGsamplerBUF_state *state; + +public: + samplerBUF(); + samplerBUF(int texUnit); + samplerBUF(const samplerBUF &src); + ~samplerBUF(); + samplerBUF & operator = (const samplerBUF &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 texBUF(samplerBUF, float1 s); + +} // namespace Cg + +#endif // __samplerBUF_hpp__ diff --git a/extensions/externals/include/Cg/samplerCUBE.hpp b/extensions/externals/include/Cg/samplerCUBE.hpp new file mode 100644 index 0000000..649fa81 --- /dev/null +++ b/extensions/externals/include/Cg/samplerCUBE.hpp @@ -0,0 +1,37 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __samplerCUBE_hpp__ +#define __samplerCUBE_hpp__ + +#include + +namespace Cg { + +class __CGsamplerCUBE_state; + +class samplerCUBE { + __CGsamplerCUBE_state *state; + +public: + samplerCUBE(); + samplerCUBE(int texUnit); + samplerCUBE(const samplerCUBE &src); + ~samplerCUBE(); + samplerCUBE & operator = (const samplerCUBE &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 texCUBE(samplerCUBE, float3 str); +float4 texCUBE(samplerCUBE, float3 str, float3 dx, float3 dy); +float4 texCUBEproj(samplerCUBE, float4 strq); + +} // namespace Cg + +#endif // __samplerCUBE_hpp__ diff --git a/extensions/externals/include/Cg/samplerRECT.hpp b/extensions/externals/include/Cg/samplerRECT.hpp new file mode 100644 index 0000000..c6978e6 --- /dev/null +++ b/extensions/externals/include/Cg/samplerRECT.hpp @@ -0,0 +1,39 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __samplerRECT_hpp__ +#define __samplerRECT_hpp__ + +#include + +namespace Cg { + +class __CGsamplerRECT_state; + +class samplerRECT { + __CGsamplerRECT_state *state; + +public: + samplerRECT(); + samplerRECT(int texUnit); + samplerRECT(const samplerRECT &src); + ~samplerRECT(); + samplerRECT & operator = (const samplerRECT &rhs); + float4 sample(float4 strq, float lod); +}; + +// Cg Standard Library texture functions + +float4 texRECT(samplerRECT, float2 st); +float4 texRECT(samplerRECT, float2 st, float2 dx, float2 dy); +float4 texRECT(samplerRECT, float3 str); +float4 texRECT(samplerRECT, float3 str, float3 dx, float3 dy); +float4 texRECTproj(samplerRECT, float4 strq); + +} // namespace Cg + +#endif // __samplerRECT_hpp__ diff --git a/extensions/externals/include/Cg/saturate.hpp b/extensions/externals/include/Cg/saturate.hpp new file mode 100644 index 0000000..8e31596 --- /dev/null +++ b/extensions/externals/include/Cg/saturate.hpp @@ -0,0 +1,65 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_saturate_hpp__ +#define __Cg_saturate_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> saturate(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> saturate(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,1> saturate(const T & v) +{ + __CGvector::numericType,1> rv; + if (T(1) < v) { + rv = T(1); + } else if (T(0) < v) { + rv = v; + } else { + rv = T(0); + } + return rv; +} + +} // namespace Cg + +#endif // __Cg_saturate_hpp__ diff --git a/extensions/externals/include/Cg/sign.hpp b/extensions/externals/include/Cg/sign.hpp new file mode 100644 index 0000000..8b49bea --- /dev/null +++ b/extensions/externals/include/Cg/sign.hpp @@ -0,0 +1,40 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_sign_hpp__ +#define __Cg_sign_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> sign(const __CGvector & v) +{ + typedef __CGvector ResultType; + return ResultType(v > 0) - ResultType(v < 0); +} +template +static inline __CGvector::numericType,N> sign(const __CGvector_usage & v) +{ + typedef __CGvector ResultType; + return ResultType(v > 0) - ResultType(v < 0); +} +template +static inline __CGvector::numericType,1> sign(const T & v) +{ + typedef __CGvector ResultType; + return ResultType(static_cast(v) > 0) - ResultType(static_cast(v) < 0); +} + +} // namespace Cg + +#endif // __Cg_sign_hpp__ diff --git a/extensions/externals/include/Cg/sin.hpp b/extensions/externals/include/Cg/sin.hpp new file mode 100644 index 0000000..b5bbd9d --- /dev/null +++ b/extensions/externals/include/Cg/sin.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_sin_hpp__ +#define __Cg_sin_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for ::sin + +namespace Cg { + +template +static inline __CGvector::realType,N> sin(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> sin(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> sin(const T & v) +{ + __CGvector::realType,1> rv(::sin(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_sin_hpp__ diff --git a/extensions/externals/include/Cg/sinh.hpp b/extensions/externals/include/Cg/sinh.hpp new file mode 100644 index 0000000..59b34c7 --- /dev/null +++ b/extensions/externals/include/Cg/sinh.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_sinh_hpp__ +#define __Cg_sinh_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::sinh + +namespace Cg { + +template +static inline __CGvector::realType,N> sinh(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> sinh(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> sinh(const T & v) +{ + __CGvector::realType,1> rv(std::sinh(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_sinh_hpp__ diff --git a/extensions/externals/include/Cg/smoothstep.hpp b/extensions/externals/include/Cg/smoothstep.hpp new file mode 100644 index 0000000..94aee95 --- /dev/null +++ b/extensions/externals/include/Cg/smoothstep.hpp @@ -0,0 +1,490 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_smoothstep_hpp__ +#define __Cg_smoothstep_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGvector::numericType,N> smoothstep(const __CGvector & a, + const __CGvector & b, + const __CGvector & x) +{ + typedef typename __CGtype_trait::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_plural_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_plural_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_usage & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const TB & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const TB & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const TA & a, + const __CGvector_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const TA & a, + const __CGvector_usage & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const TA & a, + const TB & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,1> smoothstep(const TA & a, + const TB & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = ResultType(static_cast(b)); + ResultType xv = ResultType(static_cast(x)); + ResultType y = (xv - av)/(bv - av); + if (1 < xv) + y = 1; + else if (0 < y) + y = y; + else + y = 0; + rv = y*y*(3 - 2*y); + return rv; +} +#endif +template +static inline __CGvector::numericType,N> smoothstep(const TA & a, + const __CGvector_plural_usage & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_plural_usage & a, + const TB & b, + const __CGvector_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = ResultType(static_cast(b)); + ResultType xv = x[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const TA & a, + const __CGvector_usage & b, + const __CGvector_plural_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = ResultType(static_cast(a)); + ResultType bv = b[0]; + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_plural_usage & a, + const __CGvector_usage & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType bv = b[0]; + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const TB & b, + const __CGvector_plural_usage & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType bv = ResultType(static_cast(b)); + for (int i=0; i +static inline __CGvector::numericType,N> smoothstep(const __CGvector_usage & a, + const __CGvector_plural_usage & b, + const TX & x) +{ + typedef typename __CGtype_trait3::resultType ResultType; + __CGvector rv; + ResultType av = a[0]; + ResultType xv = ResultType(static_cast(x)); + for (int i=0; i") +#endif + +#include + +#include // for std::sqrt + +namespace Cg { + +template +static inline __CGvector::realType,N> sqrt(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> sqrt(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> sqrt(const T & v) +{ + __CGvector::realType,1> rv(std::sqrt(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_sqrt_hpp__ diff --git a/extensions/externals/include/Cg/stdlib.hpp b/extensions/externals/include/Cg/stdlib.hpp new file mode 100644 index 0000000..7118f3d --- /dev/null +++ b/extensions/externals/include/Cg/stdlib.hpp @@ -0,0 +1,1858 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_stdlib_hpp__ +#define __Cg_stdlib_hpp__ + +/* + * To be implemented: + * - noise + * + * Sampler standard library support: + * - Use + * + * Limitations: + * - Calling functions with mixed underlying data types is not instantiated + * - Example: fv = float2(1,4); hv = half2(-2,3); float f = dot(fv, hv); + * - Workaround by casting to same types: float f = dot(fv, float2(hv)); + * - Ambiguous when multi-parameter function is called with all 1-component swizzles + * - Example: float3 foo = float(1,2,3); float m = max(foo.x, foo.z); + * - Workound by casting at least one swizzle to float1 + * + * Not possible to implement: + * - clip + * - ddx + * - ddy + * - fwidth + * - debug + */ + +#include + +namespace Cg { + +#ifdef __Cg_double_hpp__ +#define CG_DOUBLE_SUPPORT(_x) _x +#else +#define CG_DOUBLE_SUPPORT(_x) +#endif +#ifdef __Cg_half_hpp__ +#define CG_HALF_SUPPORT(_x) _x +#else +#define CG_HALF_SUPPORT(_x) +#endif +#ifdef __Cg_fixed_hpp__ +#define CG_FIXED_SUPPORT(_x) _x +#else +#define CG_FIXED_SUPPORT(_x) +#endif + +/// ABS - absolute value +#ifndef __Cg_abs_hpp__ +extern int abs(int v); +extern int1 abs(int1 v); +extern int2 abs(int2 v); +extern int3 abs(int3 v); +extern int4 abs(int4 v); +extern float abs(float v); +extern float1 abs(float1 v); +extern float2 abs(float2 v); +extern float3 abs(float3 v); +extern float4 abs(float4 v); +CG_DOUBLE_SUPPORT(extern double abs(double v);) +CG_DOUBLE_SUPPORT(extern double1 abs(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 abs(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 abs(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 abs(double4 v);) +CG_HALF_SUPPORT(extern half abs(half v);) +CG_HALF_SUPPORT(extern half1 abs(half1 v);) +CG_HALF_SUPPORT(extern half2 abs(half2 v);) +CG_HALF_SUPPORT(extern half3 abs(half3 v);) +CG_HALF_SUPPORT(extern half4 abs(half4 v);) +CG_FIXED_SUPPORT(extern fixed abs(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 abs(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 abs(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 abs(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 abs(fixed4 v);) +#endif + +/// ACOS - arc cosine +#ifndef __Cg_acos_hpp__ +extern float acos(float v); +extern float1 acos(float1 v); +extern float2 acos(float2 v); +extern float3 acos(float3 v); +extern float4 acos(float4 v); +CG_DOUBLE_SUPPORT(extern double acos(double v);) +CG_DOUBLE_SUPPORT(extern double1 acos(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 acos(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 acos(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 acos(double4 v);) +CG_HALF_SUPPORT(extern half acos(half v);) +CG_HALF_SUPPORT(extern half1 acos(half1 v);) +CG_HALF_SUPPORT(extern half2 acos(half2 v);) +CG_HALF_SUPPORT(extern half3 acos(half3 v);) +CG_HALF_SUPPORT(extern half4 acos(half4 v);) +CG_FIXED_SUPPORT(extern fixed acos(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 acos(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 acos(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 acos(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 acos(fixed4 v);) +#endif + +/// ALL - all true booleans +#ifndef __Cg_all_hpp__ +bool1 all(bool1 v); +bool1 all(bool2 v); +bool1 all(bool3 v); +bool1 all(bool4 v); +#endif + +/// ANY - any true booleans +#ifndef __Cg_any_hpp__ +bool1 any(bool1 v); +bool1 any(bool2 v); +bool1 any(bool3 v); +bool1 any(bool4 v); +#endif + +/// ASIN - arc sine +#ifndef __Cg_asin_hpp__ +extern float asin(float v); +extern float1 asin(float1 v); +extern float2 asin(float2 v); +extern float3 asin(float3 v); +extern float4 asin(float4 v); +CG_DOUBLE_SUPPORT(extern double asin(double v);) +CG_DOUBLE_SUPPORT(extern double1 asin(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 asin(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 asin(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 asin(double4 v);) +CG_HALF_SUPPORT(extern half asin(half v);) +CG_HALF_SUPPORT(extern half1 asin(half1 v);) +CG_HALF_SUPPORT(extern half2 asin(half2 v);) +CG_HALF_SUPPORT(extern half3 asin(half3 v);) +CG_HALF_SUPPORT(extern half4 asin(half4 v);) +CG_FIXED_SUPPORT(extern fixed asin(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 asin(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 asin(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 asin(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 asin(fixed4 v);) +#endif + +/// ATAN - arc tangent +#ifndef __Cg_atan_hpp__ +extern float atan(float v); +extern float1 atan(float1 v); +extern float2 atan(float2 v); +extern float3 atan(float3 v); +extern float4 atan(float4 v); +CG_DOUBLE_SUPPORT(extern double atan(double v);) +CG_DOUBLE_SUPPORT(extern double1 atan(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 atan(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 atan(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 atan(double4 v);) +CG_HALF_SUPPORT(extern half atan(half v);) +CG_HALF_SUPPORT(extern half1 atan(half1 v);) +CG_HALF_SUPPORT(extern half2 atan(half2 v);) +CG_HALF_SUPPORT(extern half3 atan(half3 v);) +CG_HALF_SUPPORT(extern half4 atan(half4 v);) +CG_FIXED_SUPPORT(extern fixed atan(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 atan(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 atan(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 atan(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 atan(fixed4 v);) +#endif + +/// ATAN2 - arc tangent of y divided by x +#ifndef __Cg_atan2_hpp__ +extern float1 atan2(float1 y, float1 x); +extern float2 atan2(float2 y, float2 x); +extern float3 atan2(float3 y, float3 x); +extern float4 atan2(float4 y, float4 x); +CG_HALF_SUPPORT(extern half1 atan2(half1 y, half1 x);) +CG_HALF_SUPPORT(extern half2 atan2(half2 y, half2 x);) +CG_HALF_SUPPORT(extern half3 atan2(half3 y, half3 x);) +CG_HALF_SUPPORT(extern half4 atan2(half4 y, half4 x);) +CG_FIXED_SUPPORT(extern fixed1 atan2(fixed1 y, fixed1 x);) +CG_FIXED_SUPPORT(extern fixed2 atan2(fixed2 y, fixed2 x);) +CG_FIXED_SUPPORT(extern fixed3 atan2(fixed3 y, fixed3 x);) +CG_FIXED_SUPPORT(extern fixed4 atan2(fixed4 y, fixed4 x);) +CG_DOUBLE_SUPPORT(extern double1 atan2(double1 y, double1 x);) +CG_DOUBLE_SUPPORT(extern double2 atan2(double2 y, double2 x);) +CG_DOUBLE_SUPPORT(extern double3 atan2(double3 y, double3 x);) +CG_DOUBLE_SUPPORT(extern double4 atan2(double4 y, double4 x);) +#endif + +/// CEIL - nearest integer towards infinity +#ifndef __Cg_ceil_hpp__ +extern float ceil(float v); +extern float1 ceil(float1 v); +extern float2 ceil(float2 v); +extern float3 ceil(float3 v); +extern float4 ceil(float4 v); +CG_DOUBLE_SUPPORT(extern double ceil(double v);) +CG_DOUBLE_SUPPORT(extern double1 ceil(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 ceil(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 ceil(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 ceil(double4 v);) +CG_HALF_SUPPORT(extern half ceil(half v);) +CG_HALF_SUPPORT(extern half1 ceil(half1 v);) +CG_HALF_SUPPORT(extern half2 ceil(half2 v);) +CG_HALF_SUPPORT(extern half3 ceil(half3 v);) +CG_HALF_SUPPORT(extern half4 ceil(half4 v);) +CG_FIXED_SUPPORT(extern fixed ceil(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 ceil(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 ceil(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 ceil(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 ceil(fixed4 v);) +#endif + +/// CLAMP - clamp to range +#ifndef __Cg_clamp_hpp__ +extern int1 clamp(int1 x, int1 a, int1 b); +extern int2 clamp(int2 x, int2 a, int2 b); +extern int3 clamp(int3 x, int3 a, int3 b); +extern int4 clamp(int4 x, int4 a, int4 b); +extern float1 clamp(float1 x, float1 a, float1 b); +extern float2 clamp(float2 x, float2 a, float2 b); +extern float3 clamp(float3 x, float3 a, float3 b); +extern float4 clamp(float4 x, float4 a, float4 b); +CG_HALF_SUPPORT(extern half1 clamp(half1 x, half1 a, half1 b);) +CG_HALF_SUPPORT(extern half2 clamp(half2 x, half2 a, half2 b);) +CG_HALF_SUPPORT(extern half3 clamp(half3 x, half3 a, half3 b);) +CG_HALF_SUPPORT(extern half4 clamp(half4 x, half4 a, half4 b);) +CG_FIXED_SUPPORT(extern fixed1 clamp(fixed1 x, fixed1 a, fixed1 b);) +CG_FIXED_SUPPORT(extern fixed2 clamp(fixed2 x, fixed2 a, fixed2 b);) +CG_FIXED_SUPPORT(extern fixed3 clamp(fixed3 x, fixed3 a, fixed3 b);) +CG_FIXED_SUPPORT(extern fixed4 clamp(fixed4 x, fixed4 a, fixed4 b);) +CG_DOUBLE_SUPPORT(extern double1 clamp(double1 x, double1 a, double1 b);) +CG_DOUBLE_SUPPORT(extern double2 clamp(double2 x, double2 a, double2 b);) +CG_DOUBLE_SUPPORT(extern double3 clamp(double3 x, double3 a, double3 b);) +CG_DOUBLE_SUPPORT(extern double4 clamp(double4 x, double4 a, double4 b);) +#endif + +/// COS - cosine +#ifndef __Cg_cos_hpp__ +extern float cos(float v); +extern float1 cos(float1 v); +extern float2 cos(float2 v); +extern float3 cos(float3 v); +extern float4 cos(float4 v); +CG_DOUBLE_SUPPORT(extern double cos(double v);) +CG_DOUBLE_SUPPORT(extern double1 cos(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 cos(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 cos(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 cos(double4 v);) +CG_HALF_SUPPORT(extern half cos(half v);) +CG_HALF_SUPPORT(extern half1 cos(half1 v);) +CG_HALF_SUPPORT(extern half2 cos(half2 v);) +CG_HALF_SUPPORT(extern half3 cos(half3 v);) +CG_HALF_SUPPORT(extern half4 cos(half4 v);) +CG_FIXED_SUPPORT(extern fixed cos(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 cos(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 cos(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 cos(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 cos(fixed4 v);) +#endif + +/// COSH - hyperbolic cosine +#ifndef __Cg_cosh_hpp__ +extern float1 cosh(float v); +extern float1 cosh(float1 v); +extern float2 cosh(float2 v); +extern float3 cosh(float3 v); +extern float4 cosh(float4 v); +CG_DOUBLE_SUPPORT(extern double cosh(double v);) +CG_DOUBLE_SUPPORT(extern double1 cosh(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 cosh(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 cosh(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 cosh(double4 v);) +CG_HALF_SUPPORT(extern half cosh(half v);) +CG_HALF_SUPPORT(extern half1 cosh(half1 v);) +CG_HALF_SUPPORT(extern half2 cosh(half2 v);) +CG_HALF_SUPPORT(extern half3 cosh(half3 v);) +CG_HALF_SUPPORT(extern half4 cosh(half4 v);) +CG_FIXED_SUPPORT(extern fixed cosh(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 cosh(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 cosh(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 cosh(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 cosh(fixed4 v);) +#endif + +/// CROSS - cross product +#ifndef __Cg_cross_hpp__ +extern float3 cross(float3 a, float3 b); +extern int3 cross(int3 a, int3 b); +CG_DOUBLE_SUPPORT(extern double3 cross(double3 a, double3 b);) +CG_HALF_SUPPORT(extern half3 cross(half3 a, half3 b);) +CG_FIXED_SUPPORT(extern fixed3 cross(fixed3 a, fixed3 b);) +#endif + +/// DEGREES - convert radians to degrees +#ifndef __Cg_degrees_hpp__ +extern float degrees(float v); +extern float1 degrees(float1 v); +extern float2 degrees(float2 v); +extern float3 degrees(float3 v); +extern float4 degrees(float4 v); +CG_DOUBLE_SUPPORT(extern double degrees(double v);) +CG_DOUBLE_SUPPORT(extern double1 degrees(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 degrees(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 degrees(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 degrees(double4 v);) +CG_HALF_SUPPORT(extern half degrees(half v);) +CG_HALF_SUPPORT(extern half1 degrees(half1 v);) +CG_HALF_SUPPORT(extern half2 degrees(half2 v);) +CG_HALF_SUPPORT(extern half3 degrees(half3 v);) +CG_HALF_SUPPORT(extern half4 degrees(half4 v);) +CG_FIXED_SUPPORT(extern fixed degrees(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 degrees(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 degrees(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 degrees(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 degrees(fixed4 v);) +#endif + +/// DETERMINANT +#ifdef __Cg_matrix_hpp__ +#ifndef __Cg_determinant_hpp__ +extern float1 determinant(float1x1 A); +extern float1 determinant(float2x2 A); +extern float1 determinant(float3x3 A); +extern float1 determinant(float4x4 A); +CG_DOUBLE_SUPPORT(extern double1 determinant(double1x1 A);) +CG_DOUBLE_SUPPORT(extern double1 determinant(double2x2 A);) +CG_DOUBLE_SUPPORT(extern double1 determinant(double3x3 A);) +CG_DOUBLE_SUPPORT(extern double1 determinant(double4x4 A);) +#endif +#endif // __Cg_matrix_hpp__ + +/// DISTANCE - distance from point a to point b +#ifndef __Cg_distance_hpp__ +extern float1 distance(float1 a, float1 b); +extern float1 distance(float2 a, float2 b); +extern float1 distance(float3 a, float3 b); +extern float1 distance(float4 a, float4 b); +CG_HALF_SUPPORT(extern half1 distance(half1 a, half1 b);) +CG_HALF_SUPPORT(extern half1 distance(half2 a, half2 b);) +CG_HALF_SUPPORT(extern half1 distance(half3 a, half3 b);) +CG_HALF_SUPPORT(extern half1 distance(half4 a, half4 b);) +CG_FIXED_SUPPORT(extern fixed1 distance(fixed1 a, fixed1 b);) +CG_FIXED_SUPPORT(extern fixed1 distance(fixed2 a, fixed2 b);) +CG_FIXED_SUPPORT(extern fixed1 distance(fixed3 a, fixed3 b);) +CG_FIXED_SUPPORT(extern fixed1 distance(fixed4 a, fixed4 b);) +CG_DOUBLE_SUPPORT(extern double1 distance(double1 a, double1 b);) +CG_DOUBLE_SUPPORT(extern double1 distance(double2 a, double2 b);) +CG_DOUBLE_SUPPORT(extern double1 distance(double3 a, double3 b);) +CG_DOUBLE_SUPPORT(extern double1 distance(double4 a, double4 b);) +#endif + +/// DOT - dot product +#ifndef __Cg_dot_hpp__ +extern float dot(float a, float b); +extern float1 dot(float1 a, float1 b); +extern float1 dot(float2 a, float2 b); +extern float1 dot(float3 a, float3 b); +extern float1 dot(float4 a, float4 b); +CG_HALF_SUPPORT(extern half dot(half a, half b);) +CG_HALF_SUPPORT(extern half1 dot(half1 a, half1 b);) +CG_HALF_SUPPORT(extern half1 dot(half2 a, half2 b);) +CG_HALF_SUPPORT(extern half1 dot(half3 a, half3 b);) +CG_HALF_SUPPORT(extern half1 dot(half4 a, half4 b);) +CG_FIXED_SUPPORT(extern fixed dot(fixed a, fixed b);) +CG_FIXED_SUPPORT(extern fixed1 dot(fixed1 a, fixed1 b);) +CG_FIXED_SUPPORT(extern fixed1 dot(fixed2 a, fixed2 b);) +CG_FIXED_SUPPORT(extern fixed1 dot(fixed3 a, fixed3 b);) +CG_FIXED_SUPPORT(extern fixed1 dot(fixed4 a, fixed4 b);) +CG_DOUBLE_SUPPORT(extern double dot(double a, double b);) +CG_DOUBLE_SUPPORT(extern double1 dot(double1 a, double1 b);) +CG_DOUBLE_SUPPORT(extern double1 dot(double2 a, double2 b);) +CG_DOUBLE_SUPPORT(extern double1 dot(double3 a, double3 b);) +CG_DOUBLE_SUPPORT(extern double1 dot(double4 a, double4 b);) +#endif + +/// EXP - natural exponential (base e) +#ifndef __Cg_exp_hpp__ +extern float exp(float v); +extern float1 exp(float1 v); +extern float2 exp(float2 v); +extern float3 exp(float3 v); +extern float4 exp(float4 v); +CG_DOUBLE_SUPPORT(extern double exp(double v);) +CG_DOUBLE_SUPPORT(extern double1 exp(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 exp(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 exp(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 exp(double4 v);) +CG_HALF_SUPPORT(extern half exp(half v);) +CG_HALF_SUPPORT(extern half1 exp(half1 v);) +CG_HALF_SUPPORT(extern half2 exp(half2 v);) +CG_HALF_SUPPORT(extern half3 exp(half3 v);) +CG_HALF_SUPPORT(extern half4 exp(half4 v);) +CG_FIXED_SUPPORT(extern fixed exp(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 exp(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 exp(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 exp(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 exp(fixed4 v);) +#endif + +/// EXP2 - base 2 exponential +#ifndef __Cg_exp2_hpp__ +extern float exp2(float v); +extern float1 exp2(float1 v); +extern float2 exp2(float2 v); +extern float3 exp2(float3 v); +extern float4 exp2(float4 v); +CG_DOUBLE_SUPPORT(extern double exp2(double v);) +CG_DOUBLE_SUPPORT(extern double1 exp2(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 exp2(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 exp2(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 exp2(double4 v);) +CG_HALF_SUPPORT(extern half exp2(half v);) +CG_HALF_SUPPORT(extern half1 exp2(half1 v);) +CG_HALF_SUPPORT(extern half2 exp2(half2 v);) +CG_HALF_SUPPORT(extern half3 exp2(half3 v);) +CG_HALF_SUPPORT(extern half4 exp2(half4 v);) +CG_FIXED_SUPPORT(extern fixed exp2(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 exp2(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 exp2(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 exp2(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 exp2(fixed4 v);) +#endif + +/// FACEFORWARD - faceforward +#ifndef __Cg_faceforward_hpp__ +extern float1 faceforward(float n, float i, float ng); +extern float2 faceforward(float2 n, float2 i, float2 ng); +extern float3 faceforward(float3 n, float3 i, float3 ng); +extern float4 faceforward(float4 n, float4 i, float4 ng); +CG_HALF_SUPPORT(extern half1 faceforward(half n, half i, half ng);) +CG_HALF_SUPPORT(extern half2 faceforward(half2 n, half2 i, half2 ng);) +CG_HALF_SUPPORT(extern half3 faceforward(half3 n, half3 i, half3 ng);) +CG_HALF_SUPPORT(extern half4 faceforward(half4 n, half4 i, half4 ng);) +CG_FIXED_SUPPORT(extern fixed1 faceforward(fixed n, fixed i, fixed ng);) +CG_FIXED_SUPPORT(extern fixed2 faceforward(fixed2 n, fixed2 i, fixed2 ng);) +CG_FIXED_SUPPORT(extern fixed3 faceforward(fixed3 n, fixed3 i, fixed3 ng);) +CG_FIXED_SUPPORT(extern fixed4 faceforward(fixed4 n, fixed4 i, fixed4 ng);) +CG_DOUBLE_SUPPORT(extern double1 faceforward(double n, double i, double ng);) +CG_DOUBLE_SUPPORT(extern double2 faceforward(double2 n, double2 i, double2 ng);) +CG_DOUBLE_SUPPORT(extern double3 faceforward(double3 n, double3 i, double3 ng);) +CG_DOUBLE_SUPPORT(extern double4 faceforward(double4 n, double4 i, double4 ng);) +#endif + +/// FLOATTOINTBITS - bit cast of IEEE float to 2's complement integer +#ifndef __Cg_floatToIntBits_hpp__ +extern int floatToIntBits(float v); +extern int1 floatToIntBits(float1 v); +extern int2 floatToIntBits(float2 v); +extern int3 floatToIntBits(float3 v); +extern int4 floatToIntBits(float4 v); +#endif + +/// FLOATTORAWINTBITS - bit cast of IEEE float to 2's complement integer +#ifndef __Cg_floatToRawIntBits_hpp__ +extern int floatToRawIntBits(float v); +extern int1 floatToRawIntBits(float1 v); +extern int2 floatToRawIntBits(float2 v); +extern int3 floatToRawIntBits(float3 v); +extern int4 floatToRawIntBits(float4 v); +#endif + +/// FLOOR - nearest integer towards negative infinity +#ifndef __Cg_floor_hpp__ +extern float floor(float v); +extern float1 floor(float1 v); +extern float2 floor(float2 v); +extern float3 floor(float3 v); +extern float4 floor(float4 v); +CG_DOUBLE_SUPPORT(extern double floor(double v);) +CG_DOUBLE_SUPPORT(extern double1 floor(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 floor(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 floor(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 floor(double4 v);) +CG_HALF_SUPPORT(extern half floor(half v);) +CG_HALF_SUPPORT(extern half1 floor(half1 v);) +CG_HALF_SUPPORT(extern half2 floor(half2 v);) +CG_HALF_SUPPORT(extern half3 floor(half3 v);) +CG_HALF_SUPPORT(extern half4 floor(half4 v);) +CG_FIXED_SUPPORT(extern fixed floor(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 floor(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 floor(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 floor(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 floor(fixed4 v);) +#endif + +/// FMOD - remainder of x/y with the same sign as x +#ifndef __Cg_fmod_hpp__ +extern float1 fmod(float1 x, float1 y); +extern float2 fmod(float2 x, float2 y); +extern float3 fmod(float3 x, float3 y); +extern float4 fmod(float4 x, float4 y); +CG_HALF_SUPPORT(extern half1 fmod(half1 x, half1 y);) +CG_HALF_SUPPORT(extern half2 fmod(half2 x, half2 y);) +CG_HALF_SUPPORT(extern half3 fmod(half3 x, half3 y);) +CG_HALF_SUPPORT(extern half4 fmod(half4 x, half4 y);) +CG_FIXED_SUPPORT(extern fixed1 fmod(fixed1 x, fixed1 y);) +CG_FIXED_SUPPORT(extern fixed2 fmod(fixed2 x, fixed2 y);) +CG_FIXED_SUPPORT(extern fixed3 fmod(fixed3 x, fixed3 y);) +CG_FIXED_SUPPORT(extern fixed4 fmod(fixed4 x, fixed4 y);) +CG_DOUBLE_SUPPORT(extern double1 fmod(double1 x, double1 y);) +CG_DOUBLE_SUPPORT(extern double2 fmod(double2 x, double2 y);) +CG_DOUBLE_SUPPORT(extern double3 fmod(double3 x, double3 y);) +CG_DOUBLE_SUPPORT(extern double4 fmod(double4 x, double4 y);) +#endif + +/// FRAC - fractional portion +#ifndef __Cg_frac_hpp__ +extern float frac(float v); +extern float1 frac(float1 v); +extern float2 frac(float2 v); +extern float3 frac(float3 v); +extern float4 frac(float4 v); +CG_DOUBLE_SUPPORT(extern double frac(double v);) +CG_DOUBLE_SUPPORT(extern double1 frac(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 frac(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 frac(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 frac(double4 v);) +CG_HALF_SUPPORT(extern half frac(half v);) +CG_HALF_SUPPORT(extern half1 frac(half1 v);) +CG_HALF_SUPPORT(extern half2 frac(half2 v);) +CG_HALF_SUPPORT(extern half3 frac(half3 v);) +CG_HALF_SUPPORT(extern half4 frac(half4 v);) +CG_FIXED_SUPPORT(extern fixed frac(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 frac(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 frac(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 frac(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 frac(fixed4 v);) +#endif + +/// FRESNEL - evaluate Fresnel term +#ifdef __Cg_inout_hpp__ +#ifndef __Cg_fresnel_hpp__ +extern float1 fresnel(float3 i, float3 n, float eta, Out kt, Out r, Out t); +extern float1 fresnel(float3 i, float3 n, float eta, Out r, Out t); +extern float1 fresnel(float3 i, float3 n, float eta, Out kt); +extern float1 fresnel(float3 i, float3 n, float eta); +CG_DOUBLE_SUPPORT(extern double1 fresnel(double3 i, double3 n, double eta, Out kt, Out r, Out t);) +CG_DOUBLE_SUPPORT(extern double1 fresnel(double3 i, double3 n, double eta, Out r, Out t);) +CG_DOUBLE_SUPPORT(extern double1 fresnel(double3 i, double3 n, double eta, Out kt);) +CG_DOUBLE_SUPPORT(extern double1 fresnel(double3 i, double3 n, double eta);) +CG_HALF_SUPPORT(extern half1 fresnel(half3 i, half3 n, half eta, Out kt, Out r, Out t);) +CG_HALF_SUPPORT(extern half1 fresnel(half3 i, half3 n, half eta, Out r, Out t);) +CG_HALF_SUPPORT(extern half1 fresnel(half3 i, half3 n, half eta, Out kt);) +CG_HALF_SUPPORT(extern half1 fresnel(half3 i, half3 n, half eta);) +CG_FIXED_SUPPORT(extern fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out kt, Out r, Out t);) +CG_FIXED_SUPPORT(extern fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out r, Out t);) +CG_FIXED_SUPPORT(extern fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out kt);) +CG_FIXED_SUPPORT(extern fixed1 fresnel(fixed3 i, fixed3 n, fixed eta);) +#endif +#endif // __Cg_inout_hpp__ + +/// FREXP - split x into normalized fraction in [0.5, 1] interval and power-of-2 exponent, return fraction and output exponent +#ifdef __Cg_inout_hpp__ +#ifndef __Cg_frexp_hpp__ +extern float1 frexp(float1 x, Out expOut); +extern float2 frexp(float2 x, Out expOut); +extern float3 frexp(float3 x, Out expOut); +extern float4 frexp(float4 x, Out expOut); +CG_DOUBLE_SUPPORT(extern double1 frexp(double1 x, Out expOut);) +CG_DOUBLE_SUPPORT(extern double2 frexp(double2 x, Out expOut);) +CG_DOUBLE_SUPPORT(extern double3 frexp(double3 x, Out expOut);) +CG_DOUBLE_SUPPORT(extern double4 frexp(double4 x, Out expOut);) +CG_HALF_SUPPORT(extern half1 frexp(half1 x, Out expOut);) +CG_HALF_SUPPORT(extern half2 frexp(half2 x, Out expOut);) +CG_HALF_SUPPORT(extern half3 frexp(half3 x, Out expOut);) +CG_HALF_SUPPORT(extern half4 frexp(half4 x, Out expOut);) +CG_FIXED_SUPPORT(extern fixed1 frexp(fixed1 x, Out expOut);) +CG_FIXED_SUPPORT(extern fixed2 frexp(fixed2 x, Out expOut);) +CG_FIXED_SUPPORT(extern fixed3 frexp(fixed3 x, Out expOut);) +CG_FIXED_SUPPORT(extern fixed4 frexp(fixed4 x, Out expOut);) +#endif +#endif // __Cg_inout_hpp__ + +/// INTBITSTOFLOAT - bit cast 2's complement integer to IEEE float +#ifndef __Cg_intBitsToFloat_hpp__ +extern float intBitsToFloat(int v); +extern float1 intBitsToFloat(int1 v); +extern float2 intBitsToFloat(int2 v); +extern float3 intBitsToFloat(int3 v); +extern float4 intBitsToFloat(int4 v); +#endif + +/// INVERSE - matrix inverse +#ifdef __Cg_matrix_hpp__ +# ifndef __Cg_inverse_hpp__ +extern float4x4 inverse(float4x4 a); +extern float3x3 inverse(float3x3 a); +extern float2x2 inverse(float2x2 a); +extern float1x1 inverse(float1x1 a); +CG_DOUBLE_SUPPORT(extern double1x1 inverse(double1x1 a);) +CG_DOUBLE_SUPPORT(extern double2x2 inverse(double2x2 a);) +CG_DOUBLE_SUPPORT(extern double3x3 inverse(double3x3 a);) +CG_DOUBLE_SUPPORT(extern double4x4 inverse(double4x4 a);) +# endif +#endif // __Cg_matrix_hpp__ + +/// ISFINITE - has finite representation +#ifndef __Cg_isinfinite_hpp__ +#pragma push_macro("isfinite") +#undef isfinite +extern bool isfinite(float v); +extern bool1 isfinite(float1 v); +extern bool2 isfinite(float2 v); +extern bool3 isfinite(float3 v); +extern bool4 isfinite(float4 v); +CG_DOUBLE_SUPPORT(extern bool isfinite(double v);) +CG_DOUBLE_SUPPORT(extern bool1 isfinite(double1 v);) +CG_DOUBLE_SUPPORT(extern bool2 isfinite(double2 v);) +CG_DOUBLE_SUPPORT(extern bool3 isfinite(double3 v);) +CG_DOUBLE_SUPPORT(extern bool4 isfinite(double4 v);) +CG_HALF_SUPPORT(extern bool isfinite(half v);) +CG_HALF_SUPPORT(extern bool1 isfinite(half1 v);) +CG_HALF_SUPPORT(extern bool2 isfinite(half2 v);) +CG_HALF_SUPPORT(extern bool3 isfinite(half3 v);) +CG_HALF_SUPPORT(extern bool4 isfinite(half4 v);) +CG_FIXED_SUPPORT(extern bool isfinite(fixed v);) +CG_FIXED_SUPPORT(extern bool1 isfinite(fixed1 v);) +CG_FIXED_SUPPORT(extern bool2 isfinite(fixed2 v);) +CG_FIXED_SUPPORT(extern bool3 isfinite(fixed3 v);) +CG_FIXED_SUPPORT(extern bool4 isfinite(fixed4 v);) +#pragma pop_macro("isfinite") +#endif + +/// ISINF - has infinite representation +#ifndef __Cg_isinf_hpp__ +#pragma push_macro("isinf") +#undef isinf +extern bool isinf(float v); +extern bool1 isinf(float1 v); +extern bool2 isinf(float2 v); +extern bool3 isinf(float3 v); +extern bool4 isinf(float4 v); +CG_DOUBLE_SUPPORT(extern bool isinf(double v);) +CG_DOUBLE_SUPPORT(extern bool1 isinf(double1 v);) +CG_DOUBLE_SUPPORT(extern bool2 isinf(double2 v);) +CG_DOUBLE_SUPPORT(extern bool3 isinf(double3 v);) +CG_DOUBLE_SUPPORT(extern bool4 isinf(double4 v);) +CG_HALF_SUPPORT(extern bool isinf(half v);) +CG_HALF_SUPPORT(extern bool1 isinf(half1 v);) +CG_HALF_SUPPORT(extern bool2 isinf(half2 v);) +CG_HALF_SUPPORT(extern bool3 isinf(half3 v);) +CG_HALF_SUPPORT(extern bool4 isinf(half4 v);) +CG_FIXED_SUPPORT(extern bool isinf(fixed v);) +CG_FIXED_SUPPORT(extern bool1 isinf(fixed1 v);) +CG_FIXED_SUPPORT(extern bool2 isinf(fixed2 v);) +CG_FIXED_SUPPORT(extern bool3 isinf(fixed3 v);) +CG_FIXED_SUPPORT(extern bool4 isinf(fixed4 v);) +#pragma pop_macro("isinf") +#endif + +/// ISNAN - has Not-A-Number representation +#ifndef __Cg_isnan_hpp__ +#pragma push_macro("isnan") +#undef isnan +extern bool isnan(float v); +extern bool1 isnan(float1 v); +extern bool2 isnan(float2 v); +extern bool3 isnan(float3 v); +extern bool4 isnan(float4 v); +CG_DOUBLE_SUPPORT(extern bool isnan(double v);) +CG_DOUBLE_SUPPORT(extern bool1 isnan(double1 v);) +CG_DOUBLE_SUPPORT(extern bool2 isnan(double2 v);) +CG_DOUBLE_SUPPORT(extern bool3 isnan(double3 v);) +CG_DOUBLE_SUPPORT(extern bool4 isnan(double4 v);) +CG_HALF_SUPPORT(extern bool isnan(half v);) +CG_HALF_SUPPORT(extern bool1 isnan(half1 v);) +CG_HALF_SUPPORT(extern bool2 isnan(half2 v);) +CG_HALF_SUPPORT(extern bool3 isnan(half3 v);) +CG_HALF_SUPPORT(extern bool4 isnan(half4 v);) +CG_FIXED_SUPPORT(extern bool isnan(fixed v);) +CG_FIXED_SUPPORT(extern bool1 isnan(fixed1 v);) +CG_FIXED_SUPPORT(extern bool2 isnan(fixed2 v);) +CG_FIXED_SUPPORT(extern bool3 isnan(fixed3 v);) +CG_FIXED_SUPPORT(extern bool4 isnan(fixed4 v);) +#pragma pop_macro("isnan") +#endif + +/// LENGTH - Euclidean norm +#ifndef __Cg_length_hpp__ +extern float1 length(float1 v); +extern float1 length(float2 v); +extern float1 length(float3 v); +extern float1 length(float4 v); +CG_HALF_SUPPORT(extern half1 length(half1 v);) +CG_HALF_SUPPORT(extern half1 length(half2 v);) +CG_HALF_SUPPORT(extern half1 length(half3 v);) +CG_HALF_SUPPORT(extern half1 length(half4 v);) +CG_FIXED_SUPPORT(extern fixed1 length(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed1 length(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed1 length(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed1 length(fixed4 v);) +CG_DOUBLE_SUPPORT(extern double1 length(double1 v);) +CG_DOUBLE_SUPPORT(extern double1 length(double2 v);) +CG_DOUBLE_SUPPORT(extern double1 length(double3 v);) +CG_DOUBLE_SUPPORT(extern double1 length(double4 v);) +#endif + +/// LDEXP - x times 2 raised to n +#ifndef __Cg_ldexp_hpp__ +extern float1 ldexp(float1 x, float1 n); +extern float2 ldexp(float2 x, float2 n); +extern float3 ldexp(float3 x, float3 n); +extern float4 ldexp(float4 x, float4 n); +CG_HALF_SUPPORT(extern half1 ldexp(half1 x, half1 n);) +CG_HALF_SUPPORT(extern half2 ldexp(half2 x, half2 n);) +CG_HALF_SUPPORT(extern half3 ldexp(half3 x, half3 n);) +CG_HALF_SUPPORT(extern half4 ldexp(half4 x, half4 n);) +CG_FIXED_SUPPORT(extern fixed1 ldexp(fixed1 x, fixed1 n);) +CG_FIXED_SUPPORT(extern fixed2 ldexp(fixed2 x, fixed2 n);) +CG_FIXED_SUPPORT(extern fixed3 ldexp(fixed3 x, fixed3 n);) +CG_FIXED_SUPPORT(extern fixed4 ldexp(fixed4 x, fixed4 n);) +CG_DOUBLE_SUPPORT(extern double1 ldexp(double1 x, double1 n);) +CG_DOUBLE_SUPPORT(extern double2 ldexp(double2 x, double2 n);) +CG_DOUBLE_SUPPORT(extern double3 ldexp(double3 x, double3 n);) +CG_DOUBLE_SUPPORT(extern double4 ldexp(double4 x, double4 n);) +#endif + +/// LERP - linear interpolation +#ifndef __Cg_lerp_hpp__ +extern float1 lerp(float1 a, float1 b, float1 x); +extern float2 lerp(float2 a, float2 b, float2 x); +extern float3 lerp(float3 a, float3 b, float3 x); +extern float4 lerp(float4 a, float4 b, float4 x); +extern int1 lerp(int1 a, int1 b, int1 x); +extern int2 lerp(int2 a, int2 b, int2 x); +extern int3 lerp(int3 a, int3 b, int3 x); +extern int4 lerp(int4 a, int4 b, int4 x); +CG_HALF_SUPPORT(extern half1 lerp(half1 a, half1 b, half1 x);) +CG_HALF_SUPPORT(extern half2 lerp(half2 a, half2 b, half2 x);) +CG_HALF_SUPPORT(extern half3 lerp(half3 a, half3 b, half3 x);) +CG_HALF_SUPPORT(extern half4 lerp(half4 a, half4 b, half4 x);) +CG_FIXED_SUPPORT(extern fixed1 lerp(fixed1 a, fixed1 b, fixed1 x);) +CG_FIXED_SUPPORT(extern fixed2 lerp(fixed2 a, fixed2 b, fixed2 x);) +CG_FIXED_SUPPORT(extern fixed3 lerp(fixed3 a, fixed3 b, fixed3 x);) +CG_FIXED_SUPPORT(extern fixed4 lerp(fixed4 a, fixed4 b, fixed4 x);) +CG_DOUBLE_SUPPORT(extern double1 lerp(double1 a, double1 b, double1 x);) +CG_DOUBLE_SUPPORT(extern double2 lerp(double2 a, double2 b, double2 x);) +CG_DOUBLE_SUPPORT(extern double3 lerp(double3 a, double3 b, double3 x);) +CG_DOUBLE_SUPPORT(extern double4 lerp(double4 a, double4 b, double4 x);) +#endif + +/// LIT - specular lighting vector +#ifndef __Cg_lit_hpp__ +extern float4 lit(float1 NdotL, float1 NdotH, float1 m); +CG_HALF_SUPPORT(extern half4 lit(half1 NdotL, half1 NdotH, half1 m);) +CG_FIXED_SUPPORT(extern fixed4 lit(fixed1 NdotL, fixed1 NdotH, fixed1 m);) +#endif + +/// LOG - natural logarithm +#ifndef __Cg_log_hpp__ +extern float log(float v); +extern float1 log(float1 v); +extern float2 log(float2 v); +extern float3 log(float3 v); +extern float4 log(float4 v); +CG_DOUBLE_SUPPORT(extern double log(double v);) +CG_DOUBLE_SUPPORT(extern double1 log(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 log(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 log(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 log(double4 v);) +CG_HALF_SUPPORT(extern half log(half v);) +CG_HALF_SUPPORT(extern half1 log(half1 v);) +CG_HALF_SUPPORT(extern half2 log(half2 v);) +CG_HALF_SUPPORT(extern half3 log(half3 v);) +CG_HALF_SUPPORT(extern half4 log(half4 v);) +CG_FIXED_SUPPORT(extern fixed log(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 log(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 log(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 log(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 log(fixed4 v);) +#endif + +/// LOG2 - base 2 logarithm +#ifndef __Cg_log2_hpp__ +extern float log2(float v); +extern float1 log2(float1 v); +extern float2 log2(float2 v); +extern float3 log2(float3 v); +extern float4 log2(float4 v); +CG_DOUBLE_SUPPORT(extern double log2(double v);) +CG_DOUBLE_SUPPORT(extern double1 log2(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 log2(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 log2(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 log2(double4 v);) +CG_HALF_SUPPORT(extern half log2(half v);) +CG_HALF_SUPPORT(extern half1 log2(half1 v);) +CG_HALF_SUPPORT(extern half2 log2(half2 v);) +CG_HALF_SUPPORT(extern half3 log2(half3 v);) +CG_HALF_SUPPORT(extern half4 log2(half4 v);) +CG_FIXED_SUPPORT(extern fixed log2(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 log2(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 log2(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 log2(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 log2(fixed4 v);) +#endif + +/// LOG10 - base 10 logarithm +#ifndef __Cg_log10_hpp__ +extern float log10(float v); +extern float1 log10(float1 v); +extern float2 log10(float2 v); +extern float3 log10(float3 v); +extern float4 log10(float4 v); +CG_DOUBLE_SUPPORT(extern double log10(double v);) +CG_DOUBLE_SUPPORT(extern double1 log10(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 log10(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 log10(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 log10(double4 v);) +CG_HALF_SUPPORT(extern half log10(half v);) +CG_HALF_SUPPORT(extern half1 log10(half1 v);) +CG_HALF_SUPPORT(extern half2 log10(half2 v);) +CG_HALF_SUPPORT(extern half3 log10(half3 v);) +CG_HALF_SUPPORT(extern half4 log10(half4 v);) +CG_FIXED_SUPPORT(extern fixed log10(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 log10(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 log10(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 log10(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 log10(fixed4 v);) +#endif + +/// MAX - maximum +#ifndef __Cg_max_hpp__ +#pragma push_macro("max") +#undef max +extern float1 max(float1 a, float1 b); +extern float2 max(float2 a, float2 b); +extern float3 max(float3 a, float3 b); +extern float4 max(float4 a, float4 b); +extern int1 max(int1 a, int1 b); +extern int2 max(int2 a, int2 b); +extern int3 max(int3 a, int3 b); +extern int4 max(int4 a, int4 b); +CG_HALF_SUPPORT(extern half1 max(half1 a, half1 b);) +CG_HALF_SUPPORT(extern half2 max(half2 a, half2 b);) +CG_HALF_SUPPORT(extern half3 max(half3 a, half3 b);) +CG_HALF_SUPPORT(extern half4 max(half4 a, half4 b);) +CG_FIXED_SUPPORT(extern fixed1 max(fixed1 a, fixed1 b);) +CG_FIXED_SUPPORT(extern fixed2 max(fixed2 a, fixed2 b);) +CG_FIXED_SUPPORT(extern fixed3 max(fixed3 a, fixed3 b);) +CG_FIXED_SUPPORT(extern fixed4 max(fixed4 a, fixed4 b);) +CG_DOUBLE_SUPPORT(extern double1 max(double1 a, double1 b);) +CG_DOUBLE_SUPPORT(extern double2 max(double2 a, double2 b);) +CG_DOUBLE_SUPPORT(extern double3 max(double3 a, double3 b);) +CG_DOUBLE_SUPPORT(extern double4 max(double4 a, double4 b);) +#pragma pop_macro("max") +#endif + +/// MIN - minimum +#ifndef __Cg_min_hpp__ +#pragma push_macro("min") +#undef min +extern float1 min(float1 a, float1 b); +extern float2 min(float2 a, float2 b); +extern float3 min(float3 a, float3 b); +extern float4 min(float4 a, float4 b); +extern int1 min(int1 a, int1 b); +extern int2 min(int2 a, int2 b); +extern int3 min(int3 a, int3 b); +extern int4 min(int4 a, int4 b); +CG_HALF_SUPPORT(extern half1 min(half1 a, half1 b);) +CG_HALF_SUPPORT(extern half2 min(half2 a, half2 b);) +CG_HALF_SUPPORT(extern half3 min(half3 a, half3 b);) +CG_HALF_SUPPORT(extern half4 min(half4 a, half4 b);) +CG_FIXED_SUPPORT(extern fixed1 min(fixed1 a, fixed1 b);) +CG_FIXED_SUPPORT(extern fixed2 min(fixed2 a, fixed2 b);) +CG_FIXED_SUPPORT(extern fixed3 min(fixed3 a, fixed3 b);) +CG_FIXED_SUPPORT(extern fixed4 min(fixed4 a, fixed4 b);) +CG_DOUBLE_SUPPORT(extern double1 min(double1 a, double1 b);) +CG_DOUBLE_SUPPORT(extern double2 min(double2 a, double2 b);) +CG_DOUBLE_SUPPORT(extern double3 min(double3 a, double3 b);) +CG_DOUBLE_SUPPORT(extern double4 min(double4 a, double4 b);) +#pragma pop_macro("min") +#endif + +/// MODF - return fractional part of x and output integer part +#ifdef __Cg_inout_hpp__ +#ifndef __Cg_modf_hpp__ +extern float1 modf(float1 x, Out ipOut); +extern float2 modf(float2 x, Out ipOut); +extern float3 modf(float3 x, Out ipOut); +extern float4 modf(float4 x, Out ipOut); +CG_DOUBLE_SUPPORT(extern double1 modf(double1 x, Out ipOut);) +CG_DOUBLE_SUPPORT(extern double2 modf(double2 x, Out ipOut);) +CG_DOUBLE_SUPPORT(extern double3 modf(double3 x, Out ipOut);) +CG_DOUBLE_SUPPORT(extern double4 modf(double4 x, Out ipOut);) +CG_HALF_SUPPORT(extern half1 modf(half1 x, Out ipOut);) +CG_HALF_SUPPORT(extern half2 modf(half2 x, Out ipOut);) +CG_HALF_SUPPORT(extern half3 modf(half3 x, Out ipOut);) +CG_HALF_SUPPORT(extern half4 modf(half4 x, Out ipOut);) +CG_FIXED_SUPPORT(extern fixed1 modf(fixed1 x, Out ipOut);) +CG_FIXED_SUPPORT(extern fixed2 modf(fixed2 x, Out ipOut);) +CG_FIXED_SUPPORT(extern fixed3 modf(fixed3 x, Out ipOut);) +CG_FIXED_SUPPORT(extern fixed4 modf(fixed4 x, Out ipOut);) +#endif +#endif // __Cg_inout_hpp__ + +/// MUL - multiply matrix by vector +#ifdef __Cg_matrix_hpp__ +#ifndef __Cg_mul_hpp__ +extern float1 mul(float1x1 m, float1 v); +extern int1 mul(int1x1 m, int1 v); +CG_DOUBLE_SUPPORT(extern double1 mul(double1x1 m, double1 v);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed1x1 m, fixed1 v);) +CG_HALF_SUPPORT(extern half1 mul(half1x1 m, half1 v);) +extern float2 mul(float2x1 m, float1 v); +extern int2 mul(int2x1 m, int1 v); +CG_DOUBLE_SUPPORT(extern double2 mul(double2x1 m, double1 v);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed2x1 m, fixed1 v);) +CG_HALF_SUPPORT(extern half2 mul(half2x1 m, half1 v);) +extern float3 mul(float3x1 m, float1 v); +extern int3 mul(int3x1 m, int1 v); +CG_DOUBLE_SUPPORT(extern double3 mul(double3x1 m, double1 v);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed3x1 m, fixed1 v);) +CG_HALF_SUPPORT(extern half3 mul(half3x1 m, half1 v);) +extern float4 mul(float4x1 m, float1 v); +extern int4 mul(int4x1 m, int1 v); +CG_DOUBLE_SUPPORT(extern double4 mul(double4x1 m, double1 v);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed4x1 m, fixed1 v);) +CG_HALF_SUPPORT(extern half4 mul(half4x1 m, half1 v);) +extern float1 mul(float1x2 m, float2 v); +extern int1 mul(int1x2 m, int2 v); +CG_DOUBLE_SUPPORT(extern double1 mul(double1x2 m, double2 v);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed1x2 m, fixed2 v);) +CG_HALF_SUPPORT(extern half1 mul(half1x2 m, half2 v);) +extern float2 mul(float2x2 m, float2 v); +extern int2 mul(int2x2 m, int2 v); +CG_DOUBLE_SUPPORT(extern double2 mul(double2x2 m, double2 v);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed2x2 m, fixed2 v);) +CG_HALF_SUPPORT(extern half2 mul(half2x2 m, half2 v);) +extern float3 mul(float3x2 m, float2 v); +extern int3 mul(int3x2 m, int2 v); +CG_DOUBLE_SUPPORT(extern double3 mul(double3x2 m, double2 v);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed3x2 m, fixed2 v);) +CG_HALF_SUPPORT(extern half3 mul(half3x2 m, half2 v);) +extern float4 mul(float4x2 m, float2 v); +extern int4 mul(int4x2 m, int2 v); +CG_DOUBLE_SUPPORT(extern double4 mul(double4x2 m, double2 v);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed4x2 m, fixed2 v);) +CG_HALF_SUPPORT(extern half4 mul(half4x2 m, half2 v);) +extern float1 mul(float1x3 m, float3 v); +extern int1 mul(int1x3 m, int3 v); +CG_DOUBLE_SUPPORT(extern double1 mul(double1x3 m, double3 v);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed1x3 m, fixed3 v);) +CG_HALF_SUPPORT(extern half1 mul(half1x3 m, half3 v);) +extern float2 mul(float2x3 m, float3 v); +extern int2 mul(int2x3 m, int3 v); +CG_DOUBLE_SUPPORT(extern double2 mul(double2x3 m, double3 v);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed2x3 m, fixed3 v);) +CG_HALF_SUPPORT(extern half2 mul(half2x3 m, half3 v);) +extern float3 mul(float3x3 m, float3 v); +extern int3 mul(int3x3 m, int3 v); +CG_DOUBLE_SUPPORT(extern double3 mul(double3x3 m, double3 v);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed3x3 m, fixed3 v);) +CG_HALF_SUPPORT(extern half3 mul(half3x3 m, half3 v);) +extern float4 mul(float4x3 m, float3 v); +extern int4 mul(int4x3 m, int3 v); +CG_DOUBLE_SUPPORT(extern double4 mul(double4x3 m, double3 v);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed4x3 m, fixed3 v);) +CG_HALF_SUPPORT(extern half4 mul(half4x3 m, half3 v);) +extern float1 mul(float1x4 m, float4 v); +extern int1 mul(int1x4 m, int4 v); +CG_DOUBLE_SUPPORT(extern double1 mul(double1x4 m, double4 v);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed1x4 m, fixed4 v);) +CG_HALF_SUPPORT(extern half1 mul(half1x4 m, half4 v);) +extern float2 mul(float2x4 m, float4 v); +extern int2 mul(int2x4 m, int4 v); +CG_DOUBLE_SUPPORT(extern double2 mul(double2x4 m, double4 v);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed2x4 m, fixed4 v);) +CG_HALF_SUPPORT(extern half2 mul(half2x4 m, half4 v);) +extern float3 mul(float3x4 m, float4 v); +extern int3 mul(int3x4 m, int4 v); +CG_DOUBLE_SUPPORT(extern double3 mul(double3x4 m, double4 v);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed3x4 m, fixed4 v);) +CG_HALF_SUPPORT(extern half3 mul(half3x4 m, half4 v);) +extern float4 mul(float4x4 m, float4 v); +extern int4 mul(int4x4 m, int4 v); +CG_DOUBLE_SUPPORT(extern double4 mul(double4x4 m, double4 v);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed4x4 m, fixed4 v);) +CG_HALF_SUPPORT(extern half4 mul(half4x4 m, half4 v);) + +/// MUL - multiply vector by matrix +extern float1 mul(float1 v, float1x1 m); +extern int1 mul(int1 v, int1x1 m); +CG_DOUBLE_SUPPORT(extern double1 mul(double1 v, double1x1 m);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed1 v, fixed1x1 m);) +CG_HALF_SUPPORT(extern half1 mul(half1 v, half1x1 m);) +extern float2 mul(float1 v, float1x2 m); +extern int2 mul(int1 v, int1x2 m); +CG_DOUBLE_SUPPORT(extern double2 mul(double1 v, double1x2 m);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed1 v, fixed1x2 m);) +CG_HALF_SUPPORT(extern half2 mul(half1 v, half1x2 m);) +extern float3 mul(float1 v, float1x3 m); +extern int3 mul(int1 v, int1x3 m); +CG_DOUBLE_SUPPORT(extern double3 mul(double1 v, double1x3 m);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed1 v, fixed1x3 m);) +CG_HALF_SUPPORT(extern half3 mul(half1 v, half1x3 m);) +extern float4 mul(float1 v, float1x4 m); +extern int4 mul(int1 v, int1x4 m); +CG_DOUBLE_SUPPORT(extern double4 mul(double1 v, double1x4 m);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed1 v, fixed1x4 m);) +CG_HALF_SUPPORT(extern half4 mul(half1 v, half1x4 m);) +extern float1 mul(float2 v, float2x1 m); +extern int1 mul(int2 v, int2x1 m); +CG_DOUBLE_SUPPORT(extern double1 mul(double2 v, double2x1 m);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed2 v, fixed2x1 m);) +CG_HALF_SUPPORT(extern half1 mul(half2 v, half2x1 m);) +extern float2 mul(float2 v, float2x2 m); +extern int2 mul(int2 v, int2x2 m); +CG_DOUBLE_SUPPORT(extern double2 mul(double2 v, double2x2 m);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed2 v, fixed2x2 m);) +CG_HALF_SUPPORT(extern half2 mul(half2 v, half2x2 m);) +extern float3 mul(float2 v, float2x3 m); +extern int3 mul(int2 v, int2x3 m); +CG_DOUBLE_SUPPORT(extern double3 mul(double2 v, double2x3 m);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed2 v, fixed2x3 m);) +CG_HALF_SUPPORT(extern half3 mul(half2 v, half2x3 m);) +extern float4 mul(float2 v, float2x4 m); +extern int4 mul(int2 v, int2x4 m); +CG_DOUBLE_SUPPORT(extern double4 mul(double2 v, double2x4 m);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed2 v, fixed2x4 m);) +CG_HALF_SUPPORT(extern half4 mul(half2 v, half2x4 m);) +extern float1 mul(float3 v, float3x1 m); +extern int1 mul(int3 v, int3x1 m); +CG_DOUBLE_SUPPORT(extern double1 mul(double3 v, double3x1 m);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed3 v, fixed3x1 m);) +CG_HALF_SUPPORT(extern half1 mul(half3 v, half3x1 m);) +extern float2 mul(float3 v, float3x2 m); +extern int2 mul(int3 v, int3x2 m); +CG_DOUBLE_SUPPORT(extern double2 mul(double3 v, double3x2 m);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed3 v, fixed3x2 m);) +CG_HALF_SUPPORT(extern half2 mul(half3 v, half3x2 m);) +extern float3 mul(float3 v, float3x3 m); +extern int3 mul(int3 v, int3x3 m); +CG_DOUBLE_SUPPORT(extern double3 mul(double3 v, double3x3 m);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed3 v, fixed3x3 m);) +CG_HALF_SUPPORT(extern half3 mul(half3 v, half3x3 m);) +extern float4 mul(float3 v, float3x4 m); +extern int4 mul(int3 v, int3x4 m); +CG_DOUBLE_SUPPORT(extern double4 mul(double3 v, double3x4 m);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed3 v, fixed3x4 m);) +CG_HALF_SUPPORT(extern half4 mul(half3 v, half3x4 m);) +extern float1 mul(float4 v, float4x1 m); +extern int1 mul(int4 v, int4x1 m); +CG_DOUBLE_SUPPORT(extern double1 mul(double4 v, double4x1 m);) +CG_FIXED_SUPPORT(extern fixed1 mul(fixed4 v, fixed4x1 m);) +CG_HALF_SUPPORT(extern half1 mul(half4 v, half4x1 m);) +extern float2 mul(float4 v, float4x2 m); +extern int2 mul(int4 v, int4x2 m); +CG_DOUBLE_SUPPORT(extern double2 mul(double4 v, double4x2 m);) +CG_FIXED_SUPPORT(extern fixed2 mul(fixed4 v, fixed4x2 m);) +CG_HALF_SUPPORT(extern half2 mul(half4 v, half4x2 m);) +extern float3 mul(float4 v, float4x3 m); +extern int3 mul(int4 v, int4x3 m); +CG_DOUBLE_SUPPORT(extern double3 mul(double4 v, double4x3 m);) +CG_FIXED_SUPPORT(extern fixed3 mul(fixed4 v, fixed4x3 m);) +CG_HALF_SUPPORT(extern half3 mul(half4 v, half4x3 m);) +extern float4 mul(float4 v, float4x4 m); +extern int4 mul(int4 v, int4x4 m); +CG_DOUBLE_SUPPORT(extern double4 mul(double4 v, double4x4 m);) +CG_FIXED_SUPPORT(extern fixed4 mul(fixed4 v, fixed4x4 m);) +CG_HALF_SUPPORT(extern half4 mul(half4 v, half4x4 m);) + +/// MUL - multiply matrix by matrix +extern float1x1 mul(float1x1 m1, float1x1 m2); +extern int1x1 mul(int1x1 m1, int1x1 m2); +CG_DOUBLE_SUPPORT(extern double1x1 mul(double1x1 m1, double1x1 m2);) +CG_FIXED_SUPPORT(extern fixed1x1 mul(fixed1x1 m1, fixed1x1 m2);) +CG_HALF_SUPPORT(extern half1x1 mul(half1x1 m1, half1x1 m2);) +extern float1x2 mul(float1x1 m1, float1x2 m2); +extern int1x2 mul(int1x1 m1, int1x2 m2); +CG_DOUBLE_SUPPORT(extern double1x2 mul(double1x1 m1, double1x2 m2);) +CG_FIXED_SUPPORT(extern fixed1x2 mul(fixed1x1 m1, fixed1x2 m2);) +CG_HALF_SUPPORT(extern half1x2 mul(half1x1 m1, half1x2 m2);) +extern float1x3 mul(float1x1 m1, float1x3 m2); +extern int1x3 mul(int1x1 m1, int1x3 m2); +CG_DOUBLE_SUPPORT(extern double1x3 mul(double1x1 m1, double1x3 m2);) +CG_FIXED_SUPPORT(extern fixed1x3 mul(fixed1x1 m1, fixed1x3 m2);) +CG_HALF_SUPPORT(extern half1x3 mul(half1x1 m1, half1x3 m2);) +extern float1x4 mul(float1x1 m1, float1x4 m2); +extern int1x4 mul(int1x1 m1, int1x4 m2); +CG_DOUBLE_SUPPORT(extern double1x4 mul(double1x1 m1, double1x4 m2);) +CG_FIXED_SUPPORT(extern fixed1x4 mul(fixed1x1 m1, fixed1x4 m2);) +CG_HALF_SUPPORT(extern half1x4 mul(half1x1 m1, half1x4 m2);) +extern float1x1 mul(float1x2 m1, float2x1 m2); +extern int1x1 mul(int1x2 m1, int2x1 m2); +CG_DOUBLE_SUPPORT(extern double1x1 mul(double1x2 m1, double2x1 m2);) +CG_FIXED_SUPPORT(extern fixed1x1 mul(fixed1x2 m1, fixed2x1 m2);) +CG_HALF_SUPPORT(extern half1x1 mul(half1x2 m1, half2x1 m2);) +extern float1x2 mul(float1x2 m1, float2x2 m2); +extern int1x2 mul(int1x2 m1, int2x2 m2); +CG_DOUBLE_SUPPORT(extern double1x2 mul(double1x2 m1, double2x2 m2);) +CG_FIXED_SUPPORT(extern fixed1x2 mul(fixed1x2 m1, fixed2x2 m2);) +CG_HALF_SUPPORT(extern half1x2 mul(half1x2 m1, half2x2 m2);) +extern float1x3 mul(float1x2 m1, float2x3 m2); +extern int1x3 mul(int1x2 m1, int2x3 m2); +CG_DOUBLE_SUPPORT(extern double1x3 mul(double1x2 m1, double2x3 m2);) +CG_FIXED_SUPPORT(extern fixed1x3 mul(fixed1x2 m1, fixed2x3 m2);) +CG_HALF_SUPPORT(extern half1x3 mul(half1x2 m1, half2x3 m2);) +extern float1x4 mul(float1x2 m1, float2x4 m2); +extern int1x4 mul(int1x2 m1, int2x4 m2); +CG_DOUBLE_SUPPORT(extern double1x4 mul(double1x2 m1, double2x4 m2);) +CG_FIXED_SUPPORT(extern fixed1x4 mul(fixed1x2 m1, fixed2x4 m2);) +CG_HALF_SUPPORT(extern half1x4 mul(half1x2 m1, half2x4 m2);) +extern float1x1 mul(float1x3 m1, float3x1 m2); +extern int1x1 mul(int1x3 m1, int3x1 m2); +CG_DOUBLE_SUPPORT(extern double1x1 mul(double1x3 m1, double3x1 m2);) +CG_FIXED_SUPPORT(extern fixed1x1 mul(fixed1x3 m1, fixed3x1 m2);) +CG_HALF_SUPPORT(extern half1x1 mul(half1x3 m1, half3x1 m2);) +extern float1x2 mul(float1x3 m1, float3x2 m2); +extern int1x2 mul(int1x3 m1, int3x2 m2); +CG_DOUBLE_SUPPORT(extern double1x2 mul(double1x3 m1, double3x2 m2);) +CG_FIXED_SUPPORT(extern fixed1x2 mul(fixed1x3 m1, fixed3x2 m2);) +CG_HALF_SUPPORT(extern half1x2 mul(half1x3 m1, half3x2 m2);) +extern float1x3 mul(float1x3 m1, float3x3 m2); +extern int1x3 mul(int1x3 m1, int3x3 m2); +CG_DOUBLE_SUPPORT(extern double1x3 mul(double1x3 m1, double3x3 m2);) +CG_FIXED_SUPPORT(extern fixed1x3 mul(fixed1x3 m1, fixed3x3 m2);) +CG_HALF_SUPPORT(extern half1x3 mul(half1x3 m1, half3x3 m2);) +extern float1x4 mul(float1x3 m1, float3x4 m2); +extern int1x4 mul(int1x3 m1, int3x4 m2); +CG_DOUBLE_SUPPORT(extern double1x4 mul(double1x3 m1, double3x4 m2);) +CG_FIXED_SUPPORT(extern fixed1x4 mul(fixed1x3 m1, fixed3x4 m2);) +CG_HALF_SUPPORT(extern half1x4 mul(half1x3 m1, half3x4 m2);) +extern float1x1 mul(float1x4 m1, float4x1 m2); +extern int1x1 mul(int1x4 m1, int4x1 m2); +CG_DOUBLE_SUPPORT(extern double1x1 mul(double1x4 m1, double4x1 m2);) +CG_FIXED_SUPPORT(extern fixed1x1 mul(fixed1x4 m1, fixed4x1 m2);) +CG_HALF_SUPPORT(extern half1x1 mul(half1x4 m1, half4x1 m2);) +extern float1x2 mul(float1x4 m1, float4x2 m2); +extern int1x2 mul(int1x4 m1, int4x2 m2); +CG_DOUBLE_SUPPORT(extern double1x2 mul(double1x4 m1, double4x2 m2);) +CG_FIXED_SUPPORT(extern fixed1x2 mul(fixed1x4 m1, fixed4x2 m2);) +CG_HALF_SUPPORT(extern half1x2 mul(half1x4 m1, half4x2 m2);) +extern float1x3 mul(float1x4 m1, float4x3 m2); +extern int1x3 mul(int1x4 m1, int4x3 m2); +CG_DOUBLE_SUPPORT(extern double1x3 mul(double1x4 m1, double4x3 m2);) +CG_FIXED_SUPPORT(extern fixed1x3 mul(fixed1x4 m1, fixed4x3 m2);) +CG_HALF_SUPPORT(extern half1x3 mul(half1x4 m1, half4x3 m2);) +extern float1x4 mul(float1x4 m1, float4x4 m2); +extern int1x4 mul(int1x4 m1, int4x4 m2); +CG_DOUBLE_SUPPORT(extern double1x4 mul(double1x4 m1, double4x4 m2);) +CG_FIXED_SUPPORT(extern fixed1x4 mul(fixed1x4 m1, fixed4x4 m2);) +CG_HALF_SUPPORT(extern half1x4 mul(half1x4 m1, half4x4 m2);) +extern float2x1 mul(float2x1 m1, float1x1 m2); +extern int2x1 mul(int2x1 m1, int1x1 m2); +CG_DOUBLE_SUPPORT(extern double2x1 mul(double2x1 m1, double1x1 m2);) +CG_FIXED_SUPPORT(extern fixed2x1 mul(fixed2x1 m1, fixed1x1 m2);) +CG_HALF_SUPPORT(extern half2x1 mul(half2x1 m1, half1x1 m2);) +extern float2x2 mul(float2x1 m1, float1x2 m2); +extern int2x2 mul(int2x1 m1, int1x2 m2); +CG_DOUBLE_SUPPORT(extern double2x2 mul(double2x1 m1, double1x2 m2);) +CG_FIXED_SUPPORT(extern fixed2x2 mul(fixed2x1 m1, fixed1x2 m2);) +CG_HALF_SUPPORT(extern half2x2 mul(half2x1 m1, half1x2 m2);) +extern float2x3 mul(float2x1 m1, float1x3 m2); +extern int2x3 mul(int2x1 m1, int1x3 m2); +CG_DOUBLE_SUPPORT(extern double2x3 mul(double2x1 m1, double1x3 m2);) +CG_FIXED_SUPPORT(extern fixed2x3 mul(fixed2x1 m1, fixed1x3 m2);) +CG_HALF_SUPPORT(extern half2x3 mul(half2x1 m1, half1x3 m2);) +extern float2x4 mul(float2x1 m1, float1x4 m2); +extern int2x4 mul(int2x1 m1, int1x4 m2); +CG_DOUBLE_SUPPORT(extern double2x4 mul(double2x1 m1, double1x4 m2);) +CG_FIXED_SUPPORT(extern fixed2x4 mul(fixed2x1 m1, fixed1x4 m2);) +CG_HALF_SUPPORT(extern half2x4 mul(half2x1 m1, half1x4 m2);) +extern float2x1 mul(float2x2 m1, float2x1 m2); +extern int2x1 mul(int2x2 m1, int2x1 m2); +CG_DOUBLE_SUPPORT(extern double2x1 mul(double2x2 m1, double2x1 m2);) +CG_FIXED_SUPPORT(extern fixed2x1 mul(fixed2x2 m1, fixed2x1 m2);) +CG_HALF_SUPPORT(extern half2x1 mul(half2x2 m1, half2x1 m2);) +extern float2x2 mul(float2x2 m1, float2x2 m2); +extern int2x2 mul(int2x2 m1, int2x2 m2); +CG_DOUBLE_SUPPORT(extern double2x2 mul(double2x2 m1, double2x2 m2);) +CG_FIXED_SUPPORT(extern fixed2x2 mul(fixed2x2 m1, fixed2x2 m2);) +CG_HALF_SUPPORT(extern half2x2 mul(half2x2 m1, half2x2 m2);) +extern float2x3 mul(float2x2 m1, float2x3 m2); +extern int2x3 mul(int2x2 m1, int2x3 m2); +CG_DOUBLE_SUPPORT(extern double2x3 mul(double2x2 m1, double2x3 m2);) +CG_FIXED_SUPPORT(extern fixed2x3 mul(fixed2x2 m1, fixed2x3 m2);) +CG_HALF_SUPPORT(extern half2x3 mul(half2x2 m1, half2x3 m2);) +extern float2x4 mul(float2x2 m1, float2x4 m2); +extern int2x4 mul(int2x2 m1, int2x4 m2); +CG_DOUBLE_SUPPORT(extern double2x4 mul(double2x2 m1, double2x4 m2);) +CG_FIXED_SUPPORT(extern fixed2x4 mul(fixed2x2 m1, fixed2x4 m2);) +CG_HALF_SUPPORT(extern half2x4 mul(half2x2 m1, half2x4 m2);) +extern float2x1 mul(float2x3 m1, float3x1 m2); +extern int2x1 mul(int2x3 m1, int3x1 m2); +CG_DOUBLE_SUPPORT(extern double2x1 mul(double2x3 m1, double3x1 m2);) +CG_FIXED_SUPPORT(extern fixed2x1 mul(fixed2x3 m1, fixed3x1 m2);) +CG_HALF_SUPPORT(extern half2x1 mul(half2x3 m1, half3x1 m2);) +extern float2x2 mul(float2x3 m1, float3x2 m2); +extern int2x2 mul(int2x3 m1, int3x2 m2); +CG_DOUBLE_SUPPORT(extern double2x2 mul(double2x3 m1, double3x2 m2);) +CG_FIXED_SUPPORT(extern fixed2x2 mul(fixed2x3 m1, fixed3x2 m2);) +CG_HALF_SUPPORT(extern half2x2 mul(half2x3 m1, half3x2 m2);) +extern float2x3 mul(float2x3 m1, float3x3 m2); +extern int2x3 mul(int2x3 m1, int3x3 m2); +CG_DOUBLE_SUPPORT(extern double2x3 mul(double2x3 m1, double3x3 m2);) +CG_FIXED_SUPPORT(extern fixed2x3 mul(fixed2x3 m1, fixed3x3 m2);) +CG_HALF_SUPPORT(extern half2x3 mul(half2x3 m1, half3x3 m2);) +extern float2x4 mul(float2x3 m1, float3x4 m2); +extern int2x4 mul(int2x3 m1, int3x4 m2); +CG_DOUBLE_SUPPORT(extern double2x4 mul(double2x3 m1, double3x4 m2);) +CG_FIXED_SUPPORT(extern fixed2x4 mul(fixed2x3 m1, fixed3x4 m2);) +CG_HALF_SUPPORT(extern half2x4 mul(half2x3 m1, half3x4 m2);) +extern float2x1 mul(float2x4 m1, float4x1 m2); +extern int2x1 mul(int2x4 m1, int4x1 m2); +CG_DOUBLE_SUPPORT(extern double2x1 mul(double2x4 m1, double4x1 m2);) +CG_FIXED_SUPPORT(extern fixed2x1 mul(fixed2x4 m1, fixed4x1 m2);) +CG_HALF_SUPPORT(extern half2x1 mul(half2x4 m1, half4x1 m2);) +extern float2x2 mul(float2x4 m1, float4x2 m2); +extern int2x2 mul(int2x4 m1, int4x2 m2); +CG_DOUBLE_SUPPORT(extern double2x2 mul(double2x4 m1, double4x2 m2);) +CG_FIXED_SUPPORT(extern fixed2x2 mul(fixed2x4 m1, fixed4x2 m2);) +CG_HALF_SUPPORT(extern half2x2 mul(half2x4 m1, half4x2 m2);) +extern float2x3 mul(float2x4 m1, float4x3 m2); +extern int2x3 mul(int2x4 m1, int4x3 m2); +CG_DOUBLE_SUPPORT(extern double2x3 mul(double2x4 m1, double4x3 m2);) +CG_FIXED_SUPPORT(extern fixed2x3 mul(fixed2x4 m1, fixed4x3 m2);) +CG_HALF_SUPPORT(extern half2x3 mul(half2x4 m1, half4x3 m2);) +extern float2x4 mul(float2x4 m1, float4x4 m2); +extern int2x4 mul(int2x4 m1, int4x4 m2); +CG_DOUBLE_SUPPORT(extern double2x4 mul(double2x4 m1, double4x4 m2);) +CG_FIXED_SUPPORT(extern fixed2x4 mul(fixed2x4 m1, fixed4x4 m2);) +CG_HALF_SUPPORT(extern half2x4 mul(half2x4 m1, half4x4 m2);) +extern float3x1 mul(float3x1 m1, float1x1 m2); +extern int3x1 mul(int3x1 m1, int1x1 m2); +CG_DOUBLE_SUPPORT(extern double3x1 mul(double3x1 m1, double1x1 m2);) +CG_FIXED_SUPPORT(extern fixed3x1 mul(fixed3x1 m1, fixed1x1 m2);) +CG_HALF_SUPPORT(extern half3x1 mul(half3x1 m1, half1x1 m2);) +extern float3x2 mul(float3x1 m1, float1x2 m2); +extern int3x2 mul(int3x1 m1, int1x2 m2); +CG_DOUBLE_SUPPORT(extern double3x2 mul(double3x1 m1, double1x2 m2);) +CG_FIXED_SUPPORT(extern fixed3x2 mul(fixed3x1 m1, fixed1x2 m2);) +CG_HALF_SUPPORT(extern half3x2 mul(half3x1 m1, half1x2 m2);) +extern float3x3 mul(float3x1 m1, float1x3 m2); +extern int3x3 mul(int3x1 m1, int1x3 m2); +CG_DOUBLE_SUPPORT(extern double3x3 mul(double3x1 m1, double1x3 m2);) +CG_FIXED_SUPPORT(extern fixed3x3 mul(fixed3x1 m1, fixed1x3 m2);) +CG_HALF_SUPPORT(extern half3x3 mul(half3x1 m1, half1x3 m2);) +extern float3x4 mul(float3x1 m1, float1x4 m2); +extern int3x4 mul(int3x1 m1, int1x4 m2); +CG_DOUBLE_SUPPORT(extern double3x4 mul(double3x1 m1, double1x4 m2);) +CG_FIXED_SUPPORT(extern fixed3x4 mul(fixed3x1 m1, fixed1x4 m2);) +CG_HALF_SUPPORT(extern half3x4 mul(half3x1 m1, half1x4 m2);) +extern float3x1 mul(float3x2 m1, float2x1 m2); +extern int3x1 mul(int3x2 m1, int2x1 m2); +CG_DOUBLE_SUPPORT(extern double3x1 mul(double3x2 m1, double2x1 m2);) +CG_FIXED_SUPPORT(extern fixed3x1 mul(fixed3x2 m1, fixed2x1 m2);) +CG_HALF_SUPPORT(extern half3x1 mul(half3x2 m1, half2x1 m2);) +extern float3x2 mul(float3x2 m1, float2x2 m2); +extern int3x2 mul(int3x2 m1, int2x2 m2); +CG_DOUBLE_SUPPORT(extern double3x2 mul(double3x2 m1, double2x2 m2);) +CG_FIXED_SUPPORT(extern fixed3x2 mul(fixed3x2 m1, fixed2x2 m2);) +CG_HALF_SUPPORT(extern half3x2 mul(half3x2 m1, half2x2 m2);) +extern float3x3 mul(float3x2 m1, float2x3 m2); +extern int3x3 mul(int3x2 m1, int2x3 m2); +CG_DOUBLE_SUPPORT(extern double3x3 mul(double3x2 m1, double2x3 m2);) +CG_FIXED_SUPPORT(extern fixed3x3 mul(fixed3x2 m1, fixed2x3 m2);) +CG_HALF_SUPPORT(extern half3x3 mul(half3x2 m1, half2x3 m2);) +extern float3x4 mul(float3x2 m1, float2x4 m2); +extern int3x4 mul(int3x2 m1, int2x4 m2); +CG_DOUBLE_SUPPORT(extern double3x4 mul(double3x2 m1, double2x4 m2);) +CG_FIXED_SUPPORT(extern fixed3x4 mul(fixed3x2 m1, fixed2x4 m2);) +CG_HALF_SUPPORT(extern half3x4 mul(half3x2 m1, half2x4 m2);) +extern float3x1 mul(float3x3 m1, float3x1 m2); +extern int3x1 mul(int3x3 m1, int3x1 m2); +CG_DOUBLE_SUPPORT(extern double3x1 mul(double3x3 m1, double3x1 m2);) +CG_FIXED_SUPPORT(extern fixed3x1 mul(fixed3x3 m1, fixed3x1 m2);) +CG_HALF_SUPPORT(extern half3x1 mul(half3x3 m1, half3x1 m2);) +extern float3x2 mul(float3x3 m1, float3x2 m2); +extern int3x2 mul(int3x3 m1, int3x2 m2); +CG_DOUBLE_SUPPORT(extern double3x2 mul(double3x3 m1, double3x2 m2);) +CG_FIXED_SUPPORT(extern fixed3x2 mul(fixed3x3 m1, fixed3x2 m2);) +CG_HALF_SUPPORT(extern half3x2 mul(half3x3 m1, half3x2 m2);) +extern float3x3 mul(float3x3 m1, float3x3 m2); +extern int3x3 mul(int3x3 m1, int3x3 m2); +CG_DOUBLE_SUPPORT(extern double3x3 mul(double3x3 m1, double3x3 m2);) +CG_FIXED_SUPPORT(extern fixed3x3 mul(fixed3x3 m1, fixed3x3 m2);) +CG_HALF_SUPPORT(extern half3x3 mul(half3x3 m1, half3x3 m2);) +extern float3x4 mul(float3x3 m1, float3x4 m2); +extern int3x4 mul(int3x3 m1, int3x4 m2); +CG_DOUBLE_SUPPORT(extern double3x4 mul(double3x3 m1, double3x4 m2);) +CG_FIXED_SUPPORT(extern fixed3x4 mul(fixed3x3 m1, fixed3x4 m2);) +CG_HALF_SUPPORT(extern half3x4 mul(half3x3 m1, half3x4 m2);) +extern float3x1 mul(float3x4 m1, float4x1 m2); +extern int3x1 mul(int3x4 m1, int4x1 m2); +CG_DOUBLE_SUPPORT(extern double3x1 mul(double3x4 m1, double4x1 m2);) +CG_FIXED_SUPPORT(extern fixed3x1 mul(fixed3x4 m1, fixed4x1 m2);) +CG_HALF_SUPPORT(extern half3x1 mul(half3x4 m1, half4x1 m2);) +extern float3x2 mul(float3x4 m1, float4x2 m2); +extern int3x2 mul(int3x4 m1, int4x2 m2); +CG_DOUBLE_SUPPORT(extern double3x2 mul(double3x4 m1, double4x2 m2);) +CG_FIXED_SUPPORT(extern fixed3x2 mul(fixed3x4 m1, fixed4x2 m2);) +CG_HALF_SUPPORT(extern half3x2 mul(half3x4 m1, half4x2 m2);) +extern float3x3 mul(float3x4 m1, float4x3 m2); +extern int3x3 mul(int3x4 m1, int4x3 m2); +CG_DOUBLE_SUPPORT(extern double3x3 mul(double3x4 m1, double4x3 m2);) +CG_FIXED_SUPPORT(extern fixed3x3 mul(fixed3x4 m1, fixed4x3 m2);) +CG_HALF_SUPPORT(extern half3x3 mul(half3x4 m1, half4x3 m2);) +extern float3x4 mul(float3x4 m1, float4x4 m2); +extern int3x4 mul(int3x4 m1, int4x4 m2); +CG_DOUBLE_SUPPORT(extern double3x4 mul(double3x4 m1, double4x4 m2);) +CG_FIXED_SUPPORT(extern fixed3x4 mul(fixed3x4 m1, fixed4x4 m2);) +CG_HALF_SUPPORT(extern half3x4 mul(half3x4 m1, half4x4 m2);) +extern float4x1 mul(float4x1 m1, float1x1 m2); +extern int4x1 mul(int4x1 m1, int1x1 m2); +CG_DOUBLE_SUPPORT(extern double4x1 mul(double4x1 m1, double1x1 m2);) +CG_FIXED_SUPPORT(extern fixed4x1 mul(fixed4x1 m1, fixed1x1 m2);) +CG_HALF_SUPPORT(extern half4x1 mul(half4x1 m1, half1x1 m2);) +extern float4x2 mul(float4x1 m1, float1x2 m2); +extern int4x2 mul(int4x1 m1, int1x2 m2); +CG_DOUBLE_SUPPORT(extern double4x2 mul(double4x1 m1, double1x2 m2);) +CG_FIXED_SUPPORT(extern fixed4x2 mul(fixed4x1 m1, fixed1x2 m2);) +CG_HALF_SUPPORT(extern half4x2 mul(half4x1 m1, half1x2 m2);) +extern float4x3 mul(float4x1 m1, float1x3 m2); +extern int4x3 mul(int4x1 m1, int1x3 m2); +CG_DOUBLE_SUPPORT(extern double4x3 mul(double4x1 m1, double1x3 m2);) +CG_FIXED_SUPPORT(extern fixed4x3 mul(fixed4x1 m1, fixed1x3 m2);) +CG_HALF_SUPPORT(extern half4x3 mul(half4x1 m1, half1x3 m2);) +extern float4x4 mul(float4x1 m1, float1x4 m2); +extern int4x4 mul(int4x1 m1, int1x4 m2); +CG_DOUBLE_SUPPORT(extern double4x4 mul(double4x1 m1, double1x4 m2);) +CG_FIXED_SUPPORT(extern fixed4x4 mul(fixed4x1 m1, fixed1x4 m2);) +CG_HALF_SUPPORT(extern half4x4 mul(half4x1 m1, half1x4 m2);) +extern float4x1 mul(float4x2 m1, float2x1 m2); +extern int4x1 mul(int4x2 m1, int2x1 m2); +CG_DOUBLE_SUPPORT(extern double4x1 mul(double4x2 m1, double2x1 m2);) +CG_FIXED_SUPPORT(extern fixed4x1 mul(fixed4x2 m1, fixed2x1 m2);) +CG_HALF_SUPPORT(extern half4x1 mul(half4x2 m1, half2x1 m2);) +extern float4x2 mul(float4x2 m1, float2x2 m2); +extern int4x2 mul(int4x2 m1, int2x2 m2); +CG_DOUBLE_SUPPORT(extern double4x2 mul(double4x2 m1, double2x2 m2);) +CG_FIXED_SUPPORT(extern fixed4x2 mul(fixed4x2 m1, fixed2x2 m2);) +CG_HALF_SUPPORT(extern half4x2 mul(half4x2 m1, half2x2 m2);) +extern float4x3 mul(float4x2 m1, float2x3 m2); +extern int4x3 mul(int4x2 m1, int2x3 m2); +CG_DOUBLE_SUPPORT(extern double4x3 mul(double4x2 m1, double2x3 m2);) +CG_FIXED_SUPPORT(extern fixed4x3 mul(fixed4x2 m1, fixed2x3 m2);) +CG_HALF_SUPPORT(extern half4x3 mul(half4x2 m1, half2x3 m2);) +extern float4x4 mul(float4x2 m1, float2x4 m2); +extern int4x4 mul(int4x2 m1, int2x4 m2); +CG_DOUBLE_SUPPORT(extern double4x4 mul(double4x2 m1, double2x4 m2);) +CG_FIXED_SUPPORT(extern fixed4x4 mul(fixed4x2 m1, fixed2x4 m2);) +CG_HALF_SUPPORT(extern half4x4 mul(half4x2 m1, half2x4 m2);) +extern float4x1 mul(float4x3 m1, float3x1 m2); +extern int4x1 mul(int4x3 m1, int3x1 m2); +CG_DOUBLE_SUPPORT(extern double4x1 mul(double4x3 m1, double3x1 m2);) +CG_FIXED_SUPPORT(extern fixed4x1 mul(fixed4x3 m1, fixed3x1 m2);) +CG_HALF_SUPPORT(extern half4x1 mul(half4x3 m1, half3x1 m2);) +extern float4x2 mul(float4x3 m1, float3x2 m2); +extern int4x2 mul(int4x3 m1, int3x2 m2); +CG_DOUBLE_SUPPORT(extern double4x2 mul(double4x3 m1, double3x2 m2);) +CG_FIXED_SUPPORT(extern fixed4x2 mul(fixed4x3 m1, fixed3x2 m2);) +CG_HALF_SUPPORT(extern half4x2 mul(half4x3 m1, half3x2 m2);) +extern float4x3 mul(float4x3 m1, float3x3 m2); +extern int4x3 mul(int4x3 m1, int3x3 m2); +CG_DOUBLE_SUPPORT(extern double4x3 mul(double4x3 m1, double3x3 m2);) +CG_FIXED_SUPPORT(extern fixed4x3 mul(fixed4x3 m1, fixed3x3 m2);) +CG_HALF_SUPPORT(extern half4x3 mul(half4x3 m1, half3x3 m2);) +extern float4x4 mul(float4x3 m1, float3x4 m2); +extern int4x4 mul(int4x3 m1, int3x4 m2); +CG_DOUBLE_SUPPORT(extern double4x4 mul(double4x3 m1, double3x4 m2);) +CG_FIXED_SUPPORT(extern fixed4x4 mul(fixed4x3 m1, fixed3x4 m2);) +CG_HALF_SUPPORT(extern half4x4 mul(half4x3 m1, half3x4 m2);) +extern float4x1 mul(float4x4 m1, float4x1 m2); +extern int4x1 mul(int4x4 m1, int4x1 m2); +CG_DOUBLE_SUPPORT(extern double4x1 mul(double4x4 m1, double4x1 m2);) +CG_FIXED_SUPPORT(extern fixed4x1 mul(fixed4x4 m1, fixed4x1 m2);) +CG_HALF_SUPPORT(extern half4x1 mul(half4x4 m1, half4x1 m2);) +extern float4x2 mul(float4x4 m1, float4x2 m2); +extern int4x2 mul(int4x4 m1, int4x2 m2); +CG_DOUBLE_SUPPORT(extern double4x2 mul(double4x4 m1, double4x2 m2);) +CG_FIXED_SUPPORT(extern fixed4x2 mul(fixed4x4 m1, fixed4x2 m2);) +CG_HALF_SUPPORT(extern half4x2 mul(half4x4 m1, half4x2 m2);) +extern float4x3 mul(float4x4 m1, float4x3 m2); +extern int4x3 mul(int4x4 m1, int4x3 m2); +CG_DOUBLE_SUPPORT(extern double4x3 mul(double4x4 m1, double4x3 m2);) +CG_FIXED_SUPPORT(extern fixed4x3 mul(fixed4x4 m1, fixed4x3 m2);) +CG_HALF_SUPPORT(extern half4x3 mul(half4x4 m1, half4x3 m2);) +extern float4x4 mul(float4x4 m1, float4x4 m2); +extern int4x4 mul(int4x4 m1, int4x4 m2); +CG_DOUBLE_SUPPORT(extern double4x4 mul(double4x4 m1, double4x4 m2);) +CG_FIXED_SUPPORT(extern fixed4x4 mul(fixed4x4 m1, fixed4x4 m2);) +CG_HALF_SUPPORT(extern half4x4 mul(half4x4 m1, half4x4 m2);) +#endif +#endif // __Cg_matrix_hpp__ + +/// NORMALIZE - normalize +#ifndef __Cg_normalize_hpp__ +extern float1 normalize(float1 v); +extern float2 normalize(float2 v); +extern float3 normalize(float3 v); +extern float4 normalize(float4 v); +CG_DOUBLE_SUPPORT(extern double1 normalize(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 normalize(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 normalize(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 normalize(double4 v);) +CG_HALF_SUPPORT(extern half1 normalize(half1 v);) +CG_HALF_SUPPORT(extern half2 normalize(half2 v);) +CG_HALF_SUPPORT(extern half3 normalize(half3 v);) +CG_HALF_SUPPORT(extern half4 normalize(half4 v);) +CG_FIXED_SUPPORT(extern fixed1 normalize(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 normalize(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 normalize(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 normalize(fixed4 v);) +#endif + +/// POW - x raised to y +#ifndef __Cg_pow_hpp__ +extern float1 pow(float1 x, float1 y); +extern float2 pow(float2 x, float2 y); +extern float3 pow(float3 x, float3 y); +extern float4 pow(float4 x, float4 y); +CG_HALF_SUPPORT(extern half1 pow(half1 x, half1 y);) +CG_HALF_SUPPORT(extern half2 pow(half2 x, half2 y);) +CG_HALF_SUPPORT(extern half3 pow(half3 x, half3 y);) +CG_HALF_SUPPORT(extern half4 pow(half4 x, half4 y);) +CG_FIXED_SUPPORT(extern fixed1 pow(fixed1 x, fixed1 y);) +CG_FIXED_SUPPORT(extern fixed2 pow(fixed2 x, fixed2 y);) +CG_FIXED_SUPPORT(extern fixed3 pow(fixed3 x, fixed3 y);) +CG_FIXED_SUPPORT(extern fixed4 pow(fixed4 x, fixed4 y);) +CG_DOUBLE_SUPPORT(extern double1 pow(double1 x, double1 y);) +CG_DOUBLE_SUPPORT(extern double2 pow(double2 x, double2 y);) +CG_DOUBLE_SUPPORT(extern double3 pow(double3 x, double3 y);) +CG_DOUBLE_SUPPORT(extern double4 pow(double4 x, double4 y);) +#endif + +/// RADIANS - convert degrees to radians +#ifndef __Cg_radians_hpp__ +extern float radians(float v); +extern float1 radians(float1 v); +extern float2 radians(float2 v); +extern float3 radians(float3 v); +extern float4 radians(float4 v); +CG_DOUBLE_SUPPORT(extern double radians(double v);) +CG_DOUBLE_SUPPORT(extern double1 radians(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 radians(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 radians(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 radians(double4 v);) +CG_HALF_SUPPORT(extern half radians(half v);) +CG_HALF_SUPPORT(extern half1 radians(half1 v);) +CG_HALF_SUPPORT(extern half2 radians(half2 v);) +CG_HALF_SUPPORT(extern half3 radians(half3 v);) +CG_HALF_SUPPORT(extern half4 radians(half4 v);) +CG_FIXED_SUPPORT(extern fixed1 radians(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 radians(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 radians(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 radians(fixed4 v);) +#endif + +/// REFLECT - reflection of incident ray i and surface normal n +#ifndef __Cg_reflect_hpp__ +extern float1 reflect(float1 i, float1 n); +extern float2 reflect(float2 i, float2 n); +extern float3 reflect(float3 i, float3 n); +extern float4 reflect(float4 i, float4 n); +CG_HALF_SUPPORT(extern half1 reflect(half1 i, half1 n);) +CG_HALF_SUPPORT(extern half2 reflect(half2 i, half2 n);) +CG_HALF_SUPPORT(extern half3 reflect(half3 i, half3 n);) +CG_HALF_SUPPORT(extern half4 reflect(half4 i, half4 n);) +CG_FIXED_SUPPORT(extern fixed1 reflect(fixed1 i, fixed1 n);) +CG_FIXED_SUPPORT(extern fixed2 reflect(fixed2 i, fixed2 n);) +CG_FIXED_SUPPORT(extern fixed3 reflect(fixed3 i, fixed3 n);) +CG_FIXED_SUPPORT(extern fixed4 reflect(fixed4 i, fixed4 n);) +CG_DOUBLE_SUPPORT(extern double1 reflect(double1 i, double1 n);) +CG_DOUBLE_SUPPORT(extern double2 reflect(double2 i, double2 n);) +CG_DOUBLE_SUPPORT(extern double3 reflect(double3 i, double3 n);) +CG_DOUBLE_SUPPORT(extern double4 reflect(double4 i, double4 n);) +#endif + +/// ROUND - round to nearest integer +#ifndef __Cg_round_hpp__ +extern float round(float v); +extern float1 round(float1 v); +extern float2 round(float2 v); +extern float3 round(float3 v); +extern float4 round(float4 v); +CG_DOUBLE_SUPPORT(extern double round(double v);) +CG_DOUBLE_SUPPORT(extern double1 round(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 round(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 round(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 round(double4 v);) +CG_HALF_SUPPORT(extern half round(half v);) +CG_HALF_SUPPORT(extern half1 round(half1 v);) +CG_HALF_SUPPORT(extern half2 round(half2 v);) +CG_HALF_SUPPORT(extern half3 round(half3 v);) +CG_HALF_SUPPORT(extern half4 round(half4 v);) +CG_FIXED_SUPPORT(extern fixed round(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 round(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 round(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 round(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 round(fixed4 v);) +#endif + +/// RSQRT - reciprocal square root +#ifndef __Cg_rsqrt_hpp__ +extern float rsqrt(float v); +extern float1 rsqrt(float1 v); +extern float2 rsqrt(float2 v); +extern float3 rsqrt(float3 v); +extern float4 rsqrt(float4 v); +CG_DOUBLE_SUPPORT(extern double rsqrt(double v);) +CG_DOUBLE_SUPPORT(extern double1 rsqrt(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 rsqrt(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 rsqrt(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 rsqrt(double4 v);) +CG_HALF_SUPPORT(extern half rsqrt(half v);) +CG_HALF_SUPPORT(extern half1 rsqrt(half1 v);) +CG_HALF_SUPPORT(extern half2 rsqrt(half2 v);) +CG_HALF_SUPPORT(extern half3 rsqrt(half3 v);) +CG_HALF_SUPPORT(extern half4 rsqrt(half4 v);) +CG_FIXED_SUPPORT(extern fixed rsqrt(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 rsqrt(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 rsqrt(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 rsqrt(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 rsqrt(fixed4 v);) +#endif + +/// SATURATE - saturate to [0,1] range +#ifndef __Cg_saturate_hpp__ +extern int saturate(int v); +extern int1 saturate(int1 v); +extern int2 saturate(int2 v); +extern int3 saturate(int3 v); +extern int4 saturate(int4 v); +extern float saturate(float v); +extern float1 saturate(float1 v); +extern float2 saturate(float2 v); +extern float3 saturate(float3 v); +extern float4 saturate(float4 v); +CG_DOUBLE_SUPPORT(extern double saturate(double v);) +CG_DOUBLE_SUPPORT(extern double1 saturate(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 saturate(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 saturate(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 saturate(double4 v);) +CG_HALF_SUPPORT(extern half saturate(half v);) +CG_HALF_SUPPORT(extern half1 saturate(half1 v);) +CG_HALF_SUPPORT(extern half2 saturate(half2 v);) +CG_HALF_SUPPORT(extern half3 saturate(half3 v);) +CG_HALF_SUPPORT(extern half4 saturate(half4 v);) +CG_FIXED_SUPPORT(extern fixed saturate(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 saturate(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 saturate(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 saturate(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 saturate(fixed4 v);) +#endif + +/// SIGN - determine sign +#ifndef __Cg_sign_hpp__ +extern int sign(int v); +extern int1 sign(int1 v); +extern int2 sign(int2 v); +extern int3 sign(int3 v); +extern int4 sign(int4 v); +extern float sign(float v); +extern float1 sign(float1 v); +extern float2 sign(float2 v); +extern float3 sign(float3 v); +extern float4 sign(float4 v); +CG_DOUBLE_SUPPORT(extern double sign(double v);) +CG_DOUBLE_SUPPORT(extern double1 sign(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 sign(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 sign(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 sign(double4 v);) +CG_HALF_SUPPORT(extern half sign(half v);) +CG_HALF_SUPPORT(extern half1 sign(half1 v);) +CG_HALF_SUPPORT(extern half2 sign(half2 v);) +CG_HALF_SUPPORT(extern half3 sign(half3 v);) +CG_HALF_SUPPORT(extern half4 sign(half4 v);) +CG_FIXED_SUPPORT(extern fixed sign(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 sign(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 sign(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 sign(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 sign(fixed4 v);) +#endif + +/// SIN - sine +#ifndef __Cg_sin_hpp__ +extern float sin(float v); +extern float1 sin(float1 v); +extern float2 sin(float2 v); +extern float3 sin(float3 v); +extern float4 sin(float4 v); +CG_DOUBLE_SUPPORT(extern double sin(double v);) +CG_DOUBLE_SUPPORT(extern double1 sin(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 sin(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 sin(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 sin(double4 v);) +CG_HALF_SUPPORT(extern half sin(half v);) +CG_HALF_SUPPORT(extern half1 sin(half1 v);) +CG_HALF_SUPPORT(extern half2 sin(half2 v);) +CG_HALF_SUPPORT(extern half3 sin(half3 v);) +CG_HALF_SUPPORT(extern half4 sin(half4 v);) +CG_FIXED_SUPPORT(extern fixed sin(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 sin(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 sin(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 sin(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 sin(fixed4 v);) +#endif + +/// SINCOS - output both sine and cosine of v +#ifdef __Cg_inout_hpp__ +#ifndef __Cg_sincos_hpp__ +extern void sincos(float v, Out s, Out c); +extern void sincos(float1 v, Out s, Out c); +extern void sincos(float2 v, Out s, Out c); +extern void sincos(float3 v, Out s, Out c); +extern void sincos(float4 v, Out s, Out c); +CG_DOUBLE_SUPPORT(extern void sincos(double v, Out s, Out c);) +CG_DOUBLE_SUPPORT(extern void sincos(double1 v, Out s, Out c);) +CG_DOUBLE_SUPPORT(extern void sincos(double2 v, Out s, Out c);) +CG_DOUBLE_SUPPORT(extern void sincos(double3 v, Out s, Out c);) +CG_DOUBLE_SUPPORT(extern void sincos(double4 v, Out s, Out c);) +CG_HALF_SUPPORT(extern void sincos(half v, Out s, Out c);) +CG_HALF_SUPPORT(extern void sincos(half1 v, Out s, Out c);) +CG_HALF_SUPPORT(extern void sincos(half2 v, Out s, Out c);) +CG_HALF_SUPPORT(extern void sincos(half3 v, Out s, Out c);) +CG_HALF_SUPPORT(extern void sincos(half4 v, Out s, Out c);) +CG_FIXED_SUPPORT(extern void sincos(fixed v, Out s, Out c);) +CG_FIXED_SUPPORT(extern void sincos(fixed1 v, Out s, Out c);) +CG_FIXED_SUPPORT(extern void sincos(fixed2 v, Out s, Out c);) +CG_FIXED_SUPPORT(extern void sincos(fixed3 v, Out s, Out c);) +CG_FIXED_SUPPORT(extern void sincos(fixed4 v, Out s, Out c);) +#endif +#endif // __Cg_inout_hpp__ + +/// SINH - hyperbolic sine +#ifndef __Cg_sinh_hpp__ +extern float sinh(float v); +extern float1 sinh(float1 v); +extern float2 sinh(float2 v); +extern float3 sinh(float3 v); +extern float4 sinh(float4 v); +CG_DOUBLE_SUPPORT(extern double sinh(double v);) +CG_DOUBLE_SUPPORT(extern double1 sinh(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 sinh(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 sinh(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 sinh(double4 v);) +CG_HALF_SUPPORT(extern half sinh(half v);) +CG_HALF_SUPPORT(extern half1 sinh(half1 v);) +CG_HALF_SUPPORT(extern half2 sinh(half2 v);) +CG_HALF_SUPPORT(extern half3 sinh(half3 v);) +CG_HALF_SUPPORT(extern half4 sinh(half4 v);) +CG_FIXED_SUPPORT(extern fixed sinh(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 sinh(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 sinh(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 sinh(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 sinh(fixed4 v);) +#endif + +/// SMOOTHSTEP - smooth step function +#ifndef __Cg_smoothstep_hpp__ +extern float1 smoothstep(float1 a, float1 b, float1 x); +extern float2 smoothstep(float2 a, float2 b, float2 x); +extern float3 smoothstep(float3 a, float3 b, float3 x); +extern float4 smoothstep(float4 a, float4 b, float4 x); +CG_HALF_SUPPORT(extern half1 smoothstep(half1 a, half1 b, half1 x);) +CG_HALF_SUPPORT(extern half2 smoothstep(half2 a, half2 b, half2 x);) +CG_HALF_SUPPORT(extern half3 smoothstep(half3 a, half3 b, half3 x);) +CG_HALF_SUPPORT(extern half4 smoothstep(half4 a, half4 b, half4 x);) +CG_FIXED_SUPPORT(extern fixed1 smoothstep(fixed1 a, fixed1 b, fixed1 x);) +CG_FIXED_SUPPORT(extern fixed2 smoothstep(fixed2 a, fixed2 b, fixed2 x);) +CG_FIXED_SUPPORT(extern fixed3 smoothstep(fixed3 a, fixed3 b, fixed3 x);) +CG_FIXED_SUPPORT(extern fixed4 smoothstep(fixed4 a, fixed4 b, fixed4 x);) +CG_DOUBLE_SUPPORT(extern double1 smoothstep(double1 a, double1 b, double1 x);) +CG_DOUBLE_SUPPORT(extern double2 smoothstep(double2 a, double2 b, double2 x);) +CG_DOUBLE_SUPPORT(extern double3 smoothstep(double3 a, double3 b, double3 x);) +CG_DOUBLE_SUPPORT(extern double4 smoothstep(double4 a, double4 b, double4 x);) +#endif + +/// SQRT - square root +#ifndef __Cg_sqrt_hpp__ +extern float sqrt(float v); +extern float1 sqrt(float1 v); +extern float2 sqrt(float2 v); +extern float3 sqrt(float3 v); +extern float4 sqrt(float4 v); +CG_DOUBLE_SUPPORT(extern double sqrt(double v);) +CG_DOUBLE_SUPPORT(extern double1 sqrt(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 sqrt(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 sqrt(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 sqrt(double4 v);) +CG_HALF_SUPPORT(extern half sqrt(half v);) +CG_HALF_SUPPORT(extern half1 sqrt(half1 v);) +CG_HALF_SUPPORT(extern half2 sqrt(half2 v);) +CG_HALF_SUPPORT(extern half3 sqrt(half3 v);) +CG_HALF_SUPPORT(extern half4 sqrt(half4 v);) +CG_FIXED_SUPPORT(extern fixed sqrt(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 sqrt(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 sqrt(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 sqrt(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 sqrt(fixed4 v);) +#endif + +/// STEP - zero if x is less than a; otherwise one +#ifndef __Cg_step_hpp__ +extern float1 step(float1 a, float1 x); +extern float2 step(float2 a, float2 x); +extern float3 step(float3 a, float3 x); +extern float4 step(float4 a, float4 x); +CG_HALF_SUPPORT(extern half1 step(half1 a, half1 x);) +CG_HALF_SUPPORT(extern half2 step(half2 a, half2 x);) +CG_HALF_SUPPORT(extern half3 step(half3 a, half3 x);) +CG_HALF_SUPPORT(extern half4 step(half4 a, half4 x);) +CG_FIXED_SUPPORT(extern fixed1 step(fixed1 a, fixed1 x);) +CG_FIXED_SUPPORT(extern fixed2 step(fixed2 a, fixed2 x);) +CG_FIXED_SUPPORT(extern fixed3 step(fixed3 a, fixed3 x);) +CG_FIXED_SUPPORT(extern fixed4 step(fixed4 a, fixed4 x);) +CG_DOUBLE_SUPPORT(extern double1 step(double1 a, double1 x);) +CG_DOUBLE_SUPPORT(extern double2 step(double2 a, double2 x);) +CG_DOUBLE_SUPPORT(extern double3 step(double3 a, double3 x);) +CG_DOUBLE_SUPPORT(extern double4 step(double4 a, double4 x);) +#endif + +/// TAN - tangent +#ifndef __Cg_tan_hpp__ +extern float tan(float v); +extern float1 tan(float1 v); +extern float2 tan(float2 v); +extern float3 tan(float3 v); +extern float4 tan(float4 v); +CG_DOUBLE_SUPPORT(extern double tan(double v);) +CG_DOUBLE_SUPPORT(extern double1 tan(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 tan(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 tan(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 tan(double4 v);) +CG_HALF_SUPPORT(extern half tan(half v);) +CG_HALF_SUPPORT(extern half1 tan(half1 v);) +CG_HALF_SUPPORT(extern half2 tan(half2 v);) +CG_HALF_SUPPORT(extern half3 tan(half3 v);) +CG_HALF_SUPPORT(extern half4 tan(half4 v);) +CG_FIXED_SUPPORT(extern fixed tan(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 tan(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 tan(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 tan(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 tan(fixed4 v);) +#endif + +/// TANH - hyperbolic tangent +#ifndef __Cg_tanh_hpp__ +extern float tanh(float v); +extern float1 tanh(float1 v); +extern float2 tanh(float2 v); +extern float3 tanh(float3 v); +extern float4 tanh(float4 v); +CG_DOUBLE_SUPPORT(extern double tanh(double v);) +CG_DOUBLE_SUPPORT(extern double1 tanh(double1 v);) +CG_DOUBLE_SUPPORT(extern double2 tanh(double2 v);) +CG_DOUBLE_SUPPORT(extern double3 tanh(double3 v);) +CG_DOUBLE_SUPPORT(extern double4 tanh(double4 v);) +CG_HALF_SUPPORT(extern half tanh(half v);) +CG_HALF_SUPPORT(extern half1 tanh(half1 v);) +CG_HALF_SUPPORT(extern half2 tanh(half2 v);) +CG_HALF_SUPPORT(extern half3 tanh(half3 v);) +CG_HALF_SUPPORT(extern half4 tanh(half4 v);) +CG_FIXED_SUPPORT(extern fixed tanh(fixed v);) +CG_FIXED_SUPPORT(extern fixed1 tanh(fixed1 v);) +CG_FIXED_SUPPORT(extern fixed2 tanh(fixed2 v);) +CG_FIXED_SUPPORT(extern fixed3 tanh(fixed3 v);) +CG_FIXED_SUPPORT(extern fixed4 tanh(fixed4 v);) +#endif + +/// TRANSPOSE - matrix tranpose +#ifdef __Cg_matrix_hpp__ +# ifndef __Cg_transpose_hpp__ +extern float4x4 transpose(float4x4 a); +extern float3x4 transpose(float4x3 a); +extern float2x4 transpose(float4x2 a); +extern float1x4 transpose(float4x1 a); +extern float4x3 transpose(float3x4 a); +extern float3x3 transpose(float3x3 a); +extern float2x3 transpose(float3x2 a); +extern float1x3 transpose(float3x1 a); +extern float4x2 transpose(float2x4 a); +extern float3x2 transpose(float2x3 a); +extern float2x2 transpose(float2x2 a); +extern float1x2 transpose(float2x1 a); +extern float4x1 transpose(float1x4 a); +extern float3x1 transpose(float1x3 a); +extern float2x1 transpose(float1x2 a); +extern float1x1 transpose(float1x1 a); +CG_DOUBLE_SUPPORT(extern double4x4 transpose(double4x4 a);) +CG_DOUBLE_SUPPORT(extern double3x4 transpose(double4x3 a);) +CG_DOUBLE_SUPPORT(extern double2x4 transpose(double4x2 a);) +CG_DOUBLE_SUPPORT(extern double1x4 transpose(double4x1 a);) +CG_DOUBLE_SUPPORT(extern double4x3 transpose(double3x4 a);) +CG_DOUBLE_SUPPORT(extern double3x3 transpose(double3x3 a);) +CG_DOUBLE_SUPPORT(extern double2x3 transpose(double3x2 a);) +CG_DOUBLE_SUPPORT(extern double1x3 transpose(double3x1 a);) +CG_DOUBLE_SUPPORT(extern double4x2 transpose(double2x4 a);) +CG_DOUBLE_SUPPORT(extern double3x2 transpose(double2x3 a);) +CG_DOUBLE_SUPPORT(extern double2x2 transpose(double2x2 a);) +CG_DOUBLE_SUPPORT(extern double1x2 transpose(double2x1 a);) +CG_DOUBLE_SUPPORT(extern double4x1 transpose(double1x4 a);) +CG_DOUBLE_SUPPORT(extern double3x1 transpose(double1x3 a);) +CG_DOUBLE_SUPPORT(extern double2x1 transpose(double1x2 a);) +CG_DOUBLE_SUPPORT(extern double1x1 transpose(double1x1 a);) +# endif +#endif // __Cg_matrix_hpp__ + +/// UPPER4x4 - matrix upper 4x4 +#ifdef __Cg_matrix_hpp__ +# ifndef __Cg_upper4x4_hpp__ +extern float4x4 upper4x4(float4x4 a); +extern float4x4 upper4x4(float4x3 a); +extern float4x4 upper4x4(float4x2 a); +extern float4x4 upper4x4(float4x1 a); +extern float4x4 upper4x4(float3x4 a); +extern float4x4 upper4x4(float3x3 a); +extern float4x4 upper4x4(float3x2 a); +extern float4x4 upper4x4(float3x1 a); +extern float4x4 upper4x4(float2x4 a); +extern float4x4 upper4x4(float2x3 a); +extern float4x4 upper4x4(float2x2 a); +extern float4x4 upper4x4(float2x1 a); +extern float4x4 upper4x4(float1x4 a); +extern float4x4 upper4x4(float1x3 a); +extern float4x4 upper4x4(float1x2 a); +extern float4x4 upper4x4(float1x1 a); +extern int4x4 upper4x4(int4x4 a); +extern int4x4 upper4x4(int4x3 a); +extern int4x4 upper4x4(int4x2 a); +extern int4x4 upper4x4(int4x1 a); +extern int4x4 upper4x4(int3x4 a); +extern int4x4 upper4x4(int3x3 a); +extern int4x4 upper4x4(int3x2 a); +extern int4x4 upper4x4(int3x1 a); +extern int4x4 upper4x4(int2x4 a); +extern int4x4 upper4x4(int2x3 a); +extern int4x4 upper4x4(int2x2 a); +extern int4x4 upper4x4(int2x1 a); +extern int4x4 upper4x4(int1x4 a); +extern int4x4 upper4x4(int1x3 a); +extern int4x4 upper4x4(int1x2 a); +extern int4x4 upper4x4(int1x1 a); +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double4x4 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double4x3 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double4x2 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double4x1 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double3x4 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double3x3 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double3x2 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double3x1 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double2x4 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double2x3 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double2x2 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double2x1 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double1x4 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double1x3 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double1x2 a);) +CG_DOUBLE_SUPPORT(extern double4x4 upper4x4(double1x1 a);) +# endif +#endif // __Cg_matrix_hpp__ + +} // namespace Cg + +#endif // __Cg_stdlib_hpp__ diff --git a/extensions/externals/include/Cg/step.hpp b/extensions/externals/include/Cg/step.hpp new file mode 100644 index 0000000..45eacce --- /dev/null +++ b/extensions/externals/include/Cg/step.hpp @@ -0,0 +1,86 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_step_hpp__ +#define __Cg_step_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::step + +namespace Cg { + +template +static inline __CGvector::numericType,N> step(const __CGvector & a, + const __CGvector & x) +{ + __CGvector rv; + for (int i=0; i= a[i]; + return rv; +} +template +static inline __CGvector::numericType,N> step(const __CGvector_usage & a, + const __CGvector_usage & x) +{ + __CGvector::numericType,N> rv; + for (int i=0; i= a[i]; + return rv; +} + +template +static inline __CGvector::numericType,N> step(const __CGvector_plural_usage & a, + const __CGvector_usage & x) +{ + __CGvector::numericType,N> rv; + for (int i=0; i= a[i]; + return rv; +} +template +static inline __CGvector::numericType,N> step(const __CGvector_usage & a, + const __CGvector_plural_usage & x) +{ + __CGvector::numericType,N> rv; + for (int i=0; i= a[0]; + return rv; +} +template +static inline __CGvector::numericType,N> step(const __CGvector_usage & a, + const TX & x) +{ + __CGvector::numericType,N> rv; + for (int i=0; i(x) >= a[i]; + return rv; +} +template +static inline __CGvector::numericType,N> step(const TA & a, + const __CGvector_usage & x) +{ + __CGvector::numericType,N> rv; + for (int i=0; i= static_cast(a); + return rv; +} +template +static inline __CGvector::numericType,1> step(const TA & a, + const TX & x) +{ + __CGvector::numericType,1> rv(static_cast(x) >= static_cast(a)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_step_hpp__ diff --git a/extensions/externals/include/Cg/tan.hpp b/extensions/externals/include/Cg/tan.hpp new file mode 100644 index 0000000..c1104c6 --- /dev/null +++ b/extensions/externals/include/Cg/tan.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_tan_hpp__ +#define __Cg_tan_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::tan + +namespace Cg { + +template +static inline __CGvector::realType,N> tan(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> tan(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> tan(const T & v) +{ + __CGvector::realType,1> rv(std::tan(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_tan_hpp__ diff --git a/extensions/externals/include/Cg/tanh.hpp b/extensions/externals/include/Cg/tanh.hpp new file mode 100644 index 0000000..ee1abf7 --- /dev/null +++ b/extensions/externals/include/Cg/tanh.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_tanh_hpp__ +#define __Cg_tanh_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +#include // for std::tanh + +namespace Cg { + +template +static inline __CGvector::realType,N> tanh(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> tanh(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> tanh(const T & v) +{ + __CGvector::realType,1> rv(std::tanh(static_cast(v))); + return rv; +} + +} // namespace Cg + +#endif // __Cg_tanh_hpp__ diff --git a/extensions/externals/include/Cg/transpose.hpp b/extensions/externals/include/Cg/transpose.hpp new file mode 100644 index 0000000..ba18963 --- /dev/null +++ b/extensions/externals/include/Cg/transpose.hpp @@ -0,0 +1,33 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_transpose_hpp__ +#define __Cg_transpose_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +static inline __CGmatrix transpose(const __CGmatrix & m) +{ + __CGmatrix rv; + for (int i=0; i") +#endif + +#include + +#include // for std::floor + +namespace Cg { + +template +static inline __CGvector::realType,N> trunc(const __CGvector & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,N> trunc(const __CGvector_usage & v) +{ + __CGvector rv; + for (int i=0; i +static inline __CGvector::realType,1> trunc(const T & v) +{ + __CGvector::realType,1> rv(v < T(0) ? -std::floor(-v) : std::floor(v)); + return rv; +} + +} // namespace Cg + +#endif // __Cg_trunc_hpp__ diff --git a/extensions/externals/include/Cg/upper1x1.hpp b/extensions/externals/include/Cg/upper1x1.hpp new file mode 100644 index 0000000..93f5b4d --- /dev/null +++ b/extensions/externals/include/Cg/upper1x1.hpp @@ -0,0 +1,39 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_upper1x1_hpp__ +#define __Cg_upper1x1_hpp__ + +#ifdef __Cg_stdlib_hpp__ +#pragma message("error: include this header file (" __FILE__ ") before ") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper1x1(const __CGmatrix &m) +{ + const int COLS = 1, + ROWS = 1; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper1x2(const __CGmatrix &m) +{ + const int COLS = 1, + ROWS = 2; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper1x3(const __CGmatrix &m) +{ + const int COLS = 1, + ROWS = 3; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper1x4(const __CGmatrix &m) +{ + const int COLS = 1, + ROWS = 4; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper2x1(const __CGmatrix &m) +{ + const int COLS = 2, + ROWS = 1; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper2x2(const __CGmatrix &m) +{ + const int COLS = 2, + ROWS = 2; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper2x3(const __CGmatrix &m) +{ + const int COLS = 2, + ROWS = 3; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper2x4(const __CGmatrix &m) +{ + const int COLS = 2, + ROWS = 4; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper3x1(const __CGmatrix &m) +{ + const int COLS = 3, + ROWS = 1; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper3x2(const __CGmatrix &m) +{ + const int COLS = 3, + ROWS = 2; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper3x3(const __CGmatrix &m) +{ + const int COLS = 3, + ROWS = 3; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper3x4(const __CGmatrix &m) +{ + const int COLS = 3, + ROWS = 4; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper4x1(const __CGmatrix &m) +{ + const int COLS = 4, + ROWS = 1; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper4x2(const __CGmatrix &m) +{ + const int COLS = 4, + ROWS = 2; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper4x3(const __CGmatrix &m) +{ + const int COLS = 4, + ROWS = 3; + __CGmatrix rv(0); + for (int i=0; i") +#endif + +#include + +namespace Cg { + +template +__CGmatrix upper4x4(const __CGmatrix &m) +{ + const int COLS = 4, + ROWS = 4; + __CGmatrix rv(0); + for (int i=0; i // for __CGassert to catch out-of-range vector indexing + +/* + * Template-based implementation of Cg-style vector data types. + * + * Supports: + * - All swizzle operations (.xyzw, .rgba, and .stpq) + * - Write masking + * - Complete overloaded operators (vector and scalar) + * + * Syntax supported by Cg but not implementable for C++: + * - Aggregate initialization + * - Example: float4 foo = { 1, 2, 3, 4 }; + * - Workaround: float4 foo = float4(1,2,3,4); + * - Swizzling of base types + * - Example: float f = 3; f.xxxx; + * - Workaround: float1 f = 3; f.xxx; + * - Type specifiers unsigned and signed not allowed for vectors + * - Example: unsigned int3 var; + * - Workaround: typedef __CGvector uint3; uint3 var; + * - Swizzled swizzles (including write mask usage) + * - Example: foo.xw.y; + * - Workaround: float2(foo.xw).y + * - Type promotion for vector function parameters. + * - Example: half3 foo = half3(1,2,3); float3 bar = float3(4,5,6); dot(foo,bar); + * - Workaround: float(float3(foo), bar); + * - Alternative workaround for stdlib functions: Use stdlib routine's templated header such as #include + * - ?: should work component-wise for vectors + * - Example: float2 c = float2(4,5); float2 foo2 = float2(-1,1); float2 var = (foo2 < 0) ? -c : c; + * - Workaround: float2 var = lerp(c, -c, float2(foo2 < 0)); + * + * Not supported by Cg but (unavoidably) allowed here: + * - Constructor style initialization + * - Example: float4 foo(1,2,3,4); + * - Array indexing of 1-component swizzle + * - Example: float2 foo = float2(3.1,2.7); foo.y[0]; + * - [0] is the only reasonable index + * + * The recommended way to initialize vectors is: float3 foo = float3(1,2,3) + * This works for both Cg and this Cg-style vector data type implementation. + * Avoid both aggregate initialization and construction-style initialization + * for portability between Cg and C++ with cgvector.h. + */ + +namespace Cg { + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(push) +#pragma warning(disable:4800) // forcing value to bool 'true' or 'false' (performance warning) +#pragma warning(disable:4512) // assignment operator could not be generated +#pragma warning(disable:4510) // default constructor could not be generated +#pragma warning(disable:4610) // union can never be instantiated - user defined constructor required +#endif + +// FUNDAMENTAL BASE CLASS + +#ifdef __CG_BASE_CLASS +#define __CG_DERIVE_FROM_BASE_CLASS , public __CG_BASE_CLASS +#else +#define __CG_DERIVE_FROM_BASE_CLASS +#endif + +// TYPE COMBINATION TRAITS + +// Homogenous binary type traits default to the singular (specialized) type trait. +template +struct __CGtype_trait { }; + +// Trinary type traits rely on composing binary traits. +template ::resultType,T3>::resultType> +struct __CGtype_trait3 : __CGtype_trait::resultType,T3> { }; + +// Specializations are needed for atomic types. +template <> +struct __CGtype_trait { + typedef float storageType; + typedef float resultType; +#ifdef __CG_FLOAT_DOT_TYPE_IS_FLOAT + typedef float dotType; +#else + typedef double dotType; +#endif + typedef bool boolType; + typedef resultType numericType; + typedef resultType realType; +}; +template <> +struct __CGtype_trait { + typedef int storageType; + typedef int resultType; + typedef int dotType; + typedef bool boolType; + typedef resultType intType; + typedef resultType numericType; +}; +template <> +struct __CGtype_trait { + typedef bool storageType; + typedef bool resultType; + typedef bool boolType; +}; +// Heterogenous binary __CGtype_traits are defined by deriving the trait from the pair's higher priority type trait. +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +// DOUBLE TYPE +/* Because C/C++ treats floating-point literals such as 1.3 typed as + the built-in double, type traits for mixing such literals with + other values is desirable even when is not included. + The __CGdouble type is a double when is included + prior to but a float otherwise. */ +#ifdef __Cg_double_hpp__ +typedef double __CGdouble; +#else +typedef float __CGdouble; +#endif +template <> +struct __CGtype_trait { + typedef __CGdouble storageType; + typedef __CGdouble resultType; + typedef __CGdouble dotType; + typedef bool boolType; + typedef resultType numericType; + typedef resultType realType; +}; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +// NON-DEFAULT HALF TYPE +#ifdef __Cg_half_hpp__ +template <> +struct __CGtype_trait { + typedef __CGhalf_storage storageType; + typedef half resultType; + typedef float dotType; + typedef bool boolType; + typedef resultType numericType; + typedef resultType realType; +}; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +#endif +// NON-DEFAULT FIXED TYPE +#ifdef __Cg_fixed_hpp__ +template <> +struct __CGtype_trait { + typedef cgFixedStorage storageType; + typedef fixed resultType; + typedef float dotType; + typedef bool boolType; + typedef resultType numericType; + typedef resultType realType; +}; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +#endif +// COMBINATIONS OF NON-DEFAULT TYPES +#if defined(__Cg_fixed_hpp__) +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +#endif +#if defined(__Cg_half_hpp__) +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +#endif +#if defined(__Cg_fixed_hpp__) && defined(__Cg_half_hpp__) +template <> +struct __CGtype_trait : __CGtype_trait { }; +template <> +struct __CGtype_trait : __CGtype_trait { }; +#endif + +//// FORWARD-DECLARED TEMPLATED VECTOR TYPE +template +class __CGvector { }; + +//// TEMPLATED VECTOR USAGE CLASS +template +class __CGvector_usage : public Tstore { +public: + // Do not write any constructors! + // NO assignment operator needed! + template + inline __CGvector_usage & operator += (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator -= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator *= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator /= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator %= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator ^= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator &= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator |= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator <<= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i + inline __CGvector_usage & operator >>= (const __CGvector_usage & ind) { + __CGvector tmp; + for (int i=0; i>= tmp[i]; + return *this; + } + inline __CGvector_usage & operator >>= (const T & s) { + for (int i=0; i>= s; + return *this; + } + inline __CGvector_usage & operator ++ () { /* prefix */ + for (int i=0; i +class __CGvector_plural_usage : public __CGvector_usage { +}; + +//// SWIZZLE STORAGE BASE CLASS +template +class __CGswizzle_storage { + typename __CGtype_trait::storageType v[STORAGE]; // Don't allow access to storage except through indexing. + static inline int swizzleIndex(int ndx) + { + int swizndx = (SMASK >> (8*ndx)) & 0xFF; + __CGassert(swizndx < STORAGE); + __CGassert(swizndx >= 0); + return swizndx; + } +public: + // Swizzled indexing + inline T & operator [](int ndx) { return *reinterpret_cast(&v[swizzleIndex(ndx)]); } + inline const T & operator [](int ndx) const { return *reinterpret_cast(&v[swizzleIndex(ndx)]); } + + template + inline __CGswizzle_storage & operator = (const __CGvector_usage & ind) { + __CGvector tmp; /* needed for proper vector self-assignments */ + for (int i=0; i3 || (__GNUC__==3 && __GNUC_MINOR__>=3)) +#define __CGmay_alias __attribute__((__may_alias__)) +#else +#define __CGmay_alias +#endif + +//// TEMPLATED SWIZZLED TYPES +template +class __CGswizzle : public __CGvector_plural_usage > { +public: + template + inline __CGswizzle & operator = (const __CGvector_usage & ind) { + __CGswizzle_storage::operator=(ind); + return *this; + } + inline __CGswizzle & operator = (const T v) { + __CGswizzle_storage::operator=(v); + return *this; + } +} __CGmay_alias; + +/// SPECIALIZED ONE-COMPONENT SWIZZLED TYPE (not derived from __CGvector_plural_usage) +template +class __CGswizzle : public __CGvector_usage > { +public: + template + inline __CGswizzle & operator = (const __CGvector_usage & ind) { + __CGswizzle_storage::operator=(ind); + return *this; + } + inline __CGswizzle & operator = (const T v) { + __CGswizzle_storage::operator=(v); + return *this; + } + + // CONVERSION TO SCALAR + operator T() const { + return (*this)[0]; + } +}; + +#ifdef __EDG__ // Edison Design Group C++ front-end +// suppress error ec_missing_initializer_on_fields +// ("class XXX provides no initializer for: ") +// because vectors are a union of user-defined classes that are +// not allowed to have constructors +#pragma diag_suppress 366 +#endif + +#if defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=1)) +// g++ 4.1 doesn't allow uninitialized const members -- need a better solution +#define __CGconst /*const*/ +#else +#define __CGconst const +#endif + +//// VECTOR STORAGE BASE CLASSES +template > +class __CGvector_storage; + +#define __CG_SWIZZLES_X(_x) \ + __CGconst __CGswizzle _x##_x; \ + __CGconst __CGswizzle _x##_x##_x; \ + __CGconst __CGswizzle _x##_x##_x##_x // no trailing semi-colon + +/// ONE-COMPONENT VECTOR STORAGE BASE CLASS +template +class __CGvector_storage { +protected: + static const int N = 1; +public: + union { + __CGswizzle x; + __CGswizzle r; + __CGswizzle s; +#ifdef __Cg_vector_xyzw_hpp__ // include for .xyzw swizzling + __CG_SWIZZLES_X(x); +#endif +#ifdef __Cg_vector_rgba_hpp__ // include for .rgba swizzling + __CG_SWIZZLES_X(r); +#endif +#ifdef __Cg_vector_stpq_hpp__ // include for .stpq swizzling + __CG_SWIZZLES_X(s); +#endif + }; +#ifndef __GNUC__ + // Visual C++ and EDG require a defined default constructor, but g++ + // balks about failure to initialize const members in union if + // a default constructor is provided. + __CGvector_storage() { } +#endif + inline T & operator [] (int i) { return reinterpret_cast(this)[i]; } + inline const T & operator [] (int i) const { return reinterpret_cast(this)[i]; } + + template + inline __CGvector_storage & operator = (const __CGvector_usage & ind) { + __CGvector tmp; /* needed for proper vector self-assignments */ + for (int i=0; i _x##_y; \ + __CGswizzle _y##_x; \ + __CGconst __CGswizzle _y##_y; \ + __CGconst __CGswizzle _x##_x##_y; \ + __CGconst __CGswizzle _x##_y##_x; \ + __CGconst __CGswizzle _x##_y##_y; \ + __CGconst __CGswizzle _y##_x##_x; \ + __CGconst __CGswizzle _y##_x##_y; \ + __CGconst __CGswizzle _y##_y##_x; \ + __CGconst __CGswizzle _y##_y##_y; \ + __CGconst __CGswizzle _x##_x##_x##_y; \ + __CGconst __CGswizzle _x##_x##_y##_x; \ + __CGconst __CGswizzle _x##_x##_y##_y; \ + __CGconst __CGswizzle _x##_y##_x##_x; \ + __CGconst __CGswizzle _x##_y##_x##_y; \ + __CGconst __CGswizzle _x##_y##_y##_x; \ + __CGconst __CGswizzle _x##_y##_y##_y; \ + __CGconst __CGswizzle _y##_x##_x##_x; \ + __CGconst __CGswizzle _y##_x##_x##_y; \ + __CGconst __CGswizzle _y##_x##_y##_x; \ + __CGconst __CGswizzle _y##_x##_y##_y; \ + __CGconst __CGswizzle _y##_y##_x##_x; \ + __CGconst __CGswizzle _y##_y##_x##_y; \ + __CGconst __CGswizzle _y##_y##_y##_x; \ + __CGconst __CGswizzle _y##_y##_y##_y // no trailing semi-colon + +/// TWO-COMPONENT VECTOR STORAGE BASE CLASS +template +class __CGvector_storage { +protected: + static const int N = 2; +public: + union { + __CGswizzle x; + __CGswizzle r; + __CGswizzle s; + __CGswizzle y; + __CGswizzle g; + __CGswizzle t; +#ifdef __Cg_vector_xyzw_hpp__ // include for .xyzw swizzling + __CG_SWIZZLES_X(x); + __CG_SWIZZLES_XY(x,y); +#endif +#ifdef __Cg_vector_rgba_hpp__ // include for .rgba swizzling + __CG_SWIZZLES_X(r); + __CG_SWIZZLES_XY(r,g); +#endif +#ifdef __Cg_vector_stpq_hpp__ // include for .stpq swizzling + __CG_SWIZZLES_X(s); + __CG_SWIZZLES_XY(s,t); +#endif + }; +#ifndef __GNUC__ + // Visual C++ and EDG require a defined default constructor, but g++ + // balks about failure to initialize const members in union if + // a default constructor is provided. + __CGvector_storage() { } +#endif + inline T & operator [] (int i) { return reinterpret_cast(this)[i]; } + inline const T & operator [] (int i) const { return reinterpret_cast(this)[i]; } + + template + inline __CGvector_storage & operator = (const __CGvector_usage & ind) { + __CGvector tmp; /* needed for proper vector self-assignments */ + for (int i=0; i _x##_z; \ + __CGswizzle _y##_z; \ + __CGswizzle _z##_x; \ + __CGswizzle _z##_y; \ + __CGconst __CGswizzle _z##_z; \ + __CGconst __CGswizzle _x##_x##_z; \ + __CGswizzle _x##_y##_z; \ + __CGconst __CGswizzle _x##_z##_x; \ + __CGswizzle _x##_z##_y; \ + __CGconst __CGswizzle _x##_z##_z; \ + __CGswizzle _y##_x##_z; \ + __CGconst __CGswizzle _y##_y##_z; \ + __CGswizzle _y##_z##_x; \ + __CGconst __CGswizzle _y##_z##_y; \ + __CGconst __CGswizzle _y##_z##_z; \ + __CGconst __CGswizzle _z##_x##_x; \ + __CGswizzle _z##_x##_y; \ + __CGconst __CGswizzle _z##_x##_z; \ + __CGswizzle _z##_y##_x; \ + __CGconst __CGswizzle _z##_y##_y; \ + __CGconst __CGswizzle _z##_y##_z; \ + __CGconst __CGswizzle _z##_z##_x; \ + __CGconst __CGswizzle _z##_z##_y; \ + __CGconst __CGswizzle _z##_z##_z; \ + __CGconst __CGswizzle _x##_x##_x##_z; \ + __CGconst __CGswizzle _x##_x##_y##_z; \ + __CGconst __CGswizzle _x##_x##_z##_x; \ + __CGconst __CGswizzle _x##_x##_z##_y; \ + __CGconst __CGswizzle _x##_x##_z##_z; \ + __CGconst __CGswizzle _x##_y##_x##_z; \ + __CGconst __CGswizzle _x##_y##_y##_z; \ + __CGconst __CGswizzle _x##_y##_z##_x; \ + __CGconst __CGswizzle _x##_y##_z##_y; \ + __CGconst __CGswizzle _x##_y##_z##_z; \ + __CGconst __CGswizzle _x##_z##_x##_x; \ + __CGconst __CGswizzle _x##_z##_x##_y; \ + __CGconst __CGswizzle _x##_z##_x##_z; \ + __CGconst __CGswizzle _x##_z##_y##_x; \ + __CGconst __CGswizzle _x##_z##_y##_y; \ + __CGconst __CGswizzle _x##_z##_y##_z; \ + __CGconst __CGswizzle _x##_z##_z##_x; \ + __CGconst __CGswizzle _x##_z##_z##_y; \ + __CGconst __CGswizzle _x##_z##_z##_z; \ + __CGconst __CGswizzle _y##_x##_x##_z; \ + __CGconst __CGswizzle _y##_x##_y##_z; \ + __CGconst __CGswizzle _y##_x##_z##_x; \ + __CGconst __CGswizzle _y##_x##_z##_y; \ + __CGconst __CGswizzle _y##_x##_z##_z; \ + __CGconst __CGswizzle _y##_y##_x##_z; \ + __CGconst __CGswizzle _y##_y##_y##_z; \ + __CGconst __CGswizzle _y##_y##_z##_x; \ + __CGconst __CGswizzle _y##_y##_z##_y; \ + __CGconst __CGswizzle _y##_y##_z##_z; \ + __CGconst __CGswizzle _y##_z##_x##_x; \ + __CGconst __CGswizzle _y##_z##_x##_y; \ + __CGconst __CGswizzle _y##_z##_x##_z; \ + __CGconst __CGswizzle _y##_z##_y##_x; \ + __CGconst __CGswizzle _y##_z##_y##_y; \ + __CGconst __CGswizzle _y##_z##_y##_z; \ + __CGconst __CGswizzle _y##_z##_z##_x; \ + __CGconst __CGswizzle _y##_z##_z##_y; \ + __CGconst __CGswizzle _y##_z##_z##_z; \ + __CGconst __CGswizzle _z##_x##_x##_x; \ + __CGconst __CGswizzle _z##_x##_x##_y; \ + __CGconst __CGswizzle _z##_x##_x##_z; \ + __CGconst __CGswizzle _z##_x##_y##_x; \ + __CGconst __CGswizzle _z##_x##_y##_y; \ + __CGconst __CGswizzle _z##_x##_y##_z; \ + __CGconst __CGswizzle _z##_x##_z##_x; \ + __CGconst __CGswizzle _z##_x##_z##_y; \ + __CGconst __CGswizzle _z##_x##_z##_z; \ + __CGconst __CGswizzle _z##_y##_x##_x; \ + __CGconst __CGswizzle _z##_y##_x##_y; \ + __CGconst __CGswizzle _z##_y##_x##_z; \ + __CGconst __CGswizzle _z##_y##_y##_x; \ + __CGconst __CGswizzle _z##_y##_y##_y; \ + __CGconst __CGswizzle _z##_y##_y##_z; \ + __CGconst __CGswizzle _z##_y##_z##_x; \ + __CGconst __CGswizzle _z##_y##_z##_y; \ + __CGconst __CGswizzle _z##_y##_z##_z; \ + __CGconst __CGswizzle _z##_z##_x##_x; \ + __CGconst __CGswizzle _z##_z##_x##_y; \ + __CGconst __CGswizzle _z##_z##_x##_z; \ + __CGconst __CGswizzle _z##_z##_y##_x; \ + __CGconst __CGswizzle _z##_z##_y##_y; \ + __CGconst __CGswizzle _z##_z##_y##_z; \ + __CGconst __CGswizzle _z##_z##_z##_x; \ + __CGconst __CGswizzle _z##_z##_z##_y; \ + __CGconst __CGswizzle _z##_z##_z##_z // no trailing semi-colon + +/// THREE-COMPONENT VECTOR STORAGE BASE CLASS +template +class __CGvector_storage { +protected: + static const int N = 3; +public: + union { + __CGswizzle x; + __CGswizzle r; + __CGswizzle s; + __CGswizzle y; + __CGswizzle g; + __CGswizzle t; + __CGswizzle z; + __CGswizzle b; + __CGswizzle p; +#ifdef __Cg_vector_xyzw_hpp__ // include for .xyzw swizzling + __CG_SWIZZLES_X(x); + __CG_SWIZZLES_XY(x,y); + __CG_SWIZZLES_XYZ(x,y,z); +#endif +#ifdef __Cg_vector_rgba_hpp__ // include for .rgba swizzling + __CG_SWIZZLES_X(r); + __CG_SWIZZLES_XY(r,g); + __CG_SWIZZLES_XYZ(r,g,b); +#endif +#ifdef __Cg_vector_stpq_hpp__ // include for .stpq swizzling + __CG_SWIZZLES_X(s); + __CG_SWIZZLES_XY(s,t); + __CG_SWIZZLES_XYZ(s,t,p); +#endif + }; +#ifndef __GNUC__ + // Visual C++ and EDG require a defined default constructor, but g++ + // balks about failure to initialize const members in union if + // a default constructor is provided. + __CGvector_storage() { } +#endif + inline T & operator [] (int i) { return reinterpret_cast(this)[i]; } + inline const T & operator [] (int i) const { return reinterpret_cast(this)[i]; } + + template + inline __CGvector_storage & operator = (const __CGvector_usage & ind) { + __CGvector tmp; /* needed for proper vector self-assignments */ + for (int i=0; i _x##_w; \ + __CGswizzle _y##_w; \ + __CGswizzle _z##_w; \ + __CGswizzle _w##_x; \ + __CGswizzle _w##_y; \ + __CGswizzle _w##_z; \ + __CGconst __CGswizzle _w##_w; \ + __CGconst __CGswizzle _x##_x##_w; \ + __CGswizzle _x##_y##_w; \ + __CGswizzle _x##_z##_w; \ + __CGconst __CGswizzle _x##_w##_x; \ + __CGswizzle _x##_w##_y; \ + __CGswizzle _x##_w##_z; \ + __CGconst __CGswizzle _x##_w##_w; \ + __CGswizzle _y##_x##_w; \ + __CGconst __CGswizzle _y##_y##_w; \ + __CGswizzle _y##_z##_w; \ + __CGswizzle _y##_w##_x; \ + __CGconst __CGswizzle _y##_w##_y; \ + __CGswizzle _y##_w##_z; \ + __CGconst __CGswizzle _y##_w##_w; \ + __CGswizzle _z##_x##_w; \ + __CGswizzle _z##_y##_w; \ + __CGconst __CGswizzle _z##_z##_w; \ + __CGswizzle _z##_w##_x; \ + __CGswizzle _z##_w##_y; \ + __CGconst __CGswizzle _z##_w##_z; \ + __CGconst __CGswizzle _z##_w##_w; \ + __CGconst __CGswizzle _w##_x##_x; \ + __CGswizzle _w##_x##_y; \ + __CGswizzle _w##_x##_z; \ + __CGconst __CGswizzle _w##_x##_w; \ + __CGswizzle _w##_y##_x; \ + __CGconst __CGswizzle _w##_y##_y; \ + __CGswizzle _w##_y##_z; \ + __CGconst __CGswizzle _w##_y##_w; \ + __CGswizzle _w##_z##_x; \ + __CGswizzle _w##_z##_y; \ + __CGconst __CGswizzle _w##_z##_z; \ + __CGconst __CGswizzle _w##_z##_w; \ + __CGconst __CGswizzle _w##_w##_x; \ + __CGconst __CGswizzle _w##_w##_y; \ + __CGconst __CGswizzle _w##_w##_z; \ + __CGconst __CGswizzle _w##_w##_w; \ + __CGconst __CGswizzle _x##_x##_x##_w; \ + __CGconst __CGswizzle _x##_x##_y##_w; \ + __CGconst __CGswizzle _x##_x##_z##_w; \ + __CGconst __CGswizzle _x##_x##_w##_x; \ + __CGconst __CGswizzle _x##_x##_w##_y; \ + __CGconst __CGswizzle _x##_x##_w##_z; \ + __CGconst __CGswizzle _x##_x##_w##_w; \ + __CGconst __CGswizzle _x##_y##_x##_w; \ + __CGconst __CGswizzle _x##_y##_y##_w; \ + __CGswizzle _x##_y##_z##_w; \ + __CGconst __CGswizzle _x##_y##_w##_x; \ + __CGconst __CGswizzle _x##_y##_w##_y; \ + __CGswizzle _x##_y##_w##_z; \ + __CGconst __CGswizzle _x##_y##_w##_w; \ + __CGconst __CGswizzle _x##_z##_x##_w; \ + __CGswizzle _x##_z##_y##_w; \ + __CGconst __CGswizzle _x##_z##_z##_w; \ + __CGconst __CGswizzle _x##_z##_w##_x; \ + __CGswizzle _x##_z##_w##_y; \ + __CGconst __CGswizzle _x##_z##_w##_z; \ + __CGconst __CGswizzle _x##_z##_w##_w; \ + __CGconst __CGswizzle _x##_w##_x##_x; \ + __CGconst __CGswizzle _x##_w##_x##_y; \ + __CGconst __CGswizzle _x##_w##_x##_z; \ + __CGconst __CGswizzle _x##_w##_x##_w; \ + __CGconst __CGswizzle _x##_w##_y##_x; \ + __CGconst __CGswizzle _x##_w##_y##_y; \ + __CGswizzle _x##_w##_y##_z; \ + __CGconst __CGswizzle _x##_w##_y##_w; \ + __CGconst __CGswizzle _x##_w##_z##_x; \ + __CGswizzle _x##_w##_z##_y; \ + __CGconst __CGswizzle _x##_w##_z##_z; \ + __CGconst __CGswizzle _x##_w##_z##_w; \ + __CGconst __CGswizzle _x##_w##_w##_x; \ + __CGconst __CGswizzle _x##_w##_w##_y; \ + __CGconst __CGswizzle _x##_w##_w##_z; \ + __CGconst __CGswizzle _x##_w##_w##_w; \ + __CGconst __CGswizzle _y##_x##_x##_w; \ + __CGconst __CGswizzle _y##_x##_y##_w; \ + __CGswizzle _y##_x##_z##_w; \ + __CGconst __CGswizzle _y##_x##_w##_x; \ + __CGconst __CGswizzle _y##_x##_w##_y; \ + __CGswizzle _y##_x##_w##_z; \ + __CGconst __CGswizzle _y##_x##_w##_w; \ + __CGconst __CGswizzle _y##_y##_x##_w; \ + __CGconst __CGswizzle _y##_y##_y##_w; \ + __CGconst __CGswizzle _y##_y##_z##_w; \ + __CGconst __CGswizzle _y##_y##_w##_x; \ + __CGconst __CGswizzle _y##_y##_w##_y; \ + __CGconst __CGswizzle _y##_y##_w##_z; \ + __CGconst __CGswizzle _y##_y##_w##_w; \ + __CGswizzle _y##_z##_x##_w; \ + __CGconst __CGswizzle _y##_z##_y##_w; \ + __CGconst __CGswizzle _y##_z##_z##_w; \ + __CGswizzle _y##_z##_w##_x; \ + __CGconst __CGswizzle _y##_z##_w##_y; \ + __CGconst __CGswizzle _y##_z##_w##_z; \ + __CGconst __CGswizzle _y##_z##_w##_w; \ + __CGconst __CGswizzle _y##_w##_x##_x; \ + __CGconst __CGswizzle _y##_w##_x##_y; \ + __CGswizzle _y##_w##_x##_z; \ + __CGconst __CGswizzle _y##_w##_x##_w; \ + __CGconst __CGswizzle _y##_w##_y##_x; \ + __CGconst __CGswizzle _y##_w##_y##_y; \ + __CGconst __CGswizzle _y##_w##_y##_z; \ + __CGconst __CGswizzle _y##_w##_y##_w; \ + __CGswizzle _y##_w##_z##_x; \ + __CGconst __CGswizzle _y##_w##_z##_y; \ + __CGconst __CGswizzle _y##_w##_z##_z; \ + __CGconst __CGswizzle _y##_w##_z##_w; \ + __CGconst __CGswizzle _y##_w##_w##_x; \ + __CGconst __CGswizzle _y##_w##_w##_y; \ + __CGconst __CGswizzle _y##_w##_w##_z; \ + __CGconst __CGswizzle _y##_w##_w##_w; \ + __CGconst __CGswizzle _z##_x##_x##_w; \ + __CGswizzle _z##_x##_y##_w; \ + __CGconst __CGswizzle _z##_x##_z##_w; \ + __CGconst __CGswizzle _z##_x##_w##_x; \ + __CGswizzle _z##_x##_w##_y; \ + __CGconst __CGswizzle _z##_x##_w##_z; \ + __CGconst __CGswizzle _z##_x##_w##_w; \ + __CGswizzle _z##_y##_x##_w; \ + __CGconst __CGswizzle _z##_y##_y##_w; \ + __CGconst __CGswizzle _z##_y##_z##_w; \ + __CGswizzle _z##_y##_w##_x; \ + __CGconst __CGswizzle _z##_y##_w##_y; \ + __CGconst __CGswizzle _z##_y##_w##_z; \ + __CGconst __CGswizzle _z##_y##_w##_w; \ + __CGconst __CGswizzle _z##_z##_x##_w; \ + __CGconst __CGswizzle _z##_z##_y##_w; \ + __CGconst __CGswizzle _z##_z##_z##_w; \ + __CGconst __CGswizzle _z##_z##_w##_x; \ + __CGconst __CGswizzle _z##_z##_w##_y; \ + __CGconst __CGswizzle _z##_z##_w##_z; \ + __CGconst __CGswizzle _z##_z##_w##_w; \ + __CGconst __CGswizzle _z##_w##_x##_x; \ + __CGswizzle _z##_w##_x##_y; \ + __CGconst __CGswizzle _z##_w##_x##_z; \ + __CGconst __CGswizzle _z##_w##_x##_w; \ + __CGswizzle _z##_w##_y##_x; \ + __CGconst __CGswizzle _z##_w##_y##_y; \ + __CGconst __CGswizzle _z##_w##_y##_z; \ + __CGconst __CGswizzle _z##_w##_y##_w; \ + __CGconst __CGswizzle _z##_w##_z##_x; \ + __CGconst __CGswizzle _z##_w##_z##_y; \ + __CGconst __CGswizzle _z##_w##_z##_z; \ + __CGconst __CGswizzle _z##_w##_z##_w; \ + __CGconst __CGswizzle _z##_w##_w##_x; \ + __CGconst __CGswizzle _z##_w##_w##_y; \ + __CGconst __CGswizzle _z##_w##_w##_z; \ + __CGconst __CGswizzle _z##_w##_w##_w; \ + __CGconst __CGswizzle _w##_x##_x##_x; \ + __CGconst __CGswizzle _w##_x##_x##_y; \ + __CGconst __CGswizzle _w##_x##_x##_z; \ + __CGconst __CGswizzle _w##_x##_x##_w; \ + __CGconst __CGswizzle _w##_x##_y##_x; \ + __CGconst __CGswizzle _w##_x##_y##_y; \ + __CGswizzle _w##_x##_y##_z; \ + __CGconst __CGswizzle _w##_x##_y##_w; \ + __CGconst __CGswizzle _w##_x##_z##_x; \ + __CGswizzle _w##_x##_z##_y; \ + __CGconst __CGswizzle _w##_x##_z##_z; \ + __CGconst __CGswizzle _w##_x##_z##_w; \ + __CGconst __CGswizzle _w##_x##_w##_x; \ + __CGconst __CGswizzle _w##_x##_w##_y; \ + __CGconst __CGswizzle _w##_x##_w##_z; \ + __CGconst __CGswizzle _w##_x##_w##_w; \ + __CGconst __CGswizzle _w##_y##_x##_x; \ + __CGconst __CGswizzle _w##_y##_x##_y; \ + __CGswizzle _w##_y##_x##_z; \ + __CGconst __CGswizzle _w##_y##_x##_w; \ + __CGconst __CGswizzle _w##_y##_y##_x; \ + __CGconst __CGswizzle _w##_y##_y##_y; \ + __CGconst __CGswizzle _w##_y##_y##_z; \ + __CGconst __CGswizzle _w##_y##_y##_w; \ + __CGswizzle _w##_y##_z##_x; \ + __CGconst __CGswizzle _w##_y##_z##_y; \ + __CGconst __CGswizzle _w##_y##_z##_z; \ + __CGconst __CGswizzle _w##_y##_z##_w; \ + __CGconst __CGswizzle _w##_y##_w##_x; \ + __CGconst __CGswizzle _w##_y##_w##_y; \ + __CGconst __CGswizzle _w##_y##_w##_z; \ + __CGconst __CGswizzle _w##_y##_w##_w; \ + __CGconst __CGswizzle _w##_z##_x##_x; \ + __CGswizzle _w##_z##_x##_y; \ + __CGconst __CGswizzle _w##_z##_x##_z; \ + __CGconst __CGswizzle _w##_z##_x##_w; \ + __CGswizzle _w##_z##_y##_x; \ + __CGconst __CGswizzle _w##_z##_y##_y; \ + __CGconst __CGswizzle _w##_z##_y##_z; \ + __CGconst __CGswizzle _w##_z##_y##_w; \ + __CGconst __CGswizzle _w##_z##_z##_x; \ + __CGconst __CGswizzle _w##_z##_z##_y; \ + __CGconst __CGswizzle _w##_z##_z##_z; \ + __CGconst __CGswizzle _w##_z##_z##_w; \ + __CGconst __CGswizzle _w##_z##_w##_x; \ + __CGconst __CGswizzle _w##_z##_w##_y; \ + __CGconst __CGswizzle _w##_z##_w##_z; \ + __CGconst __CGswizzle _w##_z##_w##_w; \ + __CGconst __CGswizzle _w##_w##_x##_x; \ + __CGconst __CGswizzle _w##_w##_x##_y; \ + __CGconst __CGswizzle _w##_w##_x##_z; \ + __CGconst __CGswizzle _w##_w##_x##_w; \ + __CGconst __CGswizzle _w##_w##_y##_x; \ + __CGconst __CGswizzle _w##_w##_y##_y; \ + __CGconst __CGswizzle _w##_w##_y##_z; \ + __CGconst __CGswizzle _w##_w##_y##_w; \ + __CGconst __CGswizzle _w##_w##_z##_x; \ + __CGconst __CGswizzle _w##_w##_z##_y; \ + __CGconst __CGswizzle _w##_w##_z##_z; \ + __CGconst __CGswizzle _w##_w##_z##_w; \ + __CGconst __CGswizzle _w##_w##_w##_x; \ + __CGconst __CGswizzle _w##_w##_w##_y; \ + __CGconst __CGswizzle _w##_w##_w##_z; \ + __CGconst __CGswizzle _w##_w##_w##_w // no trailing semi-colon + +/// FOUR-COMPONENT VECTOR STORAGE BASE CLASS +template +class __CGvector_storage { +protected: + static const int N = 4; +public: + union { + __CGswizzle x; + __CGswizzle r; + __CGswizzle s; + __CGswizzle y; + __CGswizzle g; + __CGswizzle t; + __CGswizzle z; + __CGswizzle b; + __CGswizzle p; + __CGswizzle w; + __CGswizzle a; + __CGswizzle q; +#ifdef __Cg_vector_xyzw_hpp__ // include for .xyzw swizzling + __CG_SWIZZLES_X(x); + __CG_SWIZZLES_XY(x,y); + __CG_SWIZZLES_XYZ(x,y,z); + __CG_SWIZZLES_XYZW(x,y,z,w); +#endif +#ifdef __Cg_vector_rgba_hpp__ // include for .rgba swizzling + __CG_SWIZZLES_X(r); + __CG_SWIZZLES_XY(r,g); + __CG_SWIZZLES_XYZ(r,g,b); + __CG_SWIZZLES_XYZW(r,g,b,a); +#endif +#ifdef __Cg_vector_stpq_hpp__ // include for .stpq swizzling + __CG_SWIZZLES_X(s); + __CG_SWIZZLES_XY(s,t); + __CG_SWIZZLES_XYZ(s,t,p); + __CG_SWIZZLES_XYZW(s,t,p,q); +#endif + }; +#ifndef __GNUC__ + // Visual C++ and EDG require a defined default constructor, but g++ + // balks about failure to initialize const members in union if + // a default constructor is provided. + __CGvector_storage() { } +#endif + inline T & operator [] (int i) { return reinterpret_cast(this)[i]; } + inline const T & operator [] (int i) const { return reinterpret_cast(this)[i]; } + + template + inline __CGvector_storage & operator = (const __CGvector_usage & ind) { + __CGvector tmp; /* needed for proper vector self-assignments */ + for (int i=0; i +class __CGvector_plural + : public __CGvector_plural_usage > + __CG_DERIVE_FROM_BASE_CLASS +{ +public: + inline __CGvector_plural() { } + inline __CGvector_plural(const T & s) { + for (int i=0; i + inline __CGvector_plural(__CGvector_plural_usage v) { + for (int i=0; i + explicit inline __CGvector_plural(__CGvector_usage v) { + for (int i=0; i + inline __CGvector_plural(__CGvector_usage v) { + for (int i=0; i + explicit inline __CGvector_plural(__CGvector_usage v) { + for (int i=0; i +class __CGvector : + public __CGvector_usage > + __CG_DERIVE_FROM_BASE_CLASS +{ +private: + static const int N = 1; +public: + // CONSTRUCTORS + inline __CGvector() { } // Needed! + inline __CGvector(const T & s) { + (*this)[0] = s; + } + template + inline __CGvector(__CGvector_usage v) { + (*this)[0] = v[0]; /* precision mismatch warning possible */ + } + // EXPLICIT CONSTRUCTOR FOR TYPE CHANGES FOR VECTORS + template + explicit inline __CGvector(__CGvector_usage v) { + (*this)[0] = T(v[0]); /* precision mismatch warning possible */ + } + + // ASSIGNMENT OPERATORS + template + inline __CGvector & operator = (const __CGvector_usage & ind) { + __CGvector_storage::operator=(ind); + return *this; + } + inline __CGvector & operator = (const T v) { + __CGvector_storage::operator=(v); + return *this; + } + + // CONVERSION TO SCALAR + operator T() const { + return (*this)[0]; + } +} __CGmay_alias; + +/// TWO-COMPONENT TEMPLATED VECTOR TYPE +template +class __CGvector : public __CGvector_plural { +private: + static const int N = 2; +public: + // CONSTRUCTORS + inline __CGvector() { } // Needed! + template + inline __CGvector(const TA & s0, const TB & s1) { + (*this)[0] = T(s0); + (*this)[1] = T(s1); + } + inline __CGvector(const T & v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // EXPLICIT CONSTRUCTORS FOR TYPE CONVERSIONS BETWEEN VECTORS + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // ASSIGNMENT OPERATORS + template + inline __CGvector & operator = (const __CGvector_usage & ind) { + __CGvector_storage::operator=(ind); + return *this; + } + inline __CGvector & operator = (const T v) { + __CGvector_storage::operator=(v); + return *this; + } +} __CGmay_alias; + +/// THREE-COMPONENT TEMPLATED VECTOR TYPE +template +class __CGvector : public __CGvector_plural { +private: + static const int N = 3; +public: + // CONSTRUCTORS + inline __CGvector() { } + template + inline __CGvector(const TA & s0, const TB & s1, const TC & s2) { + (*this)[0] = T(s0); + (*this)[1] = T(s1); + (*this)[2] = T(s2); + } + template + inline __CGvector(const __CGvector_usage &s01, const TB &s2) { + (*this)[0] = T(s01[0]); + (*this)[1] = T(s01[1]); + (*this)[2] = T(s2); + } + template + inline __CGvector(const TA &s0, const __CGvector_usage &s12) { + (*this)[0] = T(s0); + (*this)[1] = T(s12[0]); + (*this)[2] = T(s12[1]); + } + inline __CGvector(const T & v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // EXPLICIT CONSTRUCTORS FOR TYPE CONVERSIONS BETWEEN VECTORS + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // ASSIGNMENT OPERATORS + template + inline __CGvector & operator = (const __CGvector_usage & ind) { + __CGvector_storage::operator=(ind); + return *this; + } + inline __CGvector & operator = (const T v) { + __CGvector_storage::operator=(v); + return *this; + } +} __CGmay_alias; + +/// FOUR-COMPONENT TEMPLATED VECTOR TYPE +template +class __CGvector : public __CGvector_plural { +private: + static const int N = 4; +public: + // CONSTRUCTORS + inline __CGvector() { } + template + inline __CGvector(const TA & s0, const TB & s1, const TC & s2, const TD & s3) { + (*this)[0] = T(s0); + (*this)[1] = T(s1); + (*this)[2] = T(s2); + (*this)[3] = T(s3); + } + template + inline __CGvector(const __CGvector_usage &s01, const TB &s2, const TC &s3) { + (*this)[0] = T(s01[0]); + (*this)[1] = T(s01[1]); + (*this)[2] = T(s2); + (*this)[3] = T(s3); + } + template + inline __CGvector(const TA &s0, const __CGvector_usage &s12, const TC &s3) { + (*this)[0] = T(s0); + (*this)[1] = T(s12[0]); + (*this)[2] = T(s12[1]); + (*this)[3] = T(s3); + } + template + inline __CGvector(const TA &s0, const TB &s1, const __CGvector_usage &s23) { + (*this)[0] = T(s0); + (*this)[1] = T(s1); + (*this)[2] = T(s23[0]); + (*this)[3] = T(s23[1]); + } + template + inline __CGvector(const __CGvector_usage &s01, const __CGvector_usage &s23) { + (*this)[0] = T(s01[0]); + (*this)[1] = T(s01[1]); + (*this)[2] = T(s23[0]); + (*this)[3] = T(s23[1]); + } + template + inline __CGvector(const __CGvector_usage &s012, const TB &s3) { + (*this)[0] = T(s012[0]); + (*this)[1] = T(s012[1]); + (*this)[2] = T(s012[2]); + (*this)[3] = T(s3); + } + template + inline __CGvector(const TA &s0, const __CGvector_usage &s123) { + (*this)[0] = T(s0); + (*this)[1] = T(s123[0]); + (*this)[2] = T(s123[1]); + (*this)[3] = T(s123[2]); + } + inline __CGvector(const T & v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // EXPLICIT CONSTRUCTORS FOR TYPE CONVERSIONS BETWEEN VECTORS + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + template + explicit inline __CGvector(__CGvector_usage v) : __CGvector_plural(v) { } + + // ASSIGNMENT OPERATORS + template + inline __CGvector & operator = (const __CGvector_usage & ind) { + __CGvector_storage::operator=(ind); + return *this; + } + inline __CGvector & operator = (const T v) { + __CGvector_storage::operator=(v); + return *this; + } +} __CGmay_alias; + +//// UNARY VECTOR OPERATORS + +// UNARY LOGICAL NEGATE +template +inline __CGvector operator ! (const __CGvector_usage & a) +{ + __CGvector r; + for (int i=0; i +inline __CGvector operator ~ (const __CGvector_usage & a) +{ + __CGvector r; + for (int i=0; i +inline __CGvector operator - (const __CGvector_usage & a) +{ + __CGvector r; + for (int i=0; i +// 5) vector_usage<1> OP plural_vector_usage + +// BINARY ADDITION (+) +template +inline __CGvector::numericType,N> operator + (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator + (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::numericType,N> operator + (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(a)) + ResultType(b[i]); + } + return r; +} +template +inline __CGvector::numericType,N> operator + (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator + (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator - (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator - (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::numericType,N> operator - (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(a)) - ResultType(b[i]); + return r; +} +template +inline __CGvector::numericType,N> operator - (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator - (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator * (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator * (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::numericType,N> operator * (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(a)) * ResultType(b[i]); + return r; +} +template +inline __CGvector::numericType,N> operator * (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator * (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator / (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator / (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::numericType,N> operator / (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i(a)) / ResultType(b[i]); + return r; +} +template +inline __CGvector::numericType,N> operator / (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::numericType,N> operator / (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::numericType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator % (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator % (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::intType,N> operator % (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) % ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator % (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator % (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator ^ (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator ^ (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::intType,N> operator ^ (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) ^ ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator ^ (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator ^ (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator & (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator & (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::intType,N> operator & (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) & ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator & (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator & (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator | (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator | (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::intType,N> operator | (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) | ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator | (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator | (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator << (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator << (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::intType,N> operator << (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) << ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator << (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i +inline __CGvector::intType,N> operator << (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i>) +template +inline __CGvector::intType,N> operator >> (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i> ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator >> (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i> ResultType(static_cast(b)); + return r; +} +template +inline __CGvector::intType,N> operator >> (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i(a)) >> ResultType(b[i]); + return r; +} +template +inline __CGvector::intType,N> operator >> (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i> ResultType(b[0]); + return r; +} +template +inline __CGvector::intType,N> operator >> (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::intType ResultType; + __CGvector r; + for (int i=0; i> ResultType(b[i]); + return r; +} + +// BINARY LESS THAN (<) +template +inline __CGvector::boolType,N> operator < (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator < (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator < (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) < ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator < (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator < (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i) +template +inline __CGvector::boolType,N> operator > (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator > (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i ResultType(static_cast(b)); + return r; +} +template +inline __CGvector::boolType,N> operator > (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) > ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator > (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i ResultType(b[0]); + return r; +} +template +inline __CGvector::boolType,N> operator > (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i ResultType(b[i]); + return r; +} + +// BINARY LESS THAN OR EQUAL (<=) +template +inline __CGvector::boolType,N> operator <= (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator <= (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator <= (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) <= ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator <= (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator <= (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i=) +template +inline __CGvector::boolType,N> operator >= (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i= ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator >= (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i= ResultType(static_cast(b)); + return r; +} +template +inline __CGvector::boolType,N> operator >= (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) >= ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator >= (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i= ResultType(b[0]); + return r; +} +template +inline __CGvector::boolType,N> operator >= (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i= ResultType(b[i]); + return r; +} + +// BINARY EQUALITY (==) +template +inline __CGvector::boolType,N> operator == (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator == (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator == (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) == ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator == (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator == (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator != (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator != (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator != (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) != ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator != (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator != (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator && (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator && (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator && (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) && ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator && (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator && (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator || (const __CGvector_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator || (const __CGvector_usage & a, + const T2 & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(b)); + return r; +} +template +inline __CGvector::boolType,N> operator || (const T1 & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i(a)) || ResultType(b[i]); + return r; +} +template +inline __CGvector::boolType,N> operator || (const __CGvector_plural_usage & a, + const __CGvector_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i +inline __CGvector::boolType,N> operator || (const __CGvector_usage & a, + const __CGvector_plural_usage & b) +{ + typedef typename __CGtype_trait::resultType ResultType; + typedef typename __CGtype_trait::boolType BoolType; + __CGvector r; + for (int i=0; i float1; +typedef __CGvector float2; +typedef __CGvector float3; +typedef __CGvector float4; +typedef __CGvector int1; +typedef __CGvector int2; +typedef __CGvector int3; +typedef __CGvector int4; +typedef __CGvector bool1; +typedef __CGvector bool2; +typedef __CGvector bool3; +typedef __CGvector bool4; +#ifdef __Cg_double_hpp__ +typedef __CGvector double1; +typedef __CGvector double2; +typedef __CGvector double3; +typedef __CGvector double4; +#endif +#ifdef __Cg_half_hpp__ +typedef __CGvector half1; +typedef __CGvector half2; +typedef __CGvector half3; +typedef __CGvector half4; +#endif +#ifdef __Cg_fixed_hpp__ +typedef __CGvector fixed1; +typedef __CGvector fixed2; +typedef __CGvector fixed3; +typedef __CGvector fixed4; +#endif + +} // namespace Cg + +#endif // __Cg_vector_hpp__ diff --git a/extensions/externals/include/Cg/vector/rgba.hpp b/extensions/externals/include/Cg/vector/rgba.hpp new file mode 100644 index 0000000..2c3c667 --- /dev/null +++ b/extensions/externals/include/Cg/vector/rgba.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_vector_rgba_hpp__ +#define __Cg_vector_rgba_hpp__ + +/* Only defines __Cg_vector_rgba_hpp__ so the header + can know rgba vector support is desired. */ + +#endif // __Cg_vector_rgba_hpp__ + diff --git a/extensions/externals/include/Cg/vector/stpq.hpp b/extensions/externals/include/Cg/vector/stpq.hpp new file mode 100644 index 0000000..9802421 --- /dev/null +++ b/extensions/externals/include/Cg/vector/stpq.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_vector_stpq_hpp__ +#define __Cg_vector_stpq_hpp__ + +/* Only defines __Cg_vector_stpq_hpp__ so the header + can know stpq vector support is desired. */ + +#endif // __Cg_vector_stpq_hpp__ + diff --git a/extensions/externals/include/Cg/vector/xyzw.hpp b/extensions/externals/include/Cg/vector/xyzw.hpp new file mode 100644 index 0000000..2cafc91 --- /dev/null +++ b/extensions/externals/include/Cg/vector/xyzw.hpp @@ -0,0 +1,15 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __Cg_vector_xyzw_hpp__ +#define __Cg_vector_xyzw_hpp__ + +/* Only defines __Cg_vector_xyzw_hpp__ so the header + can know xyzw vector support is desired. */ + +#endif // __Cg_vector_xyzw_hpp__ + diff --git a/extensions/externals/lib/linux-arm32/libglfw3.a b/extensions/externals/lib/linux-arm32/libglfw3.a index 51af78d0324606d95f2d42a11b6fea7a5abd837a..2d41258467a2c0f81e3ffeac497c166319ae0b09 100644 GIT binary patch literal 398268 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
  • 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 diff --git a/extensions/externals/src/cg4cpp/Android.mk b/extensions/externals/src/cg4cpp/Android.mk new file mode 100644 index 0000000..fc65d56 --- /dev/null +++ b/extensions/externals/src/cg4cpp/Android.mk @@ -0,0 +1,52 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_ARM_MODE := arm +LOCAL_MODULE := libcg4cpp +LOCAL_MODULE_TAGS := optional + +LOCAL_C_INCLUDES := \ + $(LOCAL_PATH)/../include + +ifneq ($(BUILD_FOR_NDK), true) + LOCAL_C_INCLUDES += \ + $(TOP)/external/stlport/stlport \ + $(TOP)/bionic +endif + +LOCAL_SRC_FILES := \ + abs.cpp acos.cpp all.cpp any.cpp asin.cpp atan.cpp atan2.cpp ceil.cpp \ + clamp.cpp cos.cpp cosh.cpp cross.cpp degrees.cpp determinant.cpp \ + distance.cpp dot.cpp exp.cpp exp2.cpp faceforward.cpp floor.cpp \ + fmod.cpp frac.cpp fresnel.cpp frexp.cpp iostream.cpp \ + isfinite.cpp isinf.cpp isnan.cpp ldexp.cpp length.cpp lerp.cpp \ + lit.cpp log.cpp log10.cpp log2.cpp max.cpp min.cpp modf.cpp \ + mul.cpp normalize.cpp pow.cpp radians.cpp reflect.cpp \ + refract.cpp round.cpp rsqrt.cpp \ + saturate.cpp \ + inverse.cpp \ + sign.cpp sin.cpp sincos.cpp sinh.cpp smoothstep.cpp sqrt.cpp \ + step.cpp tan.cpp tanh.cpp transpose.cpp trunc.cpp \ + floatToIntBits.cpp \ + floatToRawIntBits.cpp \ + intBitsToFloat.cpp + +# Sources that use +# sampler1D.cpp +# sampler1DARRAY.cpp +# sampler2D.cpp +# sampler2DARRAY.cpp +# sampler3D.cpp +# samplerBUF.cpp +# samplerCUBE.cpp +# samplerRECT.cpp +# sampler_state.cpp +# sampler_gl.cpp + +ifeq ($(BUILD_FOR_NDK), true) + LOCAL_CFLAGS := \ + -mfpu=neon +endif + +include $(BUILD_STATIC_LIBRARY) diff --git a/extensions/externals/src/cg4cpp/GNUmakefile b/extensions/externals/src/cg4cpp/GNUmakefile new file mode 100644 index 0000000..516b32c --- /dev/null +++ b/extensions/externals/src/cg4cpp/GNUmakefile @@ -0,0 +1,92 @@ + +# GNUmakefile for g++ 4.0 + +OBJ_SUFFIX := .o +DEP_SUFFIX := .P +DEP_FILES := +DEP_DIR := .deps + +SRCS = abs.cpp acos.cpp all.cpp any.cpp asin.cpp atan.cpp atan2.cpp ceil.cpp \ + clamp.cpp cos.cpp cosh.cpp cross.cpp degrees.cpp determinant.cpp \ + distance.cpp dot.cpp exp.cpp exp2.cpp faceforward.cpp floor.cpp \ + fmod.cpp frac.cpp fresnel.cpp frexp.cpp iostream.cpp \ + isfinite.cpp isinf.cpp isnan.cpp ldexp.cpp length.cpp lerp.cpp \ + lit.cpp log.cpp log10.cpp log2.cpp max.cpp min.cpp modf.cpp \ + mul.cpp normalize.cpp pow.cpp radians.cpp reflect.cpp \ + refract.cpp round.cpp rsqrt.cpp \ + sampler1D.cpp \ + sampler1DARRAY.cpp \ + sampler2D.cpp \ + sampler2DARRAY.cpp \ + sampler3D.cpp \ + samplerCUBE.cpp \ + samplerRECT.cpp \ + samplerBUF.cpp \ + sampler_state.cpp \ + sampler_gl.cpp \ + saturate.cpp \ + inverse.cpp \ + sign.cpp sin.cpp sincos.cpp sinh.cpp smoothstep.cpp sqrt.cpp \ + step.cpp tan.cpp tanh.cpp transpose.cpp trunc.cpp \ + floatToIntBits.cpp \ + floatToRawIntBits.cpp \ + intBitsToFloat.cpp \ + $(NULL) + +OBJS = $(SRCS:.cpp=.o) + +CXXFLAGS = -I../include + +ARFLAGS := scr + +TARGETS = libcg4cpp.a + +$(FRC): $(TARGETS) + +libcg4cpp.a : $(OBJS) + @ echo "Archiving $@..." + @ $(AR) $(ARFLAGS) $@ $(OBJS) + +DEP_FILES += $(addsuffix $(DEP_SUFFIX),\ + $(addprefix $(DEP_DIR)/,$(notdir $(SRCS)))) + +CC_GEN_DEPS = -Wp,-MD,$(DEP_DIR)/$( $(DEP_DIR)/$(> $(DEP_DIR)/$( $(DEP_DIR)/$(> $(DEP_DIR)/$( +#include +#include +#include + +namespace Cg { + +int abs(int v) +{ + return abs(v); +} + +int1 abs(int1 v) +{ + return abs(v); +} + +int2 abs(int2 v) +{ + return abs(v); +} + +int3 abs(int3 v) +{ + return abs(v); +} + +int4 abs(int4 v) +{ + return abs(v); +} + +float abs(float v) +{ + return abs(v); +} + +float1 abs(float1 v) +{ + return abs(v); +} + +float2 abs(float2 v) +{ + return abs(v); +} + +float3 abs(float3 v) +{ + return abs(v); +} + +float4 abs(float4 v) +{ + return abs(v); +} + +double abs(double v) +{ + return abs(v); +} + +double1 abs(double1 v) +{ + return abs(v); +} + +double2 abs(double2 v) +{ + return abs(v); +} + +double3 abs(double3 v) +{ + return abs(v); +} + +double4 abs(double4 v) +{ + return abs(v); +} + +half abs(half v) +{ + return abs(v); +} + +half1 abs(half1 v) +{ + return abs(v); +} + +half2 abs(half2 v) +{ + return abs(v); +} + +half3 abs(half3 v) +{ + return abs(v); +} + +half4 abs(half4 v) +{ + return abs(v); +} + +fixed abs(fixed v) +{ + return abs(v); +} + +fixed1 abs(fixed1 v) +{ + return abs(v); +} + +fixed2 abs(fixed2 v) +{ + return abs(v); +} + +fixed3 abs(fixed3 v) +{ + return abs(v); +} + +fixed4 abs(fixed4 v) +{ + return abs(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/acos.cpp b/extensions/externals/src/cg4cpp/acos.cpp new file mode 100644 index 0000000..2e6fb22 --- /dev/null +++ b/extensions/externals/src/cg4cpp/acos.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float acos(float v) +{ + return acos(v); +} + +float1 acos(float1 v) +{ + return acos(v); +} + +float2 acos(float2 v) +{ + return acos(v); +} + +float3 acos(float3 v) +{ + return acos(v); +} + +float4 acos(float4 v) +{ + return acos(v); +} + +double acos(double v) +{ + return acos(v); +} + +double1 acos(double1 v) +{ + return acos(v); +} + +double2 acos(double2 v) +{ + return acos(v); +} + +double3 acos(double3 v) +{ + return acos(v); +} + +double4 acos(double4 v) +{ + return acos(v); +} + +half acos(half v) +{ + return acos(v); +} + +half1 acos(half1 v) +{ + return acos(v); +} + +half2 acos(half2 v) +{ + return acos(v); +} + +half3 acos(half3 v) +{ + return acos(v); +} + +half4 acos(half4 v) +{ + return acos(v); +} + +fixed acos(fixed v) +{ + return acos(v); +} + +fixed1 acos(fixed1 v) +{ + return acos(v); +} + +fixed2 acos(fixed2 v) +{ + return acos(v); +} + +fixed3 acos(fixed3 v) +{ + return acos(v); +} + +fixed4 acos(fixed4 v) +{ + return acos(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/all.cpp b/extensions/externals/src/cg4cpp/all.cpp new file mode 100644 index 0000000..af309f0 --- /dev/null +++ b/extensions/externals/src/cg4cpp/all.cpp @@ -0,0 +1,36 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +bool1 all(bool1 v) +{ + return all<1>(v); +} + +bool1 all(bool2 v) +{ + return all<2>(v); +} + +bool1 all(bool3 v) +{ + return all<3>(v); +} + +bool1 all(bool4 v) +{ + return all<4>(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/any.cpp b/extensions/externals/src/cg4cpp/any.cpp new file mode 100644 index 0000000..3bf1cf1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/any.cpp @@ -0,0 +1,36 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +bool1 any(bool1 v) +{ + return any<1>(v); +} + +bool1 any(bool2 v) +{ + return any<2>(v); +} + +bool1 any(bool3 v) +{ + return any<3>(v); +} + +bool1 any(bool4 v) +{ + return any<4>(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/asin.cpp b/extensions/externals/src/cg4cpp/asin.cpp new file mode 100644 index 0000000..b4196d8 --- /dev/null +++ b/extensions/externals/src/cg4cpp/asin.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float asin(float v) +{ + return asin(v); +} + +float1 asin(float1 v) +{ + return asin(v); +} + +float2 asin(float2 v) +{ + return asin(v); +} + +float3 asin(float3 v) +{ + return asin(v); +} + +float4 asin(float4 v) +{ + return asin(v); +} + +double asin(double v) +{ + return asin(v); +} + +double1 asin(double1 v) +{ + return asin(v); +} + +double2 asin(double2 v) +{ + return asin(v); +} + +double3 asin(double3 v) +{ + return asin(v); +} + +double4 asin(double4 v) +{ + return asin(v); +} + +half asin(half v) +{ + return asin(v); +} + +half1 asin(half1 v) +{ + return asin(v); +} + +half2 asin(half2 v) +{ + return asin(v); +} + +half3 asin(half3 v) +{ + return asin(v); +} + +half4 asin(half4 v) +{ + return asin(v); +} + +fixed asin(fixed v) +{ + return asin(v); +} + +fixed1 asin(fixed1 v) +{ + return asin(v); +} + +fixed2 asin(fixed2 v) +{ + return asin(v); +} + +fixed3 asin(fixed3 v) +{ + return asin(v); +} + +fixed4 asin(fixed4 v) +{ + return asin(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/atan.cpp b/extensions/externals/src/cg4cpp/atan.cpp new file mode 100644 index 0000000..a3e6f20 --- /dev/null +++ b/extensions/externals/src/cg4cpp/atan.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float atan(float v) +{ + return atan(v); +} + +float1 atan(float1 v) +{ + return atan(v); +} + +float2 atan(float2 v) +{ + return atan(v); +} + +float3 atan(float3 v) +{ + return atan(v); +} + +float4 atan(float4 v) +{ + return atan(v); +} + +double atan(double v) +{ + return atan(v); +} + +double1 atan(double1 v) +{ + return atan(v); +} + +double2 atan(double2 v) +{ + return atan(v); +} + +double3 atan(double3 v) +{ + return atan(v); +} + +double4 atan(double4 v) +{ + return atan(v); +} + +half atan(half v) +{ + return atan(v); +} + +half1 atan(half1 v) +{ + return atan(v); +} + +half2 atan(half2 v) +{ + return atan(v); +} + +half3 atan(half3 v) +{ + return atan(v); +} + +half4 atan(half4 v) +{ + return atan(v); +} + +fixed atan(fixed v) +{ + return atan(v); +} + +fixed1 atan(fixed1 v) +{ + return atan(v); +} + +fixed2 atan(fixed2 v) +{ + return atan(v); +} + +fixed3 atan(fixed3 v) +{ + return atan(v); +} + +fixed4 atan(fixed4 v) +{ + return atan(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/atan2.cpp b/extensions/externals/src/cg4cpp/atan2.cpp new file mode 100644 index 0000000..8be8eab --- /dev/null +++ b/extensions/externals/src/cg4cpp/atan2.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float atan2(float x, float y) +{ + return atan2(x, y); +} + +float1 atan2(float1 x, float1 y) +{ + return atan2(x, y); +} + +float2 atan2(float2 x, float2 y) +{ + return atan2(x, y); +} + +float3 atan2(float3 x, float3 y) +{ + return atan2(x, y); +} + +float4 atan2(float4 x, float4 y) +{ + return atan2(x, y); +} + +double atan2(double x, double y) +{ + return atan2(x, y); +} + +double1 atan2(double1 x, double1 y) +{ + return atan2(x, y); +} + +double2 atan2(double2 x, double2 y) +{ + return atan2(x, y); +} + +double3 atan2(double3 x, double3 y) +{ + return atan2(x, y); +} + +double4 atan2(double4 x, double4 y) +{ + return atan2(x, y); +} + +half atan2(half x, half y) +{ + return atan2(x, y); +} + +half1 atan2(half1 x, half1 y) +{ + return atan2(x, y); +} + +half2 atan2(half2 x, half2 y) +{ + return atan2(x, y); +} + +half3 atan2(half3 x, half3 y) +{ + return atan2(x, y); +} + +half4 atan2(half4 x, half4 y) +{ + return atan2(x, y); +} + +fixed atan2(fixed x, fixed y) +{ + return atan2(x, y); +} + +fixed1 atan2(fixed1 x, fixed1 y) +{ + return atan2(x, y); +} + +fixed2 atan2(fixed2 x, fixed2 y) +{ + return atan2(x, y); +} + +fixed3 atan2(fixed3 x, fixed3 y) +{ + return atan2(x, y); +} + +fixed4 atan2(fixed4 x, fixed4 y) +{ + return atan2(x, y); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/ceil.cpp b/extensions/externals/src/cg4cpp/ceil.cpp new file mode 100644 index 0000000..9c1fa59 --- /dev/null +++ b/extensions/externals/src/cg4cpp/ceil.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float ceil(float v) +{ + return ceil(v); +} + +float1 ceil(float1 v) +{ + return ceil(v); +} + +float2 ceil(float2 v) +{ + return ceil(v); +} + +float3 ceil(float3 v) +{ + return ceil(v); +} + +float4 ceil(float4 v) +{ + return ceil(v); +} + +double ceil(double v) +{ + return ceil(v); +} + +double1 ceil(double1 v) +{ + return ceil(v); +} + +double2 ceil(double2 v) +{ + return ceil(v); +} + +double3 ceil(double3 v) +{ + return ceil(v); +} + +double4 ceil(double4 v) +{ + return ceil(v); +} + +half ceil(half v) +{ + return ceil(v); +} + +half1 ceil(half1 v) +{ + return ceil(v); +} + +half2 ceil(half2 v) +{ + return ceil(v); +} + +half3 ceil(half3 v) +{ + return ceil(v); +} + +half4 ceil(half4 v) +{ + return ceil(v); +} + +fixed ceil(fixed v) +{ + return ceil(v); +} + +fixed1 ceil(fixed1 v) +{ + return ceil(v); +} + +fixed2 ceil(fixed2 v) +{ + return ceil(v); +} + +fixed3 ceil(fixed3 v) +{ + return ceil(v); +} + +fixed4 ceil(fixed4 v) +{ + return ceil(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/cg4cpp.vcproj b/extensions/externals/src/cg4cpp/cg4cpp.vcproj new file mode 100644 index 0000000..ebe2dc4 --- /dev/null +++ b/extensions/externals/src/cg4cpp/cg4cpp.vcproj @@ -0,0 +1,1000 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/src/cg4cpp/cg4cpp_2008.sln b/extensions/externals/src/cg4cpp/cg4cpp_2008.sln new file mode 100644 index 0000000..b1dff24 --- /dev/null +++ b/extensions/externals/src/cg4cpp/cg4cpp_2008.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cg4cpp_2008", "cg4cpp_2008.vcproj", "{DD69089E-81D7-4BB2-8A3D-CBE3C94A8684}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684}.Debug|Win32.ActiveCfg = Debug|Win32 + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684}.Debug|Win32.Build.0 = Debug|Win32 + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684}.Release|Win32.ActiveCfg = Release|Win32 + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/extensions/externals/src/cg4cpp/cg4cpp_2008.vcproj b/extensions/externals/src/cg4cpp/cg4cpp_2008.vcproj new file mode 100644 index 0000000..a8e0008 --- /dev/null +++ b/extensions/externals/src/cg4cpp/cg4cpp_2008.vcproj @@ -0,0 +1,1071 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extensions/externals/src/cg4cpp/cg4cpp_2010.vcxproj b/extensions/externals/src/cg4cpp/cg4cpp_2010.vcxproj new file mode 100644 index 0000000..35b0d3e --- /dev/null +++ b/extensions/externals/src/cg4cpp/cg4cpp_2010.vcxproj @@ -0,0 +1,346 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + cg4cpp + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684} + cg4cpp + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + $(Platform)_2010\$(Configuration)\ + + + + Disabled + ..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebug + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + + + + + /MP %(AdditionalOptions) + false + ..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Default + MultiThreaded + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + + + + + X64 + + + Disabled + ..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebug + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + + + + + X64 + + + /MP %(AdditionalOptions) + false + ..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Default + MultiThreaded + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/externals/src/cg4cpp/cg4cpp_2012.vcxproj b/extensions/externals/src/cg4cpp/cg4cpp_2012.vcxproj new file mode 100644 index 0000000..0269dba --- /dev/null +++ b/extensions/externals/src/cg4cpp/cg4cpp_2012.vcxproj @@ -0,0 +1,354 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + cg4cpp + {DD69089E-81D7-4BB2-8A3D-CBE3C94A8684} + cg4cpp + Win32Proj + + + + StaticLibrary + Unicode + true + v110 + + + StaticLibrary + Unicode + v110 + + + StaticLibrary + Unicode + true + v110 + + + StaticLibrary + Unicode + v110 + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + $(Platform)_2012\$(Configuration)\ + + + + Disabled + ..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebug + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + true + + + + + /MP %(AdditionalOptions) + false + ..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Default + MultiThreaded + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + true + + + + + X64 + + + Disabled + ..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + false + Default + MultiThreadedDebug + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + true + + + + + X64 + + + /MP %(AdditionalOptions) + false + ..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + Default + MultiThreaded + false + Precise + true + + + Level3 + ProgramDatabase + Default + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/externals/src/cg4cpp/clamp.cpp b/extensions/externals/src/cg4cpp/clamp.cpp new file mode 100644 index 0000000..7f39913 --- /dev/null +++ b/extensions/externals/src/cg4cpp/clamp.cpp @@ -0,0 +1,101 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int1 clamp(int1 a, int1 b, int1 x) +{ + return clamp(a, b, x); +} +int2 clamp(int2 a, int2 b, int2 x) +{ + return clamp(a, b, x); +} +int3 clamp(int3 a, int3 b, int3 x) +{ + return clamp(a, b, x); +} +int4 clamp(int4 a, int4 b, int4 x) +{ + return clamp(a, b, x); +} + +float1 clamp(float1 a, float1 b, float1 x) +{ + return clamp(a, b, x); +} +float2 clamp(float2 a, float2 b, float2 x) +{ + return clamp(a, b, x); +} +float3 clamp(float3 a, float3 b, float3 x) +{ + return clamp(a, b, x); +} +float4 clamp(float4 a, float4 b, float4 x) +{ + return clamp(a, b, x); +} + +half1 clamp(half1 a, half1 b, half1 x) +{ + return clamp(a, b, x); +} +half2 clamp(half2 a, half2 b, half2 x) +{ + return clamp(a, b, x); +} +half3 clamp(half3 a, half3 b, half3 x) +{ + return clamp(a, b, x); +} +half4 clamp(half4 a, half4 b, half4 x) +{ + return clamp(a, b, x); +} + +fixed1 clamp(fixed1 a, fixed1 b, fixed1 x) +{ + return clamp(a, b, x); +} +fixed2 clamp(fixed2 a, fixed2 b, fixed2 x) +{ + return clamp(a, b, x); +} +fixed3 clamp(fixed3 a, fixed3 b, fixed3 x) +{ + return clamp(a, b, x); +} +fixed4 clamp(fixed4 a, fixed4 b, fixed4 x) +{ + return clamp(a, b, x); +} + +double1 clamp(double1 a, double1 b, double1 x) +{ + return clamp(a, b, x); +} +double2 clamp(double2 a, double2 b, double2 x) +{ + return clamp(a, b, x); +} +double3 clamp(double3 a, double3 b, double3 x) +{ + return clamp(a, b, x); +} +double4 clamp(double4 a, double4 b, double4 x) +{ + return clamp(a, b, x); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/cos.cpp b/extensions/externals/src/cg4cpp/cos.cpp new file mode 100644 index 0000000..b55e817 --- /dev/null +++ b/extensions/externals/src/cg4cpp/cos.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float cos(float v) +{ + return cos(v); +} + +float1 cos(float1 v) +{ + return cos(v); +} + +float2 cos(float2 v) +{ + return cos(v); +} + +float3 cos(float3 v) +{ + return cos(v); +} + +float4 cos(float4 v) +{ + return cos(v); +} + +double cos(double v) +{ + return cos(v); +} + +double1 cos(double1 v) +{ + return cos(v); +} + +double2 cos(double2 v) +{ + return cos(v); +} + +double3 cos(double3 v) +{ + return cos(v); +} + +double4 cos(double4 v) +{ + return cos(v); +} + +half cos(half v) +{ + return cos(v); +} + +half1 cos(half1 v) +{ + return cos(v); +} + +half2 cos(half2 v) +{ + return cos(v); +} + +half3 cos(half3 v) +{ + return cos(v); +} + +half4 cos(half4 v) +{ + return cos(v); +} + +fixed cos(fixed v) +{ + return cos(v); +} + +fixed1 cos(fixed1 v) +{ + return cos(v); +} + +fixed2 cos(fixed2 v) +{ + return cos(v); +} + +fixed3 cos(fixed3 v) +{ + return cos(v); +} + +fixed4 cos(fixed4 v) +{ + return cos(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/cosh.cpp b/extensions/externals/src/cg4cpp/cosh.cpp new file mode 100644 index 0000000..43c3053 --- /dev/null +++ b/extensions/externals/src/cg4cpp/cosh.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float cosh(float v) +{ + return cosh(v); +} + +float1 cosh(float1 v) +{ + return cosh(v); +} + +float2 cosh(float2 v) +{ + return cosh(v); +} + +float3 cosh(float3 v) +{ + return cosh(v); +} + +float4 cosh(float4 v) +{ + return cosh(v); +} + +double cosh(double v) +{ + return cosh(v); +} + +double1 cosh(double1 v) +{ + return cosh(v); +} + +double2 cosh(double2 v) +{ + return cosh(v); +} + +double3 cosh(double3 v) +{ + return cosh(v); +} + +double4 cosh(double4 v) +{ + return cosh(v); +} + +half cosh(half v) +{ + return cosh(v); +} + +half1 cosh(half1 v) +{ + return cosh(v); +} + +half2 cosh(half2 v) +{ + return cosh(v); +} + +half3 cosh(half3 v) +{ + return cosh(v); +} + +half4 cosh(half4 v) +{ + return cosh(v); +} + +fixed cosh(fixed v) +{ + return cosh(v); +} + +fixed1 cosh(fixed1 v) +{ + return cosh(v); +} + +fixed2 cosh(fixed2 v) +{ + return cosh(v); +} + +fixed3 cosh(fixed3 v) +{ + return cosh(v); +} + +fixed4 cosh(fixed4 v) +{ + return cosh(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/cross.cpp b/extensions/externals/src/cg4cpp/cross.cpp new file mode 100644 index 0000000..8796e9f --- /dev/null +++ b/extensions/externals/src/cg4cpp/cross.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float3 cross(float3 a, float3 b) +{ + return cross(a, b); +} + +// int3 version not officially part of Cg runtime +int3 cross(int3 a, int3 b) +{ + return cross(a, b); +} + +double3 cross(double3 a, double3 b) +{ + return cross(a, b); +} + +half3 cross(half3 a, half3 b) +{ + return cross(a, b); +} + +fixed3 cross(fixed3 a, fixed3 b) +{ + return cross(a, b); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/degrees.cpp b/extensions/externals/src/cg4cpp/degrees.cpp new file mode 100644 index 0000000..5581d05 --- /dev/null +++ b/extensions/externals/src/cg4cpp/degrees.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float degrees(float v) +{ + return degrees(v); +} + +float1 degrees(float1 v) +{ + return degrees(v); +} + +float2 degrees(float2 v) +{ + return degrees(v); +} + +float3 degrees(float3 v) +{ + return degrees(v); +} + +float4 degrees(float4 v) +{ + return degrees(v); +} + +double degrees(double v) +{ + return degrees(v); +} + +double1 degrees(double1 v) +{ + return degrees(v); +} + +double2 degrees(double2 v) +{ + return degrees(v); +} + +double3 degrees(double3 v) +{ + return degrees(v); +} + +double4 degrees(double4 v) +{ + return degrees(v); +} + +half degrees(half v) +{ + return degrees(v); +} + +half1 degrees(half1 v) +{ + return degrees(v); +} + +half2 degrees(half2 v) +{ + return degrees(v); +} + +half3 degrees(half3 v) +{ + return degrees(v); +} + +half4 degrees(half4 v) +{ + return degrees(v); +} + +fixed degrees(fixed v) +{ + return degrees(v); +} + +fixed1 degrees(fixed1 v) +{ + return degrees(v); +} + +fixed2 degrees(fixed2 v) +{ + return degrees(v); +} + +fixed3 degrees(fixed3 v) +{ + return degrees(v); +} + +fixed4 degrees(fixed4 v) +{ + return degrees(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/determinant.cpp b/extensions/externals/src/cg4cpp/determinant.cpp new file mode 100644 index 0000000..1707768 --- /dev/null +++ b/extensions/externals/src/cg4cpp/determinant.cpp @@ -0,0 +1,89 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include +#include + +namespace Cg { + +template +static inline __CGvector determinant1x1(const __CGmatrix & A) +{ + return A[0][0]; +} + +template +static inline __CGvector determinant2x2(const __CGmatrix & A) +{ + return A._m00*A._m11 - A._m01*A._m10; +} + +template +static inline __CGvector determinant3x3(const __CGmatrix & A) +{ + return dot(A._m00_m01_m02, + A._m11_m12_m10 * A._m22_m20_m21 + - A._m12_m10_m11 * A._m21_m22_m20); +} + +template +static inline __CGvector determinant4x4(const __CGmatrix & A) +{ + return dot(float4(1,-1,1,-1) * A._m00_m01_m02_m03, + A._m11_m12_m13_m10*( A._m22_m23_m20_m21*A._m33_m30_m31_m32 + - A._m23_m20_m21_m22*A._m32_m33_m30_m31) + + A._m12_m13_m10_m11*( A._m23_m20_m21_m22*A._m31_m32_m33_m30 + - A._m21_m22_m23_m20*A._m33_m30_m31_m32) + + A._m13_m10_m11_m12*( A._m21_m22_m23_m20*A._m32_m33_m30_m31 + - A._m22_m23_m20_m21*A._m31_m32_m33_m30)); +} + +float1 determinant(float1x1 A) +{ + return determinant1x1(A); +} + +float1 determinant(float2x2 A) +{ + return determinant2x2(A); +} + +float1 determinant(float3x3 A) +{ + return determinant3x3(A); +} + +float1 determinant(float4x4 A) +{ + return determinant4x4(A); +} + +double1 determinant(double1x1 A) +{ + return determinant1x1(A); +} + +double1 determinant(double2x2 A) +{ + return determinant2x2(A); +} + +double1 determinant(double3x3 A) +{ + return determinant3x3(A); +} + +double1 determinant(double4x4 A) +{ + return determinant4x4(A); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/distance.cpp b/extensions/externals/src/cg4cpp/distance.cpp new file mode 100644 index 0000000..847c799 --- /dev/null +++ b/extensions/externals/src/cg4cpp/distance.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 distance(float1 a, float1 b) +{ + return distance(a, b); +} + +float1 distance(float2 a, float2 b) +{ + return distance(a, b); +} + +float1 distance(float3 a, float3 b) +{ + return distance(a, b); +} + +float1 distance(float4 a, float4 b) +{ + return distance(a, b); +} + +double1 distance(double1 a, double1 b) +{ + return distance(a, b); +} + +double1 distance(double2 a, double2 b) +{ + return distance(a, b); +} + +double1 distance(double3 a, double3 b) +{ + return distance(a, b); +} + +double1 distance(double4 a, double4 b) +{ + return distance(a, b); +} + +half1 distance(half1 a, half1 b) +{ + return distance(a, b); +} + +half1 distance(half2 a, half2 b) +{ + return distance(a, b); +} + +half1 distance(half3 a, half3 b) +{ + return distance(a, b); +} + +half1 distance(half4 a, half4 b) +{ + return distance(a, b); +} + +fixed1 distance(fixed1 a, fixed1 b) +{ + return distance(a, b); +} + +fixed1 distance(fixed2 a, fixed2 b) +{ + return distance(a, b); +} + +fixed1 distance(fixed3 a, fixed3 b) +{ + return distance(a, b); +} + +fixed1 distance(fixed4 a, fixed4 b) +{ + return distance(a, b); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/dot.cpp b/extensions/externals/src/cg4cpp/dot.cpp new file mode 100644 index 0000000..e1593f6 --- /dev/null +++ b/extensions/externals/src/cg4cpp/dot.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float dot(float a, float b) +{ + return dot(a, b); +} + +float1 dot(float1 a, float1 b) +{ + return dot(a, b); +} + +float1 dot(float2 a, float2 b) +{ + return dot(a, b); +} + +float1 dot(float3 a, float3 b) +{ + return dot(a, b); +} + +float1 dot(float4 a, float4 b) +{ + return dot(a, b); +} + +double dot(double a, double b) +{ + return dot(a, b); +} + +double1 dot(double1 a, double1 b) +{ + return dot(a, b); +} + +double1 dot(double2 a, double2 b) +{ + return dot(a, b); +} + +double1 dot(double3 a, double3 b) +{ + return dot(a, b); +} + +double1 dot(double4 a, double4 b) +{ + return dot(a, b); +} + +half dot(half a, half b) +{ + return dot(a, b); +} + +half1 dot(half1 a, half1 b) +{ + return dot(a, b); +} + +half1 dot(half2 a, half2 b) +{ + return dot(a, b); +} + +half1 dot(half3 a, half3 b) +{ + return dot(a, b); +} + +half1 dot(half4 a, half4 b) +{ + return dot(a, b); +} + +fixed dot(fixed a, fixed b) +{ + return dot(a, b); +} + +fixed1 dot(fixed1 a, fixed1 b) +{ + return dot(a, b); +} + +fixed1 dot(fixed2 a, fixed2 b) +{ + return dot(a, b); +} + +fixed1 dot(fixed3 a, fixed3 b) +{ + return dot(a, b); +} + +fixed1 dot(fixed4 a, fixed4 b) +{ + return dot(a, b); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/exp.cpp b/extensions/externals/src/cg4cpp/exp.cpp new file mode 100644 index 0000000..c04fc73 --- /dev/null +++ b/extensions/externals/src/cg4cpp/exp.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float exp(float v) +{ + return exp(v); +} + +float1 exp(float1 v) +{ + return exp(v); +} + +float2 exp(float2 v) +{ + return exp(v); +} + +float3 exp(float3 v) +{ + return exp(v); +} + +float4 exp(float4 v) +{ + return exp(v); +} + +double exp(double v) +{ + return exp(v); +} + +double1 exp(double1 v) +{ + return exp(v); +} + +double2 exp(double2 v) +{ + return exp(v); +} + +double3 exp(double3 v) +{ + return exp(v); +} + +double4 exp(double4 v) +{ + return exp(v); +} + +half exp(half v) +{ + return exp(v); +} + +half1 exp(half1 v) +{ + return exp(v); +} + +half2 exp(half2 v) +{ + return exp(v); +} + +half3 exp(half3 v) +{ + return exp(v); +} + +half4 exp(half4 v) +{ + return exp(v); +} + +fixed exp(fixed v) +{ + return exp(v); +} + +fixed1 exp(fixed1 v) +{ + return exp(v); +} + +fixed2 exp(fixed2 v) +{ + return exp(v); +} + +fixed3 exp(fixed3 v) +{ + return exp(v); +} + +fixed4 exp(fixed4 v) +{ + return exp(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/exp2.cpp b/extensions/externals/src/cg4cpp/exp2.cpp new file mode 100644 index 0000000..fa7af6c --- /dev/null +++ b/extensions/externals/src/cg4cpp/exp2.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float exp2(float v) +{ + return exp2(v); +} + +float1 exp2(float1 v) +{ + return exp2(v); +} + +float2 exp2(float2 v) +{ + return exp2(v); +} + +float3 exp2(float3 v) +{ + return exp2(v); +} + +float4 exp2(float4 v) +{ + return exp2(v); +} + +double exp2(double v) +{ + return exp2(v); +} + +double1 exp2(double1 v) +{ + return exp2(v); +} + +double2 exp2(double2 v) +{ + return exp2(v); +} + +double3 exp2(double3 v) +{ + return exp2(v); +} + +double4 exp2(double4 v) +{ + return exp2(v); +} + +half exp2(half v) +{ + return exp2(v); +} + +half1 exp2(half1 v) +{ + return exp2(v); +} + +half2 exp2(half2 v) +{ + return exp2(v); +} + +half3 exp2(half3 v) +{ + return exp2(v); +} + +half4 exp2(half4 v) +{ + return exp2(v); +} + +fixed exp2(fixed v) +{ + return exp2(v); +} + +fixed1 exp2(fixed1 v) +{ + return exp2(v); +} + +fixed2 exp2(fixed2 v) +{ + return exp2(v); +} + +fixed3 exp2(fixed3 v) +{ + return exp2(v); +} + +fixed4 exp2(fixed4 v) +{ + return exp2(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/faceforward.cpp b/extensions/externals/src/cg4cpp/faceforward.cpp new file mode 100644 index 0000000..59f1f79 --- /dev/null +++ b/extensions/externals/src/cg4cpp/faceforward.cpp @@ -0,0 +1,84 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 faceforward(float1 n, float1 i, float1 ng) +{ + return faceforward(n, i, ng); +} +float2 faceforward(float2 n, float2 i, float2 ng) +{ + return faceforward(n, i, ng); +} +float3 faceforward(float3 n, float3 i, float3 ng) +{ + return faceforward(n, i, ng); +} +float4 faceforward(float4 n, float4 i, float4 ng) +{ + return faceforward(n, i, ng); +} + +half1 faceforward(half1 n, half1 i, half1 ng) +{ + return faceforward(n, i, ng); +} +half2 faceforward(half2 n, half2 i, half2 ng) +{ + return faceforward(n, i, ng); +} +half3 faceforward(half3 n, half3 i, half3 ng) +{ + return faceforward(n, i, ng); +} +half4 faceforward(half4 n, half4 i, half4 ng) +{ + return faceforward(n, i, ng); +} + +fixed1 faceforward(fixed1 n, fixed1 i, fixed1 ng) +{ + return faceforward(n, i, ng); +} +fixed2 faceforward(fixed2 n, fixed2 i, fixed2 ng) +{ + return faceforward(n, i, ng); +} +fixed3 faceforward(fixed3 n, fixed3 i, fixed3 ng) +{ + return faceforward(n, i, ng); +} +fixed4 faceforward(fixed4 n, fixed4 i, fixed4 ng) +{ + return faceforward(n, i, ng); +} + +double1 faceforward(double1 n, double1 i, double1 ng) +{ + return faceforward(n, i, ng); +} +double2 faceforward(double2 n, double2 i, double2 ng) +{ + return faceforward(n, i, ng); +} +double3 faceforward(double3 n, double3 i, double3 ng) +{ + return faceforward(n, i, ng); +} +double4 faceforward(double4 n, double4 i, double4 ng) +{ + return faceforward(n, i, ng); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/floatToIntBits.cpp b/extensions/externals/src/cg4cpp/floatToIntBits.cpp new file mode 100644 index 0000000..a275bae --- /dev/null +++ b/extensions/externals/src/cg4cpp/floatToIntBits.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include + +namespace Cg { + +int floatToIntBits(float v) +{ + return floatToIntBits(v); +} + +int1 floatToIntBits(float1 v) +{ + return floatToIntBits(v); +} + +int2 floatToIntBits(float2 v) +{ + return floatToIntBits(v); +} + +int3 floatToIntBits(float3 v) +{ + return floatToIntBits(v); +} + +int4 floatToIntBits(float4 v) +{ + return floatToIntBits(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/floatToRawIntBits.cpp b/extensions/externals/src/cg4cpp/floatToRawIntBits.cpp new file mode 100644 index 0000000..7589273 --- /dev/null +++ b/extensions/externals/src/cg4cpp/floatToRawIntBits.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include + +namespace Cg { + +int floatToRawIntBits(float v) +{ + return floatToRawIntBits(v); +} + +int1 floatToRawIntBits(float1 v) +{ + return floatToRawIntBits(v); +} + +int2 floatToRawIntBits(float2 v) +{ + return floatToRawIntBits(v); +} + +int3 floatToRawIntBits(float3 v) +{ + return floatToRawIntBits(v); +} + +int4 floatToRawIntBits(float4 v) +{ + return floatToRawIntBits(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/floor.cpp b/extensions/externals/src/cg4cpp/floor.cpp new file mode 100644 index 0000000..679f060 --- /dev/null +++ b/extensions/externals/src/cg4cpp/floor.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float floor(float v) +{ + return floor(v); +} + +float1 floor(float1 v) +{ + return floor(v); +} + +float2 floor(float2 v) +{ + return floor(v); +} + +float3 floor(float3 v) +{ + return floor(v); +} + +float4 floor(float4 v) +{ + return floor(v); +} + +double floor(double v) +{ + return floor(v); +} + +double1 floor(double1 v) +{ + return floor(v); +} + +double2 floor(double2 v) +{ + return floor(v); +} + +double3 floor(double3 v) +{ + return floor(v); +} + +double4 floor(double4 v) +{ + return floor(v); +} + +half floor(half v) +{ + return floor(v); +} + +half1 floor(half1 v) +{ + return floor(v); +} + +half2 floor(half2 v) +{ + return floor(v); +} + +half3 floor(half3 v) +{ + return floor(v); +} + +half4 floor(half4 v) +{ + return floor(v); +} + +fixed floor(fixed v) +{ + return floor(v); +} + +fixed1 floor(fixed1 v) +{ + return floor(v); +} + +fixed2 floor(fixed2 v) +{ + return floor(v); +} + +fixed3 floor(fixed3 v) +{ + return floor(v); +} + +fixed4 floor(fixed4 v) +{ + return floor(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/fmod.cpp b/extensions/externals/src/cg4cpp/fmod.cpp new file mode 100644 index 0000000..8834d94 --- /dev/null +++ b/extensions/externals/src/cg4cpp/fmod.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 fmod(float1 x, float1 y) +{ + return fmod(x, y); +} + +float2 fmod(float2 x, float2 y) +{ + return fmod(x, y); +} + +float3 fmod(float3 x, float3 y) +{ + return fmod(x, y); +} + +float4 fmod(float4 x, float4 y) +{ + return fmod(x, y); +} + +double1 fmod(double1 x, double1 y) +{ + return fmod(x, y); +} + +double2 fmod(double2 x, double2 y) +{ + return fmod(x, y); +} + +double3 fmod(double3 x, double3 y) +{ + return fmod(x, y); +} + +double4 fmod(double4 x, double4 y) +{ + return fmod(x, y); +} + +half1 fmod(half1 x, half1 y) +{ + return fmod(x, y); +} + +half2 fmod(half2 x, half2 y) +{ + return fmod(x, y); +} + +half3 fmod(half3 x, half3 y) +{ + return fmod(x, y); +} + +half4 fmod(half4 x, half4 y) +{ + return fmod(x, y); +} + +fixed1 fmod(fixed1 x, fixed1 y) +{ + return fmod(x, y); +} + +fixed2 fmod(fixed2 x, fixed2 y) +{ + return fmod(x, y); +} + +fixed3 fmod(fixed3 x, fixed3 y) +{ + return fmod(x, y); +} + +fixed4 fmod(fixed4 x, fixed4 y) +{ + return fmod(x, y); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/frac.cpp b/extensions/externals/src/cg4cpp/frac.cpp new file mode 100644 index 0000000..18b05ae --- /dev/null +++ b/extensions/externals/src/cg4cpp/frac.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float frac(float v) +{ + return frac(v); +} + +float1 frac(float1 v) +{ + return frac(v); +} + +float2 frac(float2 v) +{ + return frac(v); +} + +float3 frac(float3 v) +{ + return frac(v); +} + +float4 frac(float4 v) +{ + return frac(v); +} + +double frac(double v) +{ + return frac(v); +} + +double1 frac(double1 v) +{ + return frac(v); +} + +double2 frac(double2 v) +{ + return frac(v); +} + +double3 frac(double3 v) +{ + return frac(v); +} + +double4 frac(double4 v) +{ + return frac(v); +} + +half frac(half v) +{ + return frac(v); +} + +half1 frac(half1 v) +{ + return frac(v); +} + +half2 frac(half2 v) +{ + return frac(v); +} + +half3 frac(half3 v) +{ + return frac(v); +} + +half4 frac(half4 v) +{ + return frac(v); +} + +fixed frac(fixed v) +{ + return frac(v); +} + +fixed1 frac(fixed1 v) +{ + return frac(v); +} + +fixed2 frac(fixed2 v) +{ + return frac(v); +} + +fixed3 frac(fixed3 v) +{ + return frac(v); +} + +fixed4 frac(fixed4 v) +{ + return frac(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/fresnel.cpp b/extensions/externals/src/cg4cpp/fresnel.cpp new file mode 100644 index 0000000..081dbe6 --- /dev/null +++ b/extensions/externals/src/cg4cpp/fresnel.cpp @@ -0,0 +1,159 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include +#include + +namespace Cg { + +template +static inline __CGvector::realType,1> __CGfresnel( + const __CGvector & i, const __CGvector & n, + T eta, + T& ktOut, + __CGvector& rOut, + __CGvector& tOut) +{ + typedef typename __CGtype_trait::dotType dotType; + // floats except doubles when T is double + T result; + dotType c1; + dotType cs2; + dotType tflag; + __CGvector t; + + // Refraction vector courtesy Paul Heckbert. + c1 = __CGvector(dot(-i,n)); + cs2 = 1-eta*eta*(1-c1*c1); + tflag = cs2 >= 0; + t = tflag * (((eta*c1-std::sqrt(cs2))*n) + eta*i); + // t is already unit length or (0,0,0) + + // From Global Illumination Compendeum. + // floats except doubles when T is double + dotType ndott; + dotType cosr_div_cosi; + dotType cosi_div_cosr; + dotType fs; + dotType fp; + dotType kr; + + ndott = dot(-__CGvector(n),t); + cosr_div_cosi = ndott / c1; + cosi_div_cosr = c1 / ndott; + fs = (cosr_div_cosi - eta) / (cosr_div_cosi + eta); + fs = fs * fs; + fp = (cosi_div_cosr - eta) / (cosi_div_cosr + eta); + fp = fp * fp; + kr = (fs+fp) / 2; + result = T(tflag*kr + (1-tflag)); + + // Extra outputs + ktOut = T(tflag * ((1-kr)/(eta*eta))); + tOut = __CGvector(t); + rOut = reflect(i, n); + + return __CGvector(result); +} + +float1 fresnel(float3 i, float3 n, float eta, Out kt, Out r, Out t) +{ + return __CGfresnel(i, n, eta, kt, r, t); +} +float1 fresnel(float3 i, float3 n, float eta, Out r, Out t) +{ + float kt; + return __CGfresnel(i, n, eta, kt, r, t); +} +float1 fresnel(float3 i, float3 n, float eta, Out kt) +{ + float3 r; + float3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} +float1 fresnel(float3 i, float3 n, float eta) +{ + float kt; + float3 r; + float3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} + +half1 fresnel(half3 i, half3 n, half eta, Out kt, Out r, Out t) +{ + return __CGfresnel(i, n, eta, kt, r, t); +} +half1 fresnel(half3 i, half3 n, half eta, Out r, Out t) +{ + half kt; + return __CGfresnel(i, n, eta, kt, r, t); +} +half1 fresnel(half3 i, half3 n, half eta, Out kt) +{ + half3 r; + half3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} +half1 fresnel(half3 i, half3 n, half eta) +{ + half kt; + half3 r; + half3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} + +fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out kt, Out r, Out t) +{ + return __CGfresnel(i, n, eta, kt, r, t); +} +fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out r, Out t) +{ + fixed kt; + return __CGfresnel(i, n, eta, kt, r, t); +} +fixed1 fresnel(fixed3 i, fixed3 n, fixed eta, Out kt) +{ + fixed3 r; + fixed3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} +fixed1 fresnel(fixed3 i, fixed3 n, fixed eta) +{ + fixed kt; + fixed3 r; + fixed3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} + +double1 fresnel(double3 i, double3 n, double eta, Out kt, Out r, Out t) +{ + return __CGfresnel(i, n, eta, kt, r, t); +} +double1 fresnel(double3 i, double3 n, double eta, Out r, Out t) +{ + double kt; + return __CGfresnel(i, n, eta, kt, r, t); +} +double1 fresnel(double3 i, double3 n, double eta, Out kt) +{ + double3 r; + double3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} +double1 fresnel(double3 i, double3 n, double eta) +{ + double kt; + double3 r; + double3 t; + return __CGfresnel(i, n, eta, kt, r, t); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/frexp.cpp b/extensions/externals/src/cg4cpp/frexp.cpp new file mode 100644 index 0000000..4857ec0 --- /dev/null +++ b/extensions/externals/src/cg4cpp/frexp.cpp @@ -0,0 +1,99 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include +#include + +#include // for std::exp + +namespace Cg { + +float1 frexp(float1 x, Out expOut) +{ + return frexp(x, expOut); +} + +float2 frexp(float2 x, Out expOut) +{ + return frexp(x, expOut); +} + +float3 frexp(float3 x, Out expOut) +{ + return frexp(x, expOut); +} + +float4 frexp(float4 x, Out expOut) +{ + return frexp(x, expOut); +} + +double1 frexp(double1 x, Out expOut) +{ + return frexp(x, expOut); +} + +double2 frexp(double2 x, Out expOut) +{ + return frexp(x, expOut); +} + +double3 frexp(double3 x, Out expOut) +{ + return frexp(x, expOut); +} + +double4 frexp(double4 x, Out expOut) +{ + return frexp(x, expOut); +} + +half1 frexp(half1 x, Out expOut) +{ + return frexp(x, expOut); +} + +half2 frexp(half2 x, Out expOut) +{ + return frexp(x, expOut); +} + +half3 frexp(half3 x, Out expOut) +{ + return frexp(x, expOut); +} + +half4 frexp(half4 x, Out expOut) +{ + return frexp(x, expOut); +} + +fixed1 frexp(fixed1 x, Out expOut) +{ + return frexp(x, expOut); +} + +fixed2 frexp(fixed2 x, Out expOut) +{ + return frexp(x, expOut); +} + +fixed3 frexp(fixed3 x, Out expOut) +{ + return frexp(x, expOut); +} + +fixed4 frexp(fixed4 x, Out expOut) +{ + return frexp(x, expOut); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/intBitsToFloat.cpp b/extensions/externals/src/cg4cpp/intBitsToFloat.cpp new file mode 100644 index 0000000..130580a --- /dev/null +++ b/extensions/externals/src/cg4cpp/intBitsToFloat.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include + +namespace Cg { + +float intBitsToFloat(int v) +{ + return intBitsToFloat(v); +} + +float1 intBitsToFloat(int1 v) +{ + return intBitsToFloat(v); +} + +float2 intBitsToFloat(int2 v) +{ + return intBitsToFloat(v); +} + +float3 intBitsToFloat(int3 v) +{ + return intBitsToFloat(v); +} + +float4 intBitsToFloat(int4 v) +{ + return intBitsToFloat(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/inverse.cpp b/extensions/externals/src/cg4cpp/inverse.cpp new file mode 100644 index 0000000..d4a9e9d --- /dev/null +++ b/extensions/externals/src/cg4cpp/inverse.cpp @@ -0,0 +1,127 @@ + +/* + * Copyright 2008 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include + +namespace Cg { + +template +static inline __CGmatrix inverse(__CGmatrix & input) +{ + __CGmatrix matrix(input), scratch, result; + __CGvector perm; + const int n = N; + int pivot; + + // Make permuation vector + for (int i=0; i=0; i--) { + int jrow = perm[i]; + for (int kcol=0; kcol(result); +} + +float1x1 inverse(float1x1 a) +{ + return inverse(a); +} +float2x2 inverse(float2x2 a) +{ + return inverse(a); +} +float3x3 inverse(float3x3 a) +{ + return inverse(a); +} +float4x4 inverse(float4x4 a) +{ + return inverse(a); +} + +double1x1 inverse(double1x1 a) +{ + return inverse(a); +} +double2x2 inverse(double2x2 a) +{ + return inverse(a); +} +double3x3 inverse(double3x3 a) +{ + return inverse(a); +} +double4x4 inverse(double4x4 a) +{ + return inverse(a); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/iostream.cpp b/extensions/externals/src/cg4cpp/iostream.cpp new file mode 100644 index 0000000..478e877 --- /dev/null +++ b/extensions/externals/src/cg4cpp/iostream.cpp @@ -0,0 +1,29 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include + +#include + +namespace Cg { + +std::ostream & operator << (std::ostream & o, const half & v) { + const float fv = v; + o << fv; + return o; +} + +std::ostream & operator << (std::ostream & o, const fixed & v) { + const float fv = v; + o << fv; + return o; +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/isfinite.cpp b/extensions/externals/src/cg4cpp/isfinite.cpp new file mode 100644 index 0000000..b4b19f2 --- /dev/null +++ b/extensions/externals/src/cg4cpp/isfinite.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +bool isfinite(float v) +{ + return isfinite(v); +} + +bool1 isfinite(float1 v) +{ + return isfinite(v); +} + +bool2 isfinite(float2 v) +{ + return isfinite(v); +} + +bool3 isfinite(float3 v) +{ + return isfinite(v); +} + +bool4 isfinite(float4 v) +{ + return isfinite(v); +} + +bool isfinite(double v) +{ + return isfinite(v); +} + +bool1 isfinite(double1 v) +{ + return isfinite(v); +} + +bool2 isfinite(double2 v) +{ + return isfinite(v); +} + +bool3 isfinite(double3 v) +{ + return isfinite(v); +} + +bool4 isfinite(double4 v) +{ + return isfinite(v); +} + +bool isfinite(half v) +{ + return isfinite(v); +} + +bool1 isfinite(half1 v) +{ + return isfinite(v); +} + +bool2 isfinite(half2 v) +{ + return isfinite(v); +} + +bool3 isfinite(half3 v) +{ + return isfinite(v); +} + +bool4 isfinite(half4 v) +{ + return isfinite(v); +} + +bool isfinite(fixed v) +{ + return isfinite(v); +} + +bool1 isfinite(fixed1 v) +{ + return isfinite(v); +} + +bool2 isfinite(fixed2 v) +{ + return isfinite(v); +} + +bool3 isfinite(fixed3 v) +{ + return isfinite(v); +} + +bool4 isfinite(fixed4 v) +{ + return isfinite(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/isinf.cpp b/extensions/externals/src/cg4cpp/isinf.cpp new file mode 100644 index 0000000..538ea1b --- /dev/null +++ b/extensions/externals/src/cg4cpp/isinf.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +bool1 isinf(float1 v) +{ + return isinf(v); +} + +bool2 isinf(float2 v) +{ + return isinf(v); +} + +bool3 isinf(float3 v) +{ + return isinf(v); +} + +bool4 isinf(float4 v) +{ + return isinf(v); +} + +bool1 isinf(double1 v) +{ + return isinf(v); +} + +bool2 isinf(double2 v) +{ + return isinf(v); +} + +bool3 isinf(double3 v) +{ + return isinf(v); +} + +bool4 isinf(double4 v) +{ + return isinf(v); +} + +bool1 isinf(half1 v) +{ + return isinf(v); +} + +bool2 isinf(half2 v) +{ + return isinf(v); +} + +bool3 isinf(half3 v) +{ + return isinf(v); +} + +bool4 isinf(half4 v) +{ + return isinf(v); +} + +bool1 isinf(fixed1 v) +{ + return isinf(v); +} + +bool2 isinf(fixed2 v) +{ + return isinf(v); +} + +bool3 isinf(fixed3 v) +{ + return isinf(v); +} + +bool4 isinf(fixed4 v) +{ + return isinf(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/isnan.cpp b/extensions/externals/src/cg4cpp/isnan.cpp new file mode 100644 index 0000000..41dbc38 --- /dev/null +++ b/extensions/externals/src/cg4cpp/isnan.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +bool isnan(float v) +{ + return isnan(v); +} + +bool1 isnan(float1 v) +{ + return isnan(v); +} + +bool2 isnan(float2 v) +{ + return isnan(v); +} + +bool3 isnan(float3 v) +{ + return isnan(v); +} + +bool4 isnan(float4 v) +{ + return isnan(v); +} + +bool isnan(double v) +{ + return isnan(v); +} + +bool1 isnan(double1 v) +{ + return isnan(v); +} + +bool2 isnan(double2 v) +{ + return isnan(v); +} + +bool3 isnan(double3 v) +{ + return isnan(v); +} + +bool4 isnan(double4 v) +{ + return isnan(v); +} + +bool isnan(half v) +{ + return isnan(v); +} + +bool1 isnan(half1 v) +{ + return isnan(v); +} + +bool2 isnan(half2 v) +{ + return isnan(v); +} + +bool3 isnan(half3 v) +{ + return isnan(v); +} + +bool4 isnan(half4 v) +{ + return isnan(v); +} + +bool isnan(fixed v) +{ + return isnan(v); +} + +bool1 isnan(fixed1 v) +{ + return isnan(v); +} + +bool2 isnan(fixed2 v) +{ + return isnan(v); +} + +bool3 isnan(fixed3 v) +{ + return isnan(v); +} + +bool4 isnan(fixed4 v) +{ + return isnan(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/ldexp.cpp b/extensions/externals/src/cg4cpp/ldexp.cpp new file mode 100644 index 0000000..45434e1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/ldexp.cpp @@ -0,0 +1,103 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +template +static inline __CGvector ldexp(const __CGvector & x, const __CGvector & n) +{ + // XXX better optimize; std::ldexp not appropriate + return x * exp2(n); +} + +float1 ldexp(float1 x, float1 n) +{ + return ldexp(x, n);; +} + +float2 ldexp(float2 x, float2 n) +{ + return ldexp(x, n); +} + +float3 ldexp(float3 x, float3 n) +{ + return ldexp(x, n); +} + +float4 ldexp(float4 x, float4 n) +{ + return ldexp(x, n); +} + +double1 ldexp(double1 x, double1 n) +{ + return ldexp(x, n); +} + +double2 ldexp(double2 x, double2 n) +{ + return ldexp(x, n); +} + +double3 ldexp(double3 x, double3 n) +{ + return ldexp(x, n); +} + +double4 ldexp(double4 x, double4 n) +{ + return ldexp(x, n); +} + +half1 ldexp(half1 x, half1 n) +{ + return ldexp(x, n); +} + +half2 ldexp(half2 x, half2 n) +{ + return ldexp(x, n); +} + +half3 ldexp(half3 x, half3 n) +{ + return ldexp(x, n); +} + +half4 ldexp(half4 x, half4 n) +{ + return ldexp(x, n); +} + +fixed1 ldexp(fixed1 x, fixed1 n) +{ + return ldexp(x, n); +} + +fixed2 ldexp(fixed2 x, fixed2 n) +{ + return ldexp(x, n); +} + +fixed3 ldexp(fixed3 x, fixed3 n) +{ + return ldexp(x, n); +} + +fixed4 ldexp(fixed4 x, fixed4 n) +{ + return ldexp(x, n); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/length.cpp b/extensions/externals/src/cg4cpp/length.cpp new file mode 100644 index 0000000..32ec8f1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/length.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 length(float1 v) +{ + return length(v); +} + +float1 length(float2 v) +{ + return length(v); +} + +float1 length(float3 v) +{ + return length(v); +} + +float1 length(float4 v) +{ + return length(v); +} + +double1 length(double1 v) +{ + return v; +} + +double1 length(double2 v) +{ + return length(v); +} + +double1 length(double3 v) +{ + return length(v); +} + +double1 length(double4 v) +{ + return length(v); +} + +half1 length(half1 v) +{ + return v; +} + +half1 length(half2 v) +{ + return length(v); +} + +half1 length(half3 v) +{ + return length(v); +} + +half1 length(half4 v) +{ + return length(v); +} + +fixed1 length(fixed1 v) +{ + return v; +} + +fixed1 length(fixed2 v) +{ + return length(v); +} + +fixed1 length(fixed3 v) +{ + return length(v); +} + +fixed1 length(fixed4 v) +{ + return length(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/lerp.cpp b/extensions/externals/src/cg4cpp/lerp.cpp new file mode 100644 index 0000000..93d2fdb --- /dev/null +++ b/extensions/externals/src/cg4cpp/lerp.cpp @@ -0,0 +1,101 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 lerp(float1 a, float1 b, float1 t) +{ + return lerp(a, b, t); +} +float2 lerp(float2 a, float2 b, float2 t) +{ + return lerp(a, b, t); +} +float3 lerp(float3 a, float3 b, float3 t) +{ + return lerp(a, b, t); +} +float4 lerp(float4 a, float4 b, float4 t) +{ + return lerp(a, b, t); +} + +int1 lerp(int1 a, int1 b, int1 t) +{ + return lerp(a, b, t); +} +int2 lerp(int2 a, int2 b, int2 t) +{ + return lerp(a, b, t); +} +int3 lerp(int3 a, int3 b, int3 t) +{ + return lerp(a, b, t); +} +int4 lerp(int4 a, int4 b, int4 t) +{ + return lerp(a, b, t); +} + +half1 lerp(half1 a, half1 b, half1 t) +{ + return lerp(a, b, t); +} +half2 lerp(half2 a, half2 b, half2 t) +{ + return lerp(a, b, t); +} +half3 lerp(half3 a, half3 b, half3 t) +{ + return lerp(a, b, t); +} +half4 lerp(half4 a, half4 b, half4 t) +{ + return lerp(a, b, t); +} + +fixed1 lerp(fixed1 a, fixed1 b, fixed1 t) +{ + return lerp(a, b, t); +} +fixed2 lerp(fixed2 a, fixed2 b, fixed2 t) +{ + return lerp(a, b, t); +} +fixed3 lerp(fixed3 a, fixed3 b, fixed3 t) +{ + return lerp(a, b, t); +} +fixed4 lerp(fixed4 a, fixed4 b, fixed4 t) +{ + return lerp(a, b, t); +} + +double1 lerp(double1 a, double1 b, double1 t) +{ + return lerp(a, b, t); +} +double2 lerp(double2 a, double2 b, double2 t) +{ + return lerp(a, b, t); +} +double3 lerp(double3 a, double3 b, double3 t) +{ + return lerp(a, b, t); +} +double4 lerp(double4 a, double4 b, double4 t) +{ + return lerp(a, b, t); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/lit.cpp b/extensions/externals/src/cg4cpp/lit.cpp new file mode 100644 index 0000000..ff1622d --- /dev/null +++ b/extensions/externals/src/cg4cpp/lit.cpp @@ -0,0 +1,53 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +#include // for std::pow + +namespace Cg { + +template +static inline __CGvector lit(const __CGvector & NdotL, const __CGvector & NdotH, const __CGvector & m) // XXXmjk should be vectors?? +{ + __CGvector rv; + rv.x = T(1); + if (NdotL < 0) { + rv.y = 0; + rv.z = 0; + } else { + rv.y = NdotL; + if (NdotH < 0) { + rv.z = 0; + } else { + rv.z = std::pow(float1(NdotH), float1(m)); // revisit for double + } + } + rv.w = 1; + return rv; +} + +float4 lit(float1 NdotL, float1 NdotH, float1 m) +{ + return lit(NdotL, NdotH, m); +} + +half4 lit(half1 NdotL, half1 NdotH, half1 m) +{ + return lit(NdotL, NdotH, m); +} + +fixed4 lit(fixed1 NdotL, fixed1 NdotH, fixed1 m) +{ + return lit(NdotL, NdotH, m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/log.cpp b/extensions/externals/src/cg4cpp/log.cpp new file mode 100644 index 0000000..00db917 --- /dev/null +++ b/extensions/externals/src/cg4cpp/log.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float log(float v) +{ + return log(v); +} + +float1 log(float1 v) +{ + return log(v); +} + +float2 log(float2 v) +{ + return log(v); +} + +float3 log(float3 v) +{ + return log(v); +} + +float4 log(float4 v) +{ + return log(v); +} + +double log(double v) +{ + return log(v); +} + +double1 log(double1 v) +{ + return log(v); +} + +double2 log(double2 v) +{ + return log(v); +} + +double3 log(double3 v) +{ + return log(v); +} + +double4 log(double4 v) +{ + return log(v); +} + +half log(half v) +{ + return log(v); +} + +half1 log(half1 v) +{ + return log(v); +} + +half2 log(half2 v) +{ + return log(v); +} + +half3 log(half3 v) +{ + return log(v); +} + +half4 log(half4 v) +{ + return log(v); +} + +fixed log(fixed v) +{ + return log(v); +} + +fixed1 log(fixed1 v) +{ + return log(v); +} + +fixed2 log(fixed2 v) +{ + return log(v); +} + +fixed3 log(fixed3 v) +{ + return log(v); +} + +fixed4 log(fixed4 v) +{ + return log(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/log10.cpp b/extensions/externals/src/cg4cpp/log10.cpp new file mode 100644 index 0000000..5b8a8f1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/log10.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float log10(float v) +{ + return log10(v); +} + +float1 log10(float1 v) +{ + return log10(v); +} + +float2 log10(float2 v) +{ + return log10(v); +} + +float3 log10(float3 v) +{ + return log10(v); +} + +float4 log10(float4 v) +{ + return log10(v); +} + +double log10(double v) +{ + return log10(v); +} + +double1 log10(double1 v) +{ + return log10(v); +} + +double2 log10(double2 v) +{ + return log10(v); +} + +double3 log10(double3 v) +{ + return log10(v); +} + +double4 log10(double4 v) +{ + return log10(v); +} + +half log10(half v) +{ + return log10(v); +} + +half1 log10(half1 v) +{ + return log10(v); +} + +half2 log10(half2 v) +{ + return log10(v); +} + +half3 log10(half3 v) +{ + return log10(v); +} + +half4 log10(half4 v) +{ + return log10(v); +} + +fixed log10(fixed v) +{ + return log10(v); +} + +fixed1 log10(fixed1 v) +{ + return log10(v); +} + +fixed2 log10(fixed2 v) +{ + return log10(v); +} + +fixed3 log10(fixed3 v) +{ + return log10(v); +} + +fixed4 log10(fixed4 v) +{ + return log10(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/log2.cpp b/extensions/externals/src/cg4cpp/log2.cpp new file mode 100644 index 0000000..5dc5f13 --- /dev/null +++ b/extensions/externals/src/cg4cpp/log2.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float log2(float v) +{ + return log2(v); +} + +float1 log2(float1 v) +{ + return log2(v); +} + +float2 log2(float2 v) +{ + return log2(v); +} + +float3 log2(float3 v) +{ + return log2(v); +} + +float4 log2(float4 v) +{ + return log2(v); +} + +double log2(double v) +{ + return log2(v); +} + +double1 log2(double1 v) +{ + return log2(v); +} + +double2 log2(double2 v) +{ + return log2(v); +} + +double3 log2(double3 v) +{ + return log2(v); +} + +double4 log2(double4 v) +{ + return log2(v); +} + +half log2(half v) +{ + return log2(v); +} + +half1 log2(half1 v) +{ + return log2(v); +} + +half2 log2(half2 v) +{ + return log2(v); +} + +half3 log2(half3 v) +{ + return log2(v); +} + +half4 log2(half4 v) +{ + return log2(v); +} + +fixed log2(fixed v) +{ + return log2(v); +} + +fixed1 log2(fixed1 v) +{ + return log2(v); +} + +fixed2 log2(fixed2 v) +{ + return log2(v); +} + +fixed3 log2(fixed3 v) +{ + return log2(v); +} + +fixed4 log2(fixed4 v) +{ + return log2(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/max.cpp b/extensions/externals/src/cg4cpp/max.cpp new file mode 100644 index 0000000..7021ba8 --- /dev/null +++ b/extensions/externals/src/cg4cpp/max.cpp @@ -0,0 +1,141 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int max(int a, int b) +{ + return max(a, b); +} + +int1 max(int1 a, int1 b) +{ + return max(a, b); +} + +int2 max(int2 a, int2 b) +{ + return max(a, b); +} + +int3 max(int3 a, int3 b) +{ + return max(a, b); +} + +int4 max(int4 a, int4 b) +{ + return max(a, b); +} + +float max(float a, float b) +{ + return max(a, b); +} + +float1 max(float1 a, float1 b) +{ + return max(a, b);; +} + +float2 max(float2 a, float2 b) +{ + return max(a, b); +} + +float3 max(float3 a, float3 b) +{ + return max(a, b); +} + +float4 max(float4 a, float4 b) +{ + return max(a, b); +} + +double max(double a, double b) +{ + return max(a, b); +} + +double1 max(double1 a, double1 b) +{ + return max(a, b); +} + +double2 max(double2 a, double2 b) +{ + return max(a, b); +} + +double3 max(double3 a, double3 b) +{ + return max(a, b); +} + +double4 max(double4 a, double4 b) +{ + return max(a, b); +} + +half max(half a, half b) +{ + return max(a, b); +} + +half1 max(half1 a, half1 b) +{ + return max(a, b); +} + +half2 max(half2 a, half2 b) +{ + return max(a, b); +} + +half3 max(half3 a, half3 b) +{ + return max(a, b); +} + +half4 max(half4 a, half4 b) +{ + return max(a, b); +} + +fixed max(fixed a, fixed b) +{ + return max(a, b); +} + +fixed1 max(fixed1 a, fixed1 b) +{ + return max(a, b); +} + +fixed2 max(fixed2 a, fixed2 b) +{ + return max(a, b); +} + +fixed3 max(fixed3 a, fixed3 b) +{ + return max(a, b); +} + +fixed4 max(fixed4 a, fixed4 b) +{ + return max(a, b); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/min.cpp b/extensions/externals/src/cg4cpp/min.cpp new file mode 100644 index 0000000..da3e46d --- /dev/null +++ b/extensions/externals/src/cg4cpp/min.cpp @@ -0,0 +1,141 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int min(int a, int b) +{ + return min(a, b); +} + +int1 min(int1 a, int1 b) +{ + return min(a, b); +} + +int2 min(int2 a, int2 b) +{ + return min(a, b); +} + +int3 min(int3 a, int3 b) +{ + return min(a, b); +} + +int4 min(int4 a, int4 b) +{ + return min(a, b); +} + +float min(float a, float b) +{ + return min(a, b); +} + +float1 min(float1 a, float1 b) +{ + return min(a, b);; +} + +float2 min(float2 a, float2 b) +{ + return min(a, b); +} + +float3 min(float3 a, float3 b) +{ + return min(a, b); +} + +float4 min(float4 a, float4 b) +{ + return min(a, b); +} + +double min(double a, double b) +{ + return min(a, b); +} + +double1 min(double1 a, double1 b) +{ + return min(a, b); +} + +double2 min(double2 a, double2 b) +{ + return min(a, b); +} + +double3 min(double3 a, double3 b) +{ + return min(a, b); +} + +double4 min(double4 a, double4 b) +{ + return min(a, b); +} + +half min(half a, half b) +{ + return min(a, b); +} + +half1 min(half1 a, half1 b) +{ + return min(a, b); +} + +half2 min(half2 a, half2 b) +{ + return min(a, b); +} + +half3 min(half3 a, half3 b) +{ + return min(a, b); +} + +half4 min(half4 a, half4 b) +{ + return min(a, b); +} + +fixed min(fixed a, fixed b) +{ + return min(a, b); +} + +fixed1 min(fixed1 a, fixed1 b) +{ + return min(a, b); +} + +fixed2 min(fixed2 a, fixed2 b) +{ + return min(a, b); +} + +fixed3 min(fixed3 a, fixed3 b) +{ + return min(a, b); +} + +fixed4 min(fixed4 a, fixed4 b) +{ + return min(a, b); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/modf.cpp b/extensions/externals/src/cg4cpp/modf.cpp new file mode 100644 index 0000000..f17f5e2 --- /dev/null +++ b/extensions/externals/src/cg4cpp/modf.cpp @@ -0,0 +1,112 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include +#include + +#include // for std::exp + +namespace Cg { + +template +static inline __CGvector modf(__CGvector x, __CGvector& ipOut) +{ + __CGvector rv; + + for (int i=0; i::dotType ipVal; // float except double when T is double + rv[i] = T(std::modf(x[i], &ipVal)); + ipOut[i] = T(ipVal); + } + return rv; +} + +float1 modf(float1 x, Out ipOut) +{ + return modf(x, ipOut); +} + +float2 modf(float2 x, Out ipOut) +{ + return modf(x, ipOut); +} + +float3 modf(float3 x, Out ipOut) +{ + return modf(x, ipOut); +} + +float4 modf(float4 x, Out ipOut) +{ + return modf(x, ipOut); +} + +double1 modf(double1 x, Out ipOut) +{ + return modf(x, ipOut); +} + +double2 modf(double2 x, Out ipOut) +{ + return modf(x, ipOut); +} + +double3 modf(double3 x, Out ipOut) +{ + return modf(x, ipOut); +} + +double4 modf(double4 x, Out ipOut) +{ + return modf(x, ipOut); +} + +half1 modf(half1 x, Out ipOut) +{ + return modf(x, ipOut); +} + +half2 modf(half2 x, Out ipOut) +{ + return modf(x, ipOut); +} + +half3 modf(half3 x, Out ipOut) +{ + return modf(x, ipOut); +} + +half4 modf(half4 x, Out ipOut) +{ + return modf(x, ipOut); +} + +fixed1 modf(fixed1 x, Out ipOut) +{ + return modf(x, ipOut); +} + +fixed2 modf(fixed2 x, Out ipOut) +{ + return modf(x, ipOut); +} + +fixed3 modf(fixed3 x, Out ipOut) +{ + return modf(x, ipOut); +} + +fixed4 modf(fixed4 x, Out ipOut) +{ + return modf(x, ipOut); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/mul.cpp b/extensions/externals/src/cg4cpp/mul.cpp new file mode 100644 index 0000000..631e0d5 --- /dev/null +++ b/extensions/externals/src/cg4cpp/mul.cpp @@ -0,0 +1,2032 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 mul(float1x1 m, float1 v) +{ + return mul(m, v); +} +int1 mul(int1x1 m, int1 v) +{ + return mul(m, v); +} +double1 mul(double1x1 m, double1 v) +{ + return mul(m, v); +} +fixed1 mul(fixed1x1 m, fixed1 v) +{ + return mul(m, v); +} +half1 mul(half1x1 m, half1 v) +{ + return mul(m, v); +} + +float2 mul(float2x1 m, float1 v) +{ + return mul(m, v); +} +int2 mul(int2x1 m, int1 v) +{ + return mul(m, v); +} +double2 mul(double2x1 m, double1 v) +{ + return mul(m, v); +} +fixed2 mul(fixed2x1 m, fixed1 v) +{ + return mul(m, v); +} +half2 mul(half2x1 m, half1 v) +{ + return mul(m, v); +} + +float3 mul(float3x1 m, float1 v) +{ + return mul(m, v); +} +int3 mul(int3x1 m, int1 v) +{ + return mul(m, v); +} +double3 mul(double3x1 m, double1 v) +{ + return mul(m, v); +} +fixed3 mul(fixed3x1 m, fixed1 v) +{ + return mul(m, v); +} +half3 mul(half3x1 m, half1 v) +{ + return mul(m, v); +} + +float4 mul(float4x1 m, float1 v) +{ + return mul(m, v); +} +int4 mul(int4x1 m, int1 v) +{ + return mul(m, v); +} +double4 mul(double4x1 m, double1 v) +{ + return mul(m, v); +} +fixed4 mul(fixed4x1 m, fixed1 v) +{ + return mul(m, v); +} +half4 mul(half4x1 m, half1 v) +{ + return mul(m, v); +} + +float1 mul(float1x2 m, float2 v) +{ + return mul(m, v); +} +int1 mul(int1x2 m, int2 v) +{ + return mul(m, v); +} +double1 mul(double1x2 m, double2 v) +{ + return mul(m, v); +} +fixed1 mul(fixed1x2 m, fixed2 v) +{ + return mul(m, v); +} +half1 mul(half1x2 m, half2 v) +{ + return mul(m, v); +} + +float2 mul(float2x2 m, float2 v) +{ + return mul(m, v); +} +int2 mul(int2x2 m, int2 v) +{ + return mul(m, v); +} +double2 mul(double2x2 m, double2 v) +{ + return mul(m, v); +} +fixed2 mul(fixed2x2 m, fixed2 v) +{ + return mul(m, v); +} +half2 mul(half2x2 m, half2 v) +{ + return mul(m, v); +} + +float3 mul(float3x2 m, float2 v) +{ + return mul(m, v); +} +int3 mul(int3x2 m, int2 v) +{ + return mul(m, v); +} +double3 mul(double3x2 m, double2 v) +{ + return mul(m, v); +} +fixed3 mul(fixed3x2 m, fixed2 v) +{ + return mul(m, v); +} +half3 mul(half3x2 m, half2 v) +{ + return mul(m, v); +} + +float4 mul(float4x2 m, float2 v) +{ + return mul(m, v); +} +int4 mul(int4x2 m, int2 v) +{ + return mul(m, v); +} +double4 mul(double4x2 m, double2 v) +{ + return mul(m, v); +} +fixed4 mul(fixed4x2 m, fixed2 v) +{ + return mul(m, v); +} +half4 mul(half4x2 m, half2 v) +{ + return mul(m, v); +} + +float1 mul(float1x3 m, float3 v) +{ + return mul(m, v); +} +int1 mul(int1x3 m, int3 v) +{ + return mul(m, v); +} +double1 mul(double1x3 m, double3 v) +{ + return mul(m, v); +} +fixed1 mul(fixed1x3 m, fixed3 v) +{ + return mul(m, v); +} +half1 mul(half1x3 m, half3 v) +{ + return mul(m, v); +} + +float2 mul(float2x3 m, float3 v) +{ + return mul(m, v); +} +int2 mul(int2x3 m, int3 v) +{ + return mul(m, v); +} +double2 mul(double2x3 m, double3 v) +{ + return mul(m, v); +} +fixed2 mul(fixed2x3 m, fixed3 v) +{ + return mul(m, v); +} +half2 mul(half2x3 m, half3 v) +{ + return mul(m, v); +} + +float3 mul(float3x3 m, float3 v) +{ + return mul(m, v); +} +int3 mul(int3x3 m, int3 v) +{ + return mul(m, v); +} +double3 mul(double3x3 m, double3 v) +{ + return mul(m, v); +} +fixed3 mul(fixed3x3 m, fixed3 v) +{ + return mul(m, v); +} +half3 mul(half3x3 m, half3 v) +{ + return mul(m, v); +} + +float4 mul(float4x3 m, float3 v) +{ + return mul(m, v); +} +int4 mul(int4x3 m, int3 v) +{ + return mul(m, v); +} +double4 mul(double4x3 m, double3 v) +{ + return mul(m, v); +} +fixed4 mul(fixed4x3 m, fixed3 v) +{ + return mul(m, v); +} +half4 mul(half4x3 m, half3 v) +{ + return mul(m, v); +} + +float1 mul(float1x4 m, float4 v) +{ + return mul(m, v); +} +int1 mul(int1x4 m, int4 v) +{ + return mul(m, v); +} +double1 mul(double1x4 m, double4 v) +{ + return mul(m, v); +} +fixed1 mul(fixed1x4 m, fixed4 v) +{ + return mul(m, v); +} +half1 mul(half1x4 m, half4 v) +{ + return mul(m, v); +} + +float2 mul(float2x4 m, float4 v) +{ + return mul(m, v); +} +int2 mul(int2x4 m, int4 v) +{ + return mul(m, v); +} +double2 mul(double2x4 m, double4 v) +{ + return mul(m, v); +} +fixed2 mul(fixed2x4 m, fixed4 v) +{ + return mul(m, v); +} +half2 mul(half2x4 m, half4 v) +{ + return mul(m, v); +} + +float3 mul(float3x4 m, float4 v) +{ + return mul(m, v); +} +int3 mul(int3x4 m, int4 v) +{ + return mul(m, v); +} +double3 mul(double3x4 m, double4 v) +{ + return mul(m, v); +} +fixed3 mul(fixed3x4 m, fixed4 v) +{ + return mul(m, v); +} +half3 mul(half3x4 m, half4 v) +{ + return mul(m, v); +} + +float4 mul(float4x4 m, float4 v) +{ + return mul(m, v); +} +int4 mul(int4x4 m, int4 v) +{ + return mul(m, v); +} +double4 mul(double4x4 m, double4 v) +{ + return mul(m, v); +} +fixed4 mul(fixed4x4 m, fixed4 v) +{ + return mul(m, v); +} +half4 mul(half4x4 m, half4 v) +{ + return mul(m, v); +} + +float1 mul(float1 v, float1x1 m) +{ + return mul(v, m); +} +int1 mul(int1 v, int1x1 m) +{ + return mul(v, m); +} +double1 mul(double1 v, double1x1 m) +{ + return mul(v, m); +} +fixed1 mul(fixed1 v, fixed1x1 m) +{ + return mul(v, m); +} +half1 mul(half1 v, half1x1 m) +{ + return mul(v, m); +} + +float2 mul(float1 v, float1x2 m) +{ + return mul(v, m); +} +int2 mul(int1 v, int1x2 m) +{ + return mul(v, m); +} +double2 mul(double1 v, double1x2 m) +{ + return mul(v, m); +} +fixed2 mul(fixed1 v, fixed1x2 m) +{ + return mul(v, m); +} +half2 mul(half1 v, half1x2 m) +{ + return mul(v, m); +} + +float3 mul(float1 v, float1x3 m) +{ + return mul(v, m); +} +int3 mul(int1 v, int1x3 m) +{ + return mul(v, m); +} +double3 mul(double1 v, double1x3 m) +{ + return mul(v, m); +} +fixed3 mul(fixed1 v, fixed1x3 m) +{ + return mul(v, m); +} +half3 mul(half1 v, half1x3 m) +{ + return mul(v, m); +} + +float4 mul(float1 v, float1x4 m) +{ + return mul(v, m); +} +int4 mul(int1 v, int1x4 m) +{ + return mul(v, m); +} +double4 mul(double1 v, double1x4 m) +{ + return mul(v, m); +} +fixed4 mul(fixed1 v, fixed1x4 m) +{ + return mul(v, m); +} +half4 mul(half1 v, half1x4 m) +{ + return mul(v, m); +} + +float1 mul(float2 v, float2x1 m) +{ + return mul(v, m); +} +int1 mul(int2 v, int2x1 m) +{ + return mul(v, m); +} +double1 mul(double2 v, double2x1 m) +{ + return mul(v, m); +} +fixed1 mul(fixed2 v, fixed2x1 m) +{ + return mul(v, m); +} +half1 mul(half2 v, half2x1 m) +{ + return mul(v, m); +} + +float2 mul(float2 v, float2x2 m) +{ + return mul(v, m); +} +int2 mul(int2 v, int2x2 m) +{ + return mul(v, m); +} +double2 mul(double2 v, double2x2 m) +{ + return mul(v, m); +} +fixed2 mul(fixed2 v, fixed2x2 m) +{ + return mul(v, m); +} +half2 mul(half2 v, half2x2 m) +{ + return mul(v, m); +} + +float3 mul(float2 v, float2x3 m) +{ + return mul(v, m); +} +int3 mul(int2 v, int2x3 m) +{ + return mul(v, m); +} +double3 mul(double2 v, double2x3 m) +{ + return mul(v, m); +} +fixed3 mul(fixed2 v, fixed2x3 m) +{ + return mul(v, m); +} +half3 mul(half2 v, half2x3 m) +{ + return mul(v, m); +} + +float4 mul(float2 v, float2x4 m) +{ + return mul(v, m); +} +int4 mul(int2 v, int2x4 m) +{ + return mul(v, m); +} +double4 mul(double2 v, double2x4 m) +{ + return mul(v, m); +} +fixed4 mul(fixed2 v, fixed2x4 m) +{ + return mul(v, m); +} +half4 mul(half2 v, half2x4 m) +{ + return mul(v, m); +} + +float1 mul(float3 v, float3x1 m) +{ + return mul(v, m); +} +int1 mul(int3 v, int3x1 m) +{ + return mul(v, m); +} +double1 mul(double3 v, double3x1 m) +{ + return mul(v, m); +} +fixed1 mul(fixed3 v, fixed3x1 m) +{ + return mul(v, m); +} +half1 mul(half3 v, half3x1 m) +{ + return mul(v, m); +} + +float2 mul(float3 v, float3x2 m) +{ + return mul(v, m); +} +int2 mul(int3 v, int3x2 m) +{ + return mul(v, m); +} +double2 mul(double3 v, double3x2 m) +{ + return mul(v, m); +} +fixed2 mul(fixed3 v, fixed3x2 m) +{ + return mul(v, m); +} +half2 mul(half3 v, half3x2 m) +{ + return mul(v, m); +} + +float3 mul(float3 v, float3x3 m) +{ + return mul(v, m); +} +int3 mul(int3 v, int3x3 m) +{ + return mul(v, m); +} +double3 mul(double3 v, double3x3 m) +{ + return mul(v, m); +} +fixed3 mul(fixed3 v, fixed3x3 m) +{ + return mul(v, m); +} +half3 mul(half3 v, half3x3 m) +{ + return mul(v, m); +} + +float4 mul(float3 v, float3x4 m) +{ + return mul(v, m); +} +int4 mul(int3 v, int3x4 m) +{ + return mul(v, m); +} +double4 mul(double3 v, double3x4 m) +{ + return mul(v, m); +} +fixed4 mul(fixed3 v, fixed3x4 m) +{ + return mul(v, m); +} +half4 mul(half3 v, half3x4 m) +{ + return mul(v, m); +} + +float1 mul(float4 v, float4x1 m) +{ + return mul(v, m); +} +int1 mul(int4 v, int4x1 m) +{ + return mul(v, m); +} +double1 mul(double4 v, double4x1 m) +{ + return mul(v, m); +} +fixed1 mul(fixed4 v, fixed4x1 m) +{ + return mul(v, m); +} +half1 mul(half4 v, half4x1 m) +{ + return mul(v, m); +} + +float2 mul(float4 v, float4x2 m) +{ + return mul(v, m); +} +int2 mul(int4 v, int4x2 m) +{ + return mul(v, m); +} +double2 mul(double4 v, double4x2 m) +{ + return mul(v, m); +} +fixed2 mul(fixed4 v, fixed4x2 m) +{ + return mul(v, m); +} +half2 mul(half4 v, half4x2 m) +{ + return mul(v, m); +} + +float3 mul(float4 v, float4x3 m) +{ + return mul(v, m); +} +int3 mul(int4 v, int4x3 m) +{ + return mul(v, m); +} +double3 mul(double4 v, double4x3 m) +{ + return mul(v, m); +} +fixed3 mul(fixed4 v, fixed4x3 m) +{ + return mul(v, m); +} +half3 mul(half4 v, half4x3 m) +{ + return mul(v, m); +} + +float4 mul(float4 v, float4x4 m) +{ + return mul(v, m); +} +int4 mul(int4 v, int4x4 m) +{ + return mul(v, m); +} +double4 mul(double4 v, double4x4 m) +{ + return mul(v, m); +} +fixed4 mul(fixed4 v, fixed4x4 m) +{ + return mul(v, m); +} +half4 mul(half4 v, half4x4 m) +{ + return mul(v, m); +} + +float1x1 mul(float1x1 m1, float1x1 m2) +{ + return mul(m1, m2); +} +int1x1 mul(int1x1 m1, int1x1 m2) +{ + return mul(m1, m2); +} +double1x1 mul(double1x1 m1, double1x1 m2) +{ + return mul(m1, m2); +} +fixed1x1 mul(fixed1x1 m1, fixed1x1 m2) +{ + return mul(m1, m2); +} +half1x1 mul(half1x1 m1, half1x1 m2) +{ + return mul(m1, m2); +} + +float1x2 mul(float1x1 m1, float1x2 m2) +{ + return mul(m1, m2); +} +int1x2 mul(int1x1 m1, int1x2 m2) +{ + return mul(m1, m2); +} +double1x2 mul(double1x1 m1, double1x2 m2) +{ + return mul(m1, m2); +} +fixed1x2 mul(fixed1x1 m1, fixed1x2 m2) +{ + return mul(m1, m2); +} +half1x2 mul(half1x1 m1, half1x2 m2) +{ + return mul(m1, m2); +} + +float1x3 mul(float1x1 m1, float1x3 m2) +{ + return mul(m1, m2); +} +int1x3 mul(int1x1 m1, int1x3 m2) +{ + return mul(m1, m2); +} +double1x3 mul(double1x1 m1, double1x3 m2) +{ + return mul(m1, m2); +} +fixed1x3 mul(fixed1x1 m1, fixed1x3 m2) +{ + return mul(m1, m2); +} +half1x3 mul(half1x1 m1, half1x3 m2) +{ + return mul(m1, m2); +} + +float1x4 mul(float1x1 m1, float1x4 m2) +{ + return mul(m1, m2); +} +int1x4 mul(int1x1 m1, int1x4 m2) +{ + return mul(m1, m2); +} +double1x4 mul(double1x1 m1, double1x4 m2) +{ + return mul(m1, m2); +} +fixed1x4 mul(fixed1x1 m1, fixed1x4 m2) +{ + return mul(m1, m2); +} +half1x4 mul(half1x1 m1, half1x4 m2) +{ + return mul(m1, m2); +} + +float1x1 mul(float1x2 m1, float2x1 m2) +{ + return mul(m1, m2); +} +int1x1 mul(int1x2 m1, int2x1 m2) +{ + return mul(m1, m2); +} +double1x1 mul(double1x2 m1, double2x1 m2) +{ + return mul(m1, m2); +} +fixed1x1 mul(fixed1x2 m1, fixed2x1 m2) +{ + return mul(m1, m2); +} +half1x1 mul(half1x2 m1, half2x1 m2) +{ + return mul(m1, m2); +} + +float1x2 mul(float1x2 m1, float2x2 m2) +{ + return mul(m1, m2); +} +int1x2 mul(int1x2 m1, int2x2 m2) +{ + return mul(m1, m2); +} +double1x2 mul(double1x2 m1, double2x2 m2) +{ + return mul(m1, m2); +} +fixed1x2 mul(fixed1x2 m1, fixed2x2 m2) +{ + return mul(m1, m2); +} +half1x2 mul(half1x2 m1, half2x2 m2) +{ + return mul(m1, m2); +} + +float1x3 mul(float1x2 m1, float2x3 m2) +{ + return mul(m1, m2); +} +int1x3 mul(int1x2 m1, int2x3 m2) +{ + return mul(m1, m2); +} +double1x3 mul(double1x2 m1, double2x3 m2) +{ + return mul(m1, m2); +} +fixed1x3 mul(fixed1x2 m1, fixed2x3 m2) +{ + return mul(m1, m2); +} +half1x3 mul(half1x2 m1, half2x3 m2) +{ + return mul(m1, m2); +} + +float1x4 mul(float1x2 m1, float2x4 m2) +{ + return mul(m1, m2); +} +int1x4 mul(int1x2 m1, int2x4 m2) +{ + return mul(m1, m2); +} +double1x4 mul(double1x2 m1, double2x4 m2) +{ + return mul(m1, m2); +} +fixed1x4 mul(fixed1x2 m1, fixed2x4 m2) +{ + return mul(m1, m2); +} +half1x4 mul(half1x2 m1, half2x4 m2) +{ + return mul(m1, m2); +} + +float1x1 mul(float1x3 m1, float3x1 m2) +{ + return mul(m1, m2); +} +int1x1 mul(int1x3 m1, int3x1 m2) +{ + return mul(m1, m2); +} +double1x1 mul(double1x3 m1, double3x1 m2) +{ + return mul(m1, m2); +} +fixed1x1 mul(fixed1x3 m1, fixed3x1 m2) +{ + return mul(m1, m2); +} +half1x1 mul(half1x3 m1, half3x1 m2) +{ + return mul(m1, m2); +} + +float1x2 mul(float1x3 m1, float3x2 m2) +{ + return mul(m1, m2); +} +int1x2 mul(int1x3 m1, int3x2 m2) +{ + return mul(m1, m2); +} +double1x2 mul(double1x3 m1, double3x2 m2) +{ + return mul(m1, m2); +} +fixed1x2 mul(fixed1x3 m1, fixed3x2 m2) +{ + return mul(m1, m2); +} +half1x2 mul(half1x3 m1, half3x2 m2) +{ + return mul(m1, m2); +} + +float1x3 mul(float1x3 m1, float3x3 m2) +{ + return mul(m1, m2); +} +int1x3 mul(int1x3 m1, int3x3 m2) +{ + return mul(m1, m2); +} +double1x3 mul(double1x3 m1, double3x3 m2) +{ + return mul(m1, m2); +} +fixed1x3 mul(fixed1x3 m1, fixed3x3 m2) +{ + return mul(m1, m2); +} +half1x3 mul(half1x3 m1, half3x3 m2) +{ + return mul(m1, m2); +} + +float1x4 mul(float1x3 m1, float3x4 m2) +{ + return mul(m1, m2); +} +int1x4 mul(int1x3 m1, int3x4 m2) +{ + return mul(m1, m2); +} +double1x4 mul(double1x3 m1, double3x4 m2) +{ + return mul(m1, m2); +} +fixed1x4 mul(fixed1x3 m1, fixed3x4 m2) +{ + return mul(m1, m2); +} +half1x4 mul(half1x3 m1, half3x4 m2) +{ + return mul(m1, m2); +} + +float1x1 mul(float1x4 m1, float4x1 m2) +{ + return mul(m1, m2); +} +int1x1 mul(int1x4 m1, int4x1 m2) +{ + return mul(m1, m2); +} +double1x1 mul(double1x4 m1, double4x1 m2) +{ + return mul(m1, m2); +} +fixed1x1 mul(fixed1x4 m1, fixed4x1 m2) +{ + return mul(m1, m2); +} +half1x1 mul(half1x4 m1, half4x1 m2) +{ + return mul(m1, m2); +} + +float1x2 mul(float1x4 m1, float4x2 m2) +{ + return mul(m1, m2); +} +int1x2 mul(int1x4 m1, int4x2 m2) +{ + return mul(m1, m2); +} +double1x2 mul(double1x4 m1, double4x2 m2) +{ + return mul(m1, m2); +} +fixed1x2 mul(fixed1x4 m1, fixed4x2 m2) +{ + return mul(m1, m2); +} +half1x2 mul(half1x4 m1, half4x2 m2) +{ + return mul(m1, m2); +} + +float1x3 mul(float1x4 m1, float4x3 m2) +{ + return mul(m1, m2); +} +int1x3 mul(int1x4 m1, int4x3 m2) +{ + return mul(m1, m2); +} +double1x3 mul(double1x4 m1, double4x3 m2) +{ + return mul(m1, m2); +} +fixed1x3 mul(fixed1x4 m1, fixed4x3 m2) +{ + return mul(m1, m2); +} +half1x3 mul(half1x4 m1, half4x3 m2) +{ + return mul(m1, m2); +} + +float1x4 mul(float1x4 m1, float4x4 m2) +{ + return mul(m1, m2); +} +int1x4 mul(int1x4 m1, int4x4 m2) +{ + return mul(m1, m2); +} +double1x4 mul(double1x4 m1, double4x4 m2) +{ + return mul(m1, m2); +} +fixed1x4 mul(fixed1x4 m1, fixed4x4 m2) +{ + return mul(m1, m2); +} +half1x4 mul(half1x4 m1, half4x4 m2) +{ + return mul(m1, m2); +} + +float2x1 mul(float2x1 m1, float1x1 m2) +{ + return mul(m1, m2); +} +int2x1 mul(int2x1 m1, int1x1 m2) +{ + return mul(m1, m2); +} +double2x1 mul(double2x1 m1, double1x1 m2) +{ + return mul(m1, m2); +} +fixed2x1 mul(fixed2x1 m1, fixed1x1 m2) +{ + return mul(m1, m2); +} +half2x1 mul(half2x1 m1, half1x1 m2) +{ + return mul(m1, m2); +} + +float2x2 mul(float2x1 m1, float1x2 m2) +{ + return mul(m1, m2); +} +int2x2 mul(int2x1 m1, int1x2 m2) +{ + return mul(m1, m2); +} +double2x2 mul(double2x1 m1, double1x2 m2) +{ + return mul(m1, m2); +} +fixed2x2 mul(fixed2x1 m1, fixed1x2 m2) +{ + return mul(m1, m2); +} +half2x2 mul(half2x1 m1, half1x2 m2) +{ + return mul(m1, m2); +} + +float2x3 mul(float2x1 m1, float1x3 m2) +{ + return mul(m1, m2); +} +int2x3 mul(int2x1 m1, int1x3 m2) +{ + return mul(m1, m2); +} +double2x3 mul(double2x1 m1, double1x3 m2) +{ + return mul(m1, m2); +} +fixed2x3 mul(fixed2x1 m1, fixed1x3 m2) +{ + return mul(m1, m2); +} +half2x3 mul(half2x1 m1, half1x3 m2) +{ + return mul(m1, m2); +} + +float2x4 mul(float2x1 m1, float1x4 m2) +{ + return mul(m1, m2); +} +int2x4 mul(int2x1 m1, int1x4 m2) +{ + return mul(m1, m2); +} +double2x4 mul(double2x1 m1, double1x4 m2) +{ + return mul(m1, m2); +} +fixed2x4 mul(fixed2x1 m1, fixed1x4 m2) +{ + return mul(m1, m2); +} +half2x4 mul(half2x1 m1, half1x4 m2) +{ + return mul(m1, m2); +} + +float2x1 mul(float2x2 m1, float2x1 m2) +{ + return mul(m1, m2); +} +int2x1 mul(int2x2 m1, int2x1 m2) +{ + return mul(m1, m2); +} +double2x1 mul(double2x2 m1, double2x1 m2) +{ + return mul(m1, m2); +} +fixed2x1 mul(fixed2x2 m1, fixed2x1 m2) +{ + return mul(m1, m2); +} +half2x1 mul(half2x2 m1, half2x1 m2) +{ + return mul(m1, m2); +} + +float2x2 mul(float2x2 m1, float2x2 m2) +{ + return mul(m1, m2); +} +int2x2 mul(int2x2 m1, int2x2 m2) +{ + return mul(m1, m2); +} +double2x2 mul(double2x2 m1, double2x2 m2) +{ + return mul(m1, m2); +} +fixed2x2 mul(fixed2x2 m1, fixed2x2 m2) +{ + return mul(m1, m2); +} +half2x2 mul(half2x2 m1, half2x2 m2) +{ + return mul(m1, m2); +} + +float2x3 mul(float2x2 m1, float2x3 m2) +{ + return mul(m1, m2); +} +int2x3 mul(int2x2 m1, int2x3 m2) +{ + return mul(m1, m2); +} +double2x3 mul(double2x2 m1, double2x3 m2) +{ + return mul(m1, m2); +} +fixed2x3 mul(fixed2x2 m1, fixed2x3 m2) +{ + return mul(m1, m2); +} +half2x3 mul(half2x2 m1, half2x3 m2) +{ + return mul(m1, m2); +} + +float2x4 mul(float2x2 m1, float2x4 m2) +{ + return mul(m1, m2); +} +int2x4 mul(int2x2 m1, int2x4 m2) +{ + return mul(m1, m2); +} +double2x4 mul(double2x2 m1, double2x4 m2) +{ + return mul(m1, m2); +} +fixed2x4 mul(fixed2x2 m1, fixed2x4 m2) +{ + return mul(m1, m2); +} +half2x4 mul(half2x2 m1, half2x4 m2) +{ + return mul(m1, m2); +} + +float2x1 mul(float2x3 m1, float3x1 m2) +{ + return mul(m1, m2); +} +int2x1 mul(int2x3 m1, int3x1 m2) +{ + return mul(m1, m2); +} +double2x1 mul(double2x3 m1, double3x1 m2) +{ + return mul(m1, m2); +} +fixed2x1 mul(fixed2x3 m1, fixed3x1 m2) +{ + return mul(m1, m2); +} +half2x1 mul(half2x3 m1, half3x1 m2) +{ + return mul(m1, m2); +} + +float2x2 mul(float2x3 m1, float3x2 m2) +{ + return mul(m1, m2); +} +int2x2 mul(int2x3 m1, int3x2 m2) +{ + return mul(m1, m2); +} +double2x2 mul(double2x3 m1, double3x2 m2) +{ + return mul(m1, m2); +} +fixed2x2 mul(fixed2x3 m1, fixed3x2 m2) +{ + return mul(m1, m2); +} +half2x2 mul(half2x3 m1, half3x2 m2) +{ + return mul(m1, m2); +} + +float2x3 mul(float2x3 m1, float3x3 m2) +{ + return mul(m1, m2); +} +int2x3 mul(int2x3 m1, int3x3 m2) +{ + return mul(m1, m2); +} +double2x3 mul(double2x3 m1, double3x3 m2) +{ + return mul(m1, m2); +} +fixed2x3 mul(fixed2x3 m1, fixed3x3 m2) +{ + return mul(m1, m2); +} +half2x3 mul(half2x3 m1, half3x3 m2) +{ + return mul(m1, m2); +} + +float2x4 mul(float2x3 m1, float3x4 m2) +{ + return mul(m1, m2); +} +int2x4 mul(int2x3 m1, int3x4 m2) +{ + return mul(m1, m2); +} +double2x4 mul(double2x3 m1, double3x4 m2) +{ + return mul(m1, m2); +} +fixed2x4 mul(fixed2x3 m1, fixed3x4 m2) +{ + return mul(m1, m2); +} +half2x4 mul(half2x3 m1, half3x4 m2) +{ + return mul(m1, m2); +} + +float2x1 mul(float2x4 m1, float4x1 m2) +{ + return mul(m1, m2); +} +int2x1 mul(int2x4 m1, int4x1 m2) +{ + return mul(m1, m2); +} +double2x1 mul(double2x4 m1, double4x1 m2) +{ + return mul(m1, m2); +} +fixed2x1 mul(fixed2x4 m1, fixed4x1 m2) +{ + return mul(m1, m2); +} +half2x1 mul(half2x4 m1, half4x1 m2) +{ + return mul(m1, m2); +} + +float2x2 mul(float2x4 m1, float4x2 m2) +{ + return mul(m1, m2); +} +int2x2 mul(int2x4 m1, int4x2 m2) +{ + return mul(m1, m2); +} +double2x2 mul(double2x4 m1, double4x2 m2) +{ + return mul(m1, m2); +} +fixed2x2 mul(fixed2x4 m1, fixed4x2 m2) +{ + return mul(m1, m2); +} +half2x2 mul(half2x4 m1, half4x2 m2) +{ + return mul(m1, m2); +} + +float2x3 mul(float2x4 m1, float4x3 m2) +{ + return mul(m1, m2); +} +int2x3 mul(int2x4 m1, int4x3 m2) +{ + return mul(m1, m2); +} +double2x3 mul(double2x4 m1, double4x3 m2) +{ + return mul(m1, m2); +} +fixed2x3 mul(fixed2x4 m1, fixed4x3 m2) +{ + return mul(m1, m2); +} +half2x3 mul(half2x4 m1, half4x3 m2) +{ + return mul(m1, m2); +} + +float2x4 mul(float2x4 m1, float4x4 m2) +{ + return mul(m1, m2); +} +int2x4 mul(int2x4 m1, int4x4 m2) +{ + return mul(m1, m2); +} +double2x4 mul(double2x4 m1, double4x4 m2) +{ + return mul(m1, m2); +} +fixed2x4 mul(fixed2x4 m1, fixed4x4 m2) +{ + return mul(m1, m2); +} +half2x4 mul(half2x4 m1, half4x4 m2) +{ + return mul(m1, m2); +} + +float3x1 mul(float3x1 m1, float1x1 m2) +{ + return mul(m1, m2); +} +int3x1 mul(int3x1 m1, int1x1 m2) +{ + return mul(m1, m2); +} +double3x1 mul(double3x1 m1, double1x1 m2) +{ + return mul(m1, m2); +} +fixed3x1 mul(fixed3x1 m1, fixed1x1 m2) +{ + return mul(m1, m2); +} +half3x1 mul(half3x1 m1, half1x1 m2) +{ + return mul(m1, m2); +} + +float3x2 mul(float3x1 m1, float1x2 m2) +{ + return mul(m1, m2); +} +int3x2 mul(int3x1 m1, int1x2 m2) +{ + return mul(m1, m2); +} +double3x2 mul(double3x1 m1, double1x2 m2) +{ + return mul(m1, m2); +} +fixed3x2 mul(fixed3x1 m1, fixed1x2 m2) +{ + return mul(m1, m2); +} +half3x2 mul(half3x1 m1, half1x2 m2) +{ + return mul(m1, m2); +} + +float3x3 mul(float3x1 m1, float1x3 m2) +{ + return mul(m1, m2); +} +int3x3 mul(int3x1 m1, int1x3 m2) +{ + return mul(m1, m2); +} +double3x3 mul(double3x1 m1, double1x3 m2) +{ + return mul(m1, m2); +} +fixed3x3 mul(fixed3x1 m1, fixed1x3 m2) +{ + return mul(m1, m2); +} +half3x3 mul(half3x1 m1, half1x3 m2) +{ + return mul(m1, m2); +} + +float3x4 mul(float3x1 m1, float1x4 m2) +{ + return mul(m1, m2); +} +int3x4 mul(int3x1 m1, int1x4 m2) +{ + return mul(m1, m2); +} +double3x4 mul(double3x1 m1, double1x4 m2) +{ + return mul(m1, m2); +} +fixed3x4 mul(fixed3x1 m1, fixed1x4 m2) +{ + return mul(m1, m2); +} +half3x4 mul(half3x1 m1, half1x4 m2) +{ + return mul(m1, m2); +} + +float3x1 mul(float3x2 m1, float2x1 m2) +{ + return mul(m1, m2); +} +int3x1 mul(int3x2 m1, int2x1 m2) +{ + return mul(m1, m2); +} +double3x1 mul(double3x2 m1, double2x1 m2) +{ + return mul(m1, m2); +} +fixed3x1 mul(fixed3x2 m1, fixed2x1 m2) +{ + return mul(m1, m2); +} +half3x1 mul(half3x2 m1, half2x1 m2) +{ + return mul(m1, m2); +} + +float3x2 mul(float3x2 m1, float2x2 m2) +{ + return mul(m1, m2); +} +int3x2 mul(int3x2 m1, int2x2 m2) +{ + return mul(m1, m2); +} +double3x2 mul(double3x2 m1, double2x2 m2) +{ + return mul(m1, m2); +} +fixed3x2 mul(fixed3x2 m1, fixed2x2 m2) +{ + return mul(m1, m2); +} +half3x2 mul(half3x2 m1, half2x2 m2) +{ + return mul(m1, m2); +} + +float3x3 mul(float3x2 m1, float2x3 m2) +{ + return mul(m1, m2); +} +int3x3 mul(int3x2 m1, int2x3 m2) +{ + return mul(m1, m2); +} +double3x3 mul(double3x2 m1, double2x3 m2) +{ + return mul(m1, m2); +} +fixed3x3 mul(fixed3x2 m1, fixed2x3 m2) +{ + return mul(m1, m2); +} +half3x3 mul(half3x2 m1, half2x3 m2) +{ + return mul(m1, m2); +} + +float3x4 mul(float3x2 m1, float2x4 m2) +{ + return mul(m1, m2); +} +int3x4 mul(int3x2 m1, int2x4 m2) +{ + return mul(m1, m2); +} +double3x4 mul(double3x2 m1, double2x4 m2) +{ + return mul(m1, m2); +} +fixed3x4 mul(fixed3x2 m1, fixed2x4 m2) +{ + return mul(m1, m2); +} +half3x4 mul(half3x2 m1, half2x4 m2) +{ + return mul(m1, m2); +} + +float3x1 mul(float3x3 m1, float3x1 m2) +{ + return mul(m1, m2); +} +int3x1 mul(int3x3 m1, int3x1 m2) +{ + return mul(m1, m2); +} +double3x1 mul(double3x3 m1, double3x1 m2) +{ + return mul(m1, m2); +} +fixed3x1 mul(fixed3x3 m1, fixed3x1 m2) +{ + return mul(m1, m2); +} +half3x1 mul(half3x3 m1, half3x1 m2) +{ + return mul(m1, m2); +} + +float3x2 mul(float3x3 m1, float3x2 m2) +{ + return mul(m1, m2); +} +int3x2 mul(int3x3 m1, int3x2 m2) +{ + return mul(m1, m2); +} +double3x2 mul(double3x3 m1, double3x2 m2) +{ + return mul(m1, m2); +} +fixed3x2 mul(fixed3x3 m1, fixed3x2 m2) +{ + return mul(m1, m2); +} +half3x2 mul(half3x3 m1, half3x2 m2) +{ + return mul(m1, m2); +} + +float3x3 mul(float3x3 m1, float3x3 m2) +{ + return mul(m1, m2); +} +int3x3 mul(int3x3 m1, int3x3 m2) +{ + return mul(m1, m2); +} +double3x3 mul(double3x3 m1, double3x3 m2) +{ + return mul(m1, m2); +} +fixed3x3 mul(fixed3x3 m1, fixed3x3 m2) +{ + return mul(m1, m2); +} +half3x3 mul(half3x3 m1, half3x3 m2) +{ + return mul(m1, m2); +} + +float3x4 mul(float3x3 m1, float3x4 m2) +{ + return mul(m1, m2); +} +int3x4 mul(int3x3 m1, int3x4 m2) +{ + return mul(m1, m2); +} +double3x4 mul(double3x3 m1, double3x4 m2) +{ + return mul(m1, m2); +} +fixed3x4 mul(fixed3x3 m1, fixed3x4 m2) +{ + return mul(m1, m2); +} +half3x4 mul(half3x3 m1, half3x4 m2) +{ + return mul(m1, m2); +} + +float3x1 mul(float3x4 m1, float4x1 m2) +{ + return mul(m1, m2); +} +int3x1 mul(int3x4 m1, int4x1 m2) +{ + return mul(m1, m2); +} +double3x1 mul(double3x4 m1, double4x1 m2) +{ + return mul(m1, m2); +} +fixed3x1 mul(fixed3x4 m1, fixed4x1 m2) +{ + return mul(m1, m2); +} +half3x1 mul(half3x4 m1, half4x1 m2) +{ + return mul(m1, m2); +} + +float3x2 mul(float3x4 m1, float4x2 m2) +{ + return mul(m1, m2); +} +int3x2 mul(int3x4 m1, int4x2 m2) +{ + return mul(m1, m2); +} +double3x2 mul(double3x4 m1, double4x2 m2) +{ + return mul(m1, m2); +} +fixed3x2 mul(fixed3x4 m1, fixed4x2 m2) +{ + return mul(m1, m2); +} +half3x2 mul(half3x4 m1, half4x2 m2) +{ + return mul(m1, m2); +} + +float3x3 mul(float3x4 m1, float4x3 m2) +{ + return mul(m1, m2); +} +int3x3 mul(int3x4 m1, int4x3 m2) +{ + return mul(m1, m2); +} +double3x3 mul(double3x4 m1, double4x3 m2) +{ + return mul(m1, m2); +} +fixed3x3 mul(fixed3x4 m1, fixed4x3 m2) +{ + return mul(m1, m2); +} +half3x3 mul(half3x4 m1, half4x3 m2) +{ + return mul(m1, m2); +} + +float3x4 mul(float3x4 m1, float4x4 m2) +{ + return mul(m1, m2); +} +int3x4 mul(int3x4 m1, int4x4 m2) +{ + return mul(m1, m2); +} +double3x4 mul(double3x4 m1, double4x4 m2) +{ + return mul(m1, m2); +} +fixed3x4 mul(fixed3x4 m1, fixed4x4 m2) +{ + return mul(m1, m2); +} +half3x4 mul(half3x4 m1, half4x4 m2) +{ + return mul(m1, m2); +} + +float4x1 mul(float4x1 m1, float1x1 m2) +{ + return mul(m1, m2); +} +int4x1 mul(int4x1 m1, int1x1 m2) +{ + return mul(m1, m2); +} +double4x1 mul(double4x1 m1, double1x1 m2) +{ + return mul(m1, m2); +} +fixed4x1 mul(fixed4x1 m1, fixed1x1 m2) +{ + return mul(m1, m2); +} +half4x1 mul(half4x1 m1, half1x1 m2) +{ + return mul(m1, m2); +} + +float4x2 mul(float4x1 m1, float1x2 m2) +{ + return mul(m1, m2); +} +int4x2 mul(int4x1 m1, int1x2 m2) +{ + return mul(m1, m2); +} +double4x2 mul(double4x1 m1, double1x2 m2) +{ + return mul(m1, m2); +} +fixed4x2 mul(fixed4x1 m1, fixed1x2 m2) +{ + return mul(m1, m2); +} +half4x2 mul(half4x1 m1, half1x2 m2) +{ + return mul(m1, m2); +} + +float4x3 mul(float4x1 m1, float1x3 m2) +{ + return mul(m1, m2); +} +int4x3 mul(int4x1 m1, int1x3 m2) +{ + return mul(m1, m2); +} +double4x3 mul(double4x1 m1, double1x3 m2) +{ + return mul(m1, m2); +} +fixed4x3 mul(fixed4x1 m1, fixed1x3 m2) +{ + return mul(m1, m2); +} +half4x3 mul(half4x1 m1, half1x3 m2) +{ + return mul(m1, m2); +} + +float4x4 mul(float4x1 m1, float1x4 m2) +{ + return mul(m1, m2); +} +int4x4 mul(int4x1 m1, int1x4 m2) +{ + return mul(m1, m2); +} +double4x4 mul(double4x1 m1, double1x4 m2) +{ + return mul(m1, m2); +} +fixed4x4 mul(fixed4x1 m1, fixed1x4 m2) +{ + return mul(m1, m2); +} +half4x4 mul(half4x1 m1, half1x4 m2) +{ + return mul(m1, m2); +} + +float4x1 mul(float4x2 m1, float2x1 m2) +{ + return mul(m1, m2); +} +int4x1 mul(int4x2 m1, int2x1 m2) +{ + return mul(m1, m2); +} +double4x1 mul(double4x2 m1, double2x1 m2) +{ + return mul(m1, m2); +} +fixed4x1 mul(fixed4x2 m1, fixed2x1 m2) +{ + return mul(m1, m2); +} +half4x1 mul(half4x2 m1, half2x1 m2) +{ + return mul(m1, m2); +} + +float4x2 mul(float4x2 m1, float2x2 m2) +{ + return mul(m1, m2); +} +int4x2 mul(int4x2 m1, int2x2 m2) +{ + return mul(m1, m2); +} +double4x2 mul(double4x2 m1, double2x2 m2) +{ + return mul(m1, m2); +} +fixed4x2 mul(fixed4x2 m1, fixed2x2 m2) +{ + return mul(m1, m2); +} +half4x2 mul(half4x2 m1, half2x2 m2) +{ + return mul(m1, m2); +} + +float4x3 mul(float4x2 m1, float2x3 m2) +{ + return mul(m1, m2); +} +int4x3 mul(int4x2 m1, int2x3 m2) +{ + return mul(m1, m2); +} +double4x3 mul(double4x2 m1, double2x3 m2) +{ + return mul(m1, m2); +} +fixed4x3 mul(fixed4x2 m1, fixed2x3 m2) +{ + return mul(m1, m2); +} +half4x3 mul(half4x2 m1, half2x3 m2) +{ + return mul(m1, m2); +} + +float4x4 mul(float4x2 m1, float2x4 m2) +{ + return mul(m1, m2); +} +int4x4 mul(int4x2 m1, int2x4 m2) +{ + return mul(m1, m2); +} +double4x4 mul(double4x2 m1, double2x4 m2) +{ + return mul(m1, m2); +} +fixed4x4 mul(fixed4x2 m1, fixed2x4 m2) +{ + return mul(m1, m2); +} +half4x4 mul(half4x2 m1, half2x4 m2) +{ + return mul(m1, m2); +} + +float4x1 mul(float4x3 m1, float3x1 m2) +{ + return mul(m1, m2); +} +int4x1 mul(int4x3 m1, int3x1 m2) +{ + return mul(m1, m2); +} +double4x1 mul(double4x3 m1, double3x1 m2) +{ + return mul(m1, m2); +} +fixed4x1 mul(fixed4x3 m1, fixed3x1 m2) +{ + return mul(m1, m2); +} +half4x1 mul(half4x3 m1, half3x1 m2) +{ + return mul(m1, m2); +} + +float4x2 mul(float4x3 m1, float3x2 m2) +{ + return mul(m1, m2); +} +int4x2 mul(int4x3 m1, int3x2 m2) +{ + return mul(m1, m2); +} +double4x2 mul(double4x3 m1, double3x2 m2) +{ + return mul(m1, m2); +} +fixed4x2 mul(fixed4x3 m1, fixed3x2 m2) +{ + return mul(m1, m2); +} +half4x2 mul(half4x3 m1, half3x2 m2) +{ + return mul(m1, m2); +} + +float4x3 mul(float4x3 m1, float3x3 m2) +{ + return mul(m1, m2); +} +int4x3 mul(int4x3 m1, int3x3 m2) +{ + return mul(m1, m2); +} +double4x3 mul(double4x3 m1, double3x3 m2) +{ + return mul(m1, m2); +} +fixed4x3 mul(fixed4x3 m1, fixed3x3 m2) +{ + return mul(m1, m2); +} +half4x3 mul(half4x3 m1, half3x3 m2) +{ + return mul(m1, m2); +} + +float4x4 mul(float4x3 m1, float3x4 m2) +{ + return mul(m1, m2); +} +int4x4 mul(int4x3 m1, int3x4 m2) +{ + return mul(m1, m2); +} +double4x4 mul(double4x3 m1, double3x4 m2) +{ + return mul(m1, m2); +} +fixed4x4 mul(fixed4x3 m1, fixed3x4 m2) +{ + return mul(m1, m2); +} +half4x4 mul(half4x3 m1, half3x4 m2) +{ + return mul(m1, m2); +} + +float4x1 mul(float4x4 m1, float4x1 m2) +{ + return mul(m1, m2); +} +int4x1 mul(int4x4 m1, int4x1 m2) +{ + return mul(m1, m2); +} +double4x1 mul(double4x4 m1, double4x1 m2) +{ + return mul(m1, m2); +} +fixed4x1 mul(fixed4x4 m1, fixed4x1 m2) +{ + return mul(m1, m2); +} +half4x1 mul(half4x4 m1, half4x1 m2) +{ + return mul(m1, m2); +} + +float4x2 mul(float4x4 m1, float4x2 m2) +{ + return mul(m1, m2); +} +int4x2 mul(int4x4 m1, int4x2 m2) +{ + return mul(m1, m2); +} +double4x2 mul(double4x4 m1, double4x2 m2) +{ + return mul(m1, m2); +} +fixed4x2 mul(fixed4x4 m1, fixed4x2 m2) +{ + return mul(m1, m2); +} +half4x2 mul(half4x4 m1, half4x2 m2) +{ + return mul(m1, m2); +} + +float4x3 mul(float4x4 m1, float4x3 m2) +{ + return mul(m1, m2); +} +int4x3 mul(int4x4 m1, int4x3 m2) +{ + return mul(m1, m2); +} +double4x3 mul(double4x4 m1, double4x3 m2) +{ + return mul(m1, m2); +} +fixed4x3 mul(fixed4x4 m1, fixed4x3 m2) +{ + return mul(m1, m2); +} +half4x3 mul(half4x4 m1, half4x3 m2) +{ + return mul(m1, m2); +} + +float4x4 mul(float4x4 m1, float4x4 m2) +{ + return mul(m1, m2); +} +int4x4 mul(int4x4 m1, int4x4 m2) +{ + return mul(m1, m2); +} +double4x4 mul(double4x4 m1, double4x4 m2) +{ + return mul(m1, m2); +} +fixed4x4 mul(fixed4x4 m1, fixed4x4 m2) +{ + return mul(m1, m2); +} +half4x4 mul(half4x4 m1, half4x4 m2) +{ + return mul(m1, m2); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/normalize.cpp b/extensions/externals/src/cg4cpp/normalize.cpp new file mode 100644 index 0000000..627f069 --- /dev/null +++ b/extensions/externals/src/cg4cpp/normalize.cpp @@ -0,0 +1,96 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 normalize(float1 v) +{ + return normalize(v); +} + +float2 normalize(float2 v) +{ + return normalize(v); +} + +float3 normalize(float3 v) +{ + return normalize(v); +} + +float4 normalize(float4 v) +{ + return normalize(v); +} + +double1 normalize(double1 v) +{ + return normalize(v); +} + +double2 normalize(double2 v) +{ + return normalize(v); +} + +double3 normalize(double3 v) +{ + return normalize(v); +} + +double4 normalize(double4 v) +{ + return normalize(v); +} + +half1 normalize(half1 v) +{ + return normalize(v); +} + +half2 normalize(half2 v) +{ + return normalize(v); +} + +half3 normalize(half3 v) +{ + return normalize(v); +} + +half4 normalize(half4 v) +{ + return normalize(v); +} + +fixed1 normalize(fixed1 v) +{ + return normalize(v); +} + +fixed2 normalize(fixed2 v) +{ + return normalize(v); +} + +fixed3 normalize(fixed3 v) +{ + return normalize(v); +} + +fixed4 normalize(fixed4 v) +{ + return normalize(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/pow.cpp b/extensions/externals/src/cg4cpp/pow.cpp new file mode 100644 index 0000000..3ee9384 --- /dev/null +++ b/extensions/externals/src/cg4cpp/pow.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float pow(float x, float y) +{ + return pow(x, y); +} + +float1 pow(float1 x, float1 y) +{ + return pow(x, y); +} + +float2 pow(float2 x, float2 y) +{ + return pow(x, y); +} + +float3 pow(float3 x, float3 y) +{ + return pow(x, y); +} + +float4 pow(float4 x, float4 y) +{ + return pow(x, y); +} + +double pow(double x, double y) +{ + return pow(x, y); +} + +double1 pow(double1 x, double1 y) +{ + return pow(x, y); +} + +double2 pow(double2 x, double2 y) +{ + return pow(x, y); +} + +double3 pow(double3 x, double3 y) +{ + return pow(x, y); +} + +double4 pow(double4 x, double4 y) +{ + return pow(x, y); +} + +half pow(half x, half y) +{ + return pow(x, y); +} + +half1 pow(half1 x, half1 y) +{ + return pow(x, y); +} + +half2 pow(half2 x, half2 y) +{ + return pow(x, y); +} + +half3 pow(half3 x, half3 y) +{ + return pow(x, y); +} + +half4 pow(half4 x, half4 y) +{ + return pow(x, y); +} + +fixed pow(fixed x, fixed y) +{ + return pow(x, y); +} + +fixed1 pow(fixed1 x, fixed1 y) +{ + return pow(x, y); +} + +fixed2 pow(fixed2 x, fixed2 y) +{ + return pow(x, y); +} + +fixed3 pow(fixed3 x, fixed3 y) +{ + return pow(x, y); +} + +fixed4 pow(fixed4 x, fixed4 y) +{ + return pow(x, y); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/radians.cpp b/extensions/externals/src/cg4cpp/radians.cpp new file mode 100644 index 0000000..ff69c9b --- /dev/null +++ b/extensions/externals/src/cg4cpp/radians.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float radians(float v) +{ + return radians(v); +} + +float1 radians(float1 v) +{ + return radians(v); +} + +float2 radians(float2 v) +{ + return radians(v); +} + +float3 radians(float3 v) +{ + return radians(v); +} + +float4 radians(float4 v) +{ + return radians(v); +} + +double radians(double v) +{ + return radians(v); +} + +double1 radians(double1 v) +{ + return radians(v); +} + +double2 radians(double2 v) +{ + return radians(v); +} + +double3 radians(double3 v) +{ + return radians(v); +} + +double4 radians(double4 v) +{ + return radians(v); +} + +half radians(half v) +{ + return radians(v); +} + +half1 radians(half1 v) +{ + return radians(v); +} + +half2 radians(half2 v) +{ + return radians(v); +} + +half3 radians(half3 v) +{ + return radians(v); +} + +half4 radians(half4 v) +{ + return radians(v); +} + +fixed radians(fixed v) +{ + return radians(v); +} + +fixed1 radians(fixed1 v) +{ + return radians(v); +} + +fixed2 radians(fixed2 v) +{ + return radians(v); +} + +fixed3 radians(fixed3 v) +{ + return radians(v); +} + +fixed4 radians(fixed4 v) +{ + return radians(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/reflect.cpp b/extensions/externals/src/cg4cpp/reflect.cpp new file mode 100644 index 0000000..7feb890 --- /dev/null +++ b/extensions/externals/src/cg4cpp/reflect.cpp @@ -0,0 +1,102 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +template +static inline __CGvector reflect(const __CGvector & i, const __CGvector & n) +{ + return i - 2 * n * dot(n,i); +} + +float1 reflect(float1 i, float1 n) +{ + return reflect(i, n); +} + +float2 reflect(float2 i, float2 n) +{ + return reflect(i, n); +} + +float3 reflect(float3 i, float3 n) +{ + return reflect(i, n); +} + +float4 reflect(float4 i, float4 n) +{ + return reflect(i, n); +} + +double1 reflect(double1 i, double1 n) +{ + return reflect(i, n); +} + +double2 reflect(double2 i, double2 n) +{ + return reflect(i, n); +} + +double3 reflect(double3 i, double3 n) +{ + return reflect(i, n); +} + +double4 reflect(double4 i, double4 n) +{ + return reflect(i, n); +} + +half1 reflect(half1 i, half1 n) +{ + return reflect(i, n); +} + +half2 reflect(half2 i, half2 n) +{ + return reflect(i, n); +} + +half3 reflect(half3 i, half3 n) +{ + return reflect(i, n); +} + +half4 reflect(half4 i, half4 n) +{ + return reflect(i, n); +} + +fixed1 reflect(fixed1 i, fixed1 n) +{ + return reflect(i, n); +} + +fixed2 reflect(fixed2 i, fixed2 n) +{ + return reflect(i, n); +} + +fixed3 reflect(fixed3 i, fixed3 n) +{ + return reflect(i, n); +} + +fixed4 reflect(fixed4 i, fixed4 n) +{ + return reflect(i, n); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/refract.cpp b/extensions/externals/src/cg4cpp/refract.cpp new file mode 100644 index 0000000..cf812c4 --- /dev/null +++ b/extensions/externals/src/cg4cpp/refract.cpp @@ -0,0 +1,104 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +template +static inline __CGvector refract(const __CGvector & i, const __CGvector & n, const T & eta) +{ + float1 cosi(dot(-i, n)); + float1 cost2(1.0f - eta * eta * (1.0f - cosi*cosi)); + __CGvector t(eta*i + ((eta*cosi - sqrt(abs(cost2))) * n)); + return t * __CGvector(cost2 > 0); +} + +float1 refract(float1 i, float1 n, float eta) +{ + return refract(i, n, eta); +} +float2 refract(float2 i, float2 n, float eta) +{ + return refract(i, n, eta); +} + +float3 refract(float3 i, float3 n, float eta) +{ + return refract(i, n, eta); +} + +float4 refract(float4 i, float4 n, float eta) +{ + return refract(i, n, eta); +} + +double1 refract(double1 i, double1 n, double eta) +{ + return refract(i, n, eta); +} + +double2 refract(double2 i, double2 n, double eta) +{ + return refract(i, n, eta); +} + +double3 refract(double3 i, double3 n, double eta) +{ + return refract(i, n, eta); +} + +double4 refract(double4 i, double4 n, double eta) +{ + return refract(i, n, eta); +} + +half1 refract(half1 i, half1 n, half eta) +{ + return refract(i, n, eta); +} + +half2 refract(half2 i, half2 n, half eta) +{ + return refract(i, n, eta); +} + +half3 refract(half3 i, half3 n, half eta) +{ + return refract(i, n, eta); +} + +half4 refract(half4 i, half4 n, half eta) +{ + return refract(i, n, eta); +} + +fixed1 refract(fixed1 i, fixed1 n, fixed eta) +{ + return refract(i, n, eta); +} + +fixed2 refract(fixed2 i, fixed2 n, fixed eta) +{ + return refract(i, n, eta); +} + +fixed3 refract(fixed3 i, fixed3 n, fixed eta) +{ + return refract(i, n, eta); +} + +fixed4 refract(fixed4 i, fixed4 n, fixed eta) +{ + return refract(i, n, eta); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/round.cpp b/extensions/externals/src/cg4cpp/round.cpp new file mode 100644 index 0000000..7da5900 --- /dev/null +++ b/extensions/externals/src/cg4cpp/round.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float round(float v) +{ + return round(v); +} + +float1 round(float1 v) +{ + return round(v); +} + +float2 round(float2 v) +{ + return round(v); +} + +float3 round(float3 v) +{ + return round(v); +} + +float4 round(float4 v) +{ + return round(v); +} + +double round(double v) +{ + return round(v); +} + +double1 round(double1 v) +{ + return round(v); +} + +double2 round(double2 v) +{ + return round(v); +} + +double3 round(double3 v) +{ + return round(v); +} + +double4 round(double4 v) +{ + return round(v); +} + +half round(half v) +{ + return round(v); +} + +half1 round(half1 v) +{ + return round(v); +} + +half2 round(half2 v) +{ + return round(v); +} + +half3 round(half3 v) +{ + return round(v); +} + +half4 round(half4 v) +{ + return round(v); +} + +fixed round(fixed v) +{ + return round(v); +} + +fixed1 round(fixed1 v) +{ + return round(v); +} + +fixed2 round(fixed2 v) +{ + return round(v); +} + +fixed3 round(fixed3 v) +{ + return round(v); +} + +fixed4 round(fixed4 v) +{ + return round(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/rsqrt.cpp b/extensions/externals/src/cg4cpp/rsqrt.cpp new file mode 100644 index 0000000..79b3eff --- /dev/null +++ b/extensions/externals/src/cg4cpp/rsqrt.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float rsqrt(float v) +{ + return rsqrt(v); +} + +float1 rsqrt(float1 v) +{ + return rsqrt(v); +} + +float2 rsqrt(float2 v) +{ + return rsqrt(v); +} + +float3 rsqrt(float3 v) +{ + return rsqrt(v); +} + +float4 rsqrt(float4 v) +{ + return rsqrt(v); +} + +double rsqrt(double v) +{ + return rsqrt(v); +} + +double1 rsqrt(double1 v) +{ + return rsqrt(v); +} + +double2 rsqrt(double2 v) +{ + return rsqrt(v); +} + +double3 rsqrt(double3 v) +{ + return rsqrt(v); +} + +double4 rsqrt(double4 v) +{ + return rsqrt(v); +} + +half rsqrt(half v) +{ + return rsqrt(v); +} + +half1 rsqrt(half1 v) +{ + return rsqrt(v); +} + +half2 rsqrt(half2 v) +{ + return rsqrt(v); +} + +half3 rsqrt(half3 v) +{ + return rsqrt(v); +} + +half4 rsqrt(half4 v) +{ + return rsqrt(v); +} + +fixed rsqrt(fixed v) +{ + return rsqrt(v); +} + +fixed1 rsqrt(fixed1 v) +{ + return rsqrt(v); +} + +fixed2 rsqrt(fixed2 v) +{ + return rsqrt(v); +} + +fixed3 rsqrt(fixed3 v) +{ + return rsqrt(v); +} + +fixed4 rsqrt(fixed4 v) +{ + return rsqrt(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/sampler2D_state.hpp b/extensions/externals/src/cg4cpp/sampler2D_state.hpp new file mode 100644 index 0000000..96aad06 --- /dev/null +++ b/extensions/externals/src/cg4cpp/sampler2D_state.hpp @@ -0,0 +1,52 @@ + +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include "sampler_state.hpp" + +namespace Cg { + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(push) +#pragma warning(disable:4512) // assignment operator could not be generated +#endif + +class __CGsampler2D_state : public __CGsampler_state { + __CGimage image[maxLevels]; + + virtual void initImages(); + + virtual ~__CGsampler2D_state() { } + + virtual float4 linearFilter(int level, float4 strq); + virtual float4 nearestFilter(int level, float4 strq); + + virtual float4 nearest(const __CGimage &image, float4 strq); + virtual float4 linear(const __CGimage &image, float4 strq); + +public: + __CGsampler2D_state() { + initDerivedSampler(GL_TEXTURE_2D); + } + __CGsampler2D_state(int unit) { + initDerivedSampler(GL_TEXTURE_2D, unit); + } + float4 sample(float4 strq, float lod); + int3 size(int1 lod); +}; + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(pop) +#endif + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/sampler_state.hpp b/extensions/externals/src/cg4cpp/sampler_state.hpp new file mode 100644 index 0000000..ca2ad0d --- /dev/null +++ b/extensions/externals/src/cg4cpp/sampler_state.hpp @@ -0,0 +1,259 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ +/* + * Copyright 2005 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#ifndef __sampler_state_hpp__ +#define __sampler_state_hpp__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +//#include +#include +#include + +// All this cruft just to include the Windows without including +#ifdef _WIN32 +# ifndef APIENTRY +# define __CG_APIENTRY_DEFINED + /* Cygwin and MingW32 are two free GNU-based Open Source compilation + environments for Win32. Note that __CYGWIN32__ is deprecated + in favor of simply __CYGWIN__. */ +# if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__) +# ifdef i386 +# define APIENTRY __attribute__ ((stdcall)) +# else +# define APIENTRY +# endif +# else +# if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) +# define APIENTRY __stdcall +# else +# define APIENTRY +# endif +# endif +# endif + /* This is from Win32's and */ +# ifndef WINGDIAPI +# define __CG_WINGDIAPI_DEFINED +# if defined(__MINGW32__) || defined(__CYGWIN32__) || defined(__CYGWIN__) +# define WINGDIAPI +# else +# define WINGDIAPI __declspec(dllimport) +# endif +# endif +#endif +#ifdef __APPLE__ +# include +# include +#else +# include +# include +#endif + +#ifdef __CG_APIENTRY_DEFINED +# undef __CG_APIENTRY_DEFINED +# undef APIENTRY +#endif + +#ifdef __CG_WINGDIAPI_DEFINED +# undef __CG_WINGDIAPI_DEFINED +# undef WINGDIAPI +#endif + +// OpenGL tokens +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E + +namespace Cg { + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(push) +#pragma warning(disable:4512) // assignment operator could not be generated +#endif + +class __CGimage { + friend class __CGsampler1D_state; + friend class __CGsampler1DARRAY_state; // EXT_texture_array + friend class __CGsampler2D_state; + friend class __CGsampler2DARRAY_state; // EXT_texture_array + friend class __CGsampler3D_state; + friend class __CGsamplerCUBE_state; + friend class __CGsamplerRECT_state; // ARB_texture_rectangle + friend class __CGsamplerBUF_state; // EXT_texture_buffer_object + + __CGimage() : data(NULL) { } // private constructor; I only play with my friends! + ~__CGimage() { + delete [] data; + } + + // API state + GLenum internalFormat; + GLint width, height, depth; + GLint border; + + // Texture image data (floats returned by glGetTexImage) + float *data; + + void deriveFormatBasedState(); + + // API-derived state + GLenum format; // Base format + int components; // Number of components (1, 2, 3, or 4) + bool clamped; // Should the border values be clamped? + float4 clampMin, clampMax; // Range to clamp border values to if clamped is true + int3 borderSize; // Size of border in each dimension + int3 borderlessSize; // Size of image without border in each dimension + float3 borderlessSizeF; // float version of borderlessSize + + void initImage(GLenum target, GLint level, int3 targetBorderSupport); + + float4 fetch(int1 u, int1 v, int1 p, const float4 &borderValues) const; +}; + +class __CGsampler_state { + + friend class __CGsampler_GL_factory; + + typedef struct { + GLint swapbytes, rowlength, imageheight; + GLint skiprows, skippixels, skipimages, alignment; + } PixelStoreState; + + int refcnt; + +protected: + __CGsampler_state() : refcnt(1) { } + + static const int maxLevels = 13; // 2^(13-1) = 4096 max base level dimension size + + GLenum texTarget; + GLenum texUnit; + + // API state + GLint baseLevel, maxLevel; + GLfloat minLod, maxLod; + GLenum magFilter, minFilter; + GLenum wrapS, wrapT, wrapR; + GLfloat borderValues[4]; + GLfloat lodBias; + GLenum compareMode, compareFunc, depthTextureMode; // Just for depth textures + + // API-derived state + float magnifyTransition; + float clampedLodBias; + int trueBaseLevel; + int effectiveMaxLevel; + float4 clampedBorderValues; + GLenum prefilterMode; + + // Static helper methods for initialization + static void initExtensionFuncs(); + static void savePackPixelStoreState(PixelStoreState &state); + static void restorePackPixelStoreState(PixelStoreState &state); + // Static helper methods for wrap modes + static int modulo(int numer, int denom); + static int1 mirrorNearest(int numer, int denom); + static int2 mirrorLinear(int numer, int denom); + static int1 wrapNearest(GLenum wrapMode, int1 size, float1 coord); + static int2 wrapLinear(GLenum wrapMode, int1 size, float1 coord, float &wrappedCoord); + // Static helper methods for filtering + static float4 linear1D(float4 tex[2], float1 weight); + static float4 linear2D(float4 tex[2][2], float2 weight); + static float4 linear3D(float4 tex[2][2][2], float3 weight); + + // Constructor-related methods + virtual void initSampler(); + virtual void initDerivedSampler(GLenum texTarget); + virtual void initDerivedSampler(GLenum texTarget, int unit); + + virtual void initImages() = 0; + + virtual float4 prefilter(const float4 &texel, float1 r); + + virtual float4 minify(int ndx, float4 strq, float1 lod); + virtual float4 magnify(int ndx, float4 strq); + + virtual float4 linearFilter(int level, float4 strq) = 0; + virtual float4 nearestFilter(int level, float4 strq) = 0; + + virtual float4 nearest(const __CGimage &x, float4 strq) = 0; + virtual float4 linear(const __CGimage &x, float4 strq) = 0; + + virtual ~__CGsampler_state() { }; + +public: + void ref() { + refcnt++; + }; + void unref() { + refcnt--; + if (0 == refcnt) { + delete this; + } + } +}; + +#if defined(_MSC_VER) && !defined(__EDG__) // Visual C++ but not EDG fakery +#pragma warning(pop) +#endif + +} // namespace Cg + +#endif // __sampler_state_hpp__ diff --git a/extensions/externals/src/cg4cpp/saturate.cpp b/extensions/externals/src/cg4cpp/saturate.cpp new file mode 100644 index 0000000..a5c21d5 --- /dev/null +++ b/extensions/externals/src/cg4cpp/saturate.cpp @@ -0,0 +1,141 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int saturate(int v) +{ + return saturate(v); +} + +int1 saturate(int1 v) +{ + return saturate(v); +} + +int2 saturate(int2 v) +{ + return saturate(v); +} + +int3 saturate(int3 v) +{ + return saturate(v); +} + +int4 saturate(int4 v) +{ + return saturate(v); +} + +float saturate(float v) +{ + return saturate(v); +} + +float1 saturate(float1 v) +{ + return saturate(v); +} + +float2 saturate(float2 v) +{ + return saturate(v); +} + +float3 saturate(float3 v) +{ + return saturate(v); +} + +float4 saturate(float4 v) +{ + return saturate(v); +} + +double saturate(double v) +{ + return saturate(v); +} + +double1 saturate(double1 v) +{ + return saturate(v); +} + +double2 saturate(double2 v) +{ + return saturate(v); +} + +double3 saturate(double3 v) +{ + return saturate(v); +} + +double4 saturate(double4 v) +{ + return saturate(v); +} + +half saturate(half v) +{ + return saturate(v); +} + +half1 saturate(half1 v) +{ + return saturate(v); +} + +half2 saturate(half2 v) +{ + return saturate(v); +} + +half3 saturate(half3 v) +{ + return saturate(v); +} + +half4 saturate(half4 v) +{ + return saturate(v); +} + +fixed saturate(fixed v) +{ + return saturate(v); +} + +fixed1 saturate(fixed1 v) +{ + return saturate(v); +} + +fixed2 saturate(fixed2 v) +{ + return saturate(v); +} + +fixed3 saturate(fixed3 v) +{ + return saturate(v); +} + +fixed4 saturate(fixed4 v) +{ + return saturate(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/sign.cpp b/extensions/externals/src/cg4cpp/sign.cpp new file mode 100644 index 0000000..7c7af47 --- /dev/null +++ b/extensions/externals/src/cg4cpp/sign.cpp @@ -0,0 +1,141 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int sign(int v) +{ + return sign(v); +} + +int1 sign(int1 v) +{ + return sign(v); +} + +int2 sign(int2 v) +{ + return sign(v); +} + +int3 sign(int3 v) +{ + return sign(v); +} + +int4 sign(int4 v) +{ + return sign(v); +} + +float sign(float v) +{ + return sign(v); +} + +float1 sign(float1 v) +{ + return sign(v); +} + +float2 sign(float2 v) +{ + return sign(v); +} + +float3 sign(float3 v) +{ + return sign(v); +} + +float4 sign(float4 v) +{ + return sign(v); +} + +double sign(double v) +{ + return sign(v); +} + +double1 sign(double1 v) +{ + return sign(v); +} + +double2 sign(double2 v) +{ + return sign(v); +} + +double3 sign(double3 v) +{ + return sign(v); +} + +double4 sign(double4 v) +{ + return sign(v); +} + +half sign(half v) +{ + return sign(v); +} + +half1 sign(half1 v) +{ + return sign(v); +} + +half2 sign(half2 v) +{ + return sign(v); +} + +half3 sign(half3 v) +{ + return sign(v); +} + +half4 sign(half4 v) +{ + return sign(v); +} + +fixed sign(fixed v) +{ + return sign(v); +} + +fixed1 sign(fixed1 v) +{ + return sign(v); +} + +fixed2 sign(fixed2 v) +{ + return sign(v); +} + +fixed3 sign(fixed3 v) +{ + return sign(v); +} + +fixed4 sign(fixed4 v) +{ + return sign(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/sin.cpp b/extensions/externals/src/cg4cpp/sin.cpp new file mode 100644 index 0000000..0d2b9ed --- /dev/null +++ b/extensions/externals/src/cg4cpp/sin.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float sin(float v) +{ + return sin(v); +} + +float1 sin(float1 v) +{ + return sin(v); +} + +float2 sin(float2 v) +{ + return sin(v); +} + +float3 sin(float3 v) +{ + return sin(v); +} + +float4 sin(float4 v) +{ + return sin(v); +} + +double sin(double v) +{ + return sin(v); +} + +double1 sin(double1 v) +{ + return sin(v); +} + +double2 sin(double2 v) +{ + return sin(v); +} + +double3 sin(double3 v) +{ + return sin(v); +} + +double4 sin(double4 v) +{ + return sin(v); +} + +half sin(half v) +{ + return sin(v); +} + +half1 sin(half1 v) +{ + return sin(v); +} + +half2 sin(half2 v) +{ + return sin(v); +} + +half3 sin(half3 v) +{ + return sin(v); +} + +half4 sin(half4 v) +{ + return sin(v); +} + +fixed sin(fixed v) +{ + return sin(v); +} + +fixed1 sin(fixed1 v) +{ + return sin(v); +} + +fixed2 sin(fixed2 v) +{ + return sin(v); +} + +fixed3 sin(fixed3 v) +{ + return sin(v); +} + +fixed4 sin(fixed4 v) +{ + return sin(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/sincos.cpp b/extensions/externals/src/cg4cpp/sincos.cpp new file mode 100644 index 0000000..117a363 --- /dev/null +++ b/extensions/externals/src/cg4cpp/sincos.cpp @@ -0,0 +1,108 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include +#include + +#include // for std::sin & std::cos + +namespace Cg { + +template +static inline void sincos(__CGvector v, __CGvector &s, __CGvector &c) +{ + for (int i=0; i s, Out c) +{ + sincos(v, s, c); +} + +void sincos(float2 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(float3 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(float4 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(double1 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(double2 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(double3 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(double4 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(half1 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(half2 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(half3 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(half4 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(fixed1 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(fixed2 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(fixed3 v, Out s, Out c) +{ + sincos(v, s, c); +} + +void sincos(fixed4 v, Out s, Out c) +{ + sincos(v, s, c); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/sinh.cpp b/extensions/externals/src/cg4cpp/sinh.cpp new file mode 100644 index 0000000..61b55d1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/sinh.cpp @@ -0,0 +1,103 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float sinh(float v) +{ + return sinh(v); +} +float1 sinh(float1 v) +{ + return sinh(v); +} + +float2 sinh(float2 v) +{ + return sinh(v); +} + +float3 sinh(float3 v) +{ + return sinh(v); +} + +float4 sinh(float4 v) +{ + return sinh(v); +} + +double1 sinh(double1 v) +{ + return sinh(v); +} + +double2 sinh(double2 v) +{ + return sinh(v); +} + +double3 sinh(double3 v) +{ + return sinh(v); +} + +double4 sinh(double4 v) +{ + return sinh(v); +} + +half sinh(half v) +{ + return sinh(v); +} +half1 sinh(half1 v) +{ + return sinh(v); +} + +half2 sinh(half2 v) +{ + return sinh(v); +} + +half3 sinh(half3 v) +{ + return sinh(v); +} + +half4 sinh(half4 v) +{ + return sinh(v); +} + +fixed1 sinh(fixed1 v) +{ + return sinh(v); +} + +fixed2 sinh(fixed2 v) +{ + return sinh(v); +} + +fixed3 sinh(fixed3 v) +{ + return sinh(v); +} + +fixed4 sinh(fixed4 v) +{ + return sinh(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/smoothstep.cpp b/extensions/externals/src/cg4cpp/smoothstep.cpp new file mode 100644 index 0000000..1606553 --- /dev/null +++ b/extensions/externals/src/cg4cpp/smoothstep.cpp @@ -0,0 +1,84 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float1 smoothstep(float1 a, float1 b, float1 x) +{ + return smoothstep(a, b, x); +} +float2 smoothstep(float2 a, float2 b, float2 x) +{ + return smoothstep(a, b, x); +} +float3 smoothstep(float3 a, float3 b, float3 x) +{ + return smoothstep(a, b, x); +} +float4 smoothstep(float4 a, float4 b, float4 x) +{ + return smoothstep(a, b, x); +} + +half1 smoothstep(half1 a, half1 b, half1 x) +{ + return smoothstep(a, b, x); +} +half2 smoothstep(half2 a, half2 b, half2 x) +{ + return smoothstep(a, b, x); +} +half3 smoothstep(half3 a, half3 b, half3 x) +{ + return smoothstep(a, b, x); +} +half4 smoothstep(half4 a, half4 b, half4 x) +{ + return smoothstep(a, b, x); +} + +fixed1 smoothstep(fixed1 a, fixed1 b, fixed1 x) +{ + return smoothstep(a, b, x); +} +fixed2 smoothstep(fixed2 a, fixed2 b, fixed2 x) +{ + return smoothstep(a, b, x); +} +fixed3 smoothstep(fixed3 a, fixed3 b, fixed3 x) +{ + return smoothstep(a, b, x); +} +fixed4 smoothstep(fixed4 a, fixed4 b, fixed4 x) +{ + return smoothstep(a, b, x); +} + +double1 smoothstep(double1 a, double1 b, double1 x) +{ + return smoothstep(a, b, x); +} +double2 smoothstep(double2 a, double2 b, double2 x) +{ + return smoothstep(a, b, x); +} +double3 smoothstep(double3 a, double3 b, double3 x) +{ + return smoothstep(a, b, x); +} +double4 smoothstep(double4 a, double4 b, double4 x) +{ + return smoothstep(a, b, x); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/sqrt.cpp b/extensions/externals/src/cg4cpp/sqrt.cpp new file mode 100644 index 0000000..70c2695 --- /dev/null +++ b/extensions/externals/src/cg4cpp/sqrt.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float sqrt(float v) +{ + return sqrt(v); +} + +float1 sqrt(float1 v) +{ + return sqrt(v); +} + +float2 sqrt(float2 v) +{ + return sqrt(v); +} + +float3 sqrt(float3 v) +{ + return sqrt(v); +} + +float4 sqrt(float4 v) +{ + return sqrt(v); +} + +double sqrt(double v) +{ + return sqrt(v); +} + +double1 sqrt(double1 v) +{ + return sqrt(v); +} + +double2 sqrt(double2 v) +{ + return sqrt(v); +} + +double3 sqrt(double3 v) +{ + return sqrt(v); +} + +double4 sqrt(double4 v) +{ + return sqrt(v); +} + +half sqrt(half v) +{ + return sqrt(v); +} + +half1 sqrt(half1 v) +{ + return sqrt(v); +} + +half2 sqrt(half2 v) +{ + return sqrt(v); +} + +half3 sqrt(half3 v) +{ + return sqrt(v); +} + +half4 sqrt(half4 v) +{ + return sqrt(v); +} + +fixed sqrt(fixed v) +{ + return sqrt(v); +} + +fixed1 sqrt(fixed1 v) +{ + return sqrt(v); +} + +fixed2 sqrt(fixed2 v) +{ + return sqrt(v); +} + +fixed3 sqrt(fixed3 v) +{ + return sqrt(v); +} + +fixed4 sqrt(fixed4 v) +{ + return sqrt(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/step.cpp b/extensions/externals/src/cg4cpp/step.cpp new file mode 100644 index 0000000..884e01a --- /dev/null +++ b/extensions/externals/src/cg4cpp/step.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +int1 step(int1 a, int1 x) +{ + return step(a, x); +} + +int2 step(int2 a, int2 x) +{ + return step(a, x); +} + +int3 step(int3 a, int3 x) +{ + return step(a, x); +} + +int4 step(int4 a, int4 x) +{ + return step(a, x); +} + +float1 step(float1 a, float1 x) +{ + return step(a, x);; +} + +float2 step(float2 a, float2 x) +{ + return step(a, x); +} + +float3 step(float3 a, float3 x) +{ + return step(a, x); +} + +float4 step(float4 a, float4 x) +{ + return step(a, x); +} + +double1 step(double1 a, double1 x) +{ + return step(a, x); +} + +double2 step(double2 a, double2 x) +{ + return step(a, x); +} + +double3 step(double3 a, double3 x) +{ + return step(a, x); +} + +double4 step(double4 a, double4 x) +{ + return step(a, x); +} + +half1 step(half1 a, half1 x) +{ + return step(a, x); +} + +half2 step(half2 a, half2 x) +{ + return step(a, x); +} + +half3 step(half3 a, half3 x) +{ + return step(a, x); +} + +half4 step(half4 a, half4 x) +{ + return step(a, x); +} + +fixed1 step(fixed1 a, fixed1 x) +{ + return step(a, x); +} + +fixed2 step(fixed2 a, fixed2 x) +{ + return step(a, x); +} + +fixed3 step(fixed3 a, fixed3 x) +{ + return step(a, x); +} + +fixed4 step(fixed4 a, fixed4 x) +{ + return step(a, x); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/tan.cpp b/extensions/externals/src/cg4cpp/tan.cpp new file mode 100644 index 0000000..c1c1d36 --- /dev/null +++ b/extensions/externals/src/cg4cpp/tan.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float tan(float v) +{ + return tan(v); +} + +float1 tan(float1 v) +{ + return tan(v); +} + +float2 tan(float2 v) +{ + return tan(v); +} + +float3 tan(float3 v) +{ + return tan(v); +} + +float4 tan(float4 v) +{ + return tan(v); +} + +double tan(double v) +{ + return tan(v); +} + +double1 tan(double1 v) +{ + return tan(v); +} + +double2 tan(double2 v) +{ + return tan(v); +} + +double3 tan(double3 v) +{ + return tan(v); +} + +double4 tan(double4 v) +{ + return tan(v); +} + +half tan(half v) +{ + return tan(v); +} + +half1 tan(half1 v) +{ + return tan(v); +} + +half2 tan(half2 v) +{ + return tan(v); +} + +half3 tan(half3 v) +{ + return tan(v); +} + +half4 tan(half4 v) +{ + return tan(v); +} + +fixed tan(fixed v) +{ + return tan(v); +} + +fixed1 tan(fixed1 v) +{ + return tan(v); +} + +fixed2 tan(fixed2 v) +{ + return tan(v); +} + +fixed3 tan(fixed3 v) +{ + return tan(v); +} + +fixed4 tan(fixed4 v) +{ + return tan(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/tanh.cpp b/extensions/externals/src/cg4cpp/tanh.cpp new file mode 100644 index 0000000..ea2f03a --- /dev/null +++ b/extensions/externals/src/cg4cpp/tanh.cpp @@ -0,0 +1,115 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float tanh(float v) +{ + return tanh(v); +} + +float1 tanh(float1 v) +{ + return tanh(v); +} + +float2 tanh(float2 v) +{ + return tanh(v); +} + +float3 tanh(float3 v) +{ + return tanh(v); +} + +float4 tanh(float4 v) +{ + return tanh(v); +} + +double tanh(double v) +{ + return tanh(v); +} + +double1 tanh(double1 v) +{ + return tanh(v); +} + +double2 tanh(double2 v) +{ + return tanh(v); +} + +double3 tanh(double3 v) +{ + return tanh(v); +} + +double4 tanh(double4 v) +{ + return tanh(v); +} + +half tanh(half v) +{ + return tanh(v); +} + +half1 tanh(half1 v) +{ + return tanh(v); +} + +half2 tanh(half2 v) +{ + return tanh(v); +} + +half3 tanh(half3 v) +{ + return tanh(v); +} + +half4 tanh(half4 v) +{ + return tanh(v); +} + +fixed tanh(fixed v) +{ + return tanh(v); +} + +fixed1 tanh(fixed1 v) +{ + return tanh(v); +} + +fixed2 tanh(fixed2 v) +{ + return tanh(v); +} + +fixed3 tanh(fixed3 v) +{ + return tanh(v); +} + +fixed4 tanh(fixed4 v) +{ + return tanh(v); +} + +} // namespace Cg diff --git a/extensions/externals/src/cg4cpp/transpose.cpp b/extensions/externals/src/cg4cpp/transpose.cpp new file mode 100644 index 0000000..c14effe --- /dev/null +++ b/extensions/externals/src/cg4cpp/transpose.cpp @@ -0,0 +1,144 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float4x4 transpose(float4x4 a) +{ + return transpose(a); +} +float3x4 transpose(float4x3 a) +{ + return transpose(a); +} +float2x4 transpose(float4x2 a) +{ + return transpose(a); +} +float1x4 transpose(float4x1 a) +{ + return transpose(a); +} +float4x3 transpose(float3x4 a) +{ + return transpose(a); +} +float3x3 transpose(float3x3 a) +{ + return transpose(a); +} +float2x3 transpose(float3x2 a) +{ + return transpose(a); +} +float1x3 transpose(float3x1 a) +{ + return transpose(a); +} +float4x2 transpose(float2x4 a) +{ + return transpose(a); +} +float3x2 transpose(float2x3 a) +{ + return transpose(a); +} +float2x2 transpose(float2x2 a) +{ + return transpose(a); +} +float1x2 transpose(float2x1 a) +{ + return transpose(a); +} +float4x1 transpose(float1x4 a) +{ + return transpose(a); +} +float3x1 transpose(float1x3 a) +{ + return transpose(a); +} +float2x1 transpose(float1x2 a) +{ + return transpose(a); +} +float1x1 transpose(float1x1 a) +{ + return transpose(a); +} + +double4x4 transpose(double4x4 a) +{ + return transpose(a); +} +double3x4 transpose(double4x3 a) +{ + return transpose(a); +} +double2x4 transpose(double4x2 a) +{ + return transpose(a); +} +double1x4 transpose(double4x1 a) +{ + return transpose(a); +} +double4x3 transpose(double3x4 a) +{ + return transpose(a); +} +double3x3 transpose(double3x3 a) +{ + return transpose(a); +} +double2x3 transpose(double3x2 a) +{ + return transpose(a); +} +double1x3 transpose(double3x1 a) +{ + return transpose(a); +} +double4x2 transpose(double2x4 a) +{ + return transpose(a); +} +double3x2 transpose(double2x3 a) +{ + return transpose(a); +} +double2x2 transpose(double2x2 a) +{ + return transpose(a); +} +double1x2 transpose(double2x1 a) +{ + return transpose(a); +} +double4x1 transpose(double1x4 a) +{ + return transpose(a); +} +double3x1 transpose(double1x3 a) +{ + return transpose(a); +} +double2x1 transpose(double1x2 a) +{ + return transpose(a); +} +double1x1 transpose(double1x1 a) +{ + return transpose(a); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/trunc.cpp b/extensions/externals/src/cg4cpp/trunc.cpp new file mode 100644 index 0000000..e9293b5 --- /dev/null +++ b/extensions/externals/src/cg4cpp/trunc.cpp @@ -0,0 +1,116 @@ +/* + * Copyright 2006 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include +#include +#include + +namespace Cg { + +float trunc(float v) +{ + return trunc(v); +} + +float1 trunc(float1 v) +{ + return trunc(v); +} + +float2 trunc(float2 v) +{ + return trunc(v); +} + +float3 trunc(float3 v) +{ + return trunc(v); +} + +float4 trunc(float4 v) +{ + return trunc(v); +} + +double trunc(double v) +{ + return trunc(v); +} + +double1 trunc(double1 v) +{ + return trunc(v); +} + +double2 trunc(double2 v) +{ + return trunc(v); +} + +double3 trunc(double3 v) +{ + return trunc(v); +} + +double4 trunc(double4 v) +{ + return trunc(v); +} + +half trunc(half v) +{ + return trunc(v); +} + +half1 trunc(half1 v) +{ + return trunc(v); +} + +half2 trunc(half2 v) +{ + return trunc(v); +} + +half3 trunc(half3 v) +{ + return trunc(v); +} + +half4 trunc(half4 v) +{ + return trunc(v); +} + +fixed trunc(fixed v) +{ + return trunc(v); +} + +fixed1 trunc(fixed1 v) +{ + return trunc(v); +} + +fixed2 trunc(fixed2 v) +{ + return trunc(v); +} + +fixed3 trunc(fixed3 v) +{ + return trunc(v); +} + +fixed4 trunc(fixed4 v) +{ + return trunc(v); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper1x1.cpp b/extensions/externals/src/cg4cpp/upper1x1.cpp new file mode 100644 index 0000000..b2e27c7 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper1x1.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float1x1 upper1x1(float1x1 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float1x2 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float1x3 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float1x4 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float2x1 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float2x2 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float2x3 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float2x4 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float3x1 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float3x2 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float3x3 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float3x4 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float4x1 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float4x2 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float4x3 m) +{ + return upper1x1(m); +} + +float1x1 upper1x1(float4x4 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double1x1 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double1x2 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double1x3 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double1x4 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double2x1 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double2x2 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double2x3 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double2x4 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double3x1 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double3x2 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double3x3 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double3x4 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double4x1 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double4x2 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double4x3 m) +{ + return upper1x1(m); +} + +double1x1 upper1x1(double4x4 m) +{ + return upper1x1(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper1x2.cpp b/extensions/externals/src/cg4cpp/upper1x2.cpp new file mode 100644 index 0000000..f320b0c --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper1x2.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float1x2 upper1x2(float1x1 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float1x2 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float1x3 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float1x4 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float2x1 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float2x2 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float2x3 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float2x4 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float3x1 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float3x2 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float3x3 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float3x4 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float4x1 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float4x2 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float4x3 m) +{ + return upper1x2(m); +} + +float1x2 upper1x2(float4x4 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double1x1 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double1x2 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double1x3 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double1x4 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double2x1 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double2x2 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double2x3 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double2x4 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double3x1 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double3x2 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double3x3 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double3x4 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double4x1 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double4x2 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double4x3 m) +{ + return upper1x2(m); +} + +double1x2 upper1x2(double4x4 m) +{ + return upper1x2(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper1x3.cpp b/extensions/externals/src/cg4cpp/upper1x3.cpp new file mode 100644 index 0000000..1282c8c --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper1x3.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float1x3 upper1x3(float1x1 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float1x2 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float1x3 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float1x4 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float2x1 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float2x2 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float2x3 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float2x4 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float3x1 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float3x2 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float3x3 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float3x4 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float4x1 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float4x2 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float4x3 m) +{ + return upper1x3(m); +} + +float1x3 upper1x3(float4x4 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double1x1 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double1x2 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double1x3 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double1x4 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double2x1 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double2x2 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double2x3 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double2x4 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double3x1 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double3x2 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double3x3 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double3x4 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double4x1 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double4x2 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double4x3 m) +{ + return upper1x3(m); +} + +double1x3 upper1x3(double4x4 m) +{ + return upper1x3(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper1x4.cpp b/extensions/externals/src/cg4cpp/upper1x4.cpp new file mode 100644 index 0000000..9a80257 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper1x4.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float1x4 upper1x4(float1x1 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float1x2 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float1x3 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float1x4 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float2x1 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float2x2 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float2x3 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float2x4 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float3x1 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float3x2 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float3x3 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float3x4 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float4x1 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float4x2 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float4x3 m) +{ + return upper1x4(m); +} + +float1x4 upper1x4(float4x4 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double1x1 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double1x2 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double1x3 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double1x4 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double2x1 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double2x2 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double2x3 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double2x4 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double3x1 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double3x2 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double3x3 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double3x4 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double4x1 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double4x2 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double4x3 m) +{ + return upper1x4(m); +} + +double1x4 upper1x4(double4x4 m) +{ + return upper1x4(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper2x1.cpp b/extensions/externals/src/cg4cpp/upper2x1.cpp new file mode 100644 index 0000000..5fadf1e --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper2x1.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float2x1 upper2x1(float1x1 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float1x2 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float1x3 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float1x4 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float2x1 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float2x2 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float2x3 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float2x4 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float3x1 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float3x2 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float3x3 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float3x4 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float4x1 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float4x2 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float4x3 m) +{ + return upper2x1(m); +} + +float2x1 upper2x1(float4x4 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double1x1 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double1x2 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double1x3 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double1x4 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double2x1 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double2x2 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double2x3 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double2x4 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double3x1 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double3x2 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double3x3 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double3x4 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double4x1 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double4x2 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double4x3 m) +{ + return upper2x1(m); +} + +double2x1 upper2x1(double4x4 m) +{ + return upper2x1(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper2x2.cpp b/extensions/externals/src/cg4cpp/upper2x2.cpp new file mode 100644 index 0000000..cc60526 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper2x2.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float2x2 upper2x2(float1x1 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float1x2 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float1x3 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float1x4 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float2x1 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float2x2 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float2x3 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float2x4 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float3x1 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float3x2 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float3x3 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float3x4 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float4x1 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float4x2 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float4x3 m) +{ + return upper2x2(m); +} + +float2x2 upper2x2(float4x4 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double1x1 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double1x2 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double1x3 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double1x4 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double2x1 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double2x2 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double2x3 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double2x4 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double3x1 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double3x2 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double3x3 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double3x4 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double4x1 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double4x2 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double4x3 m) +{ + return upper2x2(m); +} + +double2x2 upper2x2(double4x4 m) +{ + return upper2x2(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper2x3.cpp b/extensions/externals/src/cg4cpp/upper2x3.cpp new file mode 100644 index 0000000..81f9b97 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper2x3.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float2x3 upper2x3(float1x1 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float1x2 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float1x3 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float1x4 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float2x1 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float2x2 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float2x3 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float2x4 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float3x1 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float3x2 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float3x3 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float3x4 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float4x1 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float4x2 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float4x3 m) +{ + return upper2x3(m); +} + +float2x3 upper2x3(float4x4 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double1x1 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double1x2 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double1x3 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double1x4 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double2x1 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double2x2 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double2x3 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double2x4 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double3x1 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double3x2 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double3x3 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double3x4 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double4x1 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double4x2 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double4x3 m) +{ + return upper2x3(m); +} + +double2x3 upper2x3(double4x4 m) +{ + return upper2x3(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper2x4.cpp b/extensions/externals/src/cg4cpp/upper2x4.cpp new file mode 100644 index 0000000..98b8d06 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper2x4.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float2x4 upper2x4(float1x1 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float1x2 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float1x3 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float1x4 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float2x1 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float2x2 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float2x3 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float2x4 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float3x1 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float3x2 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float3x3 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float3x4 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float4x1 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float4x2 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float4x3 m) +{ + return upper2x4(m); +} + +float2x4 upper2x4(float4x4 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double1x1 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double1x2 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double1x3 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double1x4 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double2x1 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double2x2 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double2x3 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double2x4 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double3x1 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double3x2 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double3x3 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double3x4 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double4x1 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double4x2 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double4x3 m) +{ + return upper2x4(m); +} + +double2x4 upper2x4(double4x4 m) +{ + return upper2x4(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper3x1.cpp b/extensions/externals/src/cg4cpp/upper3x1.cpp new file mode 100644 index 0000000..6f51055 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper3x1.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float3x1 upper3x1(float1x1 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float1x2 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float1x3 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float1x4 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float2x1 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float2x2 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float2x3 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float2x4 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float3x1 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float3x2 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float3x3 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float3x4 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float4x1 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float4x2 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float4x3 m) +{ + return upper3x1(m); +} + +float3x1 upper3x1(float4x4 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double1x1 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double1x2 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double1x3 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double1x4 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double2x1 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double2x2 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double2x3 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double2x4 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double3x1 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double3x2 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double3x3 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double3x4 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double4x1 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double4x2 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double4x3 m) +{ + return upper3x1(m); +} + +double3x1 upper3x1(double4x4 m) +{ + return upper3x1(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper3x2.cpp b/extensions/externals/src/cg4cpp/upper3x2.cpp new file mode 100644 index 0000000..f97a8c5 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper3x2.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float3x2 upper3x2(float1x1 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float1x2 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float1x3 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float1x4 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float2x1 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float2x2 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float2x3 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float2x4 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float3x1 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float3x2 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float3x3 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float3x4 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float4x1 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float4x2 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float4x3 m) +{ + return upper3x2(m); +} + +float3x2 upper3x2(float4x4 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double1x1 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double1x2 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double1x3 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double1x4 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double2x1 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double2x2 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double2x3 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double2x4 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double3x1 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double3x2 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double3x3 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double3x4 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double4x1 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double4x2 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double4x3 m) +{ + return upper3x2(m); +} + +double3x2 upper3x2(double4x4 m) +{ + return upper3x2(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper3x3.cpp b/extensions/externals/src/cg4cpp/upper3x3.cpp new file mode 100644 index 0000000..da017c9 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper3x3.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float3x3 upper3x3(float1x1 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float1x2 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float1x3 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float1x4 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float2x1 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float2x2 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float2x3 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float2x4 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float3x1 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float3x2 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float3x3 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float3x4 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float4x1 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float4x2 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float4x3 m) +{ + return upper3x3(m); +} + +float3x3 upper3x3(float4x4 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double1x1 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double1x2 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double1x3 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double1x4 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double2x1 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double2x2 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double2x3 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double2x4 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double3x1 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double3x2 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double3x3 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double3x4 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double4x1 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double4x2 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double4x3 m) +{ + return upper3x3(m); +} + +double3x3 upper3x3(double4x4 m) +{ + return upper3x3(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper3x4.cpp b/extensions/externals/src/cg4cpp/upper3x4.cpp new file mode 100644 index 0000000..ebc5bf0 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper3x4.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float3x4 upper3x4(float1x1 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float1x2 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float1x3 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float1x4 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float2x1 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float2x2 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float2x3 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float2x4 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float3x1 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float3x2 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float3x3 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float3x4 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float4x1 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float4x2 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float4x3 m) +{ + return upper3x4(m); +} + +float3x4 upper3x4(float4x4 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double1x1 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double1x2 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double1x3 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double1x4 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double2x1 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double2x2 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double2x3 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double2x4 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double3x1 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double3x2 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double3x3 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double3x4 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double4x1 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double4x2 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double4x3 m) +{ + return upper3x4(m); +} + +double3x4 upper3x4(double4x4 m) +{ + return upper3x4(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper4x1.cpp b/extensions/externals/src/cg4cpp/upper4x1.cpp new file mode 100644 index 0000000..da65ca0 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper4x1.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float4x1 upper4x1(float1x1 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float1x2 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float1x3 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float1x4 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float2x1 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float2x2 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float2x3 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float2x4 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float3x1 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float3x2 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float3x3 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float3x4 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float4x1 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float4x2 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float4x3 m) +{ + return upper4x1(m); +} + +float4x1 upper4x1(float4x4 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double1x1 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double1x2 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double1x3 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double1x4 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double2x1 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double2x2 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double2x3 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double2x4 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double3x1 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double3x2 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double3x3 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double3x4 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double4x1 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double4x2 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double4x3 m) +{ + return upper4x1(m); +} + +double4x1 upper4x1(double4x4 m) +{ + return upper4x1(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper4x2.cpp b/extensions/externals/src/cg4cpp/upper4x2.cpp new file mode 100644 index 0000000..c3bf5ef --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper4x2.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float4x2 upper4x2(float1x1 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float1x2 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float1x3 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float1x4 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float2x1 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float2x2 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float2x3 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float2x4 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float3x1 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float3x2 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float3x3 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float3x4 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float4x1 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float4x2 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float4x3 m) +{ + return upper4x2(m); +} + +float4x2 upper4x2(float4x4 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double1x1 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double1x2 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double1x3 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double1x4 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double2x1 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double2x2 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double2x3 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double2x4 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double3x1 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double3x2 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double3x3 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double3x4 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double4x1 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double4x2 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double4x3 m) +{ + return upper4x2(m); +} + +double4x2 upper4x2(double4x4 m) +{ + return upper4x2(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper4x3.cpp b/extensions/externals/src/cg4cpp/upper4x3.cpp new file mode 100644 index 0000000..8a4e9e0 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper4x3.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float4x3 upper4x3(float1x1 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float1x2 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float1x3 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float1x4 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float2x1 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float2x2 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float2x3 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float2x4 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float3x1 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float3x2 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float3x3 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float3x4 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float4x1 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float4x2 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float4x3 m) +{ + return upper4x3(m); +} + +float4x3 upper4x3(float4x4 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double1x1 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double1x2 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double1x3 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double1x4 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double2x1 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double2x2 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double2x3 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double2x4 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double3x1 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double3x2 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double3x3 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double3x4 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double4x1 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double4x2 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double4x3 m) +{ + return upper4x3(m); +} + +double4x3 upper4x3(double4x4 m) +{ + return upper4x3(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/cg4cpp/upper4x4.cpp b/extensions/externals/src/cg4cpp/upper4x4.cpp new file mode 100644 index 0000000..81ad9d1 --- /dev/null +++ b/extensions/externals/src/cg4cpp/upper4x4.cpp @@ -0,0 +1,174 @@ +/* + * Copyright 2009 by NVIDIA Corporation. All rights reserved. All + * information contained herein is proprietary and confidential to NVIDIA + * Corporation. Any use, reproduction, or disclosure without the written + * permission of NVIDIA Corporation is prohibited. + */ + +#include +#include + +namespace Cg { + +float4x4 upper4x4(float1x1 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float1x2 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float1x3 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float1x4 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float2x1 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float2x2 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float2x3 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float2x4 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float3x1 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float3x2 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float3x3 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float3x4 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float4x1 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float4x2 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float4x3 m) +{ + return upper4x4(m); +} + +float4x4 upper4x4(float4x4 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double1x1 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double1x2 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double1x3 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double1x4 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double2x1 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double2x2 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double2x3 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double2x4 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double3x1 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double3x2 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double3x3 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double3x4 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double4x1 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double4x2 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double4x3 m) +{ + return upper4x4(m); +} + +double4x4 upper4x4(double4x4 m) +{ + return upper4x4(m); +} + +} // namespace Cg + diff --git a/extensions/externals/src/freetype-2.4.9/Android.mk b/extensions/externals/src/freetype-2.4.9/Android.mk new file mode 100644 index 0000000..c17d7f0 --- /dev/null +++ b/extensions/externals/src/freetype-2.4.9/Android.mk @@ -0,0 +1,66 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +FREETYPE_SRC_PATH := $(LOCAL_PATH)/ + +LOCAL_ARM_MODE := arm +LOCAL_MODULE := gs_ft2 +LOCAL_MODULE_TAGS := optional + +LOCAL_CFLAGS := -DANDROID_NDK \ + -DFT2_BUILD_LIBRARY=1 \ + -DHAVE_STDINT_H \ + -mfpu=neon \ + -mcpu=cortex-a9 + +LOCAL_C_INCLUDES := \ + $(FREETYPE_SRC_PATH)include \ + $(FREETYPE_SRC_PATH)src + +LOCAL_SRC_FILES := \ + src/autofit/autofit.c \ + src/bdf/bdf.c \ + src/base/basepic.c \ + src/base/ftapi.c \ + src/base/ftbase.c \ + src/base/ftbbox.c \ + src/base/ftbitmap.c \ + src/base/ftdbgmem.c \ + src/base/ftdebug.c \ + src/base/ftfstype.c \ + src/base/ftgasp.c \ + src/base/ftglyph.c \ + src/base/ftgxval.c \ + src/gzip/ftgzip.c \ + src/base/ftinit.c \ + src/base/ftlcdfil.c \ + src/lzw/ftlzw.c \ + src/base/ftmm.c \ + src/base/ftotval.c \ + src/base/ftpatent.c \ + src/base/ftpfr.c \ + src/base/ftpic.c \ + src/base/ftstroke.c \ + src/base/ftsynth.c \ + src/base/ftsystem.c \ + src/base/fttype1.c \ + src/base/ftxf86.c \ + src/cff/cff.c \ + src/pcf/pcf.c \ + src/pfr/pfr.c \ + src/psaux/psaux.c \ + src/pshinter/pshinter.c \ + src/psnames/psnames.c \ + src/psnames/psmodule.c \ + src/raster/raster.c \ + src/sfnt/sfnt.c \ + src/smooth/smooth.c \ + src/truetype/truetype.c \ + src/type1/type1.c \ + src/cid/type1cid.c + + +LOCAL_LDLIBS := -ldl -llog + +include $(BUILD_STATIC_LIBRARY) diff --git a/extensions/externals/src/freetype-2.4.9/ChangeLog b/extensions/externals/src/freetype-2.4.9/ChangeLog new file mode 100644 index 0000000..9afc1aa --- /dev/null +++ b/extensions/externals/src/freetype-2.4.9/ChangeLog @@ -0,0 +1,4076 @@ +2012-03-08 Werner Lemberg + + * Version 2.4.9 released. + ========================= + + + Tag sources with `VER-2-4-9'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.9. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9. + + * builds/unix/configure.raw (version_info): Set to 14:1:8. + +2012-03-08 Werner Lemberg + + [bdf] Add missing overflow check. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Add threshold for + `glyph->bpr'. + +2012-03-07 Vinnie Falco + + Prepare source code for amalgamation. + + * src\autofit\aferrors.h, src\bdf\bdferror.h, src\bzip2\ftbzip2.c, + src\cache\ftcerror.h, src\cff\cfferrs.h, src\cid\ciderrs.h, + src\gxvalid\gxverror.h, src\gzip\ftgzip.c, src\lzw\ftlzw.c, + src\otvalid\otverror.h, src\pcf\pcferror.h, src\pfr\pfrerror.h, + src\psaux\psauxerr.h, src\pshinter\pshnterr.h, + src\psnames\psnamerr.h, src\raster\rasterrs.h, src\sfnt\sferrors.h, + src\smooth\ftsmerrs.h, src\truetype\tterrors.h, + src\type1\t1errors.h, src\type42\t42error.h, src\winfonts\fnterrs.h: + Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX. + +2012-03-03 Werner Lemberg + + Fix Savannah bug #35660. + + For some divisions, we use casts to 32bit entities. Always guard + against division by zero with these casts also. + + * src/base/ftcalc.c (ft_div64by32): Remove redundant cast. + (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast. + (FT_DivFix): Add 32bit cast (this omission triggered the bug). + +2012-03-03 Werner Lemberg + + [psaux] Fix handling of track kerning. + + * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign + for `min_kern'. It is indeed quite common that track kerning + *increases* spacing for very small sizes. + +2012-03-02 Werner Lemberg + + [truetype] Fix Savannah bug #35689. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline + point. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35656. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity + of nibble characters instead of accessing `a2i' array. + +2012-03-01 Werner Lemberg + + [winfonts] Fix Savannah bug #35659. + + * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35658. + + * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements + properly. + +2012-03-01 Werner Lemberg + + [psaux] Fix Savannah bug #35657. + + If in function `skip_spaces' the routine `skip_comment' comes to the + end of buffer, `cur' is still increased by one, so we need to check + for `p >= limit' and not `p == limit'. + + * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed, + PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking. + +2012-03-01 Werner Lemberg + + [truetype] Fix Savannah bug #35646. + + * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The + code is now in sync with the other operators (e.g. MSIRP) which + modify twilight points. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35643. + + * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with + comment before `_bdf_list_split', this is, really allocate at least + five `field' elements. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35641. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Abort if + _BDF_ENCODING isn't set. We need this because access to the `glyph' + variable might be undefined otherwise. + +2012-03-01 Werner Lemberg + + [truetype] Fix Savannah bug #35640. + + * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check + for NPUSHB and NPUSHW instructions. + +2012-02-29 Werner Lemberg + + [truetype] Fix Savannah bug #35601. + + * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of + last point for loop. + Also remove redundant boundary check. + +2012-02-29 Werner Lemberg + + [truetype] Remove redundant check. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant + second check for ordered contour start points. + +2012-02-29 Werner Lemberg + + [truetype] Make SHC instruction behave similar to MS rasterizer. + + * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in + twilight zone. + +2012-02-29 Alexei Podtelezhnikov + + Avoid modulo operators against a power-of-two denominator. + + * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c + (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings) + , + src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE), + src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with + `&' operator. + +2012-02-29 Werner Lemberg + + [autofit] Don't synchronize digit widths for light rendering mode. + + We don't hint horizontally in this mode. + + * src/autofit/afloader.c (af_loader_load_g) : + Implement it. + +2012-02-26 Alexei Podtelezhnikov + + [type42] Minor code optimization (again). + + * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change. + +2012-02-26 Mateusz Jurczyk + Werner Lemberg + + [smooth] Fix Savannah bug #35604. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos' + instead of `FT_UInt' for some variables and update comparisons + accordingly. A detailed analysis can be found in the bug report. + +2012-02-26 Alexei Podtelezhnikov + + [type42] Minor code optimization. + + * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of + modulo operator. + +2012-02-26 Werner Lemberg + + * docs/CHANGES: Updated. + +2012-02-26 Werner Lemberg + + [type1] Fix Savannah bug #35608. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short + dictionaries. + +2012-02-26 Werner Lemberg + + [bdf] Support `ENCODING -1 ' format. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Implement it. + +2012-02-26 Werner Lemberg + + [bdf] Fix Savannah bug #35607. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Normalize + negative encoding values. + +2012-02-26 Werner Lemberg + + [type1] Fix Savannah bug #35606. + + * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'. + + * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message + only if cur < limit. + +2012-02-25 Werner Lemberg + + [pcf] Fix Savannah bug #35603. + + * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in + `strings' array. + +2012-02-25 Werner Lemberg + + [type42] Fix Savannah bug #35602. + + * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more + thoroughly. + +2012-02-25 Werner Lemberg + + [bdf] Fix Savannah bugs #35599 and #35600. + + * src/bdf/bdflib.c (ACMSG16): New warning message. + (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length. + +2012-02-24 Werner Lemberg + + [bdf] Fix Savannah bugs #35597 and #35598. + + * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value. + +2012-02-24  Vinnie Falco + + Prepare source code for amalgamation (6/6). + + * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/. + + * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/. + s/t1_init_loader/cid_init_loader/. + s/t1_done_loader/cid_done_loader/. + + * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. + + * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/. + + * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/. + +2012-02-24  Vinnie Falco + + Prepare source code for amalgamation (5/6). + + * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after + using it. + +2012-02-22  Vinnie Falco + + Prepare source code for amalgamation (4/6). + + * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG, + RAS_ARGS, RAS_VAR, and RAS_VARS before defining it. + + * src/smooth/ftgrays.c: s/TRaster/black_TRaster/, + s/PRaster/black_PRaster/. + * src/raster/ftraster.c: s/TRaster/gray_TRaster/, + s/PRaster/gray_PRaster/. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (3/6). + + * src/smooth/ftgrays.c: s/TWorker/black_TWorker/, + s/PWorker/black_PWorker/. + * src/raster/ftraster.c: s/TWorker/gray_TWorker/, + s/PWorker/gray_PWorker/. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (2/6). + + * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR, + CEILING, TRUNC, and SCALED before defining it. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (1/6). + + See discussion starting at + + http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html + + * src/smooth/ftgrays.c: s/TBand/gray_TBand/. + * src/raster/ftraster.c: s/TBand/black_TBand/. + +2012-02-17 Alexei Podtelezhnikov + + [autofit] Fix outline flags. + + * src/autofit/afloader.c (af_loader_load_g): Don't reassign + `outline.flags' so that this information is preserved. See + discussion starting at + + http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html + +2012-02-11 Werner Lemberg + + [truetype] Fix Savannah bug #35466. + + Jump instructions are now bound to the current function. The MS + Windows rasterizer behaves the same, as confirmed by Greg Hitchcock. + + * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element. + * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element. + + * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper + bound of jump address. + (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated. + +2012-02-11 Werner Lemberg + + We don't use `extensions'. + + * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove + `extensions' field. + +2012-02-11 Werner Lemberg + + Clean up `generic' fields. + + * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec): + Remove `generic' field since users can't access it. + + * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as + advertised in the documentation of FT_Generic. + (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'. + +2012-02-07 Werner Lemberg + + [autofit] Harmonize function arguments. + + * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for + `load_flags'. + +2012-02-07 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts. + +2012-01-17 suzuki toshiya + + [gxvalid] Fix Savannah bug #35286. + + Patch submitted by anonymous reporter. + + * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup): + gxv_set_length_by_ulong_offset() must be called with 3, not 4, + the number of the subtables in the state tables; classTable, + stateArray, entryTable. + +2012-01-17 suzuki toshiya + + [raccess] Modify for PIC build. + + Based on the patch provided by Erik Dahlstrom , + http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html + + Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()' + are renamed with `ft_' suffixes. + + * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed + to `ft_raccess_rule_by_darwin_vfs()'. + * src/base/ftobjs.c: Ditto. + + * src/base/ftrfork.c: Declarations of FT_RFork_Rule, + raccess_guess_rec, are moved to... + * include/freetype/internal/ftrfork.h: Here. + + * include/freetype/internal/ftrfork.h: + FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined + to replace raccess_guess_table[] in both of PIC and non-PIC + modes. + * src/base/ftrfork.c: raccess_guess_table[] array is rewritten + by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}. + + * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table' + storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve + the function pointer from `ft_raccess_guess_table' storage in + `BasePIC' structure. + * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with + FT_RACCESS_GUESS_TABLE_GET. + (raccess_get_rule_type_from_rule_index): Add `library' as the + first argument to the function, to retrieve the storage of + `ft_raccess_guess_table' from it. Also `raccess_guess_table' + is replaced by FT_RACCESS_GUESS_TABLE_GET. + (ft_raccess_rule_by_darwin_vfs): Ditto. + +2012-01-16 suzuki toshiya + + Remove trailing spaces. + +2012-01-16 suzuki toshiya + + Formatting PIC related sources. + + * src/autofit/afpic.c: Harmonize to FT2 coding conventions. + * src/base/basepic.c: Ditto. + * src/base/ftpic.c: Ditto. + * src/cff/cffpic.c: Ditto. + * src/pshinter/pshpic.c: Ditto. + * src/psnames/pspic.c: Ditto. + * src/raster/rastpic.c: Ditto. + * src/sfnt/sfntpic.c: Ditto. + * src/smooth/ftspic.c: Ditto. + * src/truetype/ttpic.c: Ditto. + +2012-01-16 suzuki toshiya + + [autofit] Fix the inclusion of `aflatin2.h' in PIC file. + + * src/autofit/afpic.c: Include `aflatin2.h' when + FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so. + Unconditionally inclusion causes declared but unimplemented + warning by GCC 4.6. + +2012-01-16 suzuki toshiya + + [cff] Remove redundant declarations of cff_cmap_XXX_class_rec. + + * src/cff/cffpic.c: The declarations of + FT_Init_Class_cff_cmap_encoding_class_rec() and + FT_Init_Class_cff_cmap_unicode_class_rec() are removed. + They can be obtained by the inclusion of cffcmap.h. + cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares + FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode. + +2012-01-15 suzuki toshiya + + Fix redundant declaration warning in PIC mode. + + Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were + designed to declare xxx_pic_{free,init} by themselves. + Because these macros are used at the end of the module + interface (e.g. ttdriver.c) and the wrapper source to build + a module as a single object (e.g. truetype.c) includes + the PIC file (e.g. ttpic.c) before the module interface, + these macros are expanded AFTER xxx_pic_{free,init} body + when the modules are built as single object. + The declaration after the implementation causes the redundant + declaration warnings, so the declarations are moved to module + PIC headers (e.g. ttpic.h). Separating to other header files + are needed for multi build. + + * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER): + Remove class_##_pic_free and class_##_pic_init declarations. + * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER, + FT_DEFINE_MODULE): Ditto. + + * src/base/basepic.h: Insert a comment and fix coding style. + * src/autofit/afpic.h: Declare autofit_module_class_pic_{free, + init}. + * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}. + * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free, + init}. + * src/psnames/pspic.h: Declare psnames_module_class_pic_{free, + init}. + * src/raster/rastpic.h: Declare + ft_raster{1,5}_renderer_class_pic_{free,init} + * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}. + * src/smooth/ftspic.h: Declare + ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}. + * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}. + +2012-01-15 suzuki toshiya + + Make pspic.c to include module error header to fix multi build. + + * src/psnames/pspic.c: Include `psnamerr.h'. + +2012-01-14 suzuki toshiya + + [base] Fix a dereference of uninitialized variable in PIC mode. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be + set before derefering to obtain `library'. The initialization + of `clazz', `glyph', `library' and NULL pointer check are + reordered to minimize PIC conditonals. + +2012-01-14 suzuki toshiya + + [base] Insert explicit cast for GCC 4.6 in PIC mode. + + * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC + configuration, FT_DEFAULT_MODULES_GET returns + FT_Module_Class** pointer, GCC 4.6 warns that + const FT_Module_Class* const* variable is warned as + inappropriate to store it. To calm it, explicit cast is + inserted. Also `library' is checked to prevent the NULL + pointer dereference in FT_DEFAULT_MODULES_GET. + +2012-01-13 suzuki toshiya + + Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6. + + Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET + take no arguments but derefer the variable named `library' + internally. + + * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and + set it if non-NULL driver is passed. + * src/truetype/ttdriver.c (tt_get_interface): Ditto. + + * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library' + under PIC configuration, and set it if non-NULL module is given. + * src/psnames/psmodule.c (psnames_get_interface): Ditto. + +2012-01-13 suzuki toshiya + + Make PIC files include module error headers, to use the error codes + with per-module prefix. + + * src/autofit/afpic.c: Include `aferrors.h'. + * src/cff/cffpic.c: Include `cfferrs.h'. + * src/pshinter/pshpic.c: Include `pshnterr.h'. + * src/raster/rastpic.c: Include `rasterrs.h'. + * src/sfnt/sfntpic.c: Include `sferrors.h'. + * src/smooth/ftspic.c: Include `ftsmerrs.h'. + * src/truetype/ttpic.c: Include `tterrors.h'. + +2012-01-04 Tobias Ringström + + [truetype] Fix IP instruction if x_ppem != y_ppem. + + * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates + properly. + +2012-01-02 Werner Lemberg + + Fix tracing message for `loca' table. + + * src/truetype/ttpload.c (tt_face_get_location): Don't emit a + warning message if the last `loca' entry references an empty glyph. + +2011-12-10 Werner Lemberg + + Add some variable initializations. + Reported by Richard COOK . + + * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'. + * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels' + earlier. + +2011-12-08 Werner Lemberg + + Fix serious scaling bug in `FT_Get_Advances'. + + * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by + `FT_Load_Glyph' must be simply multiplied by 1024. + +2011-12-08 Werner Lemberg + + * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing. + +2011-12-02 suzuki toshiya + + [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH. + + Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON + was a configurable macro to disable Carbon-dependent code. Because + now configure script sets DARWIN_NO_CARBON by default and disables + Darwin & Carbon-dependent codes, these macros can be unified. + FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON + (defined by default) is removed, because DARWIN_NO_CARBON violates + FT_XXX naming convention of public macros, and a macro configured by + default is not portable for the building without configure (e.g. + make devel). + + * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based + old Mac font support is requested and Carbon is available. + * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support + for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is + requested. + * include/freetype/config/ftconfig.in: Ditto. + * builds/vms/ftconfig.h: Ditto. + + * src/base/ftbase.h: Remove DARWIN_NO_CARBON. + * src/base/ftbase.c: Ditto. + * src/base/ftobjs.c: Ditto. + * src/base/ftrfork.c: Ditto. + + * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined + (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c). + * builds/mac/ftmac.c: Ditto. + + * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH. + * builds/mac/FreeType.m68k_far.make.txt: Ditto. + * builds/mac/FreeType.ppc_classic.make.txt: Ditto. + * builds/mac/FreeType.ppc_carbon.make.txt: Ditto. + +2011-11-30 suzuki toshiya + + Fix Savannah bug #34728 (`make devel' on Mac OS X). + + * builds/toplevel.mk: Check `/dev/null' to identify the Unix- + like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4). + * builds/unix/detect.mk: Ditto. + +2011-11-30 suzuki toshiya + + [apinames] Fix the overflow of signed integer hash. + + * src/tools/apinames.c (names_add): Change the type of `h' from + int to unsigned int, to prevent undefined behaviour in the + overflow of signed integers (overflow of unsigned int is defined + to be wrap around). Found by clang test suggested by Sean + McBride. + +2011-11-30 Werner Lemberg + + [winfonts] Remove casts. + + * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and + update affected functions. + (FNT_Size_Select): Fix number of arguments. + +2011-11-30 Werner Lemberg + + [type42] Remove casts. + + * src/type42/t42driver.c (t42_driver_class): Remove all casts and + update affected functions. + + * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver + changes. + +2011-11-30 Werner Lemberg + + [type1] Remove casts. + + * src/type1/t1driver.c (t1_driver_class): Remove all casts and + update affected functions. + + * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c: + Updated for t1driver changes. + src/type1/t1objs.h (T1_Driver): Remove unused typedef. + Updated for t1driver changes. + +2011-11-27 Werner Lemberg + + [bdf] Fix Savannah bug #34896. + + ENCODING now covers the whole Unicode range. + + Note, however, that this change is quite expensive since it + increases the size of three arrays by almost 400kByte in total. The + right fix is to replace the logic with something smarter. + Additionally, there exist very old BDFs for three-byte CCCII + encoding which exceeds the range of Unicode (another reason to have + a smarter logic). + + * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod' + arrays. + * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array. + +2011-11-27 Werner Lemberg + + [bdf] Improve tracing. + + * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros. + (_bdf_parse_glyphs): Use them. + +2011-11-26 Werner Lemberg + + Improve tracing. + + * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c + (PCF_Face_Done): Remove tracing message. + + * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c + (cff_face_init), src/cid/cidobjs.c (cid_face_init), + src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c + (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init), + src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c + (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add + `greeting' message. + + * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c + (T42_Open_Face): Improve tracing. + +2011-11-26 Werner Lemberg + + [cid] Fix error code. + + * src/cid/cidparse.c (cid_parser_new): Do it. + +2011-11-26 Werner Lemberg + + [cff] Fix error code. + + * src/cff/cffload.c (cff_font_load): Do it. + +2011-11-26 Werner Lemberg + + Add new error code FT_Err_Missing_Module. + + Previously, FreeType misleadingly returned + FT_Err_Unknown_File_Format if a module was missing (or a test was + missing completely). + + * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define. + + * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c + (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init), + src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c + (tt_face_init), src/type1/t1objs.c (T1_Face_Init), + src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated. + + * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c + (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now + redundant test for `psaux'. + +2011-11-25 Werner Lemberg + + [bdf] Add more error messages. + + * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property): + Add line number argument. + Update all callers. + (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros. + (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property, + _bdf_parse_glyphs, _bdf_parse_start): Add error messages. + +2011-11-24 Werner Lemberg + + * include/freetype/fterrors.h: Remove dead code. + +2011-11-15 Werner Lemberg + + * docs/releases: Updated. + +2011-11-15 Werner Lemberg + + * Version 2.4.8 released. + ========================= + + + Tag sources with `VER-2-4-8'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.8. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + + * builds/unix/configure.raw (version_info): Set to 14:0:8. + +2011-11-13 Chris Liddell + + Add FT_Get_PS_Font_Value() API. + + This allows a Type 1 font face to be interrogated to retrieve most + of the dictionary keys (keys not relevant to FreeType's Type 1 + interpreter are not available). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontValueFunc): New typedef. + (PSInfo): Add `ps_get_font_value'. + (FT_DEFINE_SERVICE_PSINFOREC): Updated. + + * include/freetype/internal/t1types.h (T1_EncodingType): Moved to... + * include/freetype/t1tables.h: Here. + (PS_Dict_Keys): New enumeration. + (FT_Get_PS_Font_Value): New declaration. + + * src/base/fttype1.c (FT_Get_PS_Font_Value): New function. + + * src/type1/t1driver.c (t1_ps_get_font_value): This new function + does the real job. + (t1_service_ps_info): Add it. + + * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c + (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info): + Updated. + +2011-11-08 Braden Thomas + + [cid] Various loading fixes. + + * src/cid/cidload.c (cid_load_keyword) , + (parse_font_matrix, parse_expansion_factor): Correctly check number + of dictionaries. + (cid_read_subrs): Protect against invalid values of `num_subrs'. + Assure that the elements of the `offsets' array are ascending. + +2011-11-05 Werner Lemberg + + * README: We use copyright ranges also. + + According to + + http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html + + this should be mentioned explicitly. + +2011-10-30 suzuki toshiya + + [raccess] Supplement for previous fix. + + * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare + it on native Mac OS X. + * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index): + Hide raccess_get_rule_type_from_rule_index() on native Mac OS X + too. + +2011-10-30 suzuki toshiya + + [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X. + + * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not + compile on native Mac OS X because it is not used. + +2011-10-25 Werner Lemberg + + [truetype] Fix MD instruction for twilight zone. + + * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD + instruction applied to original coordinates of twilight points + always returns zero. + +2011-10-18 Werner Lemberg + + * Version 2.4.7 released. + ========================= + + + Tag sources with `VER-2-4-7'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.7. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/configure.raw (version_info): Set to 13:2:7. + +2011-10-15 Kal Conley + + Fix handling of transformations if no renderer is present. + + * src/base/ftobjs.c (FT_Load_Glyph): Thinko. + +2011-10-15 Kal Conley + + Fix conditions for autohinting. + + * src/base/ftobjs.c (FT_Load_Glyph): Handle + FT_LOAD_IGNORE_TRANSFORM. + +2011-10-07 suzuki toshiya + + [gxvalid] Fix a bug to detect too large offset in morx table. + + * src/gxvalid/gxvmorx2.c + (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug + that too large positive offset cannot be detected. + +2011-10-01 Braden Thomas + + Handle some border cases. + + * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro. + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid + value of `target->rows'. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for + flex start. + + * src/raster/ftrend1.c (ft_raster1_render): Check `width' and + `height'. + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against + invalid values in `localpoints' array. + +2011-10-01 Werner Lemberg + + [psnames] Handle zapfdingbats. + Problem reported by Nicolas Rougier . + + * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's + `zapfdingbats.txt' file. + + * src/psnames/pstables.h: Regenerated. + +2011-09-27 Simon Bünzli + + Fix Savannah bug #34189. + + * src/type1/t1load.c (T1_Open_Face): Initialize + `face->len_buildchar'. + +2011-09-26 Werner Lemberg + + [cff] Dump SIDs while tracing. + + * src/cff/cffobjs.c (cff_face_init): Do it. + + * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE] + : Identify as SID. + +2011-09-17 Werner Lemberg + + Remove unused FT_ALIGNMENT macro. + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h, + include/freetype/config/ftconfig.h: Do it. + +2011-09-17 Alexei Podtelezhnikov + + [smooth] Slightly optimize conic and cubic flatterners. + + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + out some code from the main loop to speed it up. + +2011-09-11 Tomas Hoger + + Slightly improve LZW_CLEAR handling. + + * src/lzw/ftzopen.c (ft_lzwstate_io) : + Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are + handled as clear codes. This also re-sets old_code and old_char to + predictable values, which is a little better than using `random' + ones if the code following LZW_CLEAR is invalid. + +2011-09-11 Tomas Hoger + + Add explicit LZW decompression stack size limit. + + Stack larger than 1<prefix[code - 256] + when traversing prefix table. Such check is less efficient and + should not be required if prefix table is constructed correctly in + the first place. + + * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it. + +2011-09-11 Tomas Hoger + + Protect against loops in the prefix table. + + LZW decompressor did not sufficiently check codes read from the + input LZW stream. A specially-crafted or corrupted input could + create a loop in the prefix table, which leads to memory usage + spikes, as there's no decompression stack size limit. + + * src/lzw/ftzopen.c (ft_lzwstate_io) : First + code in valid LZW stream must be 0..255. + : In the special KwKwK case, code == free_ent, + code > free_ent is invalid. + +2011-09-09 Werner Lemberg + + Better tracing of metrics. + + * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with + FT_TRACE. + +2011-09-07 Werner Lemberg + + Fix Savannah bug #33816. + + * src/cff/cfftypes.h (CFF_FontRecDictRec): New member + `has_font_matrix'. + * src/cff/cffparse.c (cff_parse_font_matrix): Set it. + Update tracing output. + * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics + can be removed. + +2011-08-30 Werner Lemberg + + Better tracing of metrics. + + * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): + Decorate with FT_TRACE. + +2011-08-25 Werner Lemberg + + [cff] Better tracing of the parsing process. + + * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with + FT_TRACE. + + * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox, + cff_parse_private_dict, cff_parse_cid_ros): Updated. + (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000, + CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD, + CFF_FIELD_DELTA): Add argument for ID. + (cff_parser_run): Decorate with FT_TRACE. + + * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add + `id' member. + + * src/cff/cfftoken.h: Add IDs to all fields. + +2011-08-16 Werner Lemberg + + Fix Savannah bug #34022. + + * README, docs/INSTALL: Remove references to UPGRADE.UNIX. + +2011-08-15 Werner Lemberg + + Fix Savannah bug #34018. + + * docs/UPGRADE.UNIX: Removed. Obsolete. + +2011-08-15 David Bevan + + Fix Savannah bug #33992. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case. + +2011-08-12 Werner Lemberg + + Fix Savannah bug #33975. + + * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo. + +2011-07-29 Werner Lemberg + + * Version 2.4.6 released. + ========================= + + + Tag sources with `VER-2-4-6'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.6. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + + * builds/unix/configure.raw (version_info): Set to 13:1:7. + +2011-07-29 Werner Lemberg + + [cff] Add some more tracing infos. + + * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox, + cff_parse_cid_ros): Add tracing. + +2011-07-22 Dirk Müller + + [psaux, type1] Fix null pointer dereferences. + + Found with font fuzzying. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check + `decoder->buildchar'. + + * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'. + +2011-07-20 Chris Morgan + + Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT. + + Useful for embedded systems which don't need file stream support. + + * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement + it. + +2011-07-20 Elton Chung + + * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo. + +2011-07-16 Steven Chu + + [truetype] Fix metrics on size request for scalable fonts. + + * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics + from TT_Size to FT_Size if scalable font. + + See + + http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html + + for some comparison images. + +2011-07-14 Matthias Drochner . + + [psaux] Fix potential sign extension problems. + + When shifting right a signed value, it is not defined by the + C standard whether one gets a sign extension or not. Use a macro to + do an explicit cast from a signed short (assuming that this is + 16bit) to an int. + + * src/psaux/t1decode.c (Fix2Int): New macro. + Use it where appropriate. + +2011-07-14 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Better handling of subroutine index 0. + From Matthias Drochner . + +2011-07-10 Алексей Подтележников + + [psaux] Optimize previous commit. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Move error check down to avoid testing twice for + good cases. + +2011-07-08 Werner Lemberg + + [psaux] Add better argument check for `callothersubr'. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Reject negative arguments. + +2011-07-07 Werner Lemberg + + [sfnt] Try harder to find non-zero values for ascender and descender. + + * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case + the `hhea' table's values are zero. + +2011-07-03 Werner Lemberg + + Fix previous commit. + + We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap + strikes in the font. + + * src/truetype/ttobjs.c (tt_face_init): Implement it. + + * docs/CHANGES: Updated. + +2011-07-02 Just Fill Bugs + + Fix Savannah bug #33246. + + * src/truetype/ttobjs.c (tt_check_single_notdef): New function. + (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE. + +2011-07-02 Werner Lemberg + + * docs/CHANGES: Updated. + +2011-07-02 David Bevan + + [ftstroke] Major revision. + + The main problems + ----------------- + + o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter + joins (not bevel joins) were generated. Indeed, the meanings of + `miter' and `bevel' were incorrectly reversed (consistently) in + both the code and comments. + + o The way bevel joins were constructed (whether specified + explicitly, or created as a result of exceeding the miter limit) + did not match what is required for stroked text in PostScript or + PDF. + + The main fixes + -------------- + + o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected. + + o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been + introduced to support PostScript and PDF miter joins. + + o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an + alias for FT_STROKER_LINEJOIN_MITER. + + Additionally, a variety of stroking errors have been fixed. These + would cause various artifacts (including points `at infinity'), + especially when stroking poor quality fonts. + + See + + http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html + + for example documents. The FreeType stroker now produces results + very similar to that produced by GhostScript and Distiller for these + fonts. + + Other problems + -------------- + + The following problems have been resolved: + + o Inside corners could be generated incorrectly. Intersecting the + inside corner could cause a missing triangular area and other + effects. + + The intersection point can only be used if the join is between + two lines and both lines are long enough. The `optimization' + condition in `ft_stroker_inside' has been corrected; this + requires the line length to be passed into various functions and + stored in `FT_StrokerRec'. + + o Incorrect cubic curves could be generated. The angle + calculations in `FT_Stroker_CubicTo' have been corrected to + handle the case of the curve crossing the +/-PI direction. + + o If the border radius was greater than the radius of curvature of + a curve, then the negative sector would end up outside (not + inside) the border. This situation is now recognized and the + negative sector is circumnavigated in the opposite direction. + (If round line joins are being used, this code is disabled + because the line join will always cover the negative sector.) + + o When a curve is split, the arcs may not join smoothly (especially + if the curve turns sharply back on itself). Changes in + direction between adjacent arcs were not handled. A round + corner is now added if the deviation from one arc to the next is + greater than a suitable threshold. + + o The current direction wasn't retained if a the outline contained + a zero length lineto or a curve that was determined to be + `basically a point'. This could cause a spurious join to be + added. + + o Cubics with close control points could be mishandled. All eight + cases are now distinguished correctly. + + Other improvements + ------------------ + + o Borders for cubic curves could be too `flat'. + FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent + this. + + o The handling and use of movable points has been simplified a + little. + + o Various values are now computed only if the results are actually + needed. + + o The directions of the outer and inner borders have been swapped, + as recommended by Graham Asher. + + * src/base/ftstroke.c: Revised. + * include/freetype/ftstroke.h: Updated. + +2011-06-30 İsmail Dönmez + + * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'. + +2011-06-29 Werner Lemberg + + Fix Savannah bug #33663. + + * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for + ENCODING correctly. + + * docs/CHANGES: Document it. + +2011-06-24 Werner Lemberg + + * Version 2.4.5 released. + ========================= + + + Tag sources with `VER-2-4-5'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.5 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. + + * builds/unix/configure.raw (version_info): Set to 13:0:7. + +2011-06-20 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change + from 2011-05-04. + +2011-06-19 suzuki toshiya + + [gxvalid] make the `prop' validation tracing verbose. + + * src/gxvalid/gxvprop.c: Add tracing messages for errors. + +2011-06-19 suzuki toshiya + + [autogen.sh] Reflect environment variable LIBTOOLIZE. + +2011-06-18 Werner Lemberg + + Update license documentation. + + * docs/GPL.TXT: Renamed to... + * docs/GPLv2.TXT: This. + + * docs/LICENSE.TXT: Updated. + +2011-06-14 suzuki toshiya + + Fix g++4.6 compiler warnings in module drivers. + + The background is same with previous commit. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): + Init `points'. (TT_Vary_Get_Glyph_Deltas): Init + `delta_xy'. (TT_Get_MM_Var): Init `mmvar'. + * src/type1/t1load.c (T1_Get_MM_Var): Ditto. + * src/cff/cffdrivr.c (cff_ps_get_font_info): Init + `font_info'. + * src/cff/cffload.c (cff_index_get_pointers): Init `t'. + (cff_font_load): Init `sub'. + * src/cff/cffobjs.c (cff_size_init): Init `internal'. + (cff_face_init): Init `cff'. + * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps): + Init `snaps'. + * src/pcf/pcfread.c (pcf_get_properties): Init `properties'. + (pcf_get_bitmaps): Init `offsets'. (pcf_get_encodings): + Init `tmpEncoding'. + * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'. + * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'. + * src/cache/ftcmru.c (FTC_MruList_New): Init `node'. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and + `zip_buff'. + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'. + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'. + +2011-06-14 suzuki toshiya + + [base] Fix g++4.6 compiler warnings in src/base/*.c. + + Passing uninitialized pointer to FT_NEW() families is + not problematic theoretically (as far as the returned + pointer is checked before writing), but g++4.6 dislikes + it and warns by -Wuninitialized. Initialize them by NULL. + + * src/base/ftobjs.c (FT_Stream_New): Init `stream'. + (new_memory_stream): Ditto. + (FT_New_GlyphSlot): Init `slot'. + (FT_CMap_New): Init `cmap'. + (open_face_PS_from_sfnt_stream): Init `sfnt_ps'. + (Mac_Read_POST_Resource): Init `pfb_data'. + (Mac_Read_sfnt_Resource): Init `sfnt_data'. + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): + Init `offsets_internal' and `ref'. + (raccess_guess_darwin_hfsplus): Init `newpath'. + (raccess_guess_darwin_newvfs): Ditto. + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): + Init `buffer'. + * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'. + +2011-06-14 suzuki toshiya + + [gxvalid] Cleanup. + + Some invalid, overrunning, unrecommended non-zero values + are cared in paranoid validation mode only. There are + many lines looking like: + + if ( valid->root->level >= FT_VALIDATE_PARANOID ) + FT_INVALID_xxx; + + To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is + introduced for more paranoid validation in future. + + * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION): + New macro to assure valid->root->level is more or + equal to FT_VALIDATE_PARANOID. (GXV_SET_ERR_IF_PARANOID): + New macro to raise an error if in paranoid validation. + * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID(). + * src/gxvalid/gxvfeat.c: Ditto. + * src/gxvalid/gxvjust.c: Ditto. + * src/gxvalid/gxvkern.c: Ditto. + * src/gxvalid/gxvmort.c: Ditto. + * src/gxvalid/gxvmort0.c: Ditto. + * src/gxvalid/gxvmort1.c: Ditto. + * src/gxvalid/gxvmort2.c: Ditto. + * src/gxvalid/gxvmorx1.c: Ditto. + * src/gxvalid/gxvmorx2.c: Ditto. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c. + + * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): + Check different entries pointing same traking value. + (gxv_trak_validate): Remove unused variable `table_size'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c. + + * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate): + Conditionalize unvalidated variable `subFeatureFlags'. + (gxv_morx_chain_validate): Conditionalize unvalidated + variable `defaultFlags'. + + * src/gxvalid/gxmorx0.c + (gxv_morx_subtable_type0_entry_validate): + Conditionalize unvalidated variables; `markFirst', + `dontAdvance', `markLast', `verb'. + + * src/gxvalid/gxmorx1.c + (gxv_morx_subtable_type1_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance'. + + * src/gxvalid/gxvmorx2.c + (gxv_morx_subtable_type2_ligActionOffset_validate): + Conditionalize unvalidated variables; `last', `store'. + Checking for overrunning offset is added. + (gxv_morx_subtable_type2_entry_validate): + Conditionalize unvalidated variables; `setComponent', + `dontAdvance', `performAction'. + (gxv_morx_subtable_type2_ligatureTable_validate): + Check if the GID for ligature does not exceed the + max GID in `maxp' table. + + * src/gxvalid/gxvmort5.c + (gxv_morx_subtable_type5_InsertList_validate): + Conditionalize unvalidated loading of `insert_glyphID' + array. (gxv_morx_subtable_type5_entry_validate): + Conditionalize unvalidated variables; `setMark', + `dontAdvance', `currentIsKashidaLike', + `markedIsKashidaLike', `currentInsertBefore', + `markedInsertBefore'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c. + + * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate): + Conditionalize unvalidated variable `subFeatureFlags'. + (gxv_mort_chain_validate): Conditionalize unvalidated + variable `defaultFlags'. + + * src/gxvalid/gxmort0.c + (gxv_mort_subtable_type0_entry_validate): Check the + conflict of the marks for the glyphs. + + * src/gxvalid/gxmort1.c + (gxv_mort_subtable_type1_offset_to_subst_validate): + Local variables `min_gid', `max_gid' are replaced by + variables in the validator. + (gxv_mort_subtable_type1_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance'. + (gxv_mort_subtable_type1_substTable_validate): + Validate the GID by the min/max GIDs in the validator. + + * src/gxvalid/gxvmort2.c + (gxv_mort_subtable_type2_ligActionOffset_validate): + Conditionalize unvalidated variables; `last', `store'. + Checking for overrunning offset is added. + (gxv_mort_subtable_type2_entry_validate): + Conditionalize unvalidated variables; `setComponent', + `dontAdvance'. + (gxv_mort_subtable_type2_ligatureTable_validate): + Check if the GID for ligature does not exceed the + max GID in `maxp' table. + + * src/gxvalid/gxvmort5.c + (gxv_mort_subtable_type5_InsertList_validate): + Conditionalize unvalidated loading of `insert_glyphID' + array. (gxv_mort_subtable_type5_entry_validate): + Conditionalize unvalidated variables; `setMark', + `dontAdvance', `currentIsKashidaLike', + `markedIsKashidaLike', `currentInsertBefore', + `markedInsertBefore'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c. + + * src/gxvalid/gxvkern.c + (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize + unvalidated variable `kernValue'. + (gxv_kern_subtable_fmt1_entry_validate): Conditionalize + unvalidated variables; `push', `dontAdvance', `kernAction', + `kernValue'. + (gxv_kern_coverage_new_apple_validate): Conditionalize + trace-only variables; `kernVertical', `kernCrossStream', + `kernVariation'. + (gxv_kern_coverage_classic_apple_validate): Conditionalize + trace-only variables; `horizontal', `cross_stream'. + (gxv_kern_coverage_classic_microsoft_validate): + Conditionalize trace-only variables; `horizontal', + `minimum', `cross_stream', `override'. + (gxv_kern_subtable_validate): Conditionalize trace-only + variables; `version', `tupleIndex'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c. + + * src/gxvalid/gxvjust.c (gxv_just_check_max_gid): + New function to unify the checks of too large GID. + (gxv_just_wdp_entry_validate): Conditionalize unvalidated + variables; `beforeGrowLimit', `beforeShrinkGrowLimit', + `afterGrowLimit', `afterShrinkGrowLimit', `growFlags', + `shrinkFlags'. Additional check for non-zero values in + unused storage `justClass' is added. + (gxv_just_actSubrecord_type0_validate): Conditionalize + unvalidated variable `order'. GID is checked by + gxv_just_check_max_gid(). Additional check for upside-down + relationship between `lowerLimit' and `upperLimit' is added. + (gxv_just_actSubrecord_type1_validate): GID is checked by + gxv_just_check_max_gid(). + (gxv_just_actSubrecord_type2_validate): Conditionalize + unvalidated variable `substThreshhold'. GID is checked by + gxv_just_check_max_gid(). + (gxv_just_actSubrecord_type5_validate): GID is checked by + gxv_just_check_max_gid(). + (gxv_just_classTable_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance', + `markClass', `currentClass'. + +2011-06-14 suzuki toshiya + + [gxvalid] Preparation to fix gcc4.6 compiler warnings. + + * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to + conditionalize the variable which is only used for trace messages. + Automatically set by FT_DEBUG_LEVEL_TRACE. + (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of + unvalidated variables. Undefined by default to calm gcc4.6 warning. + (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined + GID ranges, for the comparison of GID ranges in different subtables. + +2011-06-08 Werner Lemberg + + [autofit] Remove unused structure member. + + * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'. + * src/autofit/aflatin.c (af_latin_hints_compute_segments), + src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated. + +2011-05-30 Werner Lemberg + + Fix g++ 4.6 compilation. + + * src/autofit/afhints.c (af_glyph_hints_dump_segments, + af_glyph_hints_dump_edges): Use cast. + +2011-05-30 Werner Lemberg + + Fix gcc 4.6 compiler warnings. + + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and + remove unused variables. + * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out + `up_dir'. + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org' + and `width_org' conditionalized. + +2011-05-28 suzuki toshiya + + [mac] Conditionalize the inclusion of `AvailabilityMacros.h'. + + The native SDK on earliest Mac OS X (10.0-10.1) did not have + `AvailabilityMacros.h'. To prevent the inclusion of missing + header file, ECANCELED (introduced in 10.2) in POSIX header + file is checked to detect the system version. + + * include/freetype/config/ftconfig.h: Conditionalize the + inclusion of `AvailabilityMacros.h'. + * builds/unix/ftconfig.in: Ditto. + * builds/vms/ftconfig.h: Ditto. + +2011-05-27 Werner Lemberg + + [autofit] Improve tracing of hinting process. + + * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message + `ADJUST'. + +2011-05-26 Werner Lemberg + + [autofit] Fix trace message. + + * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in + tracing message. + +2011-05-24 Daniel Zimmermann + + Reduce warnings for MS Visual Studio 2010. + + * src/autofit/afhints.c (af_glyph_hints_get_num_segments, + af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide + return value. + * src/cff/cffgload.c (cff_slot_load): Add cast. + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper + loop variable type. + +2011-05-16 suzuki toshiya + + Automake component `builds/unix/install-sh' is removed. + + * builds/unix/install-sh: Removed. It is not needed to + include repository, because autogen.sh installs it. + * builds/unix/.gitignore: Register install-sh. + +2011-05-12 suzuki toshiya + + [autofit] Make trace message for CJK bluezone more verbose. + +2011-05-08 Just Fill Bugs + suzuki toshiya + + [autofit] Add bluezones for CJK Ideographs. + + To remove extremas of vertical strokes of CJK Ideographs at + low resolution and make the top and bottom horizontal stems + aligned, bluezones for CJK Ideographs are calculated from + sample glyphs. At present, vertical bluezones (bluezones + to align vertical stems) are disabled by default. For detail, see + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html + http://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html + + * include/freetype/internal/fttrace.h: New trace component `afcjk'. + * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version + for AF_Latin{Blue,Axis,Metric}Rec. + (af_cjk_metrics_check_digits): Ditto, shared with Indic module. + (af_cjk_metrics_init_widths): Ditto. + (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric. + (af_cjk_metrics_scale): Ditto (declaration). + (af_cjk_hints_init): Ditto (declaration). + (af_cjk_hints_apply): Ditto (declaration). + * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body). + (af_cjk_hints_init): Ditto (body). + (af_cjk_hints_apply): Ditto (body). + (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths. + (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits. + (af_cjk_metrics_init): Call CJK bluezone initializer. + (af_cjk_metrics_scale_dim): Add code to scale bluezones. + (af_cjk_hints_compute_blue_edges): New function, CJK version of + af_latin_hints_compute_blue_edges. + (af_cjk_metrics_init_blues): New function, CJK version of + af_latin_metrics_init_blues. + (af_cjk_hints_edges): Add code to align the edge stems to blue zones. + + * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric + instead of AF_LatinMetric, and initialize as af_cjk_metrics_init. + However bluezones are not initialized. + (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric. + (af_indic_hints_init): Ditto. + (af_indic_hints_apply): Ditto. + + * docs/CHANGES: Note about CJK bluezone support. + +2011-05-06 Werner Lemberg + + [autofit] Remove unused struct member. + + * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'. + +2011-05-04 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify. + +2011-05-01 Just Fill Bugs + Werner Lemberg + + [autofit] Add more debugging functions. + + * src/autofit/afhints.c (af_glyph_hints_get_num_segments, + af_glyph_hints_get_segment_offset): New functions. + +2011-05-01 suzuki toshiya + + Add new option `--disable-mmap' to configure script. + + * builds/unix/configure.raw: New option `--disable-mmap' + is added. It is for the developers to simulate the systems + without mmap() (like 4.3BSD, minix etc) on POSIX systems. + +2011-04-30 suzuki toshiya + + [truetype] Always recalculate the sfnt table checksum. + + * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate + the sfnt table checksum even if non-zero value is written in + the TrueType font header. Some bad PDF generators write + wrong values. For details see examples and benchmark tests + of the latency by recalculation: + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html + +2011-04-30 suzuki toshiya + + [truetype] Register a set of tricky fonts, NEC FA family. + + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): + Add 8 checksum sets for NEC FA family. For the tricky fonts + without some tables (e.g. NEC FA fonts lack cvt table), + extra check is added to assure that a zero-length table in the + registry is not included in the font. + +2011-04-29 suzuki toshiya + + [truetype] Fix a bug in the sfnt table checksum getter. + + * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the + return value of face->goto_table() correctly. + +2011-04-28 Werner Lemberg + + [autofit] Improve tracing messages. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues, + af_latin_align_linked_edge, af_latin_hint_edges): Do it. + +2011-04-25 Kan-Ru Chen + + [truetype] Always check the checksum to identify tricky fonts. + + Because some PDF generators mangle the family name badly, + the trickyness check by the checksum should be invoked always. + For sample PDF, see + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html + + * src/truetype/ttobjs.c (tt_check_trickyness): Even when + tt_check_trickyness_family() finds no trickyness, + tt_check_trickyness_sfnt_ids() is invoked. + +2011-04-22 suzuki toshiya + + [autofit] Add more Indic scripts with hanging baseline. + + * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu, + Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are + added. + +2011-04-21 Behdad Esfahbod + + Always ignore global advance. + + This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant, + deprecated, and ignored. The new behavior is what every major user + of FreeType has been requesting. Global advance is broken in many + CJK fonts. Just ignoring it by default makes most sense. + + * src/truetype/ttdriver.c (tt_get_advances), + src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics, + tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph), + src/truetype/ttgload.h: Implement it. + + * docs/CHANGES: Updated. + +2011-04-21 rainy6144 + + [autofit] Blur CJK stems if too many to preserve their gaps. + + When there are too many stems to preserve their gaps in the + rasterization of CJK Ideographs at a low resolution, blur the + stems instead of showing clumped stems. See + http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html + for details. + + * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of + the previous stem by `has_last_stem' and `last_stem_pos', and skip + a stem if the current and previous stem are too near to preserve + the gap. + +2011-04-18 Werner Lemberg + + Integrate autofitter debugging stuff. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_DEBUG_AUTOFIT): New macro. + + * include/freetype/internal/fttrace.h: Add trace components for + autofitter. + + * src/autofit/aftypes.h (AF_LOG): Removed. + (_af_debug): Removed. + + * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/. + s/AF_LOG/FT_TRACE5/. + Define FT_COMPONENT where necessary. + +2011-04-18 Werner Lemberg + + Synchronize config files. + + * builds/unix/ftconfig.in: Copy missing assembler routines from + include/freetype/config/ftconfig.h. + +2011-04-13 Werner Lemberg + + Fix Savannah bug #33047. + + Patch submitted by anonymous reporter. + + * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer + difference. + +2011-04-11 Kan-Ru Chen + + Fix reading of signed integers from files on 64bit platforms. + + Previously, signed integers were converted to unsigned integers, but + this can fail because of sign extension. For example, 0xa344a1eb + becomes 0xffffffffa344a1eb. + + We now do the reverse which is always correct because the integer + size is the same during the cast from unsigned to signed. + + * include/freetype/internal/ftstream.h, src/base/ftstream.c + (FT_Stream_Get*): Replace with... + (FT_Stream_GetU*): Functions which read unsigned integers. + Update all macros accordingly. + + * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated. + +2011-04-07 Werner Lemberg + + Update Unicode ranges for CJK autofitter; in particular, add Hangul. + + * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0. + +2011-04-04 Werner Lemberg + + Fix formatting of autofit debug dumps. + + * src/autofit/afhints.c (af_glyph_hints_dump_points, + af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust + column widths. + +2011-03-30 Werner Lemberg + + * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused. + +2011-03-24 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256. + This limit is given on p. 37 of Adobe Technical Note #5014. + +2011-03-23 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning. + +2011-03-20 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts. + +2011-03-19 Werner Lemberg + + More C++ compilation fixes. + + * src/autofit/afhints.c (af_glyph_hints_dump_points, + af_glyph_hints_dump_segments, af_glyph_hints_dump_edges) + [__cplusplus]: Protect with `extern "C"'. + +2011-03-18 Werner Lemberg + + C++ compilation fixes. + + * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c + (af_cjk_hints_apply): Use cast for `dim'. + +2011-03-17 Alexei Podtelezhnikov + + A better fix for Savannah bug #32671. + + * src/smooth/ftgrays.c (gray_render_conic): Clean up code and + replace WHILE loop with a more natural DO-WHILE construct. + +2011-03-16 Werner Lemberg . + + * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field. + Suggested by Graham Asher. + +2011-03-09 Werner Lemberg + + Make FT_Sfnt_Table_Info return the number of SFNT tables. + + * src/sfnt/sfdriver.c (sfnt_table_info): Implement it. + * include/freetype/tttables.h: Update documentation. + * docs/CHANGES: Updated. + +2011-03-07 Bram Tassyns + + Fix Savannah bug #27988. + + * src/cff/cffobjs.c (remove_style): New function. + (cff_face_init): Use it to strip off the style part of the family + name. + +2011-03-07 Werner Lemberg + + * docs/CHANGES: Updated. + +2011-03-07 Alexei Podtelezhnikov + + Quick fix for Savannah bug #32671. + + This isn't the optimal solution yet, but it restores the previous + rendering quality (more or less). + + * src/smooth/ftgrays.c (gray_render_conic): Do more splitting. + +2011-03-06 Werner Lemberg + + Fix autohinting fallback. + + * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs, + ignoring CFF-based OTFs. + +2011-02-27 Werner Lemberg + + Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (AF_CONFIG_OPTION_USE_WARPER): New macro. + * src/autofit/aftypes.h (AF_USE_WARPER): Remove. + + * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/. + + * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy + variable assignment with a typedef. + +2011-02-26 Werner Lemberg + + [autofit] Slight simplifications. + + * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove + test which always returns false. + (af_latin_hints_compute_blue_edges): Remove redundant assignment. + +2011-02-24 Werner Lemberg + + * docs/PROBLEMS: Mention rendering differences on different + platforms. + Suggested and worded by Jason Owen . + +2011-02-24 Werner Lemberg + + [autofit] Comment out unused code. + + * src/autofit/aflatin.c, src/autofit/aflatin2.c + (af_latin_hints_compute_edges): Do it. + +2011-02-24 Werner Lemberg + + * src/autofit/afhints.h (AF_GlyphHints): Remove unused field. + +2011-02-20 suzuki toshiya + + [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'. + Found by , see detail in + + http://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html + + * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node + buckets[cache->p + cache->mask] too. + +2011-02-19 Kevin Kofler + + Fall back to autohinting if a TTF/OTF doesn't contain any bytecode. + This is Savannah patch #7471. + + * src/base/ftobjs.c (FT_Load_Glyph): Implement it. + +2011-02-19 John Tytgat + + [cff] Fix subset prefix removal. + This is Savannah patch #7465. + + * src/cff/cffobjs.c (remove_subset_prefix): Update length after + subset prefix removal. + +2011-02-13 Bradley Grainger + + Add inline assembly version of FT_MulFix for MSVC. + + * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386 + function from GNU inline assembly syntax (see #ifdef __GNUC__ block + above) to MASM syntax for Microsoft Visual C++. + +2011-02-13 Bradley Grainger + + Add project and solution files in Visual Studio 2010 format. + + * builds/win32/.gitignore: Ignore user-specific cache files. + * builds/win32/vc2010/: Add VS2010 project & solution files, created + by upgrading builds/win32/vc2008/freetype.vcproj. + * objs/.gitignore: Ignore Visual Studio output files. + +2011-02-01 Werner Lemberg + + * src/autofit/afdummy.c: Include `aferrors.h'. + Problem reported by Chris Liddell . + +2011-02-01 Werner Lemberg + + [cff] Ignore unknown operators in charstrings. + Patch suggested by Miles.Lau . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing + message for unknown operators and continue instead of exiting with a + syntax error. + +2011-02-01 Werner Lemberg + + [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also. + + * src/truetype/ttgload.c (tt_loader_init): Handle + `FT_LOAD_PEDANTIC'. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep, + tt_size_init_bytecode, tt_size_ready_bytecode): New argument to + handle pedantic mode. + * src/truetype/ttobjs.h: Updated. + +2011-01-31 Werner Lemberg + + [truetype] Protect jump instructions against endless loops. + + * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error + if offset is zero. + +2011-01-31 Werner Lemberg + + [truetype] Improve handling of invalid references. + + * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference + error codes only if pedantic hinting is active. At the same time, + try to provide sane values which hopefully allow useful + continuation. Exception to this is CALL and LOOPCALL – due to + possible stack corruption it is necessary to bail out. + +2011-01-31 Werner Lemberg + + [truetype] Improve handling of stack underflow. + + * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP, + Ins_DELTAC): Exit with error only if `pedantic_hinting' is set. + Otherwise, try to do something sane. + +2011-01-30 Werner Lemberg + + * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message. + +2011-01-30 LIU Sun-Liang + + [truetype]: Fix behaviour of MIAP for invalid arguments. + + * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in + case of error. + +2011-01-18 Werner Lemberg + + [truetype] Fix handling of MIRP instruction. + + Thanks to Greg Hitchcock who explained the issue. + + * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with + `>' since the description in the specification is incorrect. + This fixes, for example, glyph `two' in font `Helvetica Neue LT Com + 65 medium' at 15ppem. + +2011-01-15 suzuki toshiya + + Fix ARM assembly code in include/freetype/config/ftconfig.h. + + * include/freetype/config/ftconfig.h (FT_MulFix_arm): + Copy the maintained code from builds/unix/ftconfig.in. + Old GNU binutils could not accept the reduced syntax + `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT, + `orr %0, %0, %2, lsl #16' is better. Reported by + Johnson Y. Yan. The bug report by Qt developers is + considered too. + + http://bugreports.qt.nokia.com/browse/QTBUG-6521 + +2011-01-15 Werner Lemberg + + [raster] Make bbox handling the same as with Microsoft's rasterizer. + + Right before B/W rasterizing, the bbox gets simply rounded to + integers. This fixes, for example, glyph `three' in font `Helvetica + Neue LT Com 65 Medium' at 11ppem. + + Thanks to Greg Hitchcock who explained this behaviour. + + * src/raster/ftrend1.c (ft_raster1_render): Implement it. + +2011-01-15 suzuki toshiya + + Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS. + + * builds/unix/configure.raw: Consider recent gcc-standard + flags to specify architecture in CFLAGS & LDFLAGS + harmonization. Requested by Savannah bug #32114, to + support multilib feature of BuildRoot SDK correctly. + +2011-01-15 suzuki toshiya + + Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer. + + * builds/unix/configure.raw: Some important options that + included in CFLAGS but not in LDFLAGS are copied to + LDFLAGS, but the last option in CFLAGS was not checked. + +2011-01-13 Werner Lemberg + + [raster] Add undocumented drop-out rule to the other bbox side also. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, + Horizontal_Sweep_Drop): Implement it. + +2011-01-13 Werner Lemberg + + [raster] Reduce jitter value. + + This catches a rendering problem with glyph `x' from Tahoma at + 10ppem. It seems that the increase of the precision in the change + from 2009-06-11 makes a larger jitter value unnecessary. + + * src/raster/ftraster.c (Set_High_Precision): Implement it. + +2011-01-13 Werner Lemberg + + [raster] Handle drop-outs at glyph borders according to Microsoft. + + If a drop-out rule would switch on a pixel outside of the glyph's + bounding box, use the right (or top) pixel instead. This is an + undocumented feature, but some fonts like `Helvetica Neue LT Com 65 + Medium' heavily rely on it. + + Thanks to Greg Hitchcock who explained this behaviour. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, + Horizontal_Sweep_Drop): Implement it. + +2011-01-09 suzuki toshiya + + [cache] Fix Savannah bug #31923, patch drafted by Harsha. + + When a node comparator changes the cached nodes during the + search of a node matching with queried properties, the + pointers obtained before the function should be updated to + prevent the dereference to freed or reallocated nodes. + To minimize the rescan of the linked list, the update is + executed when the comparator notifies the change of cached + nodes. This change depends previous change: + 38b272ffbbdaae276d636aec4ef84af407d16181 + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the + top node if the cached nodes are changed. + * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Notice if a cache query induced the node list change. + + Some node comparators (comparing the cache node contents and the + properties specified by the query) can flush the cache node to + prevent the cache inflation. The change may invalidate the pointers + to the node obtained before the node comparison, so it should be + noticed to the caller. The problem caused by the cache node + changing is reported by Harsha, see Savannah bug #31923. + + * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument + `FT_Bool* list_changed' to indicate the change of the cached nodes + to the caller. + (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by + `_list_changed'. + (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed' + and update it when `FTC_Manager_FlushN' flushes any nodes. + + * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new + FTC_Node_CompareFunc type. + (ftc_gnode_compare): Ditto. + + * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_basic_gnode_compare_faceid): New argument `FT_Bool* + list_changed' to indicate the change of the cache nodes (anyway, it + is always FALSE). + + * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to + indicate the change of the cache nodes (anyway, it is always FALSE). + (ftc_cmap_node_remove_faceid): Ditto. + + * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to + `FTC_CACHE_TRYLOOP_END', because the result is not needed. + (FTC_Cache_Lookup): Watch the change of the cache nodes by + `list_changed'. + (FTC_Cache_RemoveFaceID): Ditto. + + * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_gnode_compare): New argument `FT_Bool* list_changed' to + indicate the change of the cache nodes (anyway, it is always FALSE). + (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be + passed to `ftc_gnode_compare'. + * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto. + + * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool* + list_changed' to indicate the change of the cache nodes, anyway. It + is updated by `FTC_CACHE_TRYLOOP'. + (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be + passed to `ftc_snode_compare'. + * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'. + + * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd + argument `FTC_Cache cache' to fit FTC_Node_CompareFunc + prototype. + * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway, + `cache' is not used by its child `ftc_gnode_compare'. + +2011-01-09 suzuki toshiya + + [cache] Deduplicate the code to get the top node by a hash. + + There are several duplicated code fragments getting the top node + from a cache by a given hash, like: + + idx = hash & cache->mask; + if ( idx < cache->p ) + idx = hash & ( cache->mask * 2 + 1 ); + pnode = cache->buckets + idx; + + To remove duplication, a cpp-macro to do same work + `FTC_NODE__TOP_FOR_HASH' is introduced. For non-inlined + configuration, non-`ftc_get_top_node_for_hash' is also introduced. + + * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare + and implement inlined version. + (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'. + * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined + version. + (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'. + (ftc_node_hash_link): Ditto. + (FTC_Cache_Lookup): Ditto. + +2011-01-09 suzuki toshiya + + [cache] inline-specific functions are conditionalized. + + * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for + inlined configuration. This function is a thin wrapper of + `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see + `nodecmp' argument). Under non-inlined configuration, + `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via + `FTC_Cache->clazz.node_compare'. + + * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto. + * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for + `ftc_snode_compare'. + * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Correct a type mismatch under non-inlined config. + + * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup' + takes the node via a pointer `FTC_Node*', differently from cpp-macro + `FTC_CACHE_LOOKUP_CMP'. + +2011-01-06 suzuki toshiya + + Update Jamfile to include Bzip2 support. + + * Jamfile: Include src/bzip2 to project. + Comments for lzw, gzip, bzip2 are changed to clarify that + they are for compressed PCF fonts, not others. + (e.g. compressed BDF fonts are not supported yet) + +2011-01-05 suzuki toshiya + + Update Symbian project files to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/symbian/bld.inf: Include ftbzip2.h. + * builds/symbian/freetype.mmp: Include ftbzip2.c. + +2011-01-05 suzuki toshiya + + Update classic MacOS makefiles to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o. + * builds/mac/FreeType.m68k_far.make.txt: Ditto. + * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x. + * builds/mac/FreeType.ppc_classic.make.txt: Ditto. + +2011-01-05 suzuki toshiya + + Update Amiga makefiles to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c. + * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c. + * builds/amiga/smakefile: Ditto. + +2011-01-05 suzuki toshiya + + Update pkg-config tools to reflect Bzip2 support. + + * builds/unix/freetype-config.in: Include `-lbz2' to + --libs output, if built with Bzip2 support. + * builds/unix/freetype2.in: Ditto. + +2011-01-05 suzuki toshiya + + * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro. + + SYSTEM_ZLIB is used to switch the builtin zlib source + or system zlib source out of FreeType2. But ftbzip2 + module has no builtin bzip2 library and always requires + system bzip2 library. Thus SYSTEM_BZ2LIB is always yes, + it is not used. + +2011-01-03 Werner Lemberg + + */rules.mk: Handle `*pic.c' files. + +2010-12-31 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64. + Problem reported by Tom Bishop . + +2010-12-31 Werner Lemberg + + Improve bzip2 support. + + * include/freetype/ftmoderr.h: Add bzip2. + + * docs/INSTALL.ANY, docs/CHANGES: Updated. + + * src/pcf/README: Updated. + * include/freetype/internal/pcftypes.h: Obsolete, removed. + +2010-12-31 Joel Klinghed + + Add bzip2 compression support to handle *.pcf.bz2 files. + + * builds/unix/configure.raw: Test for libbz2 library. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_BZIP2): Define. + * include/freetype/config/ftheader.h (FT_BZIP2_H): Define. + + * include/freetype/ftbzip2.h: New file. + + * src/bzip2/*: New files. + + * src/pcf/pcf.h: s/gzip_/comp_/. + * src/pcf/pcfdrvr.c: Include FT_BZIP2_H. + s/gzip_/comp_/. + (PCF_Face_Init): Handle bzip2 compressed files. + + * docs/formats.txt, modules.cfg: Updated. + +2010-12-25 Harsha + + Apply Savannah patch #7422. + + If we encounter a space in a string then the sbit buffer is NULL, + height and width are 0s. So the check in ftc_snode_compare will + always pass for spaces (comparision with 255). Here the comments + above the condition are proper but the implementation is not. When + we create an snode I think it is the proper way to initialize the + width to 255 and then put a check for being equal to 255 in snode + compare function. + + * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with + value 255. + (ftc_snode_compare): Fix condition. + +2010-12-13 Werner Lemberg + + Fix parameter handling of `FT_Set_Renderer'. + Reported by Kirill Tishin . + + * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'. + +2010-12-09 Werner Lemberg + + [cff] Allow `hlineto' and `vlineto' without arguments. + + We simply ignore such instructions. This is invalid, but it doesn't + harm; and indeed, there exist such subsetted fonts in PDFs. + + Reported by Albert Astals Cid . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [cff_op_hlineto]: Ignore instruction if there aren't any arguments + on the stack. + +2010-11-28 Werner Lemberg + + * Version 2.4.4 released. + ========================= + + + Tag sources with `VER-2-4-4'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.4 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. + + * builds/unix/configure.raw (version_info): Set to 12:2:6. + +2010-11-28 Alexei Podtelezhnikov + + [ftsmooth]: Minor code simplification. + + * src/smooth/ftgrays (gray_render_cubic): Do only one comparison + instead of two. + +2010-11-26 Johnson Y. Yan + + [truetype] Better multi-threading support. + + * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone + references. + +2010-11-23 John Tytgat + + * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand + start_point, check_points, add_point, add_point1, close_contour + macros. + Remove add_contour macro. + Return error code from t1_builder_start_point and + t1_builder_check_points when there was one (instead of returning 0). + +2010-11-22 suzuki toshiya + + [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums. + Some Latin TrueType fonts are still expected to be unhinted. + Fix Savannah bug #31645. + + * src/truetype/ttobjs.c (tt_check_trickyness): Divided to... + (tt_check_trickyness_family): this checking family name, and + (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep. + (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum + for specified subtable even if cleared by lazy PDF generators. + (tt_synth_sfnt_checksum): Function to calculate the checksum. + +2010-11-18 Werner Lemberg + + [truetype] Fix `loca' handling for inconsistent number of glyphs. + Reported by Johnson Y. Yan . + + * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing, + handle case where `loca' is the last table in the font. + +2010-11-18 Werner Lemberg + + [sfnt] Ignore all errors while loading `OS/2' table. + Suggested by Johnson Y. Yan . + + * src/sfnt/sfobjs.c (sfnt_load_face): Do it. + +2010-11-18 Johnson Y. Yan + + [type1] Fix matrix normalization. + + * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling + factor. + +2010-11-18 Werner Lemberg + + [type1] Improve guard against malformed data. + Based on a patch submitted by Johnson Y. Yan + + + * src/type1/t1load.c (read_binary_data): Check `size'. + +2010-11-17 Werner Lemberg + + [sfnt] While tracing, output table checksums also. + + * src/sfnt/ttload.c (tt_face_load_font_dir): Do it. + +2010-11-04 suzuki toshiya + + [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545. + + Since 2010-07-04, `find_variant_selector_charmap' returns + the first cmap subtable always under rogue-compatible + configuration, it causes NULL pointer dereference and + make UVS-related functions crashed. + + * src/base/ftobjs.c (Fix find_variant_selector_charmap): + Returns UVS cmap correctly. + +2010-11-01 Alexei Podtelezhnikov + + [ftsmooth] Improve rendering. + + * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3, + cubic deviations have been estimated _after_ UPSCALE, whereas + conic ones have been evaluated _before_ UPSCALE, which produces + inferior rendering results. Fix this. + Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has + been tested with demo images sent to the mailing list. See + + http://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html + + and later mails in this thread. + +2010-10-28 Werner Lemberg + + [ftraster] Minor fixes. + + Reported by Tom Bishop . + + * src/raster/ftraster.c (ULong): Remove unused typedef. + (TWorker): Remove unused variable `precision_mask'. + +2010-10-28 Werner Lemberg + + [ftraster] Fix rendering. + + Problem reported by Tom Bishop ; see + thread starting with + + http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html + + * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv + since the involved multiplication exceeds 32 bits. + +2010-10-25 suzuki toshiya + + Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'. + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert + the type of `_idx' from FT_PtrDist (by previous change) + to original FT_UFast, to match with FT_CacheRec. + +2010-10-24 suzuki toshiya + + [cache] Change the hash types to FT_PtrDist. + + On LLP64 platforms (e.g. Win64), FT_ULong (32-bit) + variables are inappropriate to calculate hash values + from the memory address (64-bit). The hash variables + are extended from FT_ULong to FT_PtrDist and new + hashing macro functions are introduced. The hash + values on 16-bit memory platforms are changed, but + ILP32 and LP64 are not changed. The hash value in + the cache subsystem is not reverted to the memory + address, so using signed type FT_PtrDist is safe. + + * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash + function to replace `FTC_FACE_ID_HASH' for portability. + * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace + `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'. + * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto. + + * src/cache/ftccache.h (FTC_NodeRec): The type of the + member `hash' is changed from FT_UInt32 to FT_PtrDist. + + * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the + argument `hash' is changed from FT_UInt32 to FT_PtrDist. + (FTC_Cache_NewNode): Ditto. + * src/cache/ftccache.c (ftc_cache_add): Ditto. + (FTC_Cache_Lookup): Ditto. (FTC_Cache_NewNode): Ditto. + * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto. + * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto. + + * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type + of the internal variable `hash' is changed to FT_PtrDist + from FT_UInt32. (FTC_ImageCache_LookupScaler): Ditto. + (FTC_SBitCache_Lookup): Ditto. + (FTC_SBitCache_LookupScaler): Ditto. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto. + Also the type of the internal variable `_idx' is changed to + FT_PtrDist from FT_UFast for better pointer calculation. + +2010-10-24 suzuki toshiya + + [cache] Hide internal macros incompatible with LLP64. + + `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and + `FTC_IMAGE_TYPE_HASH' are enclosed by + FT_CONFIG_OPTION_OLD_INTERNALS and hidden from + normal clients. + + For the history of these macros, see the investigation: + http://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html + +2010-10-24 suzuki toshiya + + Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist. + + On LLP64 platforms (e.g. Win64), unsigned long (32-bit) + cannot cover the memory address (64-bit). `FT_MEM_VAL' is + used for hashing only and not dereferred, so using signed + type FT_PtrDist is safe. + + * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the + return value from FT_ULong to FT_PtrDist. + (ft_mem_table_resize): The type of hash is changed to + FT_PtrDist. (ft_mem_table_get_nodep): Ditto. + +2010-10-24 suzuki toshiya + + Replace "%lx" for memory address by "%p", LLP64 platforms. + + On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover + the memory address (64-bit). Also the casts from the pointer + type to long int should be removed to preserve the address + correctly. + + * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p". + (End_Profile) Ditto. + * src/truetype/ttinterp.c (Init_Context): Ditto. + +2010-10-15 Alexei Podtelezhnikov + + Fix thinko in spline flattening. + + FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL. + + * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and + replace it everywhere with ONE_PIXEL/8. + +2010-10-13 suzuki toshiya + + [raccess] Skip unrequired resource access rules by Darwin VFS. + + When a resource fork access rule by Darwin VFS could open the + resource fork but no font is found in it, the rest of rules + by Darwin VFS are skipped. It reduces the warnings of the + deprecated resource fork access method by recent Darwin kernel. + Fix MacPorts ticket #18859: + http://trac.macports.org/ticket/18859 + + * src/base/ftobjs.c (load_face_in_embedded_rfork): + When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it + means that the file is possible to be `fopen'-ed but zero-sized. + Also there is a case that the resource fork is not zero-sized, + but no supported font exists in it. If a rule by Darwin VFS + falls into such cases, there is no need to try other Darwin VFS + rules anymore. Such cases are marked by vfs_rfork_has_no_font. + If it is TRUE, the Darwin VFS rules are skipped. + +2010-10-13 suzuki toshiya + + [raccess] Grouping resource access rules based on Darwin VFS. + + MacOS X/Darwin kernel supports a few tricky methods to access + a resource fork via ANSI C or POSIX interface. Current resource + fork accessor tries all possible methods to support all kernels. + But if a method could open a resource fork but no font is found, + there is no need to try other methods older than tested method. + To determine whether the rule index is for Darwin VFS, a local + function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced. + To use this function in ftobjs.c etc but it should be inlined, + it is exposed by ftbase.h. + + * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify + the rules to access the resource fork. + (raccess_guess_rec): New structure to bind the rule function and + rule enum type. + (FT_Raccess_Guess): The list of the rule functions is replaced by + (raccess_guess_table): This. This is exposed to be used by other + intra module functions. + (raccess_rule_by_darwin_vfs): A function to return a boolean + if the rule specified by the rule index is based on Darwin VFS. + +2010-10-13 suzuki toshiya + + Prevent to open a FT_Stream for zero-sized file on non-Unix. + + builds/unix/ftsystem.c prevents to open an useless stream from + zero-sized file and returns FT_Err_Cannot_Open_Stream, but the + stream drivers for ANSI C, Amiga and VMS return useless streams. + For cross-platform consistency, all stream drivers should act + same. + + * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened + file is zero, FT_Err_Cannot_Open_Stream is returned. + * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto. + * src/vms/ftsystem.c (FT_Stream_Open): Ditto. + +2010-10-12 Werner Lemberg + + Fix Savannah bug #31310. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against + invalid `runcnt' values. + +2010-10-08 Chris Liddell + + Fix Savannah bug #31275. + + * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H. + +2010-10-06 Werner Lemberg + + [truetype] Improve error handling of `SHZ' bytecode instruction. + Problem reported by Chris Evans . + + * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'. + +2010-10-05 Werner Lemberg + + Fix Savannah bug #31253. + Patch submitted by an anonymous reporter. + + * configure: Use `awk' instead of `sed' to manipulate output of `ls + -id'. + +2010-10-03 Werner Lemberg + + * Version 2.4.3 released. + ========================= + + + Tag sources with `VER-2-4-3'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.3 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 12:1:6. + +2010-10-03 Werner Lemberg + + Avoid `configure' issues with symbolic links. + Based on a patch from Alexander Stohr . + + * configure: Compare directories using `ls -id'. + Check existence of `reference' subdirectory before creating it. + +2010-10-02 Werner Lemberg + + Fix Savannah bug #31088 (sort of). + + * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64 + function entries. + +2010-10-02 Werner Lemberg + + [smooth] Fix splitting of cubics for negative values. + + Reported by Róbert Márki ; see + http://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html. + + * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko. + +2010-10-01 suzuki toshiya + + Fix Savannah bug #31040. + + * src/truetype/ttinterp.c (free_buffer_in_size): Remove. + (TT_RunIns): Updated. + +2010-09-20 suzuki toshiya + + [sfnt] Make error message filling NULL names less verbose. + + * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message + when we fill `post' names by NULL, instead of per-entry message. + +2010-09-20 Graham Asher + David Bevan + + [smooth] Fix and improve spline flattening. + + This fixes the flattening of cubic, S-shaped curves and speeds up + the handling of both the conic and cubic arcs. + + See the discussions on the freetype-devel mailing list in late + August and September 2010 for details. + + * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro. + (TWorker): Remove `conic_level' and `cubic_level' elements. + (gray_render_conic): Simplify algorithm. + (gray_render_cubic): New algorithm; details are given in the code + comments. + (gray_convert_glyph): Remove heuristics. + +2010-09-19 Werner Lemberg + + Minor fixes. + + * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]' + is `FT_UShort'. + (cff_index_access_element): Don't use additions in comparison. + * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type + `FT_Long'. + Don't use additions in comparison. + Improve tracing messages. + (load_format_25, load_post_names): Make `post_limit' of type + `FT_Long'. + +2010-09-19 suzuki toshiya + + [cff] Truncate the element length at the end of the stream. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_index_access_element): `off2', the offset + to the next element is truncated at the end of the stream to prevent + invalid I/O. As `off1', the offset to the requested element has + been checked by `FT_STREAM_SEEK', `off2' should be checked + similarly. + +2010-09-19 suzuki toshiya + + [cff] Ignore CID > 0xFFFFU. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if + greater than 0xFFFFU. CFF font spec does not mention maximum CID in + the font, but PostScript and PDF spec define that maximum CID is + 0xFFFFU. + +2010-09-19 suzuki toshiya + + [cff] Make trace message in` cff_charset_load' verbose. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_load): Report the original `nleft' + and truncated `nleft'. + +2010-09-19 suzuki toshiya + + [cff] Correct `max_cid' from CID array length to max CID. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_compute_cids): Don't increment + max_cid after detecting max CID. The array CFF_Charset->cids is + allocated by max_cid + 1. + (cff_charset_cid_to_gindex): Permit CID is less than or equal to + CFF_Charset->max_cid. + * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is + calculated as CFF_Charset->max_cid + 1. + +2010-09-19 suzuki toshiya + + [truetype] Sanitize the broken offsets in `loca'. + See Savannah bug #31040. + + * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the + offset to the requested entry in `glyf' exceeds the end of the + table, return offset=0, length=0. If `pos2', the offset to the next + entry in `glyf' exceeds the end of the table, truncate the entry + length at the end of `glyf' table. + +2010-09-19 suzuki toshiya + + [sfnt] Prevent overrunning in `post' table parser. + See Savannah bug #31040. + + * src/sfnt/ttpost.c (load_post_names): Get the length of `post' + table and pass the limit of `post' table to `load_format_20' and + `load_format_25'. + (load_format_20): Stop the parsing when we reached at the limit of + `post' table. If more glyph names are required, they are filled by + NULL names. + +2010-09-17 suzuki toshiya + + [truetype] Don't duplicate size->twilight structure to be freed. + See Savannah bug #31040 for detail. + + * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate + FT_GlyphZoneRec size->twilight to be freed. If duplicated, + `FT_FREE' erases the duplicated pointers only and leave original + pointers. They can cause the double-free crash when the burst + errors occur in TrueType interpreter and `free_buffer_in_size' is + invoked repeatedly. + +2010-09-15 Werner Lemberg + + Make bytecode debugging with FontForge work again. + + * src/truetype/ttinterp.c (TT_RunIns): Don't call + `free_buffer_in_size' in case of error if a debugger is active. + +2010-09-14 Werner Lemberg + + Improve tracing messages. + + * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing + message. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add + tracing message. + * src/truetype/ttgload.c (tt_loader_init): Add tracing message. + * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if + glyph doesn't fit into a small bitmap container. + +2010-09-13 Werner Lemberg + + Fix minor issues reported by . + + * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove + redundant conditional check. + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto. + * src/cff/cffload.c (cff_encoding_load): Remove conditional check + which always evaluates to `true'. + * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points): + Ditto. + * src/truetype/ttinterp.c (Ins_IUP): Ditto. + * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if + value is already dereferenced. + * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'. + +2010-08-31 suzuki toshiya + + Ignore the environmental setting of LIBTOOL. + Patch is suggested by Adrian Bunk, to prevent unexpected + reflection of environmental LIBTOOL. See: + http://savannah.nongnu.org/patch/?7290 + + * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to + $(FT_LIBTOOL_DIR)/libtool. FT_LIBTOOL_DIR is set to $(BUILD_DIR) + by default. + * configure: When configured for the building out of source tee, + FT_LIBTOOL_DIR is set to $(OBJ_DIR). + +2010-08-31 suzuki toshiya + + [truetype] Decrease the trace level catching the interpreter error. + + * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level + showing the error when the interpreter returns with an error, + from` FT_TRACE7' to `FT_TRACE1'. + +2010-08-30 suzuki toshiya + + [truetype] Prevent bytecode reuse after the interpretation error. + + * src/truetype/ttinterp.c (free_buffer_in_size): New function to + free the buffer allocated during the interpretation of this glyph. + (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if + an error occurs in the bytecode interpretation. The interpretation + of invalid bytecode may break the function definitions and referring + them in later interpretation is danger. By unsetting these flags, + `fpgm' and `prep' tables are executed again in next interpretation. + + This fixes Savannah bug #30798, reported by Robert Święcki. + +2010-08-29 Werner Lemberg + + [ftraster] Pacify compiler. + + * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is + not used. + +2010-08-29 Werner Lemberg + + [cff] Allow SIDs >= 65000. + + * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20: + The threshold for SIDs is not applicable here. I misinterpreted the + `SID values 65000 and above are available for implementation use' + sentence in the CFF specification. + + Problem reported by Ivan Ninčić . + +2010-08-28 suzuki toshiya + + Force hinting when the font lacks its familyname. + + In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt + stream may lack `name' table because they are not required. Hinting + for nameless fonts is safer for PDFs including embedded Chinese + fonts. Written by David Bevan, see: + + http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html + http://lists.freedesktop.org/archives/poppler/2010-August/006310.html + + * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by + nameless font is given, TRUE is returned to enable hinting. + +2010-08-28 suzuki toshiya + + Register yet another tricky TrueType font. + + * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?', + a Kaishu typeface paired with `HuaTianSongTi?' by Huatian + Information Industry. + +2010-08-17 Teijo Kinnunen + + Fix Savannah bug #30788. + + * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for + NULL too. + +2010-08-10 Werner Lemberg + + Try to fix Savannah bug #30717 (and probably #30719 too). + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another + overflow test for `width' and `height'. + +2010-08-06 Werner Lemberg + + * Version 2.4.2 released. + ========================= + + + Tag sources with `VER-2-4-2'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.2 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 12:0:6. + +2010-08-06 suzuki toshiya + + Fix Savannah bug #30648. + + * src/base/ftobjs.c (FT_Done_Library): Specify the order of font + drivers during the face closing process. Type42 faces should be + closed before TrueType faces, because a Type42 face refers to + another internal TrueType face which is created from sfnt[] array on + the memory. + +2010-08-06 Yuriy Kaminskiy + + [raster] Fix valgrind warning. + + * src/raster/ftraster.c (Decompose_Curve) : Access point[0] + only if we don't hit `limit'. + +2010-08-06 suzuki toshiya + + Fix Savannah bug #30658. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total + length of collected POST segments does not overrun the allocated + buffer. + +2010-08-06 Yuriy Kaminskiy + + Fix conditional usage of FT_MulFix_i386. + With -ansi flag, gcc does not define `i386', only `__i386__'. + + * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: + s/i386/__i386__/. + +2010-08-05 Werner Lemberg + + Fix Savannah bug #30657. + + * src/truetype/ttinterp.c (BOUNDSL): New macro. + Change `BOUNDS' to `BOUNDSL' where appropriate. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of + `cvtSize'. + +2010-08-05 Werner Lemberg + + Fix Savannah bug #30656. + + * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative + string_size. + Fix comparison. + +2010-08-05 suzuki toshiya + + [cff] Don't use any values in decoder after parsing error. + + * src/cff/cffgload.c (cff_slot_load): Skip the evaluations + of the values in decoder, if `cff_decoder_parse_charstrings' + returns any error. + +2010-08-04 Werner Lemberg + + Fix Savannah bug #30644. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison. + +2010-08-04 Werner Lemberg + + `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set. + + * devel/ftoption.h: Synchronize with + include/freetype/config/ftoption.h. + +2010-08-04 suzuki toshiya + + [cff] Improve stack overflow test. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack + after execution of operations too. + +2010-07-18 Werner Lemberg + + Add reference counters and to FT_Library and FT_Face objects. + + * include/freetype/freetype.h (FT_Reference_Face): New function. + * include/freetype/ftmodapi.h (FT_Rererence_Library): New function. + + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec, + FT_LibraryRec): New field `refcount'. + + * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle + `refcount'. + (FT_Reference_Face, FT_Reference_Library): Implement new functions. + (FT_Done_Face, FT_Done_Library): Handle `refcount'. + + * docs/CHANGES: Updated. + +2010-07-18 Werner Lemberg + + * Version 2.4.1 released. + ========================= + + + Tag sources with `VER-2-4-1'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.1. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 11:1:5. + +2010-07-17 Werner Lemberg + + [cff] Final try to fix `hintmask' and `cntrmask' limit check. + + Problem reported by Tobias Wolf . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Sigh. I'm apparently too silly to fix this + correctly in less than three tries. + +2010-07-12 Werner Lemberg + + * Version 2.4.0 released. + ========================= + + + Tag sources with `VER-2-4-0'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.0. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 11:0:5. + +2010-07-12 Werner Lemberg + + Remove C++ warnings. + + */*: Initialize pointers where necessary to make g++ happy. + +2010-07-12 malc + Richard Henderson + + Fix type-punning issues with C++. + + * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]: + Emulate a `typeof' operator with an inline template which uses + `static_cast'. + +2010-07-11 Werner Lemberg + + Fix C++ compilation issue. + + * src/tools/apinames.c (names_dump) : Fix + type of `dot' variable. + +2010-07-10 suzuki toshiya + + Fix another case reported in Savannah bug #30373. + Permit a face for Type1, Type42 and CFF without charmap, + patch by Tor Andersson. + + * src/type1/t1objs.c (T1_Face_Init): Reset the error if it + is FT_Err_No_Unicode_Glyph_Name. + * src/type42/t42objs.c (T42_Face_Init): Ditto. + * src/cff/cffobjs.c (cff_face_init): Ditto. + +2010-07-09 suzuki toshiya + + Use defined macros to set {platform,encoding}_id. + + * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to + set charmap.{platfom,encoding}_id. + * src/pcf/pcfdrivr.c: Ditto. + * src/winfonts/winfnt.c: Ditto. + * src/type1/t1objs.c: Ditto. + * src/type42/t42objs.c: Ditto. + * src/cff/cffobjs.c: Ditto. + * src/pfr/pfrobjs.c: Ditto. + +2010-07-09 suzuki toshiya + + Fix Savannah bug #30373. + Too serious check of errors by `FT_CMap_New' since 2010-07-04 + is fixed. Reported by Tor Andersson. + + * include/freetype/fterrdef.h + (PSnames_Err_No_Unicode_Glyph_Name): New error code to + indicate the Unicode charmap synthesis failed because + no Unicode glyph name is found. + + * src/psnames/psmodule.c (ps_unicodes_init): Return + PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name + is found in the font. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Return + CFF_Err_No_Unicode_Glyph_Name when no SID is available. + + * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New' + is failed by the lack of Unicode glyph name. + * src/type42/t42objs.c (T42_Face_Init): Ditto. + * src/cff/cffobjs.c (cff_face_init): Ditto. + +2010-07-09 Ken Sharp + + Make ftraster.c compile in stand-alone mode with MSVC compiler. + + * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef + since there is no `inttypes.h' for MSVC. + +2010-07-08 Werner Lemberg + + Fix Savannah bug #30361. + + * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check. + +2010-07-06 Werner Lemberg + + Pacify compiler. + + * src/cff/cffload.c (cff_index_get_pointers): Initialize + `new_bytes'. + +2010-07-05 Eugene A. Shatokhin + + Fix Savannah bug #27648. + + * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call + `raster_done' only if we have an outline glyph format. + +2010-07-05 Werner Lemberg + + Fix Savannah bug #30030. + + * builds/win32/*/freetype.vcproj: Add ftxf86.c. + +2010-07-05 Werner Lemberg + + [cff] Next try to fix `hintmask' and `cntrmask' limit check. + + Problem reported by malc . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : It is possible that there is just a single byte + after the `hintmask' or `cntrmask', e.g., a `return' instruction. + +2010-07-04 suzuki toshiya + + Restrict the number of the charmaps in a rogue-compatible mode. + Fix for Savannah bug #30059. + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the + minimum character code passed by a legacy rogue client by... + * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE): + This. It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is + undefined (thus the rogue client compatibility is not required). + + * src/cff/cffobjs.c (cff_face_init): Abort the automatic + selection or synthesis of Unicode cmap subtable when the charmap + index exceeds FT_MAX_CHARMAP_CACHEABLE. + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message + when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE. + + * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap + is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search + earlier one. + (find_variant_selector_charmap): When UVS charmap is found after + FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one. + (FT_Select_Charmap): When a charmap matching with requested + encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search + earlier one. + (FT_Set_Charmap): When a charmap matching with requested + charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search + earlier one. + (FT_Get_Charmap_Index): When a requested charmap is found + after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap + index. + +2010-07-04 Werner Lemberg + + TrueType hinting is no longer patented. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define. + (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine. + + * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated. + * docs/TRUETYPE, docs/PATENTS: Removed. + +2010-07-04 suzuki toshiya + + Check error value by `FT_CMap_New'. + + * src/cff/cffobjs.c (cff_face_init): Check error value by + `FT_CMap_New'. + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. + * src/type1/t1jobjs.c (T1_Face_Init): Ditto. + * src/type42/t42jobjs.c (T42_Face_Init): Ditto. + +2010-07-03 Werner Lemberg + + Make ftgrays.c compile stand-alone again. + + * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'. + (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define. + +2010-07-02 suzuki toshiya + + Additional fix for Savannah bug #30306. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the + POST fragment is 0, the segment is completely ignored. The declared + length of the segment is not cared at all. According to Adobe + Technical Note 5040, type 0 segment is a comment only and should not + be loaded for the interpreter. Reported by Robert Święcki. + +2010-07-01 Werner Lemberg + + [truetype] Protect against code range underflow. + + * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow + negative IP values. + +2010-07-01 Werner Lemberg + + [truetype] Add rudimentary tracing for bytecode instructions. + + * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New + array. + (TT_RunIns): Trace opcodes. + +2010-06-30 Werner Lemberg + + Fix Savannah bug #30263. + + * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned + int' to avoid integer overflow. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller + threshold values for `width' and `height'. This is not directly + related to the bug fix but makes sense anyway. + +2010-07-01 suzuki toshiya + + Initial fix for Savannah bug #30306. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the + length of fragment declared in the POST fragment header, and prevent + an underflow in length calculation. Some fonts set the length to + zero in spite of the existence of a following 16bit `type'. + Reported by Robert Święcki. + +2010-07-01 suzuki toshiya + + Additional fix for Savannah bug #30248 and #30249. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size + during gathering PFB fragments embedded in LaserWriter PS font for + Macintosh. Reported by Robert Święcki. + +2010-06-30 Alexei Podtelezhnikov + + Minor optimizations by avoiding divisions. + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): + Replace divisions with multiplication in comparisons. + +2010-06-29 Werner Lemberg + + Fix minor tracing issues. + + * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels. + +2010-06-27 Werner Lemberg + + [cff] Really fix `hintmask' and `cntrmask' limit check. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Fix thinko and handle tracing also. + +2010-06-27 Werner Lemberg + + Fix valgrind warning. + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize + `result' array. + +2010-06-27 Werner Lemberg + + [cff] Fix memory leak. + + * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in + case of errors. + +2010-06-27 Werner Lemberg + + [cff] Protect against invalid `hintmask' and `cntrmask' operators. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Ensure that we don't exceed `limit' while parsing + the bit masks of the `hintmask' and `cntrmask' operators. + +2010-06-26 Werner Lemberg + + Fix PFR change 2010-06-24. + + * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against + invalid indices. + +2010-06-26 Werner Lemberg + + Improve PFR tracing messages. + + * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for + simple and compound glyph offsets. + +2010-06-26 Werner Lemberg + + Fix last PFR change. + + * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic. + +2010-06-26 Werner Lemberg + + Fix Savannah bug #30262. + + * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth' + arbitrarily to 100 to avoid stack exhaustion. + +2010-06-26 Werner Lemberg + + Add some memory checks (mainly for debugging). + + * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error + if the frame size is larger than the stream size. + + * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if + seeking a position larger than the stream size. + +2010-06-25 Werner Lemberg + + Fix Savannah bug #30261. + + * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain + neither outline nor bitmap glyphs. + +2010-06-25 Werner Lemberg + + Fix Savannah bug #30254. + + * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for + first offset also. + +2010-06-25 suzuki toshiya + + Initial fix for Savannah bug #30248 and #30249. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during + reading a PFB fragment embedded in LaserWriter PS font for Macintosh. + Reported by Robert Święcki. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30247. + + * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with + zero metrics. + +2010-06-24 Graham Asher + + * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm. + The previous version was too aggressive, as demonstrated in + http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html. + +2010-06-24 Werner Lemberg + + */*: Use module specific error names where appropriate. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30236. + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer + to `cmap_table'. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30235. + + * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against + invalid indices if there aren't any coordinates for indexing. + +2010-06-24 Werner Lemberg + + [bdf]: Font properties are optional. + + * src/bdf/bdflib.c (_bdf_readstream): Use special error code to + indicate a redo operation. + (_bdf_parse_start): Handle `CHARS' keyword here too and pass current + input line to `_bdf_parse_glyph'. + +2010-06-23 Werner Lemberg + + Fix Savannah bug #30220. + + * include/freetype/fterrdef.h + (BDF_Err_Missing_Fontboundingbox_Field): New error code. + + * src/bdf/bdflib.c (_bdf_parse_start): Check for missing + `FONTBOUNDINGBOX' field. + Avoid memory leak if there are multiple `FONT' lines (which is + invalid but doesn't hurt). + +2010-06-21 Werner Lemberg + + Fix Savannah bug #30168. + + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of + subglyphs to avoid endless recursion. + +2010-06-20 Werner Lemberg + + Fix Savannah bug #30145. + + * src/psaux/psobjs.c (t1_builder_add_contour): Protect against + `outline == NULL' which might happen in invalid fonts. + +2010-06-19 Werner Lemberg + + Fix Savannah bug #30135. + + * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static + string `empty'. + (_bdf_parse_glyph): Avoid memory leak in case of error. + +2010-06-15 Werner Lemberg + + Fix Savannah bug #30108. + + * src/autofit/afglobal.c (af_face_globals_compute_script_coverage): + Properly mask AF_DIGIT bit in comparison. + +2010-06-11 Werner Lemberg + + Fix Savannah bug #30106. + + Point numbers for FreeType's implementation of hinting masks are + collected before the final number of points of a glyph has been + determined; in particular, the code for handling the `endchar' + opcode can reduce the number of points. + + * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that + `end_point' is not larger than `glyph->num_points'. + +2010-06-11 Werner Lemberg + + [cff]: Improve debugging output. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Implement it. + +2010-06-10 Graham Asher + + ftgrays: Speed up rendering of small cubic splines. + + * src/smooth/ftgrays.c (gray_render_cubic): Implement new, + simplified algorithm to find out whether the spline can be replaced + with two straight lines. See this thread for more: + + http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html + +2010-06-09 Werner Lemberg + + Fix Savannah bug #30082. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Protect against stack underflow. + +2010-06-08 Werner Lemberg + + Fix Savannah bug #30053. + + * src/cff/cffparse.c (cff_parse_real): Handle border case where + `fraction_length' has value 10. + +2010-06-07 Werner Lemberg + + Fix Savannah bug #30052. + This bug has been introduced with commit 2415cbf3. + + * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect + against endless loop in case of corrupted font header data. + +2010-05-26 Werner Lemberg + + Remove unused variable. + Found by Graham. + + * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused + variable `first' in first block. + +2010-05-22 Werner Lemberg + + Fix various memory problems found by linuxtesting.org. + + * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free), + src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c + (ft_pfr_check): Check `face'. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and + `charmap->face'. + (FT_Render_Glyph): Check `slot->face'. + (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'. + +2010-05-22 Werner Lemberg + + autofit: Remove dead code. + Suggested by Graham. + + * src/autofit/afhints.c (af_glyph_hints_compute_inflections): + Removed. + (af_glyph_hints_reload): Remove third argument. + Update all callers. + +2010-05-21 Bram Tassyns + + Fix Savannah bug #27987. + + * src/cff/cffobjs.c (remove_subset_prefix): New function. + (cff_face_init): Use it to adjust `cffface->family_name'. + +2010-05-20 Werner Lemberg + + TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'. + + Acroread does the same. + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call + `Update_Max' to adjust size of instructions array if necessary and + add a rough safety check. + + (load_truetype_glyph): Save `loader->byte_len' before recursive + call. + + * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max): + Declare it as FT_LOCAL. + +2010-05-18 Hongbo Ni + + Apply Savannah patch #7196. + + * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont + index is out of range. + +2010-05-11 Werner Lemberg + + * docs/formats.txt: Give pointer to PCF documentation. + Information provided by Alan Coopersmith + . + +2010-05-10 Ken Sharp + + Fix Savannah bug #29846. + + Previously we discovered fonts which used `setcurrentpoint' to set + the initial point of a contour to 0,0. This caused FreeType to + raise an error, because the `setcurrentpoint' operator is only + supposed to be used with the results from an OtherSubr subroutine. + + This was fixed by simply ignoring the error and carrying on. + + Now we have found a font which uses setcurrentpoint to actually + establish a non-zero point for a contour during the course of a + glyph program. FWIW, these files may be produced by an application + called `Intaglio' on the Mac, when converting TrueType fonts to + Type 1. + + The fix allows the new invalid behaviour, the old invalid behaviour + and real proper usage of the operator to work the same way as Adobe + interpreters apparently do. + + (t1_decoder_parse_charstrings): Make `setcurrentpoint' use the top + two elements of the stack to establish unconditionally the current x + and y coordinates. + + Make the `flex' subroutine handling (OtherSubr 0) put the current + x,y coordinates onto the stack, instead of two dummy uninitialised + values. + +2010-04-14 Ken Sharp + + Fix Savannah bug #29444. + + * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid) + `lineto' immediately after `hsbw', in accordance with Acrobat, GS, + and others. + +2010-04-14 Michał Cichoń + + Fix Savannah bug #27999. + + * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove + selected entry, not all. + +2010-04-06 Jonathan Kew + + Add overflow check to `fvar' table. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance + count. + +2010-04-05 Ken Sharp + + Fix Savannah bug #29335. + + * src/raster/ftraster.c (Line_Up): Use slow multiplication to + prevent overflow. This shouldn't have any serious impact on speed, + however. + +2010-04-05 Werner Lemberg + + Add new function `FT_Library_SetLcdFilterWeights'. + + This is based on code written by Lifter + . It fixes + FreeDesktop bug #27386. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New + function. + + * include/freetype/ftlcdfil.h: Updated. + + * docs/CHANGES: Updated. + +2010-04-01 John Tytgat + + Fix Savannah bug #29404. + + * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1 + of `head' table of TrueType fonts). + +2010-03-14 suzuki toshiya + + Fix `multi build' for Tytgat's CFF driver improvement. + + * src/base/cffload.h (cff_index_get_name): Added. + +2010-03-12 suzuki toshiya + + Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c. + + * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'. + +2010-03-11 Chris Liddell + + Fix Savannah bug #27442. + + * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'. + +2010-03-09 Werner Lemberg + + Remove unused variable. + Reported by Graham. + + * src/cff/cffparse.c (cff_parse_real): Remove `rest'. + +2010-03-02 John Tytgat + + Improve CFF string (especially glyphname) lookup performance. + + We do this by avoiding memory allocation and file I/O. This is + Savannah patch #7104. + + * src/cff/cfftypes.h: Include PS cmaps service and + FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_SubFontRec): Remove `num_local_subrs'. + (CFF_FontRec): Add `num_strings', `strings', and `string_pool' + fields. + Remove `string_index' and `num_global_subrs' fields. + Use real types instead of `void' for `pshinter' and `psnames' fields. + + * src/cff/cffload.c: Don't include PS cmaps service. + (cff_index_get_pointers): Add `pool' parameter which allows to + insert an extra NUL character for each String INDEX entry. + (cff_index_get_name): Make it a local function. + (cff_index_get_string): New function. + (cff_subfont_load): Updated. + (cff_font_load): Initialize `num_strings', `strings', and + `string_pool' fields in the `CFF_FontRec' structure. + (cff_index_get_sid_string): Use `cff_index_get_string' instead of + `cff_index_get_name'. + (cff_font_done): Updated. + + * src/cff/cffload.h: Don't include PS cmaps service. + (cff_index_get_string): Added. + (cff_index_get_sid_string): Updated. + + * src/cff/cffobjs.c: Don't include PS cmaps service and + FT_INTERNAL_POSTSCRIPT_HINTS_H. + (cff_size_get_globals_funcs, cff_slot_init): Updated. + (cff_face_init): Follow `cff_index_get_name', + `cff_index_get_string', and `cff_index_get_sid_string' changes. + + * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed. + (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'. + (cff_cmap_unicode_init): Updated. + + * src/cff/cffdrivr.c: Don't include PS cmap service. + (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS + service. + (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API + `cff_index_get_sid_string' change. + (cff_get_name_index): Use `cff_index_get_string' instead of + `cff_index_get_name'. + + * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (cff_decoder_init, cff_decoder_prepare): Updated. + +2010-02-27 Werner Lemberg + + Simplify code. + Suggested by Behdad. + + * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we + call FT_Get_Next_Char anyway if necessary. + +2010-02-26 Behdad Esfahbod + + Improve handling of invalid glyph indices in char->index functions. + + * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a + loop. + +2010-02-18 Chris Liddell + + Fix Savannah bug #28905. + + Initialize phantom points before calling the incremental interface + to update glyph metrics. + + * src/truetype/ttgload.c (tt_get_metrics_incr_overrides) + [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from... + (tt_get_metrics): This. + Updated. + (load_truetype_glyph): Use tt_get_metrics_incr_overrides. + +---------------------------------------------------------------------------- + +Copyright 2010-2012 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/extensions/externals/src/freetype-2.4.9/ChangeLog.20 b/extensions/externals/src/freetype-2.4.9/ChangeLog.20 new file mode 100644 index 0000000..8fcc5e7 --- /dev/null +++ b/extensions/externals/src/freetype-2.4.9/ChangeLog.20 @@ -0,0 +1,2613 @@ +2002-02-09 Werner Lemberg + + * README: Fix typo. + * docs/CHANGES: Minor fixes. + + + * Version 2.0.8 released. + ========================= + + +2002-02-08 David Turner + + * docs/CHANGES: Updating for 2.0.8. + + * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and + removing `FT_Get_Next_Char' from the API (temporarily). + + * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; + note that this function might temporarily be removed for the 2.0.8 + release. + +2002-02-07 David Turner + + * src/pcf/pcfread.c (pcf_load_font): Removed immature support of + the AVERAGE_WIDTH property. + +2002-02-06 David Turner + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in + PDF documents do not include 'cmap', 'post' and 'name' tables, the + SFNT face loader has been changed to not immediately report an + error if these are not present. + + Note that the specification _requires_ these tables, but Adobe + seems to ignore it completely. + + * src/sfnt/ttcmap.c: Removing compiler warnings. + + * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. + (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code + is now in ... + (pcf_get_metric): Here. + (pcfSeekToType): Renamed to ... + (pcf_seek_to_table_type): This. + Use FT_Int. + (pcfHasType): Renamed to ... + (pcf_has_table_type): This. + Use FT_Int. + (find_property): Renamed to ... + (pcf_find_property): This. + Use FT_Int. + (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts + better (delaying format checks out of FT_Access_Frame .. + FT_Forget_Frame blocks to avoid leaving the stream in an incorrect + state when encountering an invalid PCF font). + + * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... + (PCF_Face_Done): This. + (PCF_Init_Face): Renamed to ... + (PCF_Face_Init): This. + (PCF_Get_Char_Index): Renamed to ... + (PCF_Char_Get_Index): This. + (PCF_Get_Next_Char): Renamed to ... + (PCF_Char_Get_Next): This. + (pcf_driver_class): Updated. + + * src/pcf/pcf.h (PCF_Done_Face): Removed. + +2002-02-06 Detlef Würkner + + * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. + + * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' + property to return correct character pixel (width/height) pairs for + embedded bitmaps. + +2002-02-04 Keith Packard + + Adding the function `FT_Get_Next_Char', doing the obvious thing + w.r.t. the selected charmap. + + * include/freetype/freetype.h: Add prototype. + * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' + typedef. + (FT_Driver_Class): Use it. + * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' + typedef. + (PSNames_Interface): Use it. + * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' + typedef. + (TT_CMapTable): Use it. + + * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing + high-level API. + * src/cff/cffdrivr.c (cff_get_next_char): New function. + (cff_driver_class): Add it. + * src/cid/cidriver.c (Cid_Get_Next_Char): New function. + (t1cid_driver_class): Add it. + * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. + (pcf_driver_class): Add it. + * src/psnames/psmodule.c (PS_Next_Unicode): New function. + (psnames_interface): Add it. + * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, + code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary + functions. + (TT_CharMap_Load): Use them. + * src/truetype/ttdriver.c (Get_Next_Char): New function. + (tt_driver_class): Add it. + * src/type1/t1driver.c (Get_Next_Char): New function. + (t1_driver_class): Add it. + * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. + (winfnt_driver_class): Add it. + + * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for + Unicode and Latin 1 encodings. + +2002-02-02 Keith Packard + + * builds/unix/freetype-config.in: Add missing `fi'. + + + * Version 2.0.7 released. + ========================= + + +2002-02-01 David Turner + + * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 + for the new release. + +2002-01-31 David Turner + + * README, README.UNX, docs/CHANGES: Updating documentation for the + 2.0.7 release. + +2002-01-30 David Turner + + * INSTALL: Moved to ... + * docs/INSTALL: Here to avoid conflicts with the `install' script on + Windows, where the filesystem doesn't preserve case. + +2002-01-29 David Turner + + * configure: Fixed the script. It previously didn't accept more + than one argument correctly. For example, when typing: + + ./configure --disable-shared --disable-nls + + the `--disable-nls' was incorrectly sent to the `make' program. + +2002-01-29 Werner Lemberg + + * README.UNX: Fix typo. + * builds/unix/install.mk (uninstall): Fix library name for libtool. + +2002-01-28 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of + the face object (face->toc.tables, face->root.family_name, + face->root.available_size, face->charset_encoding, + face->charset_registry are now freed). Thanks to Niels Moseley. + +2002-01-28 Roberto Alameda + + * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. + +2002-01-28 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy + of `base' string for decrypting to not modify the original data. + Based on a patch by Jakub Bogusz . + +2002-01-27 Giuliano Pochini + + * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused + bad rendering of thin lines (less than one pixel thick). + +2002-01-25 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work + actually. + +2002-01-25 Martin Zinser + + * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix + compilation warnings. + * src/base/descrip.mms (OBJS): Add `ftmm.obj'. + * src/cache/descrip.mms (ftcache.obj): Dependencies added. + +2002-01-25 WANG Yi + + * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. + +2002-01-21 Antoine Leca + + * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' Würkner) in + the URL for the online resource. + +2002-01-18 Ian Brown + + * builds/win32/ftdebug.c: New file. + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-18 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. + * builds/amiga/README: Updated. + +2002-01-18 Ian Brown + + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-13 Werner Lemberg + + * builds/unix/freetype2.a4: The script was still buggy. + * builds/unix/freetype-config.in: Make it really work for any install + prefix. + +2002-01-10 Werner Lemberg + + * builds/unix/freetype2.a4: Fix some serious bugs. + +2002-01-09 David Turner + + * builds/unix/configure.ac: Build top-level Jamfile. + +2002-01-09 Maxim Shemanarev + + * src/smooth/ftgrays.c (gray_render_line): Small optimization to + the smooth anti-aliased renderer that deals with vertical segments. + This results in a 5-7% speedup in rendering speed. + +2002-01-08 David Turner + + Added some wrapper scripts to make the installation more + Unix-friendly. + + * configure, install: New files. + + * INSTALL, README.UNX: Updated installation documentation to use the + new 'configure' and 'install' scripts. + +2002-01-07 David Turner + + + * Version 2.0.6 released. + ========================= + + + * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. + + * src/tools/docmaker.py: Fixed HTML quoting in sources. + (html_format): Replaced with ... + (html_quote): New function. + (html_quote0): New function. + (DocCode::dump_html): Small improvement. + (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. + + * include/freetype/config/ftoption.h: Setting default options for + a release build (debugging off, bytecode interpreter off). + + * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, + src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, + src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler + warnings (in pedantic compilation modes). + +2002-01-05 David Turner + + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + `ClearType-like' rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). + +2002-01-04 David Turner + + * README.UNX: Added special README file for Unix users. + + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. + +2002-01-03 Werner Lemberg + + * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler + warning. + +2002-01-03 Keith Packard + + * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that + all FreeType input streams are closed in child processes of a `fork' + on Unix systems. This is important to avoid (potential) access + control issues. + +2002-01-03 David Turner + + * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the + library when dealing with certain weird fonts like `Stalingrad', in + `sadn.pfb' (this font has no full font name entry). + + * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): + New function to check the consistency of outline data. + + * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to + ensure that loaded glyphs are valid. This allows certain fonts like + `tt1095m_.ttf' to be loaded even though it appears they contain + really funky glyphs. + + There still is a bug there, though. + + * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. + +2001-12-30 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Fix advance width + computation of auto-hinted glyphs. This noticeably improves the + spacing of letters in KDE and Gnome. + +2001-12-25 Antoine Leca + + * builds/dos/detect.mk: Correcting the order for Borland compilers: + 16-bit bcc was never selected, always overridden by 32-bit bcc32. + +2001-12-22 Francesco Zappa Nardelli + + * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + and fix incorrect computation of `available_sizes'. + +2001-12-22 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an + incorrect glyph advance in the case of mono-width fonts (like + Courier, Andale Mono, and others). + +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. + (ps_mask_table_merge, ps_hints_open, ps_hints_stem, + ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix + FT_ERROR messages. + * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as + `trace_pshalgo1'. + * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as + `trace_pshalgo2'. + * include/freetype/internal/ftdebug.h (FT_Trace): Updated. + + * docs/modules.txt: New file. + +2001-12-21 David Turner + + * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): + Ignore invalid `hintmask' and `cntrmask' operators (instead of + returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' + couldn't be rendered otherwise (it seems its charstring is buggy, + though this requires more analysis). + (FT_COMPONENT): Define. + + * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c + (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a + bug where the X and Y axis where inverted in the postscript hinter. + This caused problem when displaying on non-square surfaces. + + * src/pshinter/pshalgo2.c: s/vertical/dimension/. + + * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating + point constant with a fixed-float equivalent. For some reasons not + all compilers are capable of directly computing a floating pointer + constant casted to FT_Fixed, and will link a math library instead. + +2001-12-20 Werner Lemberg + + * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix + tracing strings. + * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + ftc_family_table_free, FTC_Manager_Check): Ditto. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. + + * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. + +2001-12-20 David Turner + + Added PostScript hinter support to the CFF and CID drivers. + + * include/freetype/internal/cfftypes.h (CFF_Font): New member + `pshinter'. + * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. + * src/cff/cffload.h: Updated. + * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... + (CFF_Builder_Init): This. + Added new argument `hinting'. + (CFF_Done_Builder): Renamed to ... + (CFF_Builder_Done): This. + (CFF_Init_Decoder): Added new argument `hinting'. + (CFF_Parse_CharStrings): Implement vstem support. + (CFF_Load_Glyph): Updated. + Add hinting support. + (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). + (cff_argument_counts): Updated. + * src/cff/cffgload.h: Updated. + * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + functions. + (CFF_Init_Face): Renamed to ... + (CFF_Face_Init): This. + Add hinter support. + (CFF_Done_Face): Renamed to ... + (CFF_Face_Done): This. + (CFF_Init_Driver): Renamed to ... + (CFF_Driver_Init): This. + (CFF_Done_Driver): Renamed to ... + (CFF_Driver_Done): This. + * src/cff/cffobjs.h: Updated. + * src/cff/cffdrivr.c (cff_driver_class): Updated. + + * include/freetype/internal/t1types.h (CID_FaceRec): New member + `pshinter'. + * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. + * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, + CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. + (CID_Done_Face): Renamed to ... + (CID_Face_Done): This. + (CID_Init_Face): Renamed to ... + (CID_Face_Init): This. + Add hinting support. + (CID_Init_Driver): Renamed to ... + (CID_Driver_Init): This. + (CID_Done_Driver): Renamed to ... + (CID_Driver_Done): This. + * src/cid/cidobjs.h: Updated. + * src/cidriver.c: Updated. + + * src/pshinter/pshrec.c (t2_hint_stems): Fixed. + + * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that + crashed the library on exit. + + * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix + transformation of hinted glyphs. + + * src/cid/cidload.c (cid_read_subrs): Fix error condition. + + * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs + routines were never released when CID faces were destroyed. + + * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated + to move the definition of encoding tables back within `cffload.c' + instead of making them part of a shared header (causing problems in + `multi' builds). This reverts change 2001-08-08. + + * docs/CHANGES: Updated for 2.0.6 release. + * docs/TODO: Added `stem3 and counter hints support' to the TODO + list for the Postscript hinter. + * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. + +2001-12-19 David Turner + + * include/freetype/cache/ftcache.h: Added comments to indicate that + some of the exported functions should only be used by applications + that need to implement custom cache types. + + * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug + that prevented composites from loading correctly, due to missing + parentheses around macro parameters. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' + tables optional to load PCL fonts properly. + + * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c + (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): + `Fixed' the bug that prevented embedded bitmaps to be loaded when + the auto-hinter is used. This actually is a hack but will be enough + until the internal re-design scheduled for FreeType 2.1. + + * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline + shifting bug in the monochrome renderer. + + * README: Updated version numbers to 2.0.6. + +2001-12-17 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid + glyph header. + +2001-12-15 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. + * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is + already in ftcmanag.h. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable + `gfam'. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + * ftc_family_table_free): Use FT_EXPORT_DEF. + * include/freetype/cache/ftcmanag.h: Updated. + * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. + * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable + `cfam'. + Remove compiler warning. + (FTC_CMapCache_Lookup): Remove compiler warnings. + (ftc_cmap_family_init): Ditto. + (FTC_CMapCache_Lookup): Ditto. + + * builds/unix/configure.ac: Increase `version_info' to 8:0:2. + * builds/unix/configure: Regenerated. + +2001-12-14 Werner Lemberg + + * builds/mac/README: Updated. + +2001-12-14 Scott Long + + * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when + dealing with invalid fonts (i.e. glyph size < 10 bytes). + +2001-12-14 Sam Latinga + + * builds/mac/freetype.make: A new Makefile to build with MPW on + MacOS classic. + +2001-12-14 David Turner + + * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c + (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), + src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to + all font drivers (the advance width was never hinted when it + should). + + * include/freetype/freetype.h (FREETYPE_PATCH): New macro. + * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't + use `extern' keyword. + +2001-12-12 David Turner + + * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem + psh_globals_new): Adding correct BlueScale/BlueShift support, plus + family blues processing. + * src/pshinter/pshglob.h (PSH_BluesRec): Updated. + + Started adding support for the Postscript hinter in the CFF module. + + * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Parse_CharStrings): Implement it. + * src/cff/cffgload.h: Updated. + +2001-12-12 Werner Lemberg + + * builds/unix/freetype2.m4: Some portability fixes. + +2001-12-11 Jouk Jansen + + * src/base/descrip.mms (OBJS): Add ftdebug.obj. + +2001-12-11 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. + +2001-12-11 David Turner + + * builds/unix/freetype-config.in: Modified the script to prevent + passing `-L/usr/lib' to gcc. + + * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). + + * builds/unix/freetype2.m4: New file for checking configure paths. + We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I + didn't modify builds/unix/install.mk yet. + + * INSTALL: Updated the instructions to build shared libraries with + Jam. They were simply wrong. + + * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused + slightly improper results for `FT_Cos' and `FT_Sin' (example: + FT_Sin(0) == -1!). + +2001-12-11 Detlef Würkner + + * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): + Fixed incorrect argument types. + +2001-12-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts + by setting the `face->metrics.max_advance' correctly. + +2001-12-07 David Turner + + * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new + charmap cache. + * src/cache/ftcache.c: Updated. + + * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. + +2001-12-06 Leonard Rosenthol + + Added support for reading .dfont files on Mac OS X. Also added a + new routine which looks up a given font by name in the Mac OS and + returns the disk file where it resides. + + * src/base/ftmac.c: Include and . + (is_dfont): New auxiliary function. + (FT_New_Face_From_dfont): New function. + (FT_GetFile_From_Mac_Name): New exported function. + (FT_New_Face): Updated. + * include/freetype/ftmac.h: Updated. + +2001-12-06 David Turner + + * src/cache/Jamfile, src/cache/rules.mk: Updated. + +2001-12-06 Werner Lemberg + + * INSTALL: Small update. + +2001-12-05 David Turner + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for + debugging purposes. + Comment out use of `origin'. + + * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug + where outline shifting wasn't correctly undone after bitmap + rasterization. This created problems with certain glyphs (like '"' + of certain fonts) and the cache system. + + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. + * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. + (ps2_hints_apply): Small fix. + +2001-12-05 David Turner + + * src/pshinter/pshalgo2.c (psh2_hint_table_init), + src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler + warnings. + + * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: + Yet another massive rewrite of the caching sub-system in order to + both increase performance and allow simpler cache sub-classing. As + an example, the code for the image and sbit caches is now much + simpler. + + I still need to update the documentation in + www/freetype2/docs/cache.html to reflect the new design though. + + * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New + macro. + (FT_CACHE_INTERNAL_CACHE_H): Updated. + +2001-12-05 David Krause + + * docs/license.txt: s/X Windows/X Window System/. + +2001-12-04 Werner Lemberg + + * src/raster/ftraster.c: Fix definition condition of MEM_Set(). + * src/smooth/ftgrays.c (M_Y): Change value to 192. + * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. + Remove unused variable. + * src/cache/ftcimage.c (ftc_image_node_init, + ftc_image_node_compare): Remove unused variables. + * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused + variable. + * src/raster/ftraster.c (MEM_Set): Move definition down to avoid + compiler warning. + * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to + avoid compiler warnings. + * src/pcf/pcfread.c (tableNames): Use `const'. + (pcf_read_TOC): Change counter name to avoid compiler warning. + Use `const'. + * src/pshinter/pshrec.c (ps_hints_close): Remove redundant + declaration. + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables + to avoid shadowing. + * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. + * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' + and `T1_Size_Done()'. + +2001-11-20 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in MSDN (Passport SDK). Also added + comments about the meaning of bit 57 of the `OS/2' table + (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is + a character beyond 0xFFFF in this font'. Thanks to Detlef Würkner + for noticing this. + +2001-11-20 David Turner + + * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting + routine that created nasty alignment artefacts. + + * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. + + * src/smooth/ftgrays.c: De-activated experimental gamma support. + Apparently, `optimal' gamma tables depend on the monitor type, + resolution and general karma, so it's better to compute them outside + of the rasterizer itself. + (gray_convert_glyph): Use `volatile' keyword. + +2001-10-29 David Turner + + Adding experimental `gamma' support. This produces smoother glyphs + at small sizes for very little cost. + + * src/smooth/ftgrays.c (grays_init_gamma): New function. + (gray_raster_new): Use it. + + Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + * src/autohint/ahglyph.c (ah_outline_load, + ah_outline_link_segments): Implement it. + Fix typos. + (ah_outline_save, ah_outline_compute_segments): Fix typos. + * src/autohint/ahhint.c (ah_align_serif_edge): New argument + `vertical'. Implement improvement. + (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. + Fix typos. + (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix + typos. + (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. + * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. + * src/autohint/ahtypes.h: Ditto. + (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' + (making them global as `ah_debug_disable_horz' and + `ah_debug_disable_vert'). + Fix typos. + + * tests/gview.c: Updated the debugging glyph viewer to show the + hints generated by the `autohint' module. + +2001-10-27 David Turner + + * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that + considerably lowered the performance of the abstract chunk cache. + +2001-10-26 David Turner + + * include/freetype/ftcache.h, include/freetype/cache/*.h, + src/cache/*.c: Major re-design of the cache sub-system to provide + better performance as well as an `Acquire'/`Release' API. Seems to + work well here, but probably needs a bit more testing. + +2001-10-26 Leonard Rosenthol + + * builds/mac/README: Updated to reflect my taking over the project + and that is now being actively maintained. + + * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller + to support loading a face other than the + first from a FOND resource. + (FT_New_Face_From_FOND): Updated. + +2001-10-25 Leonard Rosenthol + + * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac + OS for latest version (7) of CWPro and for recent changes to the FT + source tree. + +2001-10-25 David Turner + + * include/freetype/config/ftoption.h: Updated comments to explain + precisely how to use project-specific macro definitions without + modifying this file manually. + + (FT_CONFIG_FORCE_INT64): Define. + + (FT_DEBUG_MEMORY): New macro. + +2001-10-24 Tom Kacvinsky + + * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. + +2001-10-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Improvements to the memory debugger to report more information in + case of errors. Also, some allocations that occurred through REALLOC + couldn't be previously caught correctly. + + * src/autohint/ahglyph.c (ah_outline_compute_segments, + ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), + src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced + liberal uses of memset() by the MEM_Set() macro. + +2001-10-23 David Turner + + * src/raster/ftraster.c (Update): Removed to be inlined in ... + (Sort): Updated. + +2001-10-22 David Turner + + * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), + src/base/ftdbgmem.c: Updated the memory debugger and + platform-specific implementations of `ftsystem' in order to be able + to debug memory allocations on Unix, VMS and Amiga too! + + * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed + some bogus warnings. + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Modified the debugging memory manager to report the location (source + file name + line number) where leaked memory blocks are allocated in + the source file. + + * src/base/ftdbgmem.c: New debugging memory manager. You must + define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It + will record every memory block allocated and report simple errors + like memory leaks and double deletes. + + * src/base/Jamfile: Include ftdbgmem. + * src/base/rules.mk: Ditto. + * src/base/ftbase.c: Include ftdbgmem.c. + + * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY + macro definition. + + * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the + base component to use the debugging memory manager when the macro + FT_DEBUG_MEMORY is defined. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if + we are working with a CID keyed CFF font. Otherwise, a variable + that was never allocated memory might freed. This is a correction + to the previous patch for freeing subfonts. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to + avoid a memory leak. + +2001-10-21 David Turner + + * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, + src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes + (in multi-object compilation mode, mainly). + +2001-10-20 Tom Kacvinsky + + * src/type1/t1load.c (parse_encoding): Add a test to make sure + that custom encodings (i.e., neither StandardEncoding nor + ExpertEncoding) are not loaded twice when the Type 1 font is + synthetic. + + * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test + for when loading synthetic fonts to make sure that the font name + and subroutines are not loaded twice. This is to remove a memory + leak that occurred because the original memory blocks for these + objects were not deallocated when the objects were parsed the + second time. + +2001-10-19 David Turner + + * src/smooth/ftgrays.c, src/pshinter/pshglob.h, + src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of + compiler warnings. + + * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control + files to build the PostScript hinter with the `old' build system. + +2001-10-19 Jacob Jansen + + * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build + files. + +2001-10-18 David Turner + + * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the + `glnames.py' script used to generate the `pstables.h' header file. + The old one contained a serious bug that made FreeType return + incorrect glyph names for certain glyphs. + + * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of + pixel size from character size to use rounding. This is an + experiment to see whether this gives values similar to Windows for + scaled ascent/descent/etc. + + * src/base/ftcalc.c (FT_Div64by32): Changed the implementation + slightly since the original code was mis-compiled on Mac machines + using the MPW C compiler. + + * src/base/ftobjs.c (FT_Realloc): When a memory block was grown + through FT_Realloc(), the new bytes were not set to 0, which created + some strange bugs in the PostScript hinter. + (destroy_face): Don't deallocate unconditionally. + + * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): + Adding support to new PostScript hinter. + + * include/freetype/internal/psglobal.h, + include/freetype/internal/pshints.h, + include/freetype/config/ftmodule.h, src/pshinter/Jamfile, + src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, + src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, + src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, + src/pshinter/pshglob.c, src/pshinter/pshinter.c, + src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, + src/pshinter/pshrec.h: Adding new PostScript hinter module. + + * include/freetype/internal/ftobjs.h, + include/freetype/internal/internal.h, + include/freetype/internal/psaux.h, + include/freetype/internal/t1types.h, src/psaux/psobjs.c, + src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, + src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, + src/type1/t1objs.h: Updates to use the new PostScript hinter. + + * tests/Jamfile, tests/gview.c: Adding a new glyph hinting + viewer/debugger to the source tree. Note that you will _not_ be + able to compile it since it depends on an unavailable graphics + library named `Nirvana' to render vector images. + +2001-10-17 David Turner + + + * Version 2.0.5 released. + ========================= + + + * include/freetype/freetype.h, include/internal/ftobjs.h, + src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named + 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given + font. Should work with all formats except pure CFF/CEF fonts (this + will be added soon). + + * src/cid/cidriver (cid_get_postscript_name): New function. + (CID_Get_Interface): Handle `postscript_name' interface. + + * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. + (SFNT_Get_Interface): Handle `postscript_name' interface. + + * src/type1/t1driver.c (t1_get_ps_name): New function. + (Get_Interface): Handle `postscript_name' interface. + + * README, docs/CHANGES: Updated for 2.0.5 release. + +2001-10-08 David Turner + + Fixed a bug in `glnames.py' that prevented it from generating + correct glyph names tables. This resulted in the unavailability of + certain glyphs like `Cacute', `cacute' and `lslash' in Unicode + charmaps, even if these were present in the font (causing problems + for Polish users). + + * src/tools/glnames.py (mac_standard_names): Fixed. + (t1_standard_strings): Some fixes and renamed to ... + (sid_standard_names): This. + (t1_expert_encoding): Fixed. + (the_adobe_glyph_list): Renamed to ... + (adobe_glyph_names): This. + (the_adobe_glyphs): Renamed to ... + (adobe_glyph_values): This. + (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): + Updated. + * src/psnames/pstables.h: Regenerated. + * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. + Fix return value. + Use `sid_standard_table' and `ps_names_to_unicode' instead of + `t1_standard_glyphs' and `names_to_unicode'. + (PS_Macintosh_Name): Use `ps_glyph_names' instead of + `standard_glyph_names'. + (PS_Standard_Strings): Use `sid_standard_names' instead of + `t1_standard_glyphs'. + + * doc/BUGS, doc/TODO: New documents. + +2001-10-07 Richard Barber + + * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented + correct LRU behaviour. + +2001-10-07 David Turner + + setjmp() and longjmp() are now used for rollback (i.e. when memory + pool overflow occurs). + + Function names are now all uniformly prefixed with `gray_'. + + * src/smooth/ftgrays.c: Include . + (ErrRaster_MemoryOverflow): New macro. + (TArea): New type to store area values in each cell (using `int' was + too small on 16-bit systems). is included to properly + get the needed data type. + (TCell, TRaster): Use it. + (TRaster): New element `jump_buffer'. + (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get + `outline' from it. + (gray_record_cell): Use longjmp(). + (gray_set_cell): Use gray_record_cell() for error handling. + (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. + (gray_convert_glyph_inner): New function, using setjmp(). + (gray_convert_glyph): Use it. + +2001-10-07 David Turner + + Provide a public API to manage multiple size objects for a given + FT_Face in the new header file `ftsizes.h'. + + * include/freetype/ftsizes.h: New header file, + * include/freetype/internal/ftobjs.h: Use it. + Remove declarations of FT_New_Size and FT_Done_Size (moved to + ftsizes.h). + * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. + * src/base/ftobjs.c (FT_Activate_Size): New function. + * src/cache/ftcmanag.c: Include ftsizes.h. + (ftc_manager_init_size, ftc_manager_flush_size): Use + FT_Activate_Size. + +2001-09-20 Detlef Würkner + + * builds/amiga/*: Added port to Amiga with the SAS/C compiler. + +2001-09-15 Detlef Würkner + + * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. + +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + +2001-08-30 Martin Muskens + + * src/type1/t1load.c (parse_font_matrix): A new way to compute the + units per EM with greater accuracy (important for embedded T1 fonts + in PDF documents that were automatically generated from TrueType + ones). + + * src/type1/t1load.c (is_alpha): Now supports `+' in font names; + this is used in embedded fonts. + + * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that + generated a dangling pointer reference. + +2001-08-30 Anthony Feik + + * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. + +2001-08-25 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of + `cmap_rec_fields'. + + * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: + Undefine FT_ERR_BASE before defining again. + +2001-08-22 Werner Lemberg + + * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. + +2001-08-21 Werner Lemberg + + * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. + +2001-08-21 David Turner + + * include/freetype/config/ftoption.h: Changed the default setting + for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks + source compatibility in a few cases. Updated the comment to explain + that too. + +2001-08-17 Martin Muskens + + * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. + +2001-08-12 Werner Lemberg + + Updating to OpenType 1.3. + + * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, + TT_CMap6): Adding field `language'. + (TT_CMapTable): Removing field `language'. + Type of `length' field changed to FT_ULong. + Adding fields for cmaps format 8, 10, and 12. + (TT_CMapGroup): New auxiliary structure. + (TT_CMap8_12, TT_CMap10): New structures. + * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): + Removed last element of `Reserved' array. + * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, + TT_NAME_ID_CID_FINDFONT_NAME): New macros. + + * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' + field to the new structures. + Fixed freeing of arrays in case of unsuccessful loads. + Added support for loading format 8, 10, and 12 cmaps. + (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 + cmaps. + (code_to_index4): Small improvement. + (code_to_index6): Ditto. + (code_to_index8_12, code_to_index10): New functions. + * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new + structure. + (TT_Load_CMap): Ditto. + + * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS + Unicode). + +2001-08-11 Werner Lemberg + + * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. + +2001-08-09 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to + cff_get_glyph_name for consistency. + + (cff_get_glyph_index): Minor documentation change. + + * src/type1/t1driver.c (t1_get_name_index): New function used in + Get_Interface as the function returned when the `name_index' + function is requested. + + (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. + +2001-08-08 Tom Kacvinsky + + * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays to cffload.h. + + * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays. + + * src/cff/cffdrivr.c (cff_get_name_index): New function, returned + when `cff_get_interface' is called with a request for the + `name_index' function. + + (cff_get_interface): Modified so that it returns the function + `cff_get_name_index' when the `name_index' function is requested. + + * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to + return a glyph index for a given glyph name only if the driver + supports glyph names. + + * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): + New function pointer type definition used in the function + FT_Get_Name_Index. + + * include/freetype/freetype.h (FT_Get_Name_Index): Added + documentation and prototype. + +2001-07-26 Werner Lemberg + + * builds/cygwin/*: Removed. Use the unix stuff instead. + +2001-07-26 Jouk Jansen + + * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated + 2001-06-27. + +2001-07-17 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for + `cursor' and `capacity'. + * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + parameter. + (PS_Table_Add): Use FT_Offset for `new_size'. + + Add support for version 0.5 maxp tables. + + * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. + (TT_Load_OS2): Initialize some values. + +2001-07-13 Werner Lemberg + + * src/base/ftsynth.c: Include ftcalc.h unconditionally. + +2001-07-07 David Turner + + * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: + Removed pedantic compiler warnings when the bytecode interpreter is + compiled in. + +2001-07-03 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove + unused variable `edges'. + (ah_hinter_load): Remove unused variables `old_width' and + `new_width'. + * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. + +2001-06-28 David Turner + + * include/internal/ftstream.h: Modified the definitions + of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. + +2001-06-26 Werner Lemberg + + * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + * include/freetype/internal/psaux.h (PSAux_Interface): Updated. + +2001-06-27 Wolfgang Domröse + + * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + + + * Version 2.0.4 released. + ========================= + + +2001-06-27 David Turner + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and + use of the FT_CALLBACK_DEF macro in order to support 16-bit + compilers. + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures + that the kerning table is correctly sorted (some problem fonts don't + have a correct kern table). + +2001-06-26 Wolfgang Domröse + + * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. + +2001-06-24 David Turner + + * src/base/ftcalc.c (ft_div64by32): Fixed the source to work + correctly on 16-bit systems. + +2001-06-23 Anthony Fok + + * debian/*: Added Debian package build directory for 2.0.4. + +2001-06-22 David Turner + + * docs/PATENTS: Added patents disclaimer. This one was missing! + + * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. + +2001-06-20 Werner Lemberg + + * include/freetype/config/ftconfig.h: Add two more `L's to + constants. + Add missing semicolons. + + * builds/toplevel.mk: Do similar change as for + builds/unix/detect.mk. + + * include/freetype/freetype.h (FT_ENC_TAG): New version to make it + easier to redefine. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + + * src/pcf/pcfread.c (pcf_get_encodings): Add cast. + +2001-06-19 David Turner + + * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: + Updated the Visual C++ project (for the 2.0.4 release). + + * builds/unix/detect.mk: Added rule for AIX detection (which uses + /usr/sbin/init instead of /sbin/init). + + * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the + error macros to simplify handling of new error scheme. + +2001-06-19 Werner Lemberg + + * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. + +2001-06-19 David Turner + + Removing _lots_ of compiler warnings when the most pedantic warning + levels of Visual C++ and Borland C++ are used. Too many files to be + listed here, but FT2 now compiles without warnings with VC++ and the + `/W4' warning level (lint-style). + + * include/freetype/freetype.h (FT_New_Memory_Face): Updated + documentation. + * include/freetype/fttypes.h (FT_BOOL): New macro. + * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ + to suppress warning. + * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, + FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. + (NEXT_*): Use them. + * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_New_Memory_Face): Add `const' to function declaration. + +2001-06-18 Werner Lemberg + + Minor cleanups to remove compiler warnings. + + * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use + `L' for constant. + * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. + * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. + * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. + * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. + * src/base/ftobjs.c (FT_Done_Size): Fix return value. + (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove + unused `memory' variable. + * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. + * src/autohint/ahhint.c (ah_hint_edges_3, + ah_hinter_align_edge_points): Remove unused `before' and `after' + variables. + (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. + (ah_hinter_load): Remove unused `new_advance', `start_contour', + and `metrics' variables. + * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid + compiler warning. + * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' + variable. + * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused + `outline' variable. + (cff_compute_bias): Use `U' for constant. + * src/cid/cidload.c (cid_decrypt): Ditto. + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. + * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' + variable. + * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' + variable. + * src/truetype/ttgload.c (load_truetype_glyph): Remove unused + `num_contours' and `ins_offset' variables. + (compute_glyph_metrics): Remove unused `Top' and `x_scale' + variables. + (TT_Load_Glyph): Remove unused `memory' variable. + * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. + +2001-06-18 Werner Lemberg + + Make the new error scheme source compatible with older FT versions + by introducing another layer. + + * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New + macros. + (FT_NOERRORDEF): Removed. + * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. + +2001-06-16 Werner Lemberg + + * include/freetype/freetype.h (FT_ENC_TAG): New macro. + (FT_Encoding_): Use it. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it + conditionally. + +2001-06-14 David Turner + + Modified the TrueType interpreter to let it use the new + trigonometric functions provided in `fttrigon.h'. This gets rid of + some old 64-bit computation routines, as well as many warnings when + compiling the library with the `long long' 64-bit integer type. + + * include/freetype/config/ftoption.h: Undefine + FT_CONFIG_OPTION_OLD_CALCS. + * include/freetype/internal/ftcalc.h: Rearrange use of + FT_CONFIG_OPTION_OLD_CALCS. + * src/base/ftcalc.c: Add declaration of FT_Int64 if + FT_CONFIG_OPTION_OLD_CALCS isn't defined. + * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. + (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't + defined. + (Current_Ratio, Normalize): Simplify code. + +2001-06-11 Mike Owens + + * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove + compiler warnings. + +2001-06-08 Werner Lemberg + + * builds/unix/configure.in: Renamed to ... + * builds/unix/configure.ac: This to make sure that autoconf 2.50 is + needed. + Run `autoupdate' on it. + Increase `version_info' to 7:0:1. + * builds/unix/configure: Regenerated. + +2001-06-08 David Turner + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that + corrupted transformed glyphs that were auto-hinted (the transform + was applied twice). + + Fixed a bug that returned an invalid linear width for composite + TrueType glyphs. + + * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' + and `linear_def'. + * src/truetype/ttgload.c (load_truetype_glyph, + compute_glyph_metrics): Use it. + + * include/fttypes.h (FT_ERROR_BASE): New macro. + * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it + to make source code work with the new error scheme implemented by + Werner. + * src/base/ftoutln.c (FT_Outline_Render): Ditto. + +2001-06-07 Werner Lemberg + + Updating to libtool 1.4.0 and autoconf 2.50. + + * builds/unix/ltconfig: Removed. + * builds/unix/ltmain.sh, builds/unix/configure.in, + builds/unix/aclocal.m4: Updated. + * builds/unix/configure: Regenerated. + +2001-06-06 Werner Lemberg + + Complete redesign of error codes. Please check ftmoderr.h for more + details. + + * include/freetype/internal/cfferrs.h, + include/freetype/internal/tterrors.h, + include/freetype/internal/t1errors.h: Removed. Replaced with files + local to the module. All extra error codes have been moved to + `fterrors.h'. + + * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. + + * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, + src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the + error names for the module it belongs to. + + * include/freetype/ftmoderr.h: New file, defining the module error + offsets. Its structure is similar to `fterrors.h'. + + * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. + (FT_ERRORDEF): Redefined to use module error offsets. + All internal error codes are now public; unused error codes have + been removed, some are new. + + * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New + macro. + * include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. + + All other source files have been updated to use the new error codes; + some already existing (internal) error codes local to a module have + been renamed to give them the same name as in the base module. + + All make files have been updated to include the local error files. + +2001-06-06 Werner Lemberg + + * src/cid/cidtokens.h: Replaced with... + * src/cid/cidtoken.h: This file for 8+3 consistency. + + * src/raster/ftraster.c: Use macros for header file names. + + * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): + Fix length of `Reserved' array. Note that this isn't the real fix + since recent OpenType specs have introduced a `CaretOffset' field + instead of the first reserved byte. + +2001-05-29 Werner Lemberg + + * INSTALL: Minor fixes. + + + * Version 2.0.3 released. + ========================= + + +2001-05-29 David Turner + + * INSTALL, docs/CHANGES: Updated. + +2001-05-25 David Turner + + Moved several documents from the top-level to the `docs' directory. + + * src/base/ftcalc.c (FT_DivFix): Small fix to return value. + +2001-05-16 David Turner + + * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the + composite loader. Spotted by Keith Packard. + * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, + FT_GlyphLoader_Check_Subglyphs): Ditto. + +2001-05-14 David Turner + + Fixed the incorrect blue zone computations, and improved the + composite support. Note that these changes result in improved + rendering, while sometimes introducing their own artefacts. This is + probably the last big change to the autohinter before the + introduction of a complete replacement. + + * src/autohint/ahglobal.c (sort_values): Fix loop. + * src/autohint/ahglyph.c: Removed some obsolete code. + (ah_outline_compute_edges): Modify code to set the ah_edge_round + flag. + (ah_outline_compute_blue_edges): Add code to compute active blue + zones. + * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags + value. + + * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that + created incorrect scale factors! + (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. + +2001-05-12 Werner Lemberg + + * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. + * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> + __FTTRIGON_H__. + Include FT_FREETYPE_H. + Beautified; added copyright. + * src/base/fttrigon.c: Beautified; added copyright. + +2001-05-11 David Turner + + * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c + (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed + the incorrect EM size computation. + + * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, + adding trigonometric functions to the core API (using Cordic + algorithms). + * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. + + * builds/newline: New file. + * builds/top_level.mk, builds/detect.mk: Use it. This fixes + problems with Make on Windows 2000, as well as problems when `make + distclean' is invoked on a non-Unix platform when there is no + `config.mk' in the current directory. + + * builds/freetype.mk: Fixed a problem with object deletions under + Dos/Windows/OS/2 systems. + + Added new directory to hold tools and test programs. + + * docs/docmaker.py, docs/glnames.py: Moved to... + * src/tools/docmaker.py, src/tools/glnames.py: This place. + * src/tools/cordic.py: New file used to compute arctangent table + needed by fttrigon.c. + * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. + + * src/tools/docmaker.py: Improved the script to add the current date + at the footer of each web page (useful to distinguish between + versions). + + * Jamfile: Fixed incorrect HDRMACRO argument. + + * TODO: Removed the cubic arc bbox computation note, since it has been + fixed recently. + * src/base/ftbbox.c (test_cubic_zero): Renamed to... + (test_cubic_extrema): This function. Use `UL' for unsigned long + constants. + + * include/freetype/t1tables.h, include/freetype/config/ftoption.h: + Formatting. + +2001-05-10 David Turner + + * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak + which happened when trying to open 0-size font files! + +2001-05-09 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Move declaration of + FT_SqrtFixed() out of `#ifdef FT_LONG64'. + +2001-05-08 Francesco Zappa Nardelli + + * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width + computation. + +2001-05-08 David Turner + + * docs/docmaker.py: Updated the DocMaker script in order to add + command line options (--output,--prefix,--title), fix the erroneous + line numbers reported during errors and warnings, and other + formatting issues. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny + fixes related to rounding in 64-bits routines and + pseudo-`optimizations'. + +2001-04-27 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient + normalization algorithm (invalid final bit position, and invalid + shift computation). + +2001-04-26 Werner Lemberg + + * builds/unix/config.guess, builds/unix/config.sub: Updated to + latest versions from gnu.org. + + * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. + + * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() + unconditionally. + * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. + Fix compiler warnings. + * src/base/ftcalc.c: Fix (potential) compiler warnings. + +2001-04-26 David Turner + + * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit + fixed-point square root computation. It is now used even with + 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) + + * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. + +2001-04-25 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use + direct computations with 16.16 values instead of sub-divisions. It + is now slower, but proves a point :-) + + * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: + Fixed the Bézier stack depths. + + * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. + + * builds/beos: Added BeOS-specific files to the old build system + (no changes were necessary to support BeOS in the Jamfile though). + +2001-04-20 David Turner + + * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int + types on platforms where Autoconf is not available). Also removed + FTCALC_USE_LONG_LONG and replaced it with + FT_CONFIG_OPTION_FORCE_INT64. + + * builds/win32/freetype.dsp: Updated the Visual C++ project file. + Doesn't create a DLL yet. + + * cffgload.c: Removed a compilation warning. + +2001-04-10 Tom Kacvinsky + + * t1load.c (parse_charstrings): Changed code for placing .notdef + glyph into slot 0 so that we no longer have a memory access + violation. + + * t1load.h: In structure T1_Loader, added swap_table (of type + PS_Table) to facilitate placing the .notdef glyph into slot 0. + +2001-04-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. + +2001-04-09 Laurence Withers + + * builds/dos/detect.mk: Add support for bash. + +2001-04-05 Werner Lemberg + + * builds/os2/*.mk: These files have been forgotten to update to + the structure of similar makefiles. + * builds/dos/*.mk: Ditto. + * builds/ansi/*.mk: Ditto. + + * builds/win32/win32-def.mk (BUILD): Fix typo. + + * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. + This is already used in the link_*.mk files. + +2001-04-03 Werner Lemberg + + * src/*/Jamfile: Slight changes to make files more cryptic. + +2001-04-03 Werner Lemberg + + * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes + to give files identical structure. + +2001-04-02 Werner Lemberg + + * CHANGES: Reformatted, minor fixes. + * TODO: Updated. + * README: Formatting. + * include/freetype/freetype.h: Formatting. + + * Jamfile: Fix typo. + + * src/cff/cffparse.c: Move error code #defines to... + * include/freetype/internal/cfferrs.h: This file. + * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced + `FT_Err_*' with `CFF_Err_*'. + * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. + * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. + * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + `TT_Err_*'. + * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. + * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, + src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. + + * include/freetype/internal/cfferrs.h: Add + `CFF_Err_Unknown_File_Format'. + * include/freetype/internal/t1errors.h: Add + `T1_Err_Unknown_File_Format'. + * include/freetype/internal/tterrors.h: Add + `TT_Err_Unknown_File_Format'. + + * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' + references. + * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. + + * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use + FT_LOCAL_DEF. + * src/cid/cidobjs.c (CID_Done_Driver): Ditto. + * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + Ditto. + * src/type1/t1objs.c (T1_Done_Driver): Ditto. + * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. + * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. + +2001-04-02 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer + dereference. Submitted by Herbert Duerr . + +2001-03-26 Tom Kacvinsky + + * include/freetype/config/ftconfig.h: Changed hexadecimal + constants to use suffix U to avoid problems with HP-UX's c89 + compiler. Submitted by G.W. Lucas . + +2001-03-24 David Turner + + * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to + the source tree. See www.freetype.org/jam/index.html for details. + + + * Version 2.0.2 released. + ========================= + + +2001-03-20 Werner Lemberg + + * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. + +2001-03-20 David Turner + + * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: + Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to + FT_SFNT_NAMES_H. + + * docs/docmaker.py: Added generation of INDEX link in table of + contents. + + * INSTALL, docs/BUILD: Updated documentation to indicate that the + compilation process has changed slightly (no more `src' required in + the include path). + + * builds/*/*-def.mk: Changed the objects directory from `obj' to + `objs'. + + * include/freetype/config/ftheader.h: Removed obsolete macros like + FT_SOURCE_FILE, etc. and added cache-specific macro definitions that + were previously defined in . Added comments to + be included in a new API Reference section. + + * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each + component needs to add its own directory to the include path at + compile time. Modified all `rules.mk' and `descrip.mms' + accordingly. + +2001-03-20 Werner Lemberg + + * builds/unix/configure.in: Add $ft_version. + * builds/unix/freetype-config.in: Use it. + * builds/unix/configure: Updated. + +2001-03-19 Tom Kacvinsky + + * src/type1/t1load.c (parse_font_matrix): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + + * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + +2001-03-17 David Turner + + * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, + src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove + compiler warnings in pedantic modes. + + * include/config/ft2build.h, include/config/ftheader.h: The file + `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the + top-level . + + * include/config/ftheader.h: Added new section describing the #include + macros. + +2001-03-17 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed + values for the bounding box numbers. + + * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, + set `root->ascender' (`root->descender') to the integer part of + `root->bbox.yMax' (`root->bbox.yMin', respectively). + +2001-03-16 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in + cff_get_interface to facilitate getting a glyph name for glyph index + via FT_Get_Glyph_Name(). + + (cff_get_interface): Added support for getting a glyph name via the + `glyph_name' module interface. Uses the new function + get_cff_glyph_name(). + Submitted by Sander van der Wal . + + * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with + FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is + not defined. This is to add support for getting a glyph name from a + glyph index via FT_Get_Glyph_Name(). + Submitted by Sander van der Wal . + + * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for + deprecated operator `dotsection'. + Submitted by Sander van der Wal . + +2001-03-12 Werner Lemberg + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error + messages. + + * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. + +2001-03-12 Tom Kacvinsky + + * include/freetype/internal/psaux.h: Changed the lenIV member of + the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust + for lenIV seed bytes at the start of a decrypted subroutine. + + * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only + if lenIV >= 0. + + * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only + if lenIV >= 0. + +2001-03-11 Werner Lemberg + + * TODO: Updated. + + * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to + avoid compiler warnings. + +2001-03-10 Tom Kacvinsky + + * TODO: New file. + + * include/freetype/freetype.h: Added prototypes and notes for + three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. + * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added + implementation code. + + * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, + and if that is not available, default to 1000 units per EM. Changed + assignment code for ascender and descender values. + * src/cid/cidload.c (parse_font_matrix): Added units_per_EM + processing. + (parse_font_bbox): Changed to use FT_Fixed number handling. + + * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code + for ascender, descender, and max_advance_width. + * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed + number handling. + +2001-03-10 Henrik Grubbström + + * src/*/*.c: Added many casts to make code more 64bit-safe. + +2001-03-07 Werner Lemberg + + * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. + +2001-03-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait + until parse_font_bbox is changed before we use logical shift rights + in the assignments of `root->ascender', `root->descender', and + `root->max_advance_width'. + + (T1_Done_Face): Free `char_name' table to avoid a memory leak. + Submitted by Sander van der Wal . + +2001-03-05 Tom Kacvinsky + + * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the + the Type 2 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-03-04 Antoine Leca + + * include/freetype/ttnameid.h: Correct a stupid typo which prevented + correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). + +2001-03-04 Werner Lemberg + + * src/autohint/ahtypes.h (AH_Hinter): Add elements + `disable_horz_edges', `disable_vert_edges'. + * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use + them (and remove static variables with the same names). + * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. + * docs/glnames.py: Updated to latest pstables.h changes. + + * builds/unix/detect.mk: Add test for Hurd. + * builds/hurd/detect.mk: Removed. + +2001-03-04 Sander van der Wal + + * src/psnames/pstables.h: Add more `const'. + * src/pcf/pcfutil.c: Ditto. + +2001-03-04 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo + (FT_Glyph_Done -> FT_Done_Glyph). + +2001-03-01 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in Office Xp. + +2001-02-28 David Turner + + * builds/hurd/detect.mk: New file. Added support to detect the GNU + Hurd operating system as Unix-like. Fix submitted by Anthony Fok + . + + * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the + the Type 1 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-02-22 David Turner + + * src/base/ftgrays.c (grays_sweep): The function didn't exit + immediately if `num_cells' was 0 as it should. Thanks to Boris for + finding this out. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when + bitmap rendering fails (thanks to Graham Asher). + +2001-02-13 Werner Lemberg + + * docs/docmaker.py (DocSection::add_element): Use + `self.print_error()'. + + * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). + +2001-02-13 David Turner + + * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker + script to support chapters and section block ordering. Updated the + public header files accordingly. + + * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format + were not correctly copied. + +2001-02-08 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_matrix): Removed an + unnecessary fprintf( stderr, ... ). + +2001-02-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Added code to get the + units_per_EM from the value assigned in parse_font_matrix, if + available. Default to 1000 if not available. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get + the units_per_EM from the FontMatrix. + + (cff_parse_fixed_thousand): New function. Gets a real number from + the CFF font, but multiplies by 1000 (this is to avoid rounding + errors when placing this real number into a 16.16 fixed number). + + (cff_parse_real): Added code so that the integer part is moved + into the high sixteen bits of the 16.16 fixed number. + + * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units + per EM from the CFF dictionary, if available. + + * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, + added a units_per_em member to facilitate passing of units_per_em + from function cff_parse_font_matrix. + + * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric + character. This is so that font names with `-' are fully parsed, + etc... + +2001-02-02 Werner Lemberg + + * src/psaux/psobjs.c (shift_elements): Remove if clause (which is + obsolete now). + + (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + + MEM_Copy() to avoid a memory bug. + +2001-02-01 David Turner + + * docs/docmaker.py: Improved the index sorting routine to place + capital letters before small ones. Added the `' marker to + section blocks in order to give the order of blocks. + +2001-01-30 Antoine Leca + + * include/freetype/ttnameid.h: Latest updates to Microsoft language + ID codes. + +2001-01-24 Tom Kacvinsky + + * src/cff/t1load.c (parse_font_matrix): Added heuristic to get + units_per_EM from the font matrix. + + (parse_dict): Deleted test to see whether the FontInfo keyword has + been seen. Deletion of this test allows fonts without FontInfo + dictionaries to be parsed by the Type 1 driver. + + (T1_Open_Face): Deleted empty subroutines array test to make sure + fonts with no subroutines still are parsed. + +2001-01-17 Francesco Zappa Nardelli + + * src/pcfread.c (pcf_get_properties, pcf_get_metrics, + pcf_get_bitmaps): Fix compiler errors. + +2001-01-11 David Turner + + * src/pcf/pcfread.c: Removed some compilation warnings related + to comparison of signed vs. unsigned integers. + + * include/freetype/internal/ftdebug.h: Changed the debug trace + constants from trace_t2xxxx to trace_cffxxxx to be able to compile + the CFF driver in debug mode. + +2001-01-11 Matthew Crosby + + * builds/unix/freetype-config.in: Fix problems with separate + --prefix and --exec-prefix. + +2001-01-11 David Turner + + * docs/docmaker.py: Added cross-references generation as well as + more robust handling of pathname wildcard matching. + +2001-01-10 Werner Lemberg + + * docs/docmaker.py: Minor improvements to reduce unwanted spaces + and empty lines in output. + +2001-01-09 David Turner + + * docs/docmaker.py: Improved script to generate table of contents + and index pages. It also supports wildcards on non Unix systems. + + * include/freetype/*.h, include/freetype/cache/*.h: Updated comments + to include section definitions/delimitations for the API Reference + generator. + + * include/freetype/freetype.h: Moved declaration of + `FT_Generic_Finalizer' and the `FT_Generic' structure to... + * include/freetype/fttypes.h: here. + +2001-01-04 Werner Lemberg + + * include/freetype/ttnameid.h: Updated Unicode code range comments. + +2001-01-03 Tom Kacvinsky + + * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. + + * include/freetype/internal/internal.h: Changed to use cfftypes.h + (cfferrs.h) instead of t2types.h (t2errors.h, respectively). + + * include/freetype/internal/cfftypes.h: Merged in changes from + t2types.h and made this the canonical `types' header for the CFF + driver. + + * include/freetype/internal/t2types.h: This file was merged with + cfftypes.h and is no longer necessary. + + * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. + + * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, + src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, + src/cff/cffgload.c, src/cff/cffgload.h: Changed to use + cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ + (T2_) were replaced with cff_ (CFF_, respectively). + + * src/cff/t2gload.h: Renamed cffgload.h. + + * src/cff/t2gload.c: Renamed cffgload.c + +2000-01-02 Jouk Jansen + + * builds/vms: Support files for VMS architecture added. + * descrip.mms, src/*/descrip.mms: VMS makefiles added. + * README.VMS: New file. + +2000-01-01 Werner Lemberg + + * LICENSE.TXT: Added info about PCF driver license. + +2001-01-01 Francesco Zappa Nardelli + + * src/pcf/*: New driver module for PCF font format (used in + X Window System). + * include/freetype/internal/ftdebug.h (FT_Trace): Added values for + PCF driver. + * include/freetype/internal/pcftypes.h: New file. + * include/freetype/config/ftmodule.h: Added PCF driver module. + +2001-01-01 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. + +2000-12-31 Werner Lemberg + + * builds/modules.mk (clean_module_list): Fixed deletion of module + file in case `make make_module_list' is called before `make setup'. + +2000-12-30 Werner Lemberg + + * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. + (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable + definition. + +2000-12-30 Tom Kacvinsky + + * include/freetype/internal/t2types.h, + include/freetype/internal/cfftypes.h: Changed the structures for + CFF_Encoding and CFF_Encoding for the new implementations of the + charset and encoding parsers in the CFF driver. + + * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, + t2_operator_seac): Added these functions for use in implementing the + seac emulation provided by the Type 2 endchar operator. + (T2_Parse_CharStrings): Added seac emulation for the endchar + operator. + + * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, + CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the + charset/encoding tables, and free the memory used by them when the + CFF driver is finished with them. Added tables + + cff_isoadobe_charset + cff_expert_charset + cff_expertsubset_charset + cff_standard_encoding + cff_expert_encoding + + so that the encoding/charset parser can handle predefined encodings and + charsets. + +2000-12-24 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font + transform is applied. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that + the font matrix numbers are scaled by 1/(matrix->yy). Also, the + offset vector now contains integer values instead of 16.16 fixed + numbers. + +2000-12-22 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load_glyph): + Removed unnecessary comments and commented-out code. + +2000-12-21 David Turner + + * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, + we'll work on supporting CID AFM files later I guess :-) + +2000-12-21 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Changed so that fonts with a non-standard FontMatrix render + correctly. Previously, the first glyph rendered from such a + font did not have the transformation matrix applied. + +2000-12-17 Werner Lemberg + + * *.mk: Added lots of `.PHONY' targets. + +2000-12-17 Karsten Fleischer + + * *.mk: Implemented `platform' target to disable auto-detection. + +2000-12-14 Werner Lemberg + + * docs/design/modules.html: Removed. Covered by design-*.html. + + * INSTALL: Added info about makepp. + +2000-12-14 David Turner + + Added support for clipped direct rendering in the smooth renderer. + This should not break binary compatibility of existing applications. + + * include/freetype/fttypes.h, include/freetype/ftimage.h: Move + definition of the FT_BBox structure from the former to the latter. + * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to + FT_Raster_Flag enumeration. + Add `clip_box' element to FT_Raster_Params structure. + * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. + + * INSTALL: Updated installation instructions on Win32, listing the + new `make setup list' target used to list supported + compilers/targets. + + * src/raster/ftraster.c (ft_black_render): Test for unsupported + direct rendering before testing arguments. + +2000-12-13 David Turner + + * include/freetype/config/ft2build.h, + include/freetype/internal/internal.h: Fixed header inclusion macros + to use direct definitions. This is the only way to do these things + in a portable way :-( The rest of the code should follow shortly + though everything compiles now. + + * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. + + * builds/win32/detect.mk: Added support for the Intel C/C++ + compiler, as well as _preliminary_ (read: doesn't work!) support for + Watcom. Also added a new setup target. Type `make setup list' for + a list of supported command-line compilers on Win32. + + * src/base/ftdebug.c: Added dummy symbol to avoid empty file if + conditionals are off. + +2000-12-13 Werner Lemberg + + * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong + ftconfig.h file. + +2000-12-12 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): + Removed. ANSI C doesn't (explicitly) allow macro expansion in + arguments using `##'. + (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory + names directly. Make them configurable. Use `##' to strip leading + and trailing spaces from arguments. + + * builds/unix/ft2unix.h: Adapted. + + * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, + ft_close_stream): Use FT_CALLBACK_DEF. + + * builds/unix/ftsystem.c: Use new header scheme. + (FT_Done_Memory): Use free() from FT_Memory structure. + + * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. + +2000-12-11 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, + FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, + FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. + +2000-12-09 Werner Lemberg + + * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. + +2000-12-08 Werner Lemberg + + * */*.h: Changed body inclusion macro names to start and end with + `__' (those which haven't converted yet). Fixed minor conversion + issues. + + * src/winfonts/winfnt.c: Updated to new header inclusion scheme. + + * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. + +2000-12-07 David Turner + + * */*.[ch]: Changed source files to adhere to the new + header inclusion scheme. Not completely tested but works for now + here. + + * src/cff/t2driver.c: Renamed and updated to... + * src/cff/cffdrivr.c: New file. + * src/cff/t2driver.h: Renamed and updated to... + * src/cff/cffdrivr.h: New file. + * src/cff/t2load.c: Renamed and updated to... + * src/cff/cffload.c: New file. + * src/cff/t2load.h: Renamed and updated to... + * src/cff/cffload.h: New file. + * src/cff/t2objs.c: Renamed and updated to... + * src/cff/cffobjs.c: New file. + * src/cff/t2objs.h: Renamed and updated to... + * src/cff/cffobjs.h: New file. + * src/cff/t2parse.c: Renamed and updated to... + * src/cff/cffparse.c: New file. + * src/cff/t2parse.h: Renamed and updated to... + * src/cff/cffparse.h: New file. + * src/cff/t2tokens.h: Renamed and updated to... + * src/cff/cfftoken.h: New file. + + * src/cff/cff.c, src/cff/rules.mk: Updated. + +2000-12-06 David Turner + + * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. + +2000-12-06 Werner Lemberg + + * builds/module.mk: Replaced `xxx #' with `xxx$(space). + * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to + avoid trailing spaces in variable. + * builds/freetype.mk: Use $(D) instead of $D to make statement more + readable. + + * docs/docmaker.py: Formatting. + +2000-12-05 David Turner + + * src/psaux/psauxmod.c: Fixed a broken inclusion of component + header files (an FT_FLAT_COMPILE test was missing). + + * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused + an occasional crash when the function was called (due to a dangling + pointer). + + * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: + The ANSI `free()' function was called instead of `memory->free()'. + + * docs/docmaker.py: Added section filtering, multi-page generation + (index page generation is still missing though). + +2000-12-04 David Turner + + * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' + is now installed as for Unix systems. Note that we + still use the `freetype2/freetype' installation path for now. + + * */*.[ch]: Now using as the default build and setup + configuration file in all public headers. Internal source files + still need some changes though. + + * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new + directory to hold all development options for both the Unix and + Win32 developer builds. + + * builds/win32/detect.mk, builds/win32/w32-bccd.mk, + builds/win32/w32-dev.mk: Changed the developer build targets to + `devel-gcc' and `devel-bcc' in order to be able to develop with the + Borland C++ compiler. + +2000-12-01 David Turner + + + * Version 2.0.1 released. + ========================= + + + * builds/unix/configure.in, builds/unix/configure, + builds/cygwin/configure.in, builds/cygwin/configure: Setting + `version_info' to 6:1:0 for the 2.0.1 release. + + * CHANGES: Added a summary of changes between 2.0.1 and 2.0. + + * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes + to allow compilation under Unix with the Unix-specific config + files. + +2000-12-01 Werner Lemberg + + * INSTALL: Revised. + * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, + builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, + builds/win32/w32-bccd.mk: Revised. + * include/freetype/config/ftbuild.h, + include/freetype/internal/internal.h: Revised. + * include/freetype/ftimage.h: Updated to new header inclusion scheme. + +2000-11-30 Werner Lemberg + + * builds/toplevel.mk (.PHONY): Adding `distclean'. + * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', + `setup'. + +2000-11-30 David Turner + + * INSTALL: Slightly updated the quick starter documentation to + include IDE compilation, prevent against BSD Make, and specify `make + setup' instead of a single `make' for build configuration. + + * include/config/ftbuild.h, include/internal/internal.h: Added new + configuration files used to determine the location of all public, + configuration, and internal header files for FreeType 2. Modified + all headers under `include/freetype' to reflect this change. Note + that we still need to change the library source files themselves + though. + + * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, + builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, + builds/win32/detect.mk: Added new files to support compilation with + the free Borland C++ command-line compiler. Modified the detection + rules to recognize the new `bcc32' target in `make setup bcc32'. + + * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, + src/truetype/ttobjs.c, src/truetype/ttgload.c, + src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ + didn't really like. Basically, this compiler complains when FT_UInt + is compared to FT_UShort (apparently, it promotes `UShort' to `Int' + in these cases). + +2000-11-30 Tom Kacvinsky + + * t2objs.c (T2_Init_Face): Added calculation of `face->height' for + pure CFF fonts. + + * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. + +2000-11-29 David Turner + + * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid + bug in the formula used to compute the conic Bézier extrema + of non-monotonous arcs. + +2000-11-29 Werner Lemberg + + * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c + (FT_Set_Renderer): Use FT_EXPORT_DEF. + * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), + src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, + FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, + FTC_Manager_Register_Cache), src/cache/ftcsbits.c + (FTC_SBit_Cache_Lookup): Ditto. + + * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), + src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. + +2000-11-29 Werner Lemberg + + * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only + conditionally. + + * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set + `size->strike_index' only conditionally. + + * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only + conditionally. + + * src/winfonts/winfnt.h: Move all type definitions to... + * src/include/freetype/internal/fnttypes.h: New file. + * src/winfonts/winfnt.c: Use it. + +2000-11-29 ??? ??? + + * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT + with a direct solution (which also satisfies picky compilers). + +2000-11-28 YAMANO-UCHI Hidetoshi + + * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with + disabled interpreter also. + + * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect + parentheses. + +2000-11-26 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph + width setting code to take into account even/odd argument counts + and glyph width operand before endchar/hmoveto/vmoveto. + +2000-11-26 Werner Lemberg + + * builds/ansi/ansi.mk: Fix inclusion order of files. + +2000-11-26 Keith Packard + + * src/type1/t1objs.c (T1_Init_Face): Compute style flags. + +2000-11-26 Werner Lemberg + + * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and + conditional. + +2000-11-23 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt + function from PSAux module. + + * src/type1/t1parse.c (T1_Done_Parse): Renamed to... + (T1_Finalize_Parser): New function (to avoid name clash with a + function in the PSAux module). + (T1_Decrypt): Removed since it is duplicated in the PSAux module. + (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt + function from PSAux module. + + * src/type1/t1parse.h: Adapted. + +2000-11-22 Tom Kacvinsky + + * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set + `root->num_faces' to `cff->num_faces' and set `units_per_EM' + to 1000. + + * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing + loop. + + * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a + sid that was off by one. + +2000-11-16 David Turner + + * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control + auto-hinting of synthetic Type 1 fonts. + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Added auto-hinting support of synthetic Type 1 fonts. + +2000-11-12 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change + tracing output. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable + `has-outline' to true only if the font has a `glyf' or `CFF ' table. + +2000-11-11 Werner Lemberg + + * builds/win32/visualc/freetype.dsp: Fix raster1->raster and + type1z->type1. + +2000-11-11 Tom Kacvinsky + + * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: + Added a --libtool option. When freetype-config --libtool is + invoked, the absolute path to the libtool convenience library + is returned. + +2000-11-11 Werner Lemberg + + * builds/cygwin/cygwin-def.in: Same fix as previous. + +2000-11-10 Tom Kacvinsky + + * builds/unix/unix-def.in: Add + + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_SCRIPT := @INSTALL_SCRIPT@ + + so that installation of freetype-config does not fail. + +2000-11-10 Werner Lemberg + + * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: + Move test down for empty --exec-prefix. + Fix --version. + + * builds/cygwin/install.mk, builds/unix/install.mk: Use + $(INSTALL_SCRIPT) for installation of freetype-config. + + * builds/cygwin/install.mk: Fix clean target names. + +2000-11-09 David Turner + + + * Version 2.0 released. + ======================= + +---------------------------------------------------------------------------- + +Copyright 2000, 2001, 2002, 2007 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/extensions/externals/src/freetype-2.4.9/ChangeLog.21 b/extensions/externals/src/freetype-2.4.9/ChangeLog.21 new file mode 100644 index 0000000..d6371d1 --- /dev/null +++ b/extensions/externals/src/freetype-2.4.9/ChangeLog.21 @@ -0,0 +1,9439 @@ +2005-06-08 Werner Lemberg + + + * Version 2.1.10 released. + ========================== + + + * src/pcf/readme: Renamed to... + * src/pcf/README: This. + +2005-06-07 Detlef Würkner + + * builds/amiga/*: Added copyright notes, reworked some comments. + +2005-06-05 Werner Lemberg + + * Add copyright notices to all files which don't have one. + + * docs/license.txt: Renamed to... + * docs/LICENSE.TXT: This. + * docs/FTL.txt: Renamed to... + * docs/FTL.TXT: This. + * docs/GPL.txt: Renamed to... + * docs/GPL.TXT: This. + + * docs/PATENTS: Slightly reworded. Suggested by Sylvain Beucler + . + +2005-06-04 Werner Lemberg + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineToFunc, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc, FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use + `const' to stay compatible with FreeType 2.1.9. + +2005-06-01 Adam D. Moss + + * src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from + 2004-07-11; this gives much better results under normal + circumstances. + +2005-05-30 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor + documentation improvements. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap + of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. + If xstr is larger than 8 and bitmap is of pixel_mode + FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error. + +2005-05-29 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap + of mode FT_PIXEL_MODE_GRAY. Also add support for mode + FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V. + (ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V + should have ppb (pixel per byte) 1. + Zero the padding when there's no need to allocate memory. + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance + too. + More suited emboldening strength. + +2005-05-28 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. + Handle FT_PIXEL_MODE_GRAY with num_gray != 256. + Improve speed for FT_PIXEL_MODE_GRAY. + (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and + FT_PIXEL_MODE_LCD_V. + +2005-05-27 Chia I Wu + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. + + * src/base/ftobjs.c (ft_cmap_done_internal): New function. + (FT_CMap_Done): Remove cmap from cmap list. + (destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but + ft_cmap_done_internal. + +2005-05-26 Werner Lemberg + + * docs/GPL.txt: Update postal address of FSF. + +2005-05-26 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve + documentation. + + * src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed. + (FT_GlyphSlot_Embolden): Check whether slot is bitmap owner. + Always modify the metrics. + +2005-05-24 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-24 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration. + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary + function. + (FT_Bitmap_Embolden): New function. + + * src/base/ftoutln.c (FT_Outline_Embolden): New function. + + * src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and + FT_TRIGONOMETRY_H but FT_BITMAP_H. + (FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or + FT_Bitmap_Embolden. + +2005-05-24 Werner Lemberg + + * configure: Always remove config.mk, builds/unix/unix-def.mk, and + builds/unix/unix-cc.mk. This fixes repeated calls of the script. + Reported by Nelson Beebe and Behdad Esfahbod. + + * README.CVS: Mention file permissions. + +2005-05-23 Werner Lemberg + + * builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk + (CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove + -fno-strict-aliasing. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c -- + it is currently loaded from ttsbit.c. + +2005-05-23 Behdad Esfahbod + + Say you have `(Foo*)x' and want to assign, pass, or return it as + `(Bar*)'. If you simply say `x' or `(Bar*)x', then the C compiler + would warn you that type casting incompatible pointer types breaks + strict-aliasing. The solution is to cast to `(void*)' instead which + is the generic pointer type, so the compiler knows that it should + make no strict-aliasing assumption on `x'. But the problem with + `(void*)x' is that seems like in C++, unlike C, `void*' is not a + generic pointer type and assigning `void*' to `Bar*' without a cast + causes an error. The solution is to cast to `Bar*' too, with + `(Bar*)(void*)x' as the result -- this is what the patch does. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), + include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove + cast on lvalue, use a temporary pointer instead. + Cast temporarily to (void*) to not break strict aliasing. + + * include/freetype/internal/ftmemory.h (FT_MEM_ALLOC, + FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE), + src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*) + to not break strict aliasing. + + * src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information. + + * builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing. + +2005-05-23 David Turner + + Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system + in low-memory conditions). + + * include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP, + FTC_CACHE_TRYLOOP_END): New macros. + + * src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c + (ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACE_TRYLOOP_END. + +2005-05-23 Werner Lemberg + + * src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but... + (BASE_EXT_SRC): Here. + +2005-05-22 Werner Lemberg + + * src/base/ftrfork.c (raccess_guess_apple_generic): Mark + `version_number' and `entry_length' as unused. + (raccess_guess_linux_double_from_file_name): Remove `memory'. + (raccess_make_file_name): Mark `error' as unused. + + * src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'. + + * src/cid/cidobjs.c (cid_face_init): Remove `psnames'. + + * src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused. + + * src/base/rules.mk (BASE_SRC): Add ftsynth.c. + +2005-05-21 David Turner + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that + produced unpleasant artefacts when trying to embolden very sharp + corners. + +2005-05-20 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-20 Chia I Wu + + * src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H + but FT_BITMAP_H. + (FT_Bitmap_Copy): New function (from ftglyph.c). + + * include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public + definition. + + * src/base/ftglyph.c: Include FT_BITMAP_H. + (ft_bitmap_copy): Move to ftbitmap.c. + (ft_bitmap_glyph_init): Remove `memory' variable. + Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set. + (ft_bitmap_glyph_copy): Use FT_Bitmap_Copy. + (ft_bitmap_glyph_done): Use FT_Bitmap_Done. + (ft_outline_glyph_init): Use FT_Outline_Copy. + + * src/base/ftoutln.c (FT_Outline_Copy): Handle source == target. + (FT_Outline_Done_Internal): Check for valid `memory' pointer. + (FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render, + FT_Outline_Transform): Check for valid `outline' pointer. + + * src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to + face->glyph, otherwise a new second glyph slot cannot be created. + (FT_Done_GlyphSlot): Fix memory leak. + (FT_Open_Face): Updated -- face->glyph is already managed by + FT_New_GlyphSlot. + + * src/type42/t42objs.c (T42_GlyphSlot_Done): Updated. + +2005-05-20 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h (FT_Outline_Translate, + FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate, + FT_Outline_Transform): Decorate parameters with `const' where + appropriate. + Update all callers. + + * src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c + (gray_raster_reset): Remove `const' from `pool_base' argument. + +2005-05-18 Kirill Smelkov + + * src/raster/ftmisc.h: New file. Only needed if ftraster.c is + compiled as stand-alone. + + * src/raster/ftraster.c: Add comment how to compile as stand-alone. + s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/. + s/TT_STATIC_RASTER/FT_STATIC_RASTER/. + [_STANDALONE_]: Include ftimage.h and ftmisc.h. + (FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define + conditionally. + (Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or + Raster_Err_Unsupported). + (ft_black_new) [_STANDALONE_]: Fix type of `the_raster'. + (ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render): + Use `ras', not `raster'. + (ft_black_done): Use FT_UNUSED_RASTER. + (Horizontal_Sweep_Init, Horizontal_Sweep_Step, + Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER. + +2005-05-18 Werner Lemberg + + * docs/announce: Start updating. + + * docs/CHANGES: Updated. + +2005-05-16 Vitaliy Pasternak + + * builds/win32/visualc/freetype.vcproj: Updated. + Exclude debug info for `Release' versions to reduce library size. + +2005-05-16 Werner Lemberg + + * src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this + is, ignore `aface' completely if face_index < 0. Reported by David + Osborn . + +2005-05-16 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineTo_Func, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic, + gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to, + gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters + with `const' where appropriate. + +2005-05-11 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_Render_Func, FT_Renderer_TransformFunc), + src/base/ftglyph.c (ft_outline_glyph_transform), + src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render), + src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render), + src/smooth/ftsmooth.c (ft_smooth_transform, + ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd, + ft_smooth_render_lcd_v): Decorate parameters with `const' where + appropriate. + + * src/raster/ftraster.c (RASTER_RENDER_POOL): Removed. Obsolete. + (ft_black_render): Decorate parameters with `const' where + appropriate. + +2005-05-11 Werner Lemberg + + * src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT -> + FT_PEEK_USHORT) which caused crashes. Reported by Ismail Donmez + . + +2005-05-08 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE) + [__cplusplus]: Fix typo. + +2005-05-07 Werner Lemberg + + Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck + Blaskey ). + + * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. + * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. + + (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, + tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use + `FT_Error' as return type. + (tt_cmap4_validate): Use `FT_Error' as return type. + Return error code for unsorted cmap. + (tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted + cmaps. + (tt_face_build_cmaps): Set `unsorted' variable in cmap. + +2005-05-07 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_get_location): Fix typo. + +2005-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set ppem value in top + dictionary for SFNT-based CFF. + +2005-05-05 Werner Lemberg + + Handle malformed `loca' table entries. + + * docs/TODO: Add some bugs which should be fixed. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len' + element. + + * src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf' + table. + (tt_face_get_location): Fix computation of `asize' for malformed + `loca' entries. + +2005-05-01 David Turner + + * Jamfile: Remove `otvalid' from the list of compiled modules. + + * include/freetype/internal/ftserv.h: Add compiler pragmas to get + rid of annoying warnings with Visual C++ compiler in maximum warning + mode. + + * src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c, + src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c, + src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c, + src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c, + src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings. + +2005-04-28 Werner Lemberg + + * docs/TODO: Updated. + +2005-04-24 Werner Lemberg + + * src/otvalid/otvcommn.c + (otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0. + +2005-04-16 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set default upem value in top + font dict also. + Handle font matrix settings in subfonts. + + * src/cff/cffgload.c (cff_slot_load): Use the correct font matrix + for CID-keyed fonts with subfonts. + + * docs/formats.txt: Updated. + +2005-04-14 Kirill Smelkov + + * include/freetype/freetype.h (FT_Vector_Transform), + include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox, + FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform, + FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render), + src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with + `const' where appropriate. + +2005-04-14 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Catch this non-standard + beginning of the /CharStrings dictionary: + + /CharStrings 118 dict def + Private begin + CharStrings begin + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments + to call of tt_sbit_decoder_load_bitmap. + +2005-04-13 Werner Lemberg + + * docs/TODO: Updated. + + * autogen.sh: Use `--force' for all commands. + +2005-04-09 Werner Lemberg + + * src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values + only if `fitted' is not zero. + +2005-04-06 Werner Lemberg + + * src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]: + Fix typo which sometimes causes wrong metrics for the last glyph. + +2005-04-04 David Turner + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10 + release. + (*_CHESTER_*): Removed. No longer used. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): Small tweak to use less heap memory. + +2005-04-03 Werner Lemberg + + * src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid + first line in the font. + +2005-04-03 Werner Lemberg + + * docs/CHANGES, include/freetype/freetype.h: Improve documentation + of FT_Set_Pixel_Sizes and FT_Set_Char_Size. + +2005-03-26 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer + offsets after a large read. + +2005-03-26 Werner Lemberg + + * src/autofit/afglobal.c (af_face_globals_get_metrics): + s/index/gidx/. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler + warnings. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c. + + * src/sfnt/ttsbit0.h: Dummy file for build with `make'. + +2005-03-26 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile: Included the base extension files + (ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c). + +2005-03-25 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/smakefile: Handle new modules. + + * builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK. + + * builds/amiga/README: Updated. + + * builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for + AmigaOS4. + + * builds/amiga/include/freetype/config/ftmodule.h: Handle new + modules. + + * builds/amiga/src/base/ftdebug.c: Updated to current version of + default ftdebug.c. + Add various include files and macros to have proper support for + both AmigaOS4 and older AmigaOS versions. + Don't declare KVPrintF explicitly. + Replace getenv with GetVar. + Actually enable debugging code. + + * builds/amiga/src/base/ftsystem.c: Major rewrite. + +2005-03-23 Werner Lemberg + + * tests/*: Removed. + +2005-03-23 Werner Lemberg + + * docs/CHANGES, docs/INSTALL.ANY: Updated. + + * include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'. + Add `OTvalid'. + + * src/autofit/aferrors.h: New file. + + * src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/. + Include aferrors.h. + + * src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h. + + * src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/. + +2005-03-22 David Turner + + * src/autohint/*: Removed. + * Jamfile: Updated. + +2005-03-15 David Turner + + * src/bdf/bdflib.c: Remove compiler warnings. + (hash_rehash, hash_init): Don't call FT_MEM_ZERO. + (_bdf_list_t): Add `memory' field. + (_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions. + (_bdf_shift, _bdf_join): Rename to... + (_bdf_list_shift, _bdf_list_join): This. + (_bdf_split): Renamed to... + (_bdf_list_split): This. Use new functions. + (bdf_internal_readstream): Removed. + (NO_SKIP): New macro. + (_bdf_readstream): Rewritten. + (bdf_create_property, _bdf_add_comment): Improve allocation. + (_bdf_set_default_spacing, _bdf_parse_glyphs): Updated. Improve + allocation. + (_bdf_parse_properties, _bdf_parse_start): Updated. + (bdf_load_font): Updated to use new functions. + + * src/type1/t1parse.c (check_type1_format): New function. + (T1_New_Parser): Use it to check font header before allocating + anything on the heap. + + * src/type42/t42parse.c (t42_parser_init): Modify functions to check + the font header before allocating anything on the heap. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_MAX, + FT_ARRAY_CHECK): New macros. + + * src/base/ftstream.c (FT_Stream_TryRead): New function. + * include/freetype/internal/ftstream.h: Updated. + + * src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c + (BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and + simplifications. Try to protect the PCF driver from doing stupid + things with broken fonts. + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before + doing anything else. This avoids unnecessary heap allocations + (400KByte of heap memory for the LZW decoder). + + * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip + decoder, although the code savings are smaller. + + * docs/CHANGES: Updated. + +2005-03-10 David Turner + + * src/tools/glnames.py: Add comment to explain the compression + being used for the Adobe Glyph List. + +2005-03-10 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm): + Fix serious typo which prevented correct TT rendering. + + * include/freetype/internal/ftmemory.h: Undo change from 2005-03-03. + To suppress warnings it is sufficient to use `-fno-strict-aliasing'. + +2005-03-10 Werner Lemberg + + * src/tools/glnames.py: Formatted. + Format output to be in sync with other FreeType code. + Import `re' and `os.path'. + (StringTable) <__init__>: Add parameter to initialize master table + name. + (StringTable) : Don't pass master table name. + (StringTable) : Emit explanatory comment. + Simplify and make output more human readable. + (t1_bias, glyph_list, adobe_glyph_names): Removed. Unused. + (main): Use `basename' for file name in header. + + * src/psnames/pstables.h: Regenerated. + +2005-03-09 David Turner + + * src/tools/glnames.py: Rewrite the generator for the `pstables.h' + header file which contains various constant tables related to glyph + names. It now uses a different, more compact storage scheme that + saves about 20KB. This also closes Savannah bug #12262. + + * src/psnames/pstables.h: Regenerated. + + * src/psnames/psmodule.c (ps_unicode_value): Use + `ft_get_adobe_glyph_index', a new function defined in `pstables.h'. + (ps_get_macintosh_name, ps_get_standard_strings): Updated. + + * src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes + more carefully. This fixes Savannah bug #12263. + +2005-03-06 David Turner + + * src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables + constant. + + * src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug + #12212 (auto-hinter refuses to work if no Unicode charmap in font). + +2005-03-05 Werner Lemberg + + * autogen.sh: New script for bootstrapping. + + * README.CVS: New file which documents bootstrapping. + + * builds/unix/aclocal.m4, builds/unix/config.guess, + builds/unix/config.sub, builds/unix/configure, + builds/unix/ltmain.sh: Removed. + +2005-03-04 Werner Lemberg + + * src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H. + +2005-03-03 Werner Lemberg + + Various fixes for C and C++ compiling. + + * src/autofit/*: Add copyright messages. + + * src/autofit/afhints.c (af_glyph_hints_done): Don't use + `AF_Dimension' but `int' for loop counter. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use + `AF_Dimension' but `int' for loop counter. + Use proper enumeration value for `render_mode'. + (af_latin_metrics_scale_dim): Don't shadow variables. + (af_latin_hints_compute_segments): Use proper cast for `major_dir' + and `segment_dir'. + (af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to + `af_latin_compute_stem_width'. + (af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop + counter. + + * src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use + proper cast for memory allocation. + + * src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for + initialization of `sfnt'. + + * src/sfnt/sfdriver.c: Include `ttkern.h'. + + * src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables. + + * src/truetype/ttgload.c: Include `ttpload.h'. + +2005-03-03 David Turner + + * include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC, + FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which + avoid compiler warnings. + (FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]: + Provide macro versions which avoid compiler warnings. + + * src/base/ftutil.c (ft_highpow2): New utility function. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs, + pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set. + (pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY + is set. + (pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if + FT_OPTIMIZE_MEMORY is set. + + * src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which + doesn't work with broken fonts. + (pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement. + + * src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types. + (PFR_NEXT_KPAIR): New macro. + (PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is + set. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce + temporary variable to avoid gcc warning. + (tt_face_load_sbit_image): Mark unused variables with FT_UNUSED. + + * src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: + Remove redundant variable. + + * include/freetype/config/ftmodule.h: Moving the order of drivers to + speed up font loading. The PCF and BDF loaders are still slow and + consume far too much memory. + +2005-03-03 Werner Lemberg + + * devel/ftoption.h: Updated to recent changes. + +2005-03-02 Werner Lemberg + + * src/autofit/afdummy.c, src/autofit/afdummy.h + (af_dummy_script_class): Fix type. + + * src/autofit/aflatin.c, src/autofit/aflatin.h + (af_latin_script_class): Fix type. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo. + +2005-03-01 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning), + src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes, + tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound, + tt_sbit_decoder_load_image), src/sfnt/ttload.c + (tt_face_load_metrics): Remove compiler warnings + -- redundant variables, missing initializations, etc. + + * src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY. + + * src/autofit/rules.mk, src/autofit/module.mk, + src/autofit/afangles.h: New files. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): New functions. + (af_glyph_hints_done): Do proper deallocation. + (af_glyph_hints_reload): Only reallocate points array. This + drastically reduces heap usage. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize + member types and positions. + (AF_AxisHintsRec): Add `max_segments' and `max_edges'. + (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. + + * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call + AF_SCALER_EQUAL_SCALES. + (af_latin_hints_compute_segments): Change return type to FT_Error. + Update all callers. + Improve segment allocation. + (af_latin_hints_compute_edges): Change return type to FT_Error. + Update all callers. + Improve edge allocation and link handling. + (af_latin_hints_detect_features): Change return type to FT_Error. + Update all callers. + + * src/autofit/aflatin.h: Updated. + + * src/autofit/afloader.c (af_loader_load_g) + : Assure axis->num_edges > 1. This fixes + a bug with certain fonts. + + * include/freetype/config/ftmodule.h: The auto-fitter is now the + only supported auto-hinting module. + + * include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro. + +2005-02-28 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix typo. + + * src/sfnt/ttkern.c: Include `ttkern.h'. + (FT_COMPONENT): Updated. + + * include/freetype/internal/fttrace.h: Add entry for `ttkern'. + + * src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/. + Decorate constants with `U' and `L' where necessary. + + * src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable. + +2005-02-28 David Turner + + * src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory + sources according to decreasing maximum cumulative allocations. + (ft_mem_source_compare): New auxiliary function. + + * src/sfnt/ttsbit0.c: New file, implementing a heap-optimized + embedded bitmap loader. + + * src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H, + FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H. + Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use + file contents. + (tt_face_load_sbit_strikes): Set up root fields to indicate the + strikes. This fixes Savannah bug #12107. + Use `static' keyword for `sbit_line_metrics_field', + `strike_start_fields', `strike_end_fields'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Define + `sbit_table', `sbit_table_size', `sbit_num_strikes' if + FT_OPTIMIZE_MEMORY is set. + Don't define `num_sbit_strikes' and `sbit_strikes' if + FT_OPTIMIZE_MEMORY is set. + + * src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY. + + * src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented + loading SFNT fonts without a `kern' table. + Properly pass root->face_flags. + Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS. + + * src/sfnt/sfdriver.c (sfnt_interface) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image' + and `tt_load_sbit_metrics'. + + * src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4. + (OPT_CMAP4): New macro. + (TT_CMap4Rec) [OPT_CMAP4]: New structure. + (tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset) + [OPT_CMAP4]: New functions. + (tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and + `tt_cmap4_reset'. + (tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and + `tt_cmap4_init'. + + * src/truetype/ttobjs.c (Reset_SBit_Size): Handle + FT_OPTIMIZE_MEMORY. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec): + Optimize member types. + + * src/autofit/afloader.c (af_loader_done): Call + `af_glyph_hints_done'. + +2005-02-27 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which + caused invalid (random) return values for the horizontal kerning. + +2005-02-25 David Turner + + Implement several memory optimizations to drastically reduce the + heap usage of FreeType, especially in the case of memory-mapped + files. The idea is to avoid loading and decoding tables in the + heap, and instead access the raw data whenever possible (i.e., when + it doesn't compromise performance). + + This has several benefits: For example, opening vera.ttf now uses + just a small amount of memory (even when the FT_Library footprint is + accounted for), until you start loading glyphs. Even then, you save + at least 20KB compared to the non-optimized case. Performance of + various operations, including open and close, has also been + dramatically improved. + + More optimizations to come, especially for the auto-hinter. + + * include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New + function type. + (SFNT_Interface): Add it. + + * include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec, + TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set. + (TT_FaceRec): Define `horz_metrics', `horz_metrics_size', + `vert_metrics', `vert_metrics_size', `hdmx_table', + `hdmx_table_size', `hdmx_record_count', `hdmx_record_size', + `hdmx_record_sizes', `kern_table', `kern_table_size, + `num_kern_tables', `kern_avail_bits', `kern_order_bits' if + FT_OPTIMIZE_MEMORY is set. + Don't define `hdmx', `num_kern_pairs', `kern_table_index', + `kern_pairs' if FT_OPTIMIZE_MEMORY is set. + + * src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable. + Fix compiler warning. + + * src/cff/cffdrivr.c (Get_Kerning): Renamed to... + (cff_get_kerning): This. Simplify. + (cff_driver_class): Updated. + + * src/sfnt/Jamfile (_sources): Add `ttkern'. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'. + + * src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'. + + * src/sfnt/sfnt.c: Include `ttkern.c'. + + * src/sfnt/sfobjs.c: Include `ttkern.h'. + (sfnt_load_face): Consider the `kern' and `gasp' table as optional. + (sfnt_done_face): Call `tt_face_done_kern'. + Handle horizontal metrics for FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files. Code has been + taken from `ttload.c' and `ttload.h'. + Provide special versions of `tt_face_load_kern', + `tt_face_get_kerning', and `tt_face_done_kern' for + FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx, + tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY. + (tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to + `ttkern.c'. + + * src/sfnt/ttload.h: Updated. + + * src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword. + + * src/truetype/ttdriver.c (Get_Kerning): Renamed to... + (tt_get_kerning): This. Simplify. + (tt_driver_class): Updated. + + * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... + (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. + Update all callers. + (Get_Advance_Widths): Replaced with... + (Get_Advance_WidthPtr): This. Provide version for + FT_OPTIMIZE_MEMORY. + Update all callers. + + * src/truetype/ttgload.h: Updated. + +2005-02-22 David Turner + + * src/base/ftdbgmem.c: Partly rewritten. Added the ability to list + all allocation sites in the memory debugger. Also a new function + FT_DumpMemory() was added. It is only available in builds with + FT_DEBUG_MEMORY defined, and you must declare it in your own code to + use it, i.e., with something like: + + extern void FT_DumpMemory( FT_Memory ); + + ... + + FT_DumpMemory( memory ); + + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition -- + again. + (FT_OPTIMIZE_MEMORY): New configuration macro to control various + optimizations for reducing the heap footprint of memory-mapped + TrueType files. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New + convenience macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec) + [FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and + `glyph_locations'. + + * src/truetype/ttgload.c (load_truetype_glyph): Call + `tt_face_get_location'. + + * src/truetype/ttobjs.c (tt_face_init) + [FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling. + (tt_face_done): Call `tt_face_done_loca'. + + * src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca): + New functions. If FT_OPTIMIZE_MEMORY is set, the locations table is + read directly from memory-mapped streams, instead of being decoded + into the heap. + (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation. + (tt_face_load_cvt, tt_face_load_fpgm): Only load table if the + bytecode interpreter is compiled in. + + * src/truetype/ttpload.h: Updated. + + * src/autohint/ahglyph.c (ah_outline_load): Improve allocation + logic. + +2005-02-20 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.14. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + +2005-02-14 Werner Lemberg + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build + a cmap for a CID-keyed font which doesn't have SIDs. + +2005-02-13 Werner Lemberg + + * src/type1/t1load.c (read_binary_data): Return more meaningful + value. + (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check + parser error value after call to T1_Skip_PS_Token (where necessary). + + * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error + value after call to T1_Skip_PS_Token. + + * src/cid/cidparse.c (cid_parser_new): Check parser error value + after call to cid_parser_skip_PS_token. + + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, + t42_parse_charstrings, t42_parse_dict): Check parser error value + after call to T1_Skip_PS_Token (where necessary). + + * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, + ps_tobytes): Add error messages. + +2005-02-12 Werner Lemberg + + * configure: Output more variables to the created Makefile so that + it can be used for ft2demos also (if the FT2DEMOS variable is + defined). + +2005-02-10 David Turner + + * src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing + dynamic array when loading a glyph from a PFR font (Savannah bug + #11921). + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the + conversion function (mainly stupid optimization). + + * src/base/Jamfile: Adding ftbitmap.c to the list of compiled files. + +2005-02-10 Werner Lemberg + + * builds/unix/freetype-config.in: Add new flag `--ftversion' to + return the FreeType version. Suggested by George Williams + . + + * docs/CHANGES: Updated. + +2005-02-09 Werner Lemberg + + * src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case + of error. Reported by YAMANO-UCHI Hidetoshi . + +2005-02-08 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Accept `T1_Parse_Have_Moveto' state also which can + happen in empty glyphs. Reported by Ian Brown + (Savannah bug #11856). + +2005-02-04 Werner Lemberg + + * src/otlayout/*: Removed. Obsolete. + +2004-12-28 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.10. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + * builds/unix/configure: Regenerated with autoconf 2.59b. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for + ft_alloc. + Fix compiler warning. + +2004-12-27 Dirck Blaskey + + * src/cff/cffobjs.c (cff_face_init): Improve computation of + FT_STYLE_BOLD_FLAG. + +2004-12-27 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have + only a single font. This is undocumented but has been verified on + the opentype list. + +2004-12-26 Werner Lemberg + + * Jamfile (FT2_COMPONENTS): Add `otvalid'. + +2004-12-25 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning. + +2004-12-15 Werner Lemberg + + * vms_make.com: Add ftbitmap.obj. + +2004-12-14 Werner Lemberg + + * src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for + handling various bitmap formats. + + * include/freetype/config/ftheader.h (FT_BITMAP_H): New macro. + + * src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c. + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp + but return them as-is. + + * docs/CHANGES: Mention new bitmap API. + * include/freetype/ftchapter.s: Updated. + +2004-12-11 Robert Clark + + * src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount + dependent on ppem by scaling down for ppem < 25, then do normal + rounding. This gives slightly better results than rounding towards + zero. + +2004-12-09 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero + for FT_KERNING_DEFAULT. This greatly enhances the kerning for + small ppem values. + +2004-12-08 Werner Lemberg + + * src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and + `rsb_delta'. + +2004-12-05 Werner Lemberg + + * builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h. + +2004-12-03 Antoine Leca + + * include/freetype/ttnameid.h: Updated to latest + specifications from Microsoft. + +2004-11-26 Jouk Jansen + + * vms_make.com: Include ftbbox.c. + Fix `ccopt'. + Handle `otvalid' module. + Update `vmslib.dat' default values. + Fixes to `libs.opt'. + +2004-11-23 Anders Kaseorg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + ft_orientation_extremum_compute): Removed. + (FT_Outline_Get_Orientation): Rewritten, simplified. + + * src/autohint/ahglyph.c: Include FT_OUTLINE_H. + (ah_test_extremum, ah_get_orientation): Removed. + (ah_outline_load): Use FT_Outline_Get_Orientation. + + * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. + (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. + +2004-11-23 Fernando Papa + + * src/truetype/ttinterp.h: Fix typo. + +2004-11-22 Antoine Leca + + * builds/win32/detect.mk: Corrected logic that detects Windows NT to + use the previous change even if win32 is forced. Corrected + detection of win32 on Win9X. + + * builds/dos/detect.mk: Added same correction as for win32 about + COPY on Windows NT. Detection of plain DOS 7.x. + +2004-11-22 Werner Lemberg + + * builds/detect.mk: Undo change from 2004-11-20. + * builds/win32/detect.mk: If the `OS' environment variable contains + `Windows_NT', use `cmd.exe /c copy' for copying files. + +2004-11-20 Werner Lemberg + + * builds/detect.mk (dos_setup): Use `cmd.exe' for copying + $(CONFIG_MK) to force lowercase file name under Windows. + +2004-11-19 Werner Lemberg + + Fix a serious bug in the TT hinter. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift + points vertically before hinting. + + * docs/CHANGES: Updated. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): A new try to fix comparison with zero. + +2004-11-16 Werner Lemberg + + * builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is + used. + * builds/unix/configure: Regenerated. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + +2004-11-16 Dr. Martin P.J. Zinser + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): Fix comparison with zero. + + * docs/INSTALL.VMS: Updated. + + * vms_make.com: Updated. All `descrip.mms' files are now created + automatically. + + * src/*/descrip.mms: Removed. + +2004-11-16 Owen Taylor + + * builds/unix/freetype-config.in: Suppress -L$libdir for + /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199) + +2004-11-11 Werner Lemberg + + * src/cff/cffdrivr.c (cff_service_ps_info): Updated. + * src/cid/cidriver.c (cid_service_ps_info): Updated. + * src/type42/t42drivr.c (t42_ps_get_font_private): New function. + (t42_service_ps_info): Updated. + + * src/type42/t42parse.c (t42_parse_dict): Remove compiler warning. + +2004-11-11 David Bevan + + Add new function FT_Get_PS_Font_Private(). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontPrivateFunc): New service function. + + * include/freetype/t1tables.h, src/base/fttype1.c + (FT_Get_PS_Font_Private): New function. + + * src/type1/t1driver.c (t1_ps_get_font_private): New function. + (t1_service_ps_info): Updated. + +2004-10-13 Werner Lemberg + + * include/freetype/config/ftstdlib.h: Include `stddef.h'. + (ft_ptrdiff_t): Define. + + * include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'. + + * src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c + (parse_dict): Fix compiler warning. + +2004-10-11 Joshua Neal + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer + overflow. + + * src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input. + Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work + in case of failure. + + * src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals. + (tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after + frame test. + + * src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for + `flag'. + +2004-10-09 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-10-09 Boris Letocha + + Fix handling of NPUSHW if skipped in data stream. + + * src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW + to -2. + (SkipCode, TT_RunIns): Use opcode_length value for computation of + bytes to be skipped. + +2004-09-10 Jouk Jansen + + * vms_make.com: Updated. + +2004-09-09 Werner Lemberg + + Adding OpenType validation module. The code is based on the + (unfinished) `otlayout' module but has been heavily modified to make + it much more compact. + + * src/otvalid/*: New module. + + * include/freetype/ftotval.h, src/base/ftotval.c, + include/freetype/internal/services/svotval.h: New files. + + * include/freetype/config/ftmodule.h: Add otv_module_class. + * include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New + macro. + * include/freetype/internal/ftserv.h + (FT_SERVICE_OPENTYPE_VALIDATE_H): New macro. + * include/freetype/internal/fttrace.h (otvmodule, otvcommon, + otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components. + + * include/freetype/ftchapters.h: Updated. + + * src/base/Jamfile (Library), src/base/descrip.mms (OBJS), + src/base/rules.mk (BASE_EXT_SRC): Updated. + + * docs/CHANGES: Updated. + +2004-09-08 Werner Lemberg + + * src/tools/docmaker/sources.py (re_source_block_format2) : + Use lookahead assertion to not match `*/'. This removes spurious + insertions of `/' in the HTML output. + +2004-09-07 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to + FT_NEW_ARRAY. + +2004-09-04 Werner Lemberg + + * include/freetype/internal/ftobjs.h: Don't include + FT_CONFIG_STANDARD_LIBRARY_H. + (FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR, + ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID, + FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT, + FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to... + + * include/freetype/internal/ftvalid.h: New file. + Make FT_INVALID return module-specific error codes. + + * include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New + macro. + + * include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if + FT_KEEP_ERR_PREFIX isn't defined. + + * src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + Include sferrors.h before FT_INTERNAL_VALIDATE_H. + s/FT_Err_Ok/SFNT_Err_Ok/. + + * src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX. + + * src/type1/t1afm.c: Include t1errors.h. + +2004-09-03 Werner Lemberg + + * src/base/ftdebug.c (ft_debug_init): Highest debug level is 7, + not 6. + * docs/DEBUG: Updated. + +2004-08-30 Werner Lemberg + + * include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS, + TTAG_JSTF): New tags. + + * include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs. + (FT_Int): Add `signed'. + +2004-08-29 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument + to pass number of lookups. + Update all callers. + Don't call otl_lookup_list_validate but otl_lookup_validate. + (otl_gpos_validate): Call otl_lookup_list_validate instead of + otl_gpos_subtable_validate. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to + pass number of lookups. + Update all callers. + + + * src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid + compiler warning. + + + * src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to... + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This. + * src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c, + src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated. + + + * builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs' + if compiler is g++ (v3.3.3 emits a warning otherwise). + +2004-08-28 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_value_length): Return number of bytes, + not number of 16bit entities. + (otl_gpos_lookup2_validate): Check class definition tables for + format 2. + Fix loop for format 2. + (otl_liga_mark2_validate): Fix offset for otl_anchor_validate. + +2004-08-27 Werner Lemberg + + * src/base/ftmac.c: Don't include truetype/ttobjs.h. + Don't include type1/t1objs.h. + (FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings. + +2004-08-27 Mathieu Malaterre + + * src/base/ftmac.c: Handle OS_INLINE for xlc compiler also. + +2004-08-27 Werner Lemberg + + * src/otlayout/otlayout.h: Add copyright. + (OTL_INVALID_OFFSET): Removed. + + * src/otlayout/otlgdef.h: Include otlayout.h. + Comment out inclusion of otltable.h. + + * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call + to otl_base_array_validate. + (otl_liga_mark2_validate): Fix `for' loop. + + * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', + not components array. + + * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): + Comment out. + (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. + (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): + s/otl_lookup_get_count/otl_lookup_list_get_count/. + (otl_script_list_validate): + s/otl_feature_get_count/otl_feature_list_get_count/. + (otl_script_validate): Call otl_lang_validate for default language. + + * src/otlayout/otlcommn.h: Updated. + +2004-08-16 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_lookup1_validate, + otl_gpos_lookup2_validate, otl_gpos_lookup3_validate, + otl_gpos_lookup4_validate, otl_gpos_lookup5_validate, + otl_gpos_lookup6_validate, otl_gpos_lookup9_validate, + otl_gpos_validate): Update + function arguments. + (otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update + function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument + to pass lookup count. + Check sequence and glyph indices. + (otl_gpos_subtable_validate): Update function arguments. + Update callers. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_validate, + otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update + function arguments. + Add glyph index checks. + (otl_sequence_validate, otl_alternate_set_validate, + otl_ligature_validate): Add argument to pass glyph count. + Update callers. + Add glyph index check. + (otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update + function arguments. + (otl_ligature_set_validate): Add argument to pass glyph count. + Update caller. + (otl_sub_class_rule_validate, + otl_sub_class_rule_set_validate): Removed. + (otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument + to pass lookup count. + Update callers. + Add lookup index check. + (otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add + argument to pass lookup count. + Update callers. + (otl_gsub_lookup5_validate): Update function arguments. + Handle NULL offsets correctly. + Don't call otl_sub_class_rule_set_validate but + otl_sub_rule_set_validate. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup6_validate): Update function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup7_validate, otl_gsub_validate): Update function + arguments. + + * src/otlayout/otlgsub.h: Updated. + + * src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets + correctly. + + * src/otlayout/otlcommn.c (otl_class_definition_validate): Fix + compiler warning. + (otl_coverage_get_first, otl_coverage_get_last): New functions. + (otl_lookup_validate): Add arguments to pass lookup and glyph + counts. + Update callers. + (otl_lookup_list_validate): Add argument to pass glyph count. + Update callers. + + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_extender_validate, + otl_jstf_max_validate, otl_jstf_script_validate, + otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter + to validate glyph indices. + Update callers. + (otl_jstf_validate): Add parameter which specifies number of glyphs + in font. + + * src/otlayout/otljstf.h: Updated. + +2004-08-15 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter + to handle possible NULL values properly. + Update all callers. + +2004-08-15 Werner Lemberg + + * src/otlayout/gpos.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_liga_attach_validate): Renamed to... + (otl_liga_mark2_validate): This. + Update all callers. + (otl_mark2_array_validate): Removed. + (otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not + otl_mark2_array_validate. + (otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed. + (otl_gpos_lookup7_validate): Complete code for format 2. + (otl_chain_pos_class_rule_validate, + otl_chain_pos_class_set_validate): Removed. + (otl_gpos_lookup8_validate): Don't call + otl_chain_pos_class_set_validate but + otl_chain_pos_rule_set_validate. + Simplify some code. + + * src/otlayout/otlgpos.h: Add copyright. + +2004-08-14 Werner Lemberg + + * src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed. + (otl_jstf_gpos_mods_validate): Renamed to... + (otl_jstf_gsubgpos_mods_validate): This. + Test whether lookup_count is zero. + (otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate. + (otl_jstf_validate): Initialize gsub_lookup_count and + gpos_lookup_count if gsub or gpos is zero. + + * src/otlayout/otlgsub.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_gsub_lookup1_validate): Simplify code. + (otl_gsub_lookup2_validate, otl_gsub_lookup3_validate, + otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused + variables. + (otl_gsub_lookup5_validate): Remove unused variable. + Fix call to otl_sub_rule_set_validate and + otl_sub_class_rule_set_validate. + (otl_chain_sub_class_rule_validate, + otl_chain_sub_class_set_validate): Removed. + (otl_gsub_lookup6_validate): Remove unused variable. + Fix call to otl_chain_sub_rule_set_validate. + (otl_gsub_lookup7_validate): Handle lookup type 8 also. + (otl_gsub_lookup8_validate: New function. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Commented out. + (otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and + otl_gsub_lookup8_validate. + (otl_gsub_validate): Updated. + + * src/otlayout/otlgsub.h: Add copyright. + + * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h + (otl_coverage_get_index): Comment out. + +2004-08-13 Werner Lemberg + + * src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New + function. + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otlbase.c: Rename counting variables to be more + meaningful. + Add copyright message. + * src/otlayout/otlbase.h: Add copyright message. + + * src/otlayout/otlgdef.c: Rename counting variables to be more + meaningful. + Add copyright message. + Use OTL_CHECK everywhere. + (otl_caret_value_validate): Remove unused variable. + (otl_gdef_validate): All tables are optional. + * src/otlayout/otlgdef.h: Add copyright message. + + * src/otlayout/otljstf.c: Rename counting variables to be more + meaningful. + Add copyright message. + (otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add + parameter to pass lookup count. + Update all callers. + Check lookup array. + (otl_jstf_max_validate): + s/otl_gpos_subtable_check/otl_gpos_subtable_validate/. + (otl_jstf_priority_validate, otl_jstf_lang_validate, + otl_jstf_script_validate): Add two parameters to pass lookup counts. + Update all callers. + (otl_jstf_validate): Add two parameters to pass GPOS and GSUB + table offsets; use otl_gsubgpos_get_lookup_count to convert extract + lookup counts. + Fix typo. + * src/otlayout/otljstf.h: Updated. + Add copyright message. + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function. + (otl_gpos_validate): Use it. + * src/otlayout/otlgpos.h: Updated. + +2004-08-13 Werner Lemberg + + * src/otlayout/otcommn.c: Use OTL_CHECK everywhere. + (otl_coverage_validate): Initialize `p', + s/count/num_glyphs/. + s/start_cover/start_coverage/. + (otl_coverage_get_index): Return OTL_Long, not OTL_Int. + Remove unused variables. + (otl_class_definition_validate): s/count/num_glyphs/. + Remove unused variables. + (otl_class_definition_get_value, otl_device_table_get_start, + otl_device_table_get_end, otl_device_table_get_delta, + otl_lookup_get_table, otl_lookup_list_get_count, + otl_lookup_list_get_lookup, otl_lookup_list_get_table, + otl_feature_get_lookups, otl_feature_list_get_count, + otl_feature_list_get_feature, otl_lang_get_count, + otl_lang_get_req_feature, otl_lang_get_features): Commented out + temporarily until we really need it. + (otl_lookup_validate): Removed. + (otl_lookup_table_validate): Renamed to ... + (otl_lookup_validate): This. Update callers. + (otl_lookup_list_validate): Remove already commented out definition + and move the other definition up. + (otl_feature_validate): Add parameter to pass number of lookups. + Update callers. + Check lookup indices. + (otl_feature_list_validate): Add parameter to pass lookup table. + Update callers. + (otl_lang_validate): Add parameter to pass number of features. + Update callers. + Handle req_feature and check feature indices. + (otl_script_validate): Add parameter to pass number of features. + Update callers. + (otl_script_list_validate): Add parameter to pass feature table. + Update callers. + + * src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/. + Comment out the same functions as in otcommn.c. + (otl_script_list_get_script): Removed. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to + type OTL_Long. + (otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to + type OTL_Long. + Fix test. + (otl_gsub_validate): Fix order of validation. + + * src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of + validation. + +2004-08-12 Werner Lemberg + + Make otlayout module compile (without actually working). + + * src/otlayout/*: s/OTL_Valid/OTL_Validator/. + s/NULL/0/. + + * src/otlayout/otlayout.h: Fix various typos. + (OTL_Bool): New typedef. + (OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword. + (OTL_Err_InvalidArgument): Removed. + (OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values. + (OTL_MAKE_TAG): Add missing parenthesis. + (OTL_INVALID_DATA): Use OTL_Err_InvalidData. + (OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize. + (OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros. + + * src/otlayout/otlgpos.c: s/FT_/OTL_/. + s/OTL_Short/OTL_Int16/. + (otl_gpos_pairset_validate): Add return type. + (otl_base_array_validate): Fix call to otl_anchor_validate. + (otl_liga_array_validate): Fix call to otl_liga_attach_validate. + (otl_gpos_lookup5_validate): Fix typos. + (otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate. + (otl_gpos_lookup7_validate): Comment out unfinished code. + Fix typos. + + * src/otlayout/otlgsub.c: Add forward declaration for + otl_gsub_validate_funcs. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Fix call to otl_parser_check_property. + s/otl_coverage_lookup/otl_coverage_get_index/. + (otl_ligature_validate): Add missing variable declaration. + (otl_sub_rule_validate): Fix typo. + (otl_sub_class_rule_validate): Add missing variable declaration. + Fix typo. + (otl_gsub_lookup5_validate): Fix typo. + (otl_gsub_lookup6_validate): Fix call to + otl_chain_sub_class_set_validate. + (otl_gsub_validate_funcs): Don't use `const'. + + * src/otlayout/otlcommn.c (otl_class_definition_get_value, + otl_device_table_validate, otl_device_table_get_delta, + otl_lookup_validate, otl_script_validate): Add missing + variable declarations. + (otl_lookup_list_validate): Comment out first definition. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + (otl_feature_list_validate): + s/otl_feature_table_validate/otl_feature_validate/. + (otl_script_list_validate): + s/otl_script_table_validate/otl_script_validate/. + + * src/otlayout/otlcommn.h: Comment out first declaration. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + + * src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to + otl_device_table_validate. + (otl_base_script_validate): Add missing variable declarations. + (otl_base_script_list_validate): Fix call to + otl_base_script_validate. + (otl_axis_table_validate): Fix calls to otl_base_tag_list_validate + and otl_base_script_list_validate. + (otl_base_validate): Fix calls to otl_axis_table_validate. + + * src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to + otl_attach_point_validate. + (otl_caret_value_validate): Add missing variable declaration. + Fix call to otl_device_table_validate. + (otl_ligature_glyph_validate): Fix call to otl_caret_value_validate. + (otl_ligature_caret_list_validate): Fix call to + otl_ligature_glyph_validate. + (otl_gdef_validate): Fix calls to otl_class_definition_validate, + otl_attach_list_validate, otl_ligature_caret_list_validate, and + otl_class_definition_validate. + + * src/otlayout/otltable.h (otl_table_validate, otl_table_init, + otl_table_set_script): Comment out. + + * src/otlayout/otlparse.h (OTL_ParserRec): + s/OTL_Alternate/OTL_GSUB_Alternate/. + (OTL_ParseError): Add OTL_Err_Parser_Memory and + OTL_Err_Parser_Internal. + (otl_parser_error): Fix typo. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otlparse.c (otl_string_ensure): + s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/. + (OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index, + otl_parser_replace_1, otl_parser_replace_n): Fix typos. + (OTL_PARSER_UNCOVERED): Removed. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing + variable declaration. + + * src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo. + +2004-08-11 Danny + + * src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close + to NULL. This allows custom close functions to delete the FT_STREAM + object. + +2004-08-11 Werner Lemberg + + Add API to get information about SFNT tables. + + * include/freetype/internal/services/svsfnt.h + (FT_SFNT_Table_Info_Func): New typedef. + (SFNT_Table): Add it. + + * src/base/ftobjs (FT_Sfnt_Table_Info): New function. + + * include/freetype/tttables.h: Updated. + + * src/sfnt/sfdriver.c (sfnt_table_info): New function. + (sfnt_service_sfnt_table): Add it. + + * docs/CHANGES: Updated. + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. + + * builds/unix/configure.ac (version_info): Set to 9:8:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.9/2.1.10/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-08-11 Detlef Würkner + + * src/base/ftrfork.c (FT_Raccess_Guess) + [!FT_CONFIG_OPTION_GUESSING_EMBEDDED_FORK]: Remove compiler + warnings. + +2004-08-06 Adam Piotrowski + + * src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte + adjustments are unsigned, not signed. + +2004-08-05 David Turner + + `Activate' gray-scale specifing hinting within the TrueType + bytecode interpreter. This is an experimental feature which + should probably be made optional. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Move the code to set the pedantic_hinting flag + to... + (TT_Load_Glyph): Here. + Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. + + * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer + version 1.7. + Return rotation and stretching info only if glyph is rotated or + stretched, respectively. + Handle grayscale info. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale' + member. + +2004-08-02 George Williams + + * src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'. + +2004-08-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-08-01 George Williams + + FreeType now can read kerning values from PFM files. + + * src/type1/t1afm.c (T1_Done_AFM): Renamed to... + (T1_Done_Metrics): This. + Update all callers. + (T1_Read_AFM): Make it static. + Don't enter and leave a frame. + (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. + (T1_Read_PFM): New function. + (T1_Read_Metrics): New higher-level function to be used instead of + T1Read_AFM. + Update all callers. + +2004-07-31 Werner Lemberg + + * src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var, + tt_face_vary_cvt): Fix compiler warnings. + +2004-07-26 Søren Sandmann + + * src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for + face->style_name. + * src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'. + +2004-07-26 Darren J Longhorn + + * include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize + five-byte `long' (which is avoided then). + +2004-07-25 Detlef Würkner + + * src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not + ppem values. + (PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own + code to compare ppem values. + * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not + ppem values. + (BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own + code to compare ppem values. + +2004-07-25 Kornfeld Eliyahu Peter + + * src/sfnt/sfobjs.c (sfnt_load_face): Handle + TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY. + +2004-07-24 Derek B. Noonburg + + * src/cff/cffload.c (cff_font_load): Always create inverse mapping. + Even if the charstring count is the same as the CID count, it is + still possible that the font uses a different CID -> GID mapping. + +2004-07-23 Werner Lemberg + + * src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag + found in some Arphic fonts made for Chinese version of Windows 3.1. + +2004-07-17 David Turner + + Fixed a dangling pointer bug in the cache code that happened in very + rare cases, i.e., when a new family object was destroyed by an + out-of-memory condition during a glyph node initialization. The + function FTC_Cache_Lookup would flush the cache and restart the + lookup with a bad pointer. + + * include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro. + (FTC_GCACHE_LOOKUP_CMP): Use it. + Handle reference count in `num_nodes' correctly. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use + FTC_FAMILY_FREE. + (FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly. + + * src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing + bug. + + * src/truetype/ttinterp.c (Normalize): Fixed a bug that caused + long and unnecessary delays while normalizing huge vectors. + +2004-07-15 Werner Lemberg + + * docs/CHANGES: Updated. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler + warning. + +2004-07-15 David Turner + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points + are not stroked, preventing a bug with pala.ttf and other + fonts. + + * include/freetype/ftstroke.h: Updating documentation comments. + +2004-07-13 Werner Lemberg + + * src/base/ftstroke.c (ft_stroke_border_reverse): Removed. Unused. + +2004-07-12 David Turner + + * src/base/ftstroke.c (ft_stroke_border_close): Add second parameter + to indicate reversion of points. + Update all callers. + (ft_stroke_border_reverse): Fix initialization of `point1' and + `tag1'. + + * src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation + for transformed glyphs. + +2004-07-11 David Turner + + Fix bugs that prevented the stroker to correctly generate stroked + paths from closed paths, i.e., nearly all glyphs in vectorial fonts. + + The code is still _very_ buggy though; treat with special care. + + * src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro. + (ft_stroke_border_reverse): New function. + (ft_stroker_inside): Remove local variable `sigma'; use different + threshold. + (ft_stroker_add_reverse_left): Switch begin/end tags if necessary. + (FT_Stroker_EndSubPath): Call ft_stroker_inside and + ft_stroke_border_reverse. + +2004-06-26 Peter Kovar + + * src/truetype/ttgload.c (load_truetype_glyph): Fix typo. + +2004-06-25 Werner Lemberg + + * src/type1/t1afm.c (afm_atoindex): Fix boundary test. Reported + by Dirck Blaskey. + +2004-06-24 David Turner + + + * Version 2.1.9 released. + ========================= + + + * src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing + compiler warnings. + +2004-06-23 Werner Lemberg + + * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare + FT_QAlloc_Debug and FT_QRealloc_Debug. + + * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. + (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. + Fix error message. + +2004-06-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftutil.c + (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, + FT_QRealloc_Debug): New functions that perform allocation without + zero-ing out the corresponding blocks. + + * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, + FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, + FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY): New macros. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. + * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. + + * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, + tt_face_load_gasp): Use FT_QNEW_ARRAY. + (tt_face_load_kern): Use FT_QNEW_ARRAY. + Small optimization in the kerning table verifier; this speeds up + TrueType face opening by about 7%. + (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. + + * include/freetype/config/ftmodule.h: Changed the order of modules, + putting TrueType and Type 1 first. This dramatically improves the + performance of face open/close operations. For example, putting the + TrueType driver first in the list results in a 5x speedup when + opening `Vera.ttf'. + + The very problem is that both the PCF and BDF drivers do a lot more + than necessary to detect that they cannot handle a font file. + +2004-06-22 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, + pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve + debugging messages. + + * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. + (PCF_Face_Init): Simplify code. + + * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. + + * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), + src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. + Set `default_glyph'. + (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. + + * docs/CHANGES: Updated. + +2004-06-21 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-21 David Turner + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Don't access (unrounded) + `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes + a scaling bug that caused incorrect rendering when the bytecode + interpreter was enabled. + +2004-06-14 Huw D M Davies + + * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem + based on pixel_width and pixel_height. + (FNT_Size_Set_Pixels): Updated. + +2004-06-14 Werner Lemberg + + * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. + Reported by Hyvärinen Jyrki Juhani. + +2004-06-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-10 David Turner + + * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, + src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. + Obsolete. + + * src/raster/ftraster.c (Alignment, PAlignment): New union to fix + problems with 64bit systems. + (AlignProfileSize): Use it. + +2004-06-08 David Turner + + * include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta' + and `rsb_delta' elements to... + (FT_GlyphSlotRec): Here to retain binary compatibility with older + FreeType versions. + Update all users. + + * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization + of slot->metrics.width and slot->metrics.height when loading a + Windows FNT glyph. Thanks to Huw Davies. + + * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change + return type to FT_Bool. + + * src/cache/ftbasic.c (ftc_basic_family_compare): Change return + type to FT_Bool. + + * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make + the former call the latter, not vice versa. + (FTC_Cache_Done, ftc_cache_done): Ditto. + + * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make + the former call the latter, not vice versa. + (FTC_GCache_Init, ftc_gcache_init): Ditto. + (FTC_GCache_Done, ftc_gcache_done): Ditto. + + * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the + former call the latter, not vice versa. + (FTC_INode_Weight, ftc_inode_weight): Ditto. + + * src/cache/ftcmanag.c (ftc_size_node_compare, + ftc_size_node_compare_faceid, ftc_face_node_compare): Change return + type to FT_Bool. + + * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the + former call the latter, not vice versa. + (FTC_SNode_Weight, ftc_snode_weight): Ditto. + (FTC_SNode_Compare, ftc_snode_compare): Ditto. + + * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache + sub-system. + +2004-06-05 Werner Lemberg + + * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-04 David Chester + + Improve inter-letter spacing for autohinted glyphs. + + * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements + `lsb_delta' and `rsb_delta'. + + * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 David Turner + + * src/autofit/*: Important fixes to the auto-fitter. The output + now seems to be 100% equivalent to the auto-hinter, while being + about 2% faster (which proves that script-specific algorithm + selection isn't a performance problem). + + To test it, change `autohint' to `autofit' in + and recompile. + + A few more testing is needed before making this the official + auto-hinting module. + +2004-06-02 Werner Lemberg + + * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler + warnings. + +2004-06-01 Werner Lemberg + + * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English + name record for the Apple platform is preferred to a non-English + entry for the Microsoft platform. Problem reported by HANDA + Ken'ichi. + +2004-05-19 George Williams + + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New + auxiliary functions. + (T1_Get_MM_Var): Provide axis tags. + Use mm_axis_unmap and mm_weights_unmap to provide default values + for design and normalized axis coordinates. + + * include/freetype/t1tables.h (PS_DesignMapRec): Change type of + `design_points' to FT_Long. + Update all users. + +2004-05-17 Werner Lemberg + + * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. + Reported by Mikey Anbary . + +2004-05-15 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. + +2004-05-15 George Williams + + * src/sfnt/ttload.c (tt_face_load_max_profile): Always set + face->root.num_glyphs. + +2004-05-14 Masatake YAMATO + George Williams + + * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. + +2004-05-14 Werner Lemberg + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Adjust parameters and return types + to prototypes given in header files from include/freetype/cache. + Use casts to proper types locally. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove + casts. + + * src/cache/ftccback.h: Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. + + * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, + ftc_inode_weight): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, + ftc_snode_weight, ftc_snode_compare): Adjust parameters and return + types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, + ftc_cmap_node_weight, ftc_cmap_node_compare, + ftc_cmap_node_remove_faceid): Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. Use + casts to proper types locally. + (ftc_cmap_cache_class): Remove casts. + + * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, + ftc_gcache_done): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, + ftc_size_node_init, ftc_size_node_reset, + ftc_size_node_compare_faceid, ftc_face_node_init, + ftc_face_node_done, ftc_face_node_compare: Adjust parameters and + return types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + (ftc_size_list_class, ftc_face_list_class): Remove casts. + +2004-05-13 Werner Lemberg + + * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): + Use FT_Module as parameter and do a cast to FT_AutoHinter locally. + (autohint_module_class): Remove casts. + + * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, + ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, + ft_outline_glyph_done, ft_outline_glyph_copy, + ft_outline_glyph_transform, ft_outline_glyph_bbox, + ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast + to FT_XXXGlyph locally. + Use FT_CALLBACK_DEF throughout. + (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. + + * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, + bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter + and do a cast to BDF_CMap locally. + (bdf_cmap_class): Remove casts. + +2004-05-12 Werner Lemberg + + * src/cff/cffgload.h (CFF_Builder): Remove `error'. + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' und update all users. + +2004-05-11 Werner Lemberg + + * include/freetype/internal/psaux.h (T1_ParseState): New + enumeration. + (T1_BuilderRec): Replace `path_begun' with `parse_state'. + Remove `error'. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' and update all users. + Don't use `builder->error'. + Replace `path_begun' with `parse_state' and check parsing states. + + * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): + Replace `path_begun' with `parse_state' and check parsing states. + +2004-05-10 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case + of error -- `avar' is optional so we can't rely on tt_done_blend + being called automatically. + +2004-05-09 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix + error handling. + +2004-05-07 Werner Lemberg + + * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, + pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, + pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are + typecast to the proper PFR_XXX types within the function. + Update code accordingly. + + * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, + pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX + arguments which are typecast to the proper PFR_XXX types within the + function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (pfr_metrics_service_rec, pfr_driver_class): Remove casts. + +2004-05-06 Masatake YAMATO + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. + (*): Rename local variable OffsetToData to offsetToData. + +2004-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, + cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access + root fields directly. + * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current + frame before calling TT_Vary_Get_Glyph_Deltas. + + * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for + consistency. + (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, + pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which + are typecast to the proper PCF_XXX types within the function. + Update code accordingly. + (pcf_cmap_class): Remove casts. + (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use + PCF_XXX but FT_XXX arguments which are typecast to the proper + PCF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (PCF_Set_Point_Size): New wrapper function. + (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. + (pcf_driver_class): Remove casts. + +2004-05-04 Steve Hartwell + + * src/truetype/ttobjs.c (tt_driver_done): Fix typo. + +2004-05-04 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, + BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which + are typecast to the proper BDF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (BDF_Set_Point_Size): New wrapper function. + (bdf_driver_class): Remove casts. + + * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (cff_driver_class): Remove casts. + + * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, + cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, + cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + (cff_point_size_reset): New wrapper function. + + * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, + cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, + cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + (cid_point_size_reset): New wrapper function. + + * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + + * src/cid/cidriver.c (cid_get_interface): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF. + (t1cid_driver_class): Remove casts. + + * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. + * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local + variables (this is done later). + (ft_var_load_avar): Fix call to FT_FRAME_ENTER. + (TT_Get_MM_Var): Fix size for `fvar_fields'. + (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables + correctly. + + * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if + current size is zero. + +2004-05-03 Steve Hartwell + + * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, + tt_face_done, tt_size_init, tt_size_done, tt_driver_init, + tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are + typecast to the proper TT_XXX types within the function. + Update code accordingly. + + * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, + Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but + FT_XXX arguments which are typecast to the proper TT_XXX types + within the function. + Update code accordingly. + (tt_driver_class): Remove casts. + +2004-05-02 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' + is not NULL. Reported by Gordon Childs . + +2004-04-29 Werner Lemberg + + * docs/formats.txt: Add more information on PFR format. + +2004-04-28 Werner Lemberg + + * docs/formats.txt: New file. + * docs/CHANGES: Updated. + +2004-04-28 Masatake YAMATO + + * include/freetype/internal/tttypes.h (GX_BlendRec_) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. + + * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. + +2004-04-27 Masatake YAMATO + + * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF + for function declarations. + +2004-04-25 George Williams + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. + +2004-04-25 Werner Lemberg + + * src/truetype/Jamfile, docs/CHANGES: Updated. + +2004-04-24 Werner Lemberg + + * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. + * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. + * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. + Use FT_BEGIN_HEADER and FT_END_HEADER. + Use FT_LOCAL. + +2004-04-24 George Williams + + Add support for Apple's distortable font technology (in GX fonts). + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, + FT_MM_Var): New structures. + (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New function declarations. + + * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, + FT_Set_Var_Design_Func): New typedefs. + Update MultiMasters service. + + * include/freetype/internal/tttypes.h + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. + (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. + (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' + and `blend'. + + * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New + macros. + + * include/freetype/internal/fttrace.h: Add `ttgxvar'. + + * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New functions. + + * src/sfnt/sfobjs.c (sfnt_load_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS + flag for GX var fonts. + + * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. + + * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.c. + + * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. + (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + New service. + (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. + + * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (TT_Process_Simple_Glyph, load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts. + + * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_done_blend. + + * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_face_vary_cvt. + + * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. + + * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var + and T1_Set_Var_Design. + + * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. + (T1_Get_MM_Var, T1_Set_Var_Design): New functions. + + * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New + function declarations. + +2004-04-23 Werner Lemberg + + * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename + declaration and move to... + * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. + (FREETYPE_PATCH): Set to 9. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. + + * builds/unix/configure.ac (version_info): Set to 9:7:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/218/219/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.8/2.1.9/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-04-21 Werner Lemberg + + * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c + (ps_parser_load_field): Use FT_CHAR_BIT. + +2004-04-21 David Turner + + + * Version 2.1.8 released. + ========================= + + + * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. + + * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c + (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): + Remove compiler warnings. + + * src/autofit/aftypes.h: Undefine AF_DEBUG. + + * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, + pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c + (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, + t42_service_ps_font_name): Decorate data arrays with `const' to + avoid populating the `.data' segment. + + * src/lzw/Jamfile: New file. + +2004-04-20 Werner Lemberg + + * src/psaux/psobjs.c (T1Radix): Renamed to... + (ps_radix): This. + Update current cursor position. + + * docs/CHANGES: Updated. + +2004-04-18 Werner Lemberg + + * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), + src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to + FT_UInt. From Lex Warners. + +2004-04-17 Chisato Yamauchi + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change + from 2004-03-19. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. + + * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with + `static'. + Remove unused function `RepadBitmap'. + * src/pcf/pcfdrivr.c: Don't include pcfutil.h. + +2004-04-16 Werner Lemberg + + * builds/unix/freetype-config.in (usage): Fix and improve usage + information. + +2004-04-15 Werner Lemberg + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define + FT_CHAR_BIT. + + * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if + glyph is vertically distorted or mirrored. + + * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly + for embedded bitmaps. + + * docs/CHANGES: Updated. + +2004-04-15 bytesoftware + + * include/freetype/config/ftconfig.h, src/base/ftstream.c + (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. + +2004-04-14 Werner Lemberg + + * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. + +2004-04-14 Alex Strelnikov + + * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case + of error. + +2004-04-14 Werner Lemberg + + * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. + * builds/unix/configure.ac: Don't try to remove `-ansi' compilation + switch on the Mac. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.6. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-13 Werner Lemberg + + * include/freetype/config/ftconfig.h: Use CHAR_BIT to define + size of FT_SIZEOF_xxx. + +2004-04-12 Chisato Yamauchi + + * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, + TT_Load_SBit_Metrics_Func): New typedefs. + (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New + declarations. + * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... + (tt_find_sbit_image): This. + Updated all callers. + (load_sbit_metrics): Renamed to... + (tt_load_sbit_metrics): This. + Updated all callers. + +2004-04-12 Werner Lemberg + + * configure: Accept makepp also. + + * builds/unix/detect.mk: Use proper path to unix-def.mk. + * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. + * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. + Use BUILD_DIR. + + * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update + documentation on makepp. + +2004-04-11 Werner Lemberg + + * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. + +2004-04-10 Werner Lemberg + + * src/lzw/ftlzw.c: Include zopen.h dependent on + FT_CONFIG_OPTION_USE_LZW. + + * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. + +2004-04-02 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.2. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-01 Werner Lemberg + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of + AC_COMPILE_IFELSE. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + * builds/freetype.mk (refdoc): Updated. + +2004-03-31 Werner Lemberg + + Handle broken FNT files which don't have a trailing NULL byte + in the face name string. + + * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. + * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. + (FNT_Face_Init): Append a final zero byte to the font face name. + +2004-03-30 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from + 2004-03-19. + +2004-03-27 Werner Lemberg + + * src/base/descrip.mms (OBJS): Add ftbbox.obj. + +2004-03-26 George Williams + + Add vertical phantom points. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add + `top_bearing', `vadvance', `pp3', and `pp4'. + + * src/autofit/afloader.c (af_loader_load_g): Handle two more points. + + * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. + * src/truetype/ttgload.c (Get_VMetrics): New function. + (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more + points. + (load_truetype_glyph): Use Get_VMetrics. + Handle two more points. + (compute_glyph_metrics): Thanks to vertical phantom points we now + can always compute `advance_height' and `top_bearing'. + * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom + points. + + + * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of + `news'. + +2004-03-21 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. + +2004-03-20 Steve Hartwell + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL + value for `selection' as `select all'. + +2004-03-19 Steve Hartwell + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index + values > 0 if loading non-TTC fonts. + + * src/base/ftmac.c (open_face_from_buffer): Set positive face_index + to zero before calling FT_Open_Face. + + * docs/CHANGES: Updated. + +2004-03-04 Werner Lemberg + + * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: + Add LZW module. + + * Jamfile.in: Removed. + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, + s/ABS/FT_ABS/. Updated all callers. + + * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c + (PCF_Face_Init): Use FT_ERROR_BASE. + +2004-03-04 Albert Chin + + Add support for PCF fonts compressed with LZW (extension .pcf.Z, + created with `compress'). + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_LZW): New macro. + + * include/freetype/ftlzw.h: New file. + * include/freetype/config/ftheader.h (FT_LZW_H): New macro for + ftlzw.h. + + * src/lzw/*: New files. + + * src/pcf/pcfdrivr.c: Include FT_LZW_H. + (PCF_Face_Init): Try LZW also. + + * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. + Beautify. + +2004-03-03 Werner Lemberg + + * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. + +2004-03-02 Werner Lemberg + + Add embedded bitmap support to CFF driver. + + * src/cff/cffobjs.h (CFF_SizeRec): New structure. + + * src/cff/cffgload.c (cff_builder_init): Updated. + (cff_slot_load): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. + + * src/cff/cffobjs.c (sbit_size_reset) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. + (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. + (cff_size_reset): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. + + * src/cff/cffdrivr.c (Load_Glyph): Updated. + (cff_driver_class): Use CFF_SizeRec. + + * docs/CHANGES: Updated. + +2004-03-01 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use + FT_RoundFix but FT_PIX_ROUND. + (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. + (psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. + (psh_glyph_find_blue_points): New function. Needed for fonts like + p052003l.pfb (URW Palladio L Roman) which have flex curves at the + base line within blue zones, but the flex curves aren't covered by + hints. + (ps_hints_apply): Use psh_glyph_find_blue_points. + +2004-02-27 Garrick Meeker + + * builds/unix/configure.ac: Fix compiler flags for + `--with-old-mac-fonts'. + * builds/unix/configure: Regenerated. + + * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. + (FT_New_Face_From_Resource): New function. + (FT_New_Face): Use FT_New_Face_From_Resource. + (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. + [__MWERKS__]: Don't include FSp_fopen.h. + +2004-02-26 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_new): Fix value of + `dim->stdw.count'. + Don't assign default values to blue scale and blue shift. + +2004-02-25 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-02-25 Garrick Meeker + Steve Hartwell + + Improve MacOS fond support. Provide a new API + `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. + + * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. + STREAM_FILE [__MWERKS__]: New macro. + (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. + (file_spec_from_path) [__MWERKS__]: Updated #if statement. + (get_file_type, make_lwfn_spec): Use `const' for argument. + (is_dfont) [TARGET_API_MAC_CARBON]: Removed. + (count_face_sfnt, count_faces): New functions. + (parse_fond): Do some range checking. + (read_lwfn): Change type of second argument. + No longer call FSpOpenResFile. + (OpenFileAsResource): New function. + (FT_New_Face_From_LWFN): Use `const' for second argument. + Use OpenFileAsResource. + (FT_New_Face_From_Suitcase): Change type of second argument. + No longer call FSpOpenResFile. + Loop over all resource indices. + (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. + (FT_GetFile_From_Mac_Name): Use `const' for first argument. + (ResourceForkSize): Removed. + (FT_New_Face): Updated to use new functions. + (FT_New_Face_From_FSSpec): New function. + + * include/freetype/ftmac.h: Updated. + +2004-02-24 Malcolm Taylor + + * src/autohint/ahhint.c (ah_hinter_load) : + Handle case where outline->num_vedges is zero while computing hinted + metrics. + +2004-02-24 Gordon Childs + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value + for `count'. + +2004-02-24 Werner Lemberg + + * include/freetype/t1tables.h (PS_PrivateRec): Add + `expansion_factor'. + + * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation + of blues->no_overshoots -- `blues_scale' is stored with a + magnification of 1000, and `scale' returns fractional pixels. + + * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', + `blue_fuzz', `expansion_factor', and `blue_scale' according to the + Type 1 specification. + + * src/type1/t1tokens.h: Handle `ExpansionFactor'. + + * docs/CHANGES: Updated. + +2004-02-24 Masatake YAMATO + + Provide generic access to MacOS resource forks. + + * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New + files. + + * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. + (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments + `resource_listoffset' and `resource_data' and adapt code + accordingly. These values are calculated outside of the function + now. + Add new argument `offsets'. + (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and + `FT_Raccess_Get_DataOffsets'. + (load_face_in_embedded_rfork): New function. + (load_mac_face): Use load_face_in_embedded_rfork. + (ft_input_stream_new): Renamed to... + (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. + (ft_input_stream_free): Renamed to... + (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. + + * src/base/ftbase.c: Include ftrfork.c. + + * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. + + * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): + New macro. + + * include/freetype/internal/fttrace.h: Added `rfork' as a new + trace definition. + + * include/freetype/internal/ftstream.h: Declare FT_Stream_New and + FT_Stream_Free. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. + + * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. + +2004-02-23 Werner Lemberg + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. + +2004-02-23 Masatake YAMATO + + Provide a simple API to control FreeType's tracing levels. + + * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, + FT_Trace_Get_Name): New declarations. + + * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New + functions. + +2004-02-23 David Turner + + * src/autofit/afhints.c, src/autofit/afhints.h, + src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave + bugs have been fixed. The auto-fitter works, doesn't crash, but + still produces unexpected results... + +2004-02-21 Werner Lemberg + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold + the accepted shift for strong points in fractional pixels (which + is a heuristic value). + (psh_glyph_find_strong_points): Compute threshold for + psh_hint_table_find_strong_points. + (psh_hint_table_find_strong_point): Add parameter to pass threshold. + +2004-02-20 Werner Lemberg + + * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call + ps_mask_table_alloc but ps_mask_table_last. + (ps_hints_t2mask): Use correct position and number for vertical + and horizontal hinter mask bits. + + * docs/CHANGES: Updated. + +2004-02-19 Werner Lemberg + + * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. + * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. + +2004-02-18 Werner Lemberg + + * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. + + * src/base/ftglyph.c (ft_bitmap_glyph_class, + ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. + + * src/smooth/ftsmooth.c (ft_smooth_render): Handle + FT_RENDER_MODE_LIGHT. + +2004-02-17 Werner Lemberg + + Fix callback functions in cache module. + + * src/cache/ftccback.h: New file for callback declarations. + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): + Use FT_CALLBACK_TABLE_DEF and local wrapper functions. + + * src/cache/ftccache.c: Include ftccback.h. + (ftc_cache_init, ftc_cache_done): New wrapper functions which use + FT_LOCAL_DEF. + + * src/cache/ftccmap.c: Include ftccback.h. + (ftc_cmap_cache_class): Use local wrapper functions. + + * src/cache/ftcglyph.c: Include ftccback.h. + (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcimage.c: Include ftccback.h. + (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): + Use FT_CALLBACK_TABLE_DEF. + + * src/cache;/ftcsbits.c: Include ftccback.h. + (ftc_snode_free, ftc_snode_new, ftc_snode_weight, + ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. + + * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. + +2004-02-17 Masatake YAMATO + + * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo + (FT_EXPORT_DEF -> FT_EXPORT). + + * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. + +2004-02-15 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. + +2004-02-14 Masatake YAMATO + + * builds/unix/ftsystem.c: Include errno.h. + (ft_close_stream): Renamed to... + (ft_close_stream_by_munmap): This. + (ft_close_stream_by_free): New function. + (FT_Stream_Open): Use fallback method if mmap fails. + Use proper function for closing the stream. + +2004-02-14 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Initialize `start_binary'. + +2004-02-13 Robert Etheridge + + * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c + (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation + of underline_position and underline_thickness. + +2004-02-12 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if + ppem values don't change. Suggested by Graham Asher. + +2004-02-11 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Always allocate + face->cid_stream so that we can deallocate it safely. + +2004-02-10 Werner Lemberg + + Make the PS parser more tolerant w.r.t. non-standard font data. In + general, an error is only reported in case of a syntax error; a + wrong type is now simply ignored (if possible). To be independent + of the order of various MM-specific keywords, the parse_shared_dict + routine has been removed -- the PS parser is now capable to skip + this data. It no longer fails on parsing e.g. + + dup /WeightVector exch def + + Since the token following /WeightVector isn't `[' (starting an + array) it is simply ignored. + + * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a + new internal error value. + + * src/type1/t1load.c (parse_blend_axis_types, + parse_blend_design_positions, parse_blend_design_map): Return + T1_Err_Ignore if no proper array is following the keyword. + (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' + structure, if necessary. + Return T1_Err_Ignore if no proper array is following the keyword. + (parse_shared_dict): Removed. + (parse_encoding): Set parser->root.error to return T1_Err_Ignore + if no result can be obtained. + Check for errors before accessing `elements' array. + (t1_keywords): Remove /shareddict. + (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. + Set keyword_flag only in case of success. + Check error code if skipping an unrecognized token. + (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend + if blend commands haven't set up a proper MM font. + + * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special + code for synthetic fonts. + Return PSaux_Err_Ignore if no proper value has been found. + +2004-02-09 Werner Lemberg + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Preserve glyph width before calling + cff_operator_seac. + +2004-02-09 Martin Muskens + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special + first argument for `hintmask' and `cntrmask' operators also. + +2004-02-08 Werner Lemberg + + * builds/unix/configure.in: Call AC_SUBST for `enable_shared', + `hardcode_libdir_flag_spec', and `wl'. + * builds/unix/configure: Regenerated. + + * builds/unix/freetype-config.in: Make --prefix and --exec-prefix + actually work. + Report a proper --rpath (or -R) value for --libs argument if a + shared library has been built. + + * docs/CHANGES: Updated. + +2004-02-07 Keith Packard + + * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix + computation of various vertical and horizontal metric values. + + * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): + Ditto. + +2004-02-07 Werner Lemberg + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. + +2004-02-07 Vitaliy Pasternak + + * builds/win32/visualc/freetype.sln, + builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. + +2004-02-03 Werner Lemberg + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): + Initialize `node'. + * src/type1/t1load.c (parse_dict): Initialize `have_integer'. + +2004-02-02 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands + outside of /Subrs or /CharStrings. This can happen if there is + additional code manipulating those two arrays so that FreeType + doesn't recognize them properly. + (T1_Open_Face): Improve an error message. + +2004-02-01 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Exit immediately if + there are no elements in /CharStrings. This is needed for fonts + like Optima-Oblique which not only define /CharStrings but access it + also. + +2004-02-01 David Turner + + * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) + : Provide macro version which doesn't use inline code. + * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) + : Ditto. + Use FTC_MRULIST_LOOKUP_CMP. + * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New + macro. + (FTC_MRULIST_LOOKUP): Use it. + + * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. + * src/cache/ftcbasic.c: Fix compiler warnings. + * src/cache/ftcmanag.c (FTC_Manager_LookupSize, + FTC_Manager_LookupFace) : Use FTC_MRULIST_LOOKUP_CMP. + * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after + heavy testing). + + * Jamfile: Updating `refdoc' target, and adding `autohint' to the + list of modules to build. Both the autohinter and autofitter will + be built by default. But which one will be used is determined by + the content of `ftmodule.h'. + + * src/autofit/*: Many updates, but the code is still buggy... + +2004-01-31 Werner Lemberg + + * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of + accent offset. + Update code similarly to the seac support for Type 1 fonts. + (cff_decoder_parse_charstrings) : Fix magnitude + of accent offset. + Don't hint glyphs twice if seac is emulated. + : Assign correct point tags. + * docs/CHANGES: Updated. + +2004-01-30 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not + FT_MEM_COPY, for copying the private dict. + + * src/type1/t1load.c (parse_subrs): Assign number of subrs only + in first run. + (parse_charstrings): Parse /CharStrings in second run without + assigning values. + (parse_dict): Skip all /CharStrings arrays but the first. We need + this for non-standard fonts like `Optima' which have different + outlines depending on the resolution. Note that there is no + guarantee that we get fitting /Subrs and /CharStrings arrays; this + can only be done by a real PS interpreter. + +2004-01-29 Antoine Leca + + * builds/win32/visualc/index.html: New file, giving detailed + explanations about forcing CR+LF line endings for the VC++ project + files. + +2004-01-22 Garrick Meeker + + * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. + +2004-01-22 Werner Lemberg + + Add support for the hexadecimal representation of binary data + started with `StartData' in CID-keyed Type 1 fonts. + + * include/freetype/internal/t1types.h (CID_FaceRec): Add new + members `binary_data' and `cid_stream'. + + * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. + (cid_hex_to_binary): New auxiliary function. + (cid_face_open): Add new argument `face_index' to return quickly + if less than zero. Updated all callers. + Call `cid_hex_to_binary', then open and assign memory stream to + `face->cid_stream' if `parser->binary_length' is non-zero. + * src/cid/cidload.h: Updated. + + * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and + `cid_stream'. + + * src/cid/cidparse.c (cid_parser_new): Check arguments to + `StartData' and set parser->binary_length accordingly. + * src/cid/cidparse.h (CID_Parser): New member `binary_length'. + + * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. + + * docs/CHANGES: Updated. + +2004-01-21 Werner Lemberg + + include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... + (ft_atol): This. + * src/base/ftdbgmem.c: s/atol/ft_atol/. + * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. + +2004-01-20 Masatake YAMATO + + * include/freetype/ftcache.h: Delete duplicated definition of + FTC_FaceID. + + * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap + Info service function if the cmap comes from sfnt. Return 0 if the + cmap is sythesized in cff module. + +2004-01-20 David Turner + + * src/cache/ftcmanag.c (ftc_size_node_compare): Call + FT_Activate_Size. + +2004-01-20 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one + CR, LF, or CR/LF after `eexec'. + +2004-01-18 David Turner + + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler + warning. + + * src/tools/docmaker/*: Updating beautifier tool. + +2004-01-15 David Turner + + * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix + infinite loop bug. + + * include/freetype/ftstroke.h: Include FT_GLYPH_H. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New + declarations. + + * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. + (FT_Outline_GetOutsideBorder): Inverse result. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New + functions. + (FT_Stroker_EndSubPath): Close path if needed. + (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. + + * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Moved to... + * include/freetype/ftcache.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Here. + + * src/tools/docmaker/docbeauty.py: New file to beautify the + documentation comments (e.g., to convert them to single block border + mode). + * src/tools/docmaker/docmaker.py (file_exists, make_file_list): + Moved to... + * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. + +2004-01-14 David Turner + + * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, + FT_ARRAY_MOVE): New macros to make copying arrays easier. + Updated all relevant code to use them. + +2004-01-14 Werner Lemberg + + * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. + Use number of charstrings as argument to CFF_Load_FD_Select (as + documented in the CFF specs). + +2004-01-13 Graham Asher + + * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of + `glyph->memory' up to free arrays properly in case of failure. + +2004-01-10 Masatake YAMATO + + Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by + Steve Hartwell . + + * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. + (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. + (cff_get_cmap_info): New function. + (cff_service_get_cmap_info) New entry for cff_services. + + * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. + Suggested by Steve Hartwell . + +2004-01-03 Masatake YAMATO + + * src/base/ftobjs.c (destroy_charmaps): New function. + (destroy_face, open_face): Use `destroy_charmaps'. + +2004-01-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-01-01 Michael Jansson + + * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of + size->metrics.descender. + +2003-12-31 Wolfgang Domröse + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. + : Change type of dx and dy to FT_Pos and remove + cast for accessing arguments. + +2003-12-31 Werner Lemberg + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous + change. It's not necessary. + +2003-12-29 Smith Charles + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated + flags set' correctly. + +2003-12-29 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating + `full' and `weight' properly. + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for + tracing output. + +2003-12-26 Werner Lemberg + + * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): + Use FT_UInt for ppem values. + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for + ppem values. + * src/sfnt/ttsbit.h: Updated. + + * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values + larger than -0FFFF. + +2003-12-25 Werner Lemberg + + * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude + FT_INTERNAL_OBJECTS_H. + + * src/base/ftstroke.c (FT_Outline_GetInsideBorder, + FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with + C++ compilers. + + * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: + s/select/selection/ to avoid compiler warning. + * src/cff/cffload.h: s/select/ftselect/ to avoid potential + compiler warning. + +2003-12-24 Werner Lemberg + + * src/cache/ftcsbits.c (FTC_SNode_Weight): + s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. + +2003-12-24 David Turner + + * Fixed compilation problems in the cache sub-system. + + * Partial updates to src/autofit. + + * Jamfile (FT2_COMPONENTS): Add autofit module. + +2003-12-23 Werner Lemberg + + * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle + CID-keyed fonts. + +2003-12-23 David Turner + + * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, + FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros. They + are used to avoid compiler warnings with very pedantic compilers. + Note that `(x) & -64' causes a warning if (x) is not signed. Use + `(x) & ~63' instead! + Updated all related code. + + Add support for extraction of `inside' and `outside' borders. + + * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. + (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, + FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. + (FT_StrokeBorderRec): New boolean member `valid'. + (ft_stroke_border_get_counts): Updated. + * include/freetype/ftstroke.h: Updated. + +2003-12-22 Werner Lemberg + + * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions + to describe the `charset' field in FT_WinFNT_HeaderRec. + * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to + FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. + + * include/freetype/freetype.h (FT_Encoding): Improve comment, + based on work by Detlef Würkner . + + * docs/CHANGES: Updated. + +2003-12-22 David Turner + + * include/freetype/ftcache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftccache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftcmru.h (added), + include/freetype/cache/ftlru.h (removed), + include/freetype/cache/ftcsbits.h, + include/freetype/cache/ftcimage.h, + include/freetype/cache/ftcglyph.h, + src/cache/ftcmru.c, + src/cache/ftcmanag.c, + src/cache/ftccache.c, + src/cache/ftcglyph.c, + src/cache/ftcimage.c, + src/cache/ftcsbits.c, + src/cache/ftccmap.c, + src/cache/ftcbasic.c (added), + src/cache/ftclru.c (removed): + + *Complete* rewrite of the cache sub-system to `solve' the + following points: + + - all public APIs have been moved to FT_CACHE_H, everything + under `include/freetype/cache' is only needed by client + applications that want to implement their own caches + + - a new function named FTC_Manager_RemoveFaceID to deal + with the uninstallation of FaceIDs + + - the image and sbit cache are now abstract classes, that + can be extended much more easily by client applications + + - better performance in certain areas. Further optimizations + to come shortly anyway... + + - the FTC_CMapCache_Lookup function has changed its signature, + charmaps can now only be retrieved by index + + - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace + FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in + private header for the moment) + +2003-12-21 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword + is encountered. + +2003-12-19 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For + example, the Japanese Hiragino font already contains 15 subfonts. + + * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for + CID-keyed fonts. + + * devel/ftoption.h: Define FT_DEBUG_MEMORY. + +2003-12-18 Werner Lemberg + + * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. + * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. + +2003-12-18 Werner Lemberg + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of + `cid_count' to `FT_ULong'. + + * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' + array. + + * src/cff/cffload.c (cff_charset_done): Free `cids' array. + (cff_font_load): Create cids array only for CID-keyed fonts which + are subsetted. + + * src/cff/cffobjs.c (cff_face_init): Check the availability of + the PSNames modules for non-pure CFFs also. + Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't + CID-keyed. + + * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. + +2003-12-17 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_init_face): Don't set + FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' + table. + + * docs/CHANGES: Updated. + +2003-12-17 Masatake YAMATO + + Add new function FT_Get_CMap_Language_ID to extract the language ID + for TrueType/sfnt fonts. + + * include/freetype/internal/services/svttcmap.h: New file. + * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add + svttcmap.h. + + * src/sfnt/sfdriver.c: Include ttcmap0.h. + (tt_service_get_cmap_info): New service. + (sfnt_services): Updated. + + * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. + (tt_cmap*_class_rec): Add tt_cmap*_get_info members. + (tt_get_cmap_info): New function. + * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. + (TT_CMap_ClassRec): New field `get_cmap_info'. + (tt_get_cmap_info): New declaration. + + * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. + (FT_Get_CMap_Language_ID): New function implementation. + * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New + function declaration. + +2003-12-16 Werner Lemberg + + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Remove + obsolete fields `load_charmap' and `free_charmap'. + (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. + * src/sfnt/sfnt.c: Don't include ttcmap.c. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. + * src/sfnt/ttload.c: Don't include ttcmap.h. + * src/sfnt/sfdriver.c: Don't include ttcmap.h. + (sfnt_interface): Updated. + + * include/freetype/internal/tttypes.h (TT_TableDirRec, + TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, + TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, + TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, + TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. + Obsolete. + * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. + +2003-12-15 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-12-15 Wolfgang Domröse + + * builds/atari/*: New directory for building FreeType 2 on Atari + with the PureC compiler. + +2003-12-12 Wolfgang Domröse + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add + cast. + * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return + value is either 0 or 1. + +2003-12-12 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. + (cff_get_name_index): Return if no PSNames service is available. + (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. + * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for + CID-keyed fonts. This is the inverse mapping of `sids'. + * src/cff/cffload.c (cff_charset_load): New argument `invert'. + Initialize charset->cids if `invert' is set. + (cff_font_load): In call to cff_charset_load, set `invert' to true + for CID-keyed fonts. + * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID + and map it to the real glyph index. + + * docs/CHANGES: Updated. + +2003-12-11 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Don't set + FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. + Don't construct a cmap for CID-keyed fonts. + +2003-12-10 Werner Lemberg + + Use implementation specific SID value 0xFFFF to indicate that + a dictionary element is missing. + + * src/cff/cffload.c (cff_subfont_load): Initialize all fields + which hold SIDs to 0xFFFF. + (cff_index_get_sid_string): Handle SID value 0xFFFF. + Handle case where `psnames' is zero. + (cff_font_load): Updated. + Don't load encoding for CID-keyed CFFs. + + * src/cff/cffobjs.c (cff_face_init): Updated. + Don't check for PSNames module if font is CID-keyed. + Compute style name properly (using the same algorithm as in the + CID driver). + Fix computation of style flags. + + * src/cff/cfftoken.h: Comment out handling of base_font_name. + Rename `postscript' field to `embedded_postscript' + * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' + and `postscript'. + +2003-12-10 Detlef Würkner + + * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone + of the similar BDF function). + (pcf_service_bdf): Use it. + +2003-12-09 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES + only if a `post' table is present. + +2003-12-09 George Williams + + * src/base/ftobjs.c (load_mac_face): Recent versions of Linux + support Mac's HFS+ file system, thus enable code to read /rsrc on + non-Macintosh platforms also. + +2003-12-08 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_TableRec): Change type + of `lengths' to FT_PtrDist. + (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. + * include/freetype/internal/t1types.h (T1_FontRec): Change type + of `subrs_len' and `charstrings_len' to FT_PtrDist. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' + variable with better solution. + (IsMacResource): Remove unused variable `map_len'. + Replace `junk' variable with better solution. + (FT_Open_Face) [!FT_MACINTOSH]: Add conditional + FT_CONFIG_OPTION_MAC_FONTS. + +2003-12-08 Wolfgang Domröse + + * src/autohint/ahhint.c (ah_hinter_hint_edges, + ah_hinter_align_strong_points): Add some casts. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type + of `pos' to FT_Long. + + * src/base/ftobjs.c (Mac_Read_POST_Resource, + Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. + + * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. + +2003-12-07 Werner Lemberg + + * docs/raster.txt: New file, taken from FreeType 1 and completely + revised. + +2003-12-04 Masatake YAMATO + + * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for + t1_interface. t1_interface is used. + +2003-11-27 David Turner + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of + 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are + the scaling values for outline units, not for metric units. + +2003-11-25 Werner Lemberg + + * src/base/ftcalc.c, include/freetype/internal/ftcalc.h + (FT_MulDiv_No_Round): Surround code with `#ifdef + TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. + +2003-11-23 Werner Lemberg + + * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and + 64 bit version). + * include/freetype/internal/ftcalc.h: Updated. + + * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. + (TT_INT64): Removed. + (DO_DIV): Use TT_MULDIV_NO_ROUND. + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use + metrics->x_scale and metrics->y_scale. + +2003-11-22 Rogier van Dalen + + * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. + (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New + functions. Similar to Direct_Move, Direct_Move_X, and + Direct_Move_Y but without touching. + (Compute_Funcs): Use new functions. + + (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, + Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, + Round_Super_45): Fix rounding of value zero. + + (DO_DIV): Don't use TT_MULDIV. + + (Ins_SHC): This instruction actually touches the points. + (Ins_MSIRP): Fix undocumented behaviour. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. + +2003-11-22 Werner Lemberg + + * docs/VERSION.DLL, docs/CHANGES: Updated. + + * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and + metrics->y_scale really precise. + + (FT_Load_Glyph): Update computation of linearHoriAdvance and + linearVertAdvance. + + * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. + +2003-11-22 David Turner + + * src/autofit/*: More updates. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + * builds/unix/configure.ac (version_info): Set to 9:6:3. + * README: Updated. + +2003-11-13 John A. Boyd Jr. + + * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c + (pcf_interpret_style): Replace spaces with dashes in properties + SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. + +2003-11-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-11-11 John A. Boyd Jr. + + Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF + fonts. + + * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. + (BDF_Face_Init): Don't handle style properties but call + bdf_interpret_style. + + * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. + (pcf_load_font): Don't handle style properties but call + pcf_interpret_style. + +2003-11-07 Werner Lemberg + + + * Version 2.1.7 released. + ========================= + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/ft2unix.h: Fix comments. + + * builds/unix/ftconfig.in: Synchronized with ANSI version. + Use `#undef' in templates as recommended in the autoconf + documentation. + Since real `#undef' lines don't survive during configuration, use + `/undef' instead; the postprocessing facility of the + AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. + + * builds/unix/install.mk (install): Install Unix version of + `ftconfig.h'. + + * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro + to include the correct `ftconfig.h' file. + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. + (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. + + * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. + + * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of + AC_CONFIG_HEADER to create ftconfig.h, and use second argument + to replace `/undef' with `#undef'. + Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. + Use AS_HELP_STRING in AC_ARG_WITH. + Update syntax to autoconf 2.59. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.7.8. + * builds/unix/configure: Regenerated with autoconf 2.59. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/vms/ftconfig.h: Synchronized with ANSI version. + + * docs/CUSTOMIZE: Fix documentation error. + * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. + + * builds/freetype.mk (refdoc): Updated --title. + +2003-11-07 David Turner + + + * Version 2.1.6 released. + ========================= + + + * install: Removed. Obsolete. + +2003-11-04 Werner Lemberg + + * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. + (sfnt_service_sfnt_table): New service. + (sfnt_services): Updated. + + * docs/license.txt: Reworded. + +2003-11-03 Werner Lemberg + + * include/freetype/*: Add a guard to all public header files which + load FT_FREETYPE_H to reject freetype.h from FreeType 1. + +2003-11-02 Patrick Welche + + * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect + first argument of AC_DEFUN with brackets to avoid possible + expansion. + +2003-11-02 Werner Lemberg + + * include/freetype/cache/ftcglyph.h: Don't include stddef.h. + + * include/freetype/freetype.h: Fix check for ft2build.h. + +2003-11-01 Werner Lemberg + + * include/freetype/freetype.h: Check that ft2build.h has been + loaded first. + + * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied + patch. + +2003-10-31 Detlef Würkner + + * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): + Fix parameter order in calls to FT_FACE_FIND_SERVICE. + +2003-10-31 Werner Lemberg + + * include/freetype/internal/ftserv.h + (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. + + * src/type42/t42drivr.c (t42_services): Updated. + +2003-10-29 David Turner + + * include/freetype/internal/bdftypes.h: Removed. Obsolete. + * src/base/ftbdf.c: Updated. + + * include/freetype/internal/cfftypes.h: Moved to... + * src/cff/cfftypes.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/t42types.h: Moved to... + * src/type42/t42types.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. + + * include/freetype/internal/services/svpsname.h: Renamed to... + * include/freetype/internal/services/svpscmap.h: This. + Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and + `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. + + * include/freetype/internal/services/svpsinfo.h: New file, providing + PostScript info service. + + * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, + FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and + svpsinfo.h. + * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, + FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. + + * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and + FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and + FT_SERVICE_POSTSCRIPT_INFO_H. + (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new + POSTSCRIPT_INFO service. + + * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cff_ps_has_glyph_names): New function. + (cff_service_ps_info): New service. + (cff_services): Updated. + + * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't + include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. + + * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cid_ps_get_font_info): New function. + (cid_service_ps_info): New service. + (cid_services): Updated. + + * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. + (t1_service_ps_info): New service. + (t1_services): Updated. + + * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. + (t42_service_ps_info): New service. + + * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H + but t42types.h directly. + + * src/psnames/psmodule.c (psnames_interface, psnames_services): + Renamed to... + (pscmaps_interface, pscmaps_services): This. + Updated all users. + + + * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. + +2003-10-22 Werner Lemberg + + * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' + is real. + + * src/type42/t42parse.c (t42_parse_encoding): Improve boundary + checking while parsing. + + * docs/CHANGES: Updated. + +2003-10-21 Josselin Mouette + + * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' + and `stroke_width' aren't pointers. + + * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c + (T1_Face_Done): Don't free `paint_type' and `stroke_width'. + +2003-10-20 Graham Asher + + * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. + +2003-10-19 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from + 2003-08-18 introduced a severe bug (FT_Render_Glyph was called + twice under some circumstances, causing strange results). This + is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. + + * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. + * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. + * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. + +2003-10-16 Werner Lemberg + + Completely revised Type 42 parser. It now handles both fonts + produced with ttftot42 (tested version 0.3.1) and + TrueTypeToType42.ps (tested version May 2001; it is necessary to + fix the broken header comment to be `%!PS-TrueTypeFont...'). + + * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth + parameter to `FT_UInt'. + * src/type42/t42objs.h: Updated. + + * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' + to FT_Bool. + (T42_Loader): Change type of `num_chars' and `num_glyphs' to + FT_UInt. + Add `swap_table' element. + * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, + T1_ToCoordArray, T1_ToTokenArray): Removed. + (T1_ToBytes): New macro. + (t42_is_alpha, t42_hexval): Removed. + (t42_is_space): Handle `\0'. + (t42_parse_encoding): Updated to use new PostScript parser routines + from psaux. + Handle `/Encoding [ ... ]' also. + (T42_Load_Status): New enumeration. + (t42_parse_sfnts): Updated to use new PostScript parser routines + from psaux. + (t42_parse_charstrings): Updated to use new PostScript parser + routines from psaux. + Handle `/CharStrings << ... >>' also. + Don't expect that /.notdef is the first element in dictionary. Copy + code from type1 module to handle this. + (t42_parse_dict): Updated to use new PostScript parser routines + from psaux. + Remove code for synthetic fonts (which can't occur in Type 42 + fonts). + (t42_loader_done): Release `swap_table'. + + * src/psaux/psobjs.c (skip_string): Increase `cur' properly. + + * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' + faster. + +2003-10-15 Graham Asher + + * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c + (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, + _num_bdf_properties), src/gzip/infutil.c (inflate_mask), + src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), + src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c + (inflate_trees_fixed): Decorate with more `const' to avoid + writable global variables which are disallowed on ARM. + +2003-10-08 Werner Lemberg + + * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove + code specially for synthetic fonts; this is handled elsewhere. + (parse_encoding): Remove code specially for synthetic fonts; this is + handled elsewhere. + Improve boundary checking while parsing. + (parse_dict): Improve boundary checking while parsing. + Use ft_memcmp to simplify code. + +2003-10-07 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic + fonts properly. + (parse_charstrings): Copy correct number of characters into + `name_table'. + +2003-10-06 Werner Lemberg + + Heavy modification of the PS parser to handle comments and strings + correctly. This doesn't slow down the loading of PS fonts + significantly since charstrings aren't affected. + + * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... + (ft_isxdigit): This. Updated all callers. + (ft_isdigit): New alias to `isdigit'. + + * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed + `skip_alpha' to `skip_PS_token'. + Add parameter to `to_bytes' and change some argument types. + + * src/psaux/psauxmod.c (ps_parser_funcs): Updated. + * src/psaux/psobjs.c (ft_char_table): New array to map character + codes (ASCII and EBCDIC) of digits to numbers. + (OP): New auxiliary macro holding either `>=' or `<' depending on + the character encoding. + (skip_comment): New function. + (skip_spaces): Use it. + (skip_alpha): Removed. + (skip_literal_string, skip_string): New functions. + (ps_parser_skip_PS_token): New function. This is a better + replacement of... + (ps_parser_skip_alpha): Removed. + (ps_parser_to_token, ps_parser_to_token_array): Updated. + (T1Radix): Rewritten, using `ft_char_table'. + (t1_toint): Renamed to... + (ps_toint): This. Update all callers. + Use `ft_char_table'. + (ps_tobytes): Add parameter to handle delimiters and change some + argument types. + Use `ft_char_table'. + (t1_tofixed): Renamed to... + (ps_tofixed): This. Update all callers. + Use `ft_char_table'. + (t1_tocoordarray): Renamed and updated to... + (ps_tocoordarray): This. Update all callers. + (t1_tofixedarray): Renamed and updated to... + (ps_tofixedarray): This. Update all callers. + (t1_tobool): Renamed to... + (ps_tobool): This. Update all callers. + (ps_parser_load_field): Updated. + (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' + everywhere. + (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, + ps_parser_to_fixed_array): Skip spaces. Updated. + (ps_parser_to_bytes): Add parameter to handle delimiters and change + some argument types. Updated. + * src/psaux/psobjs.h: Updated. + + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' + token was really found. + * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed + to... + (cid_parser_skip_PS_token): This. + + * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean + fields. + (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. + * src/type1/t1parse.c (hexa_value): Removed. + (T1_Get_Private_Dict): Use `ft_isxdigit' and + `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal + encoding. + After decrypting, replace the four random bytes at the beginning + with whitespace. + * src/type1/t1load.c (t1_allocate_blend): Use proper error values. + (parser_blend_design_positions, parse_blend_design_map, + parse_weight_vector): Updated. + (is_space): Handle `\f' also. + (is_name_char): Removed. + (read_binary_data): Updated. + (parse_encoding): Use `ft_isdigit'. + Updated. + (parse_subrs): Updated. + (TABLE_EXTEND): New macro. + (parse_charstrings): Updated. + Provide a workaround for buggy fonts which have more entries in the + /CharStrings dictionary then expected; the function now adds some + slots and skips entries which still exceed the new limit. + (parse_dict): Updated. + Terminate on the token `closefile'. + + * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. Updated all callers. + (t42_parse_encoding): Use `ft_isdigit'. + + + * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if + success. + +2003-10-05 Werner Lemberg + + * include/freetype/ftmodule.h: Renamed to... + * include/freetype/ftmodapi.h: This to avoid duplicate file names. + * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. + +2003-10-04 Werner Lemberg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. + +2003-10-02 Markus F.X.J. Oberhumer + + * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' + has four bytes, not two. + Fix all users. + (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. + +2003-10-01 David Turner + + * src/autofit/*: Adding first source files of the new multi-script + `auto-fitter'. + + * include/freetype/ftoutln.h (FT_Orientation): New enumeration. + (FT_Outline_Get_Orientation): New declaration. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. + (ft_orientation_extremum_compute): New auxiliary function. + (FT_Outline_Get_Orientation): New function to compute the fill + orientation of a given glyph outline. + + * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed + trivial bug which could crash the font engine when a cached service + pointer was retrieved. + +2003-09-30 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is + found. + + * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, + IS_T1_SPACE): Removed. + (PFB_Tag): Removed. + (read_pfb_tag): Don't use PFB_Tag. + + * src/type42/t42parse.c (t42_is_space): Handle `\f' also. + (t42_parse_encoding): Handle synthetic fonts. + +2003-09-29 Werner Lemberg + + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. + * src/truetype/ttobjs.c: Don't include + FT_SERVICE_POSTSCRIPT_NAMES_H. + +2003-09-29 David Turner + + Added new service to handle glyph name dictionaries, replacing the + old internal header named `psnames.h' by `services/svpsname.h'. + Note that this is different from `services/svpostnm.h' which only + handles the retrieval of PostScript font names for a given face. + (Should we merge these two services into a single header?) + + * include/freetype/internal/psnames.h: Removed. Most of its + contents is moved to... + * include/freetype/internal/services/svpsname.h: New file. + + * include/freetype/internal/services/svpostnm.h + (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... + (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. + (PsName): Service named changed to... + (PsFontName): This. + Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and + `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. + + * include/freetype/internal/internal.h + (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. + * include/freetype/internal/psaux.h: Include + FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_DecoderRec): Updated type of `psnames'. + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + Include FT_INTERNAL_OBJECTS_H. + * include/freetype/internal/t42types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed + order of parameters. All callers updated. + (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service + globally, checking all modules. + (FT_ServiceCacheRec): Updated. + (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing + `svpsname.h'. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c + (ft_module_get_service): New function. + + * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES + service. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. + * src/cff/cffload.c, src/cff/cffload.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_index_get_sid_string): Updated. + * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_face_init): Use new POSTSCRIPT_NAMES service. + * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cid_face_init): Use new POSTSCRIPT_NAMES service. + * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use + new POSTSCRIPT_NAMES service. + * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, + t1_decode_init): Use new POSTSCRIPT_NAMES service. + * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psnames/psmodule.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (ps_build_unicode_table): Renamed to... + (ps_unicodes_init): This. + (ps_lookup_unicode): Renamed to... + (ps_unicodes_char_index): This. + (ps_next_unicode): Renamed to... + (ps_unicodes_char_next): This. + (psnames_interface): Updated. + (psnames_services): New services list. + (psnames_get_service): New function. + (psnames_module_class): Updated. + + * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (sfnt_init_face): Use new POSTSCRIPT_NAMES service. + * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (tt_face_get_ps_name): Updated. + + * src/truetype/ttobjs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/type1/t1driver.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + * src/type1/t1objs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_Face_Init): Use new POSTSCRIPT_NAMES service. + + * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... + (t42_get_ps_font_name): This. + (t42_service_ps_name): Renamed to... + (t42_service_ps_font_name): This. + (t42_services): Updated. + * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES + service. + * src/type42/t42objs.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + + * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before + testing its validity. Reported by Henry Maddocks + . + +2003-09-21 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): + Fix compilation warning (s/pptr/Pptr/). + + * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, + FT_INTERNAL_FNT_TYPES_H): Removed. + +2003-09-21 David Turner + + Migrating the PFR and WINFNT drivers to the new service-based + internal API. + + * include/freetype/internal/fnttypes.h: Removed. Most of its data + are moved to winfnt.h and... + * include/freetype/internal/services/svwinfnt.h: New file. + + * include/freetype/internal/pfr.h: Removed. Most of its data are + moved to... + * include/freetype/internal/services/svpfr.h: New file. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing + pointer type argument. + Updated all callers. + Update macro names of services header files. + + * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. + + * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of + FT_INTERNAL_PFR_H. + (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, + FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. + + * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of + FT_INTERNAL_FNT_TYPES_H. + (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. + + * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. + (pfr_service_bdf): Updated. + (pfr_services): New services list. + (pfr_get_service): New function. + (pfr_driver_class): Updated. + + * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. + (winfnt_get_header, winfnt_get_service): New functions. + (winfnt_service_rec): New structure providing WINFNT services. + (winfnt_services): New services list. + (winfnt_driver_class): Updated. + * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. + + * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. + + * src/type1/t1driver.c (t1_service_ps_name): Fix typo. + + * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, + src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, + src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler + warnings. + +2003-09-19 David Bevan + + * src/type1/t1parse.c (pfb_tag_fields): Removed. + (read_pfb_tag): Fix code so that it doesn't fail on end-of-file + indicator (0x8003). + * docs/CHANGES: Updated. + +2003-09-16 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. + Ugly, I know, but this is needed for compilation with C++ -- + maybe someone knows a better solution? + Updated all callers. + + * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove + C++ compiler warnings. + + * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): + Fix order of arguments passed to FT_FACE_FIND_SERVICE. + +2003-09-15 Werner Lemberg + + Avoid header files with identical names. + + * include/freetype/internal/services/bdf.h: Renamed to... + * include/freetype/internal/services/svbdf.h: This. + Add copyright notice. + * include/freetype/internal/services/glyfdict.h: Renamed to... + * include/freetype/internal/services/svgldict.h: This. + Add copyright notice. + * include/freetype/internal/services/multmast.h: Renamed to... + * include/freetype/internal/services/svmm.h: This. + Add copyright notice. + Add FT_BEGIN_HEADER and FT_END_HEADER. + * include/freetype/internal/services/sfnt.h: Renamed to... + * include/freetype/internal/services/svsfnt.h: This. + Add copyright notice. + * include/freetype/internal/services/postname.h: Renamed to... + * include/freetype/internal/services/svpostnm.h: This. + Add copyright notice. + * include/freetype/internal/services/xf86name.h: Renamed to... + * include/freetype/internal/services/svxf86nm.h: This. + Add copyright notice. + + * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and + FT_END_HEADER. + Add copyright notice. + Update macro names of services header files. + + * builds/freetype.mk (SERVICES_DIR): New variable. + (BASE_H): Add services header files. + +2003-09-11 Werner Lemberg + + * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. + + * src/cff/cffdrivr.c: Don't load headers twice. + + * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. + * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. + + * src/cff/cffcmap.c: Include `cfferrs.h'. + * src/pfr/pfrdrivr.c: Include `pfrerror.h'. + * src/sfnt/sfdriver.c: Include `sferrors.h'. + * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. + +2003-09-11 David Turner + + Introducing the concept of `module services'. This is the first + step towards a massive simplification of the engine's internals, in + order to get rid of various numbers of hacks. + + Note that these changes will break source & binary compatibility for + authors of external font drivers. + + * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, + FT_DUMMY_STMNT): New macros. + + * include/freetype/internal/ftserv.h: New file, containing the new + structures and macros to provide `services'. + + * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, + FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): + Removed, obsolete. + (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. + + * include/freetype/internal/services/bdf.h, + include/freetype/internal/services/glyfdict.h, + include/freetype/internal/services/postname.h, + include/freetype/internal/services/xf86name.h: New files. + + * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, + FT_Set_MM_Blend_Func): Function pointers moved (in modified form) + to... + * include/freetype/internal/services/multmast.h: New file. + + * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' + is now of type `FT_Module_Requester'. + (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers + moved (in modified form) to... + * include/freetype/internal/services/sfnt.h: New file. + + * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function + pointer moved (in modified form) to `services/sfnt.h'. + + * include/freetype/ftmodule.h (FT_Module_Interface): Make it a + a typedef to `FT_Pointer'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add + `postscript_name'. + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `postscript_name'. + Add `services' element. + (FT_LibraryRec): Remove `meta_class'. + + * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. + (test_font_type): Removed. + (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services + provided in `FT_SERVICE_ID_BDF'. + + * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. + (ft_face_get_mm_service): New auxiliary function to get services + from `FT_SERVICE_ID_MULTI_MASTERS'. + (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, + FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. + + * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (ft_service_list_lookup): New function to get a specific service. + (destroy_face): Updated. + (Mac_Read_POST_Resource): Simplify some code. + (IsMacResource): Fix warnings. + (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in + `FT_SERVICE_ID_GLYPH_DICT'. + (FT_Get_Postscript_Name): Use service provided in + `FT_SERVICE_ID_POSTSCRIPT_NAME'. + (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in + `FT_SERVICE_ID_SFNT_TABLE'. + + * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. + (FT_Get_X11_Font_Format): Use service provided in + `FT_SERVICE_ID_XF86_NAME'. + + * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (bdf_get_charset_id): New function. + (bdf_service_bdf): New structure providing BDF services. + (bdf_services): New services list. + (bdf_driver_requester): Use `ft_service_list_lookup'. + + * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (cff_service_glyph_dict): New structure providing CFF services. + (cff_services): New services list. + (cff_get_interface): Use `ft_service_list_lookup'. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_XFREE86_NAME_H. + (cid_service_ps_name): New structure providing CID services. + (cid_services): New services list. + (cid_get_interface): Use `ft_service_list_lookup'. + + * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (pcf_service_bdf): New structure providing PCF services. + (pcf_services): New services list. + (pcf_driver_requester): Use `ft_service_list_lookup'. + + * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and + FT_SERVICE_POSTSCRIPT_NAME_H. + (get_sfnt_glyph_name): Renamed to... + (sfnt_get_glyph_name): This. + (get_sfnt_postscript_name): Renamed to... + (sfnt_get_ps_name): This. + Updated. + (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures + providing services. + (sfnt_services): New services list. + (sfnt_get_interface): Use `ft_service_list_lookup'. + + * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. + (tt_services): New services list. + (tt_get_interface): Use `ft_service_list_lookup'. + + * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, + FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and + FT_SERVICE_POSTSCRIPT_NAME_H. + (t1_service_glyph_dict, t1_service_ps_name, + t1_service_multi_masters): New structures providing Type 1 services. + (t1_services): New services list. + (Get_Interface): Use `ft_service_list_lookup'. + + * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, + FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. + (t42_service_glyph_dict, t42_service_ps_name): New strucures + providing Type 42 services. + (t42_services): New services list. + (T42_Get_Interface): Use `ft_service_list_lookup'. + + + * README, docs/CHANGES: Updating version numbers for 2.1.6, and + removing obsolete warnings in the documentation. + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + * builds/unix/configure.ac (version_info): Set to 9:5:3. + * builds/unix/configure: Regenerated. + + * include/freetype/internal/ftcore.h, + include/freetype/internal/ftexcept.h, + include/freetype/internal/fthash.h, + include/freetype/internal/ftobject.h: Removed. Obsolete. + +2003-09-09 David Turner + + Fixing PFR kerning support. The tables within the font file contain + (charcode,charcode) kerning pairs, we need to convert them to + (gindex,gindex). + + * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. + * src/pfr/prfload.c: Remove dead code. + (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): + New functions. + (pfr_phy_font_done): Free `kern_pairs'. + (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. + * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. + (PFR_KernPairRec): Make `kerning' an FT_Int. + (PFR_PhyFontRec): New element `kern_pairs'. + (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and + PFR_KERN_2BYTE_ADJ were erroneously reversed. + + * include/freetype/ftoption.h: Commenting out the macro + TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + +2003-09-02 David Turner + + + * Version 2.1.5 released. + ========================= + + +2003-08-31 Manish Singh + + * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but + FT_MEM_MOVE. + +2003-08-30 Werner Lemberg + + * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, + FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New + enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except + FT_ENCODING_MS_SYMBOL are now deprecated. + Updated all users. + * docs/CHANGES: Document it. + +2003-08-27 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters + for spacing. + +2003-08-27 Mike FABIAN + + * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init): Accept lowercase characters for slant and weight. + +2003-08-18 David Turner + + * include/freetype/config/ftoption.h: Disabling TrueType bytecode + interpreter until the UNPATENTED_HINTING works as advertised. + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for + setting `load_flags'. + + * Jamfile: Adding the `refdoc' target to the Jamfile in order to + build the API Reference in `docs/reference' automatically. + + * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, + src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of + `italic_angle', `underline_position', and `underline_thickness' to + their previous values (i.e., long, short, and ushort) in order to + avoid breaking binary compatibility. + + * include/freetype/ttunpat.h: Fixing documentation comment. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced + with... + (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. + (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. + + * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. + (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with + `FT_Set_Debug_Hook' to get the same effect as the removed + TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. + + * src/truetype/ttobjs.c (tt_face_init): Use + `FT_DEBUG_HOOK_UNPATENTED_HINTING'. + +2003-08-06 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix + previous change. + +2003-08-05 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply + font matrix to advance width also. + * docs/CHANGES: Updated. + +2003-07-26 Werner Lemberg + + * builds/unix/configure.ac (version_info): Set to 9:4:3. + * builds/unix/configure: Updated. + * docs/CHANGES, docs/VERSION.DLL: Updated. + + * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 + also breaks binary compatibility. Reintroduce an unsigned integer + at the old position of `flags' called `reserved'. + +2003-07-25 Werner Lemberg + + Make API reference valid HTML 4.01 transitional. + + * src/tools/docmaker/tohtml.py (html_header_1): Add doctype + and charset. + (html_header_2): Fix style elements and add some more. + Fix syntax. + (block_header, block_footer, description_header, description_footer, + marker_header, marker_footer, source_header, source_footer, + chapter_header): Don't use
    ...
    but `align=center' + table attribute. + (chapter_inter, chapter_footer): Add
  • and use special