Added lean heighfield to store minimal, easy to compress representation of the heightfield. Added temporary obstacle demo.
This commit is contained in:
parent
ebd5358010
commit
2f47c29336
@ -29,6 +29,8 @@ void duDebugDrawCompactHeightfieldSolid(struct duDebugDraw* dd, const struct rcC
|
||||
void duDebugDrawCompactHeightfieldRegions(struct duDebugDraw* dd, const struct rcCompactHeightfield& chf);
|
||||
void duDebugDrawCompactHeightfieldDistance(struct duDebugDraw* dd, const struct rcCompactHeightfield& chf);
|
||||
|
||||
void duDebugDrawLeanHeightfieldSolid(duDebugDraw* dd, const struct rcLeanHeightfield& lhf);
|
||||
|
||||
void duDebugDrawRegionConnections(struct duDebugDraw* dd, const struct rcContourSet& cset, const float alpha = 1.0f);
|
||||
void duDebugDrawRawContours(struct duDebugDraw* dd, const struct rcContourSet& cset, const float alpha = 1.0f);
|
||||
void duDebugDrawContours(struct duDebugDraw* dd, const struct rcContourSet& cset, const float alpha = 1.0f);
|
||||
|
@ -268,6 +268,61 @@ void duDebugDrawCompactHeightfieldDistance(duDebugDraw* dd, const rcCompactHeigh
|
||||
dd->end();
|
||||
}
|
||||
|
||||
void duDebugDrawLeanHeightfieldSolid(duDebugDraw* dd, const rcLeanHeightfield& lhf)
|
||||
{
|
||||
if (!dd) return;
|
||||
|
||||
const float cs = lhf.cs;
|
||||
const float ch = lhf.ch;
|
||||
|
||||
const int headerSize = rcAlign4(sizeof(rcLeanHeightfield));
|
||||
const int countsSize = rcAlign4(sizeof(unsigned char)*lhf.width*lhf.height);
|
||||
const int floorsSize = rcAlign4(sizeof(unsigned short)*lhf.spanCount);
|
||||
const unsigned char* data = (const unsigned char*)&lhf;
|
||||
const unsigned char* counts = (const unsigned char*)&data[headerSize];
|
||||
const unsigned short* floors = (const unsigned short*)&data[headerSize+countsSize];
|
||||
const unsigned char* areas = (const unsigned char*)&data[headerSize+countsSize+floorsSize];
|
||||
|
||||
|
||||
dd->begin(DU_DRAW_QUADS);
|
||||
|
||||
unsigned short mask = (1<<RC_SPAN_HEIGHT_BITS)-1;
|
||||
|
||||
int idx = 0;
|
||||
|
||||
for (int y = 0; y < lhf.height; ++y)
|
||||
{
|
||||
for (int x = 0; x < lhf.width; ++x)
|
||||
{
|
||||
const float fx = lhf.bmin[0] + x*cs;
|
||||
const float fz = lhf.bmin[2] + y*cs;
|
||||
const int count = counts[x+y*lhf.width];
|
||||
|
||||
for (int i = idx, ni = idx+count; i < ni; ++i)
|
||||
{
|
||||
const int y = floors[i] & mask;
|
||||
unsigned char area = areas[i];
|
||||
|
||||
unsigned int color;
|
||||
if (area == RC_WALKABLE_AREA)
|
||||
color = duRGBA(0,192,255,64);
|
||||
else if (area == RC_NULL_AREA)
|
||||
color = duRGBA(0,0,0,64);
|
||||
else
|
||||
color = duIntToCol(area, 255);
|
||||
|
||||
const float fy = lhf.bmin[1] + (y+1)*ch;
|
||||
dd->vertex(fx, fy, fz, color);
|
||||
dd->vertex(fx, fy, fz+cs, color);
|
||||
dd->vertex(fx+cs, fy, fz+cs, color);
|
||||
dd->vertex(fx+cs, fy, fz, color);
|
||||
}
|
||||
idx += count;
|
||||
}
|
||||
}
|
||||
dd->end();
|
||||
}
|
||||
|
||||
static void getContourCenter(const rcContour* cont, const float* orig, float cs, float ch, float* center)
|
||||
{
|
||||
center[0] = 0;
|
||||
|
@ -412,6 +412,7 @@ void duLogBuildTimes(rcContext& ctx, const int totalTimeUsec)
|
||||
|
||||
ctx.log(RC_LOG_PROGRESS, "Build Times");
|
||||
logLine(ctx, RC_TIMER_RASTERIZE_TRIANGLES, "- Rasterize", pc);
|
||||
logLine(ctx, RC_TIMER_BUILD_LEANHEIGHTFIELD, "- Build Lean", pc);
|
||||
logLine(ctx, RC_TIMER_BUILD_COMPACTHEIGHTFIELD, "- Build Compact", pc);
|
||||
logLine(ctx, RC_TIMER_FILTER_BORDER, "- Filter Border", pc);
|
||||
logLine(ctx, RC_TIMER_FILTER_WALKABLE, "- Filter Walkable", pc);
|
||||
@ -419,6 +420,7 @@ void duLogBuildTimes(rcContext& ctx, const int totalTimeUsec)
|
||||
logLine(ctx, RC_TIMER_MEDIAN_AREA, "- Median Area", pc);
|
||||
logLine(ctx, RC_TIMER_MARK_BOX_AREA, "- Mark Box Area", pc);
|
||||
logLine(ctx, RC_TIMER_MARK_CONVEXPOLY_AREA, "- Mark Convex Area", pc);
|
||||
logLine(ctx, RC_TIMER_MARK_CYLINDER_AREA, "- Mark Cylinder Area", pc);
|
||||
logLine(ctx, RC_TIMER_BUILD_DISTANCEFIELD, "- Build Disntace Field", pc);
|
||||
logLine(ctx, RC_TIMER_BUILD_DISTANCEFIELD_DIST, " - Distance", pc);
|
||||
logLine(ctx, RC_TIMER_BUILD_DISTANCEFIELD_BLUR, " - Blur", pc);
|
||||
|
@ -34,6 +34,7 @@ enum rcTimerLabel
|
||||
RC_TIMER_TOTAL,
|
||||
RC_TIMER_TEMP,
|
||||
RC_TIMER_RASTERIZE_TRIANGLES,
|
||||
RC_TIMER_BUILD_LEANHEIGHTFIELD,
|
||||
RC_TIMER_BUILD_COMPACTHEIGHTFIELD,
|
||||
RC_TIMER_BUILD_CONTOURS,
|
||||
RC_TIMER_BUILD_CONTOURS_TRACE,
|
||||
@ -46,6 +47,7 @@ enum rcTimerLabel
|
||||
RC_TIMER_MERGE_POLYMESH,
|
||||
RC_TIMER_ERODE_AREA,
|
||||
RC_TIMER_MARK_BOX_AREA,
|
||||
RC_TIMER_MARK_CYLINDER_AREA,
|
||||
RC_TIMER_MARK_CONVEXPOLY_AREA,
|
||||
RC_TIMER_BUILD_DISTANCEFIELD,
|
||||
RC_TIMER_BUILD_DISTANCEFIELD_DIST,
|
||||
@ -195,6 +197,29 @@ rcCompactHeightfield* rcAllocCompactHeightfield();
|
||||
void rcFreeCompactHeightfield(rcCompactHeightfield* chf);
|
||||
|
||||
|
||||
// Lean heightfield stores minimal information to create rcCompactNeighfield
|
||||
// in one continuous chunk of memory. The header and data are both laid out
|
||||
// in the memory one after each other. The data is accessed as follows:
|
||||
// const int headerSize = rcAlign4(sizeof(rcLeanHeightfield));
|
||||
// const int countsSize = rcAlign4(sizeof(unsigned char)*lhf.width*lhf.height);
|
||||
// const int floorsSize = rcAlign4(sizeof(unsigned short)*lhf.spanCount);
|
||||
// const unsigned char* data = (const unsigned char*)&lhf;
|
||||
// const unsigned char* counts = (const unsigned char*)&data[headerSize];
|
||||
// const unsigned short* floors = (const unsigned short*)&data[headerSize+countsSize];
|
||||
// const unsigned char* areas = (const unsigned char*)&data[headerSize+countsSize+floorsSize];
|
||||
// This allows the heighfield to be read and written or compressed as one chunk, i.e.:
|
||||
// fwrite(lhf, lhf->size, 1, fp);
|
||||
// Use rcFree() to free the memory occupied by rcLeanHeightfield.
|
||||
struct rcLeanHeightfield
|
||||
{
|
||||
int width, height; // Width and height of the heightfield.
|
||||
int spanCount; // Number of spans in the heightfield.
|
||||
float bmin[3], bmax[3]; // Bounding box of the heightfield.
|
||||
float cs, ch; // Cell size and height.
|
||||
int size; // Memory required by the heighfield.
|
||||
};
|
||||
|
||||
|
||||
struct rcContour
|
||||
{
|
||||
int* verts; // Vertex coordinates, each vertex contains 4 components.
|
||||
@ -338,6 +363,7 @@ template<class T> inline T rcAbs(T a) { return a < 0 ? -a : a; }
|
||||
template<class T> inline T rcSqr(T a) { return a*a; }
|
||||
template<class T> inline T rcClamp(T v, T mn, T mx) { return v < mn ? mn : (v > mx ? mx : v); }
|
||||
float rcSqrt(float x);
|
||||
inline int rcAlign4(int x) { return (x+3) & ~3; }
|
||||
|
||||
// Common vector helper functions.
|
||||
inline void rcVcross(float* dest, const float* v1, const float* v2)
|
||||
@ -567,17 +593,33 @@ void rcFilterWalkableLowHeightSpans(rcContext* ctx, int walkableHeight, rcHeight
|
||||
// Returns number of spans.
|
||||
int rcGetHeightFieldSpanCount(rcContext* ctx, rcHeightfield& hf);
|
||||
|
||||
// Builds minimal representation of the heighfield.
|
||||
// Params:
|
||||
// hf - (in) heightfield to be compacted
|
||||
// chf - (out) lean heightfield representing the open space.
|
||||
// Returns pointer to the created lean heighfield.
|
||||
rcLeanHeightfield* rcBuildLeanHeightfield(rcContext* ctx, rcHeightfield& hf, const int walkableHeight);
|
||||
|
||||
// Builds compact representation of the heightfield.
|
||||
// Params:
|
||||
// walkableHeight - (in) minimum height where the agent can still walk
|
||||
// walkableClimb - (in) maximum height between grid cells the agent can climb
|
||||
// flags - (in) require flags for a cell to be included in the compact heightfield.
|
||||
// hf - (in) heightfield to be compacted
|
||||
// chf - (out) compact heightfield representing the open space.
|
||||
// Returns false if operation ran out of memory.
|
||||
bool rcBuildCompactHeightfield(rcContext* ctx, const int walkableHeight, const int walkableClimb,
|
||||
rcHeightfield& hf, rcCompactHeightfield& chf);
|
||||
|
||||
// Builds compact representation of the heightfield from lean data.
|
||||
// Params:
|
||||
// walkableHeight - (in) minimum height where the agent can still walk
|
||||
// walkableClimb - (in) maximum height between grid cells the agent can climb
|
||||
// lhf - (in) lean heightfield to be used as input
|
||||
// chf - (out) compact heightfield representing the open space.
|
||||
// Returns false if operation ran out of memory.
|
||||
bool rcBuildCompactHeightfield(rcContext* ctx, const int walkableHeight, const int walkableClimb,
|
||||
rcLeanHeightfield& lhf, rcCompactHeightfield& chf);
|
||||
|
||||
// Erodes walkable area.
|
||||
// Params:
|
||||
// radius - (in) radius of erosion (max 255).
|
||||
@ -610,6 +652,17 @@ void rcMarkConvexPolyArea(rcContext* ctx, const float* verts, const int nverts,
|
||||
const float hmin, const float hmax, unsigned char areaId,
|
||||
rcCompactHeightfield& chf);
|
||||
|
||||
// Marks the area of the cylinder into the area type of the compact heightfield.
|
||||
// Params:
|
||||
// pos - (in) center bottom location of hte cylinder.
|
||||
// r - (in) radius of the cylinder.
|
||||
// h - (in) height of the cylinder.
|
||||
// areaId - (in) area ID to mark.
|
||||
// chf - (in/out) compact heightfield to mark.
|
||||
void rcMarkCylinderArea(rcContext* ctx, const float* pos,
|
||||
const float r, const float h, unsigned char areaId,
|
||||
rcCompactHeightfield& chf);
|
||||
|
||||
// Builds distance field and stores it into the combat heightfield.
|
||||
// Params:
|
||||
// chf - (in/out) compact heightfield representing the open space.
|
||||
@ -676,7 +729,7 @@ bool rcMergePolyMeshes(rcContext* ctx, rcPolyMesh** meshes, const int nmeshes, r
|
||||
// chf - (in) compact height field, used to query height for new vertices.
|
||||
// sampleDist - (in) spacing between height samples used to generate more detail into mesh.
|
||||
// sampleMaxError - (in) maximum allowed distance between simplified detail mesh and height sample.
|
||||
// pmdtl - (out) detail mesh.
|
||||
// dmesh - (out) detail mesh.
|
||||
// Returns false if operation ran out of memory.
|
||||
bool rcBuildPolyMeshDetail(rcContext* ctx, const rcPolyMesh& mesh, const rcCompactHeightfield& chf,
|
||||
const float sampleDist, const float sampleMaxError,
|
||||
|
@ -396,6 +396,237 @@ bool rcBuildCompactHeightfield(rcContext* ctx, const int walkableHeight, const i
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
rcLeanHeightfield* rcBuildLeanHeightfield(rcContext* ctx, rcHeightfield& hf, const int walkableHeight)
|
||||
{
|
||||
rcAssert(ctx);
|
||||
|
||||
ctx->startTimer(RC_TIMER_BUILD_LEANHEIGHTFIELD);
|
||||
|
||||
const int w = hf.width;
|
||||
const int h = hf.height;
|
||||
const int spanCount = rcGetHeightFieldSpanCount(ctx, hf);
|
||||
|
||||
const int headerSize = rcAlign4(sizeof(rcLeanHeightfield));
|
||||
const int countsSize = rcAlign4(sizeof(unsigned char)*w*h);
|
||||
const int floorsSize = rcAlign4(sizeof(unsigned short)*spanCount);
|
||||
const int areasSize = rcAlign4(sizeof(unsigned char)*spanCount);
|
||||
const int dataSize = headerSize + countsSize + floorsSize + areasSize;
|
||||
|
||||
unsigned char* data = (unsigned char*)rcAlloc(dataSize, RC_ALLOC_PERM);
|
||||
if (!data)
|
||||
{
|
||||
ctx->log(RC_LOG_ERROR, "rcBuildLeanHeightfield: Out of memory (%d)", dataSize);
|
||||
return 0;
|
||||
}
|
||||
|
||||
rcLeanHeightfield* lhf = (rcLeanHeightfield*)&data[0];
|
||||
unsigned char* counts = (unsigned char*)&data[headerSize];
|
||||
unsigned short* floors = (unsigned short*)&data[headerSize+countsSize];
|
||||
unsigned char* areas = (unsigned char*)&data[headerSize+countsSize+floorsSize];
|
||||
|
||||
// Fill in header.
|
||||
lhf->width = w;
|
||||
lhf->height = h;
|
||||
lhf->spanCount = spanCount;
|
||||
rcVcopy(lhf->bmin, hf.bmin);
|
||||
rcVcopy(lhf->bmax, hf.bmax);
|
||||
lhf->cs = hf.cs;
|
||||
lhf->ch = hf.ch;
|
||||
lhf->size = dataSize;
|
||||
|
||||
memset(counts, 0, w*h);
|
||||
memset(floors, 0, sizeof(unsigned short)*spanCount);
|
||||
memset(areas, RC_NULL_AREA, sizeof(unsigned char)*spanCount);
|
||||
|
||||
const int MAX_HEIGHT = 0xffff;
|
||||
const int MAX_Y = (1<<RC_SPAN_HEIGHT_BITS)-1;
|
||||
const int MAX_H = (1<<(16-RC_SPAN_HEIGHT_BITS))-1;
|
||||
|
||||
// Fill in cells and spans.
|
||||
int idx = 0;
|
||||
for (int y = 0; y < h; ++y)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const rcSpan* s = hf.spans[x+y*w];
|
||||
|
||||
unsigned char& count = counts[x+y*w];
|
||||
count = 0;
|
||||
|
||||
while (s)
|
||||
{
|
||||
if (s->area != RC_NULL_AREA)
|
||||
{
|
||||
const int bot = (int)s->smax;
|
||||
const int top = s->next ? (int)s->next->smin : MAX_HEIGHT;
|
||||
const int space = top - bot;
|
||||
unsigned short y = (unsigned short)rcClamp(bot, 0, MAX_Y);
|
||||
// TODO: Make sure 'h' can encode at least walkableClimb worth of values.
|
||||
unsigned short h = 0; // Height stores the space above the walkable height.
|
||||
if (space >= walkableHeight)
|
||||
h = (unsigned short)rcClamp(1+(space - walkableHeight)/2, 0, MAX_H);
|
||||
|
||||
floors[idx] = y | (h << RC_SPAN_HEIGHT_BITS);
|
||||
areas[idx] = s->area;
|
||||
idx++;
|
||||
count++;
|
||||
}
|
||||
s = s->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ctx->stopTimer(RC_TIMER_BUILD_LEANHEIGHTFIELD);
|
||||
|
||||
return lhf;
|
||||
}
|
||||
|
||||
bool rcBuildCompactHeightfield(rcContext* ctx, const int walkableHeight, const int walkableClimb,
|
||||
rcLeanHeightfield& lhf, rcCompactHeightfield& chf)
|
||||
{
|
||||
rcAssert(ctx);
|
||||
|
||||
ctx->startTimer(RC_TIMER_BUILD_COMPACTHEIGHTFIELD);
|
||||
|
||||
const int w = lhf.width;
|
||||
const int h = lhf.height;
|
||||
const int spanCount = lhf.spanCount;
|
||||
|
||||
// Fill in header.
|
||||
chf.width = w;
|
||||
chf.height = h;
|
||||
chf.spanCount = spanCount;
|
||||
chf.walkableHeight = walkableHeight;
|
||||
chf.walkableClimb = walkableClimb;
|
||||
chf.maxRegions = 0;
|
||||
rcVcopy(chf.bmin, lhf.bmin);
|
||||
rcVcopy(chf.bmax, lhf.bmax);
|
||||
chf.bmax[1] += walkableHeight*lhf.ch;
|
||||
chf.cs = lhf.cs;
|
||||
chf.ch = lhf.ch;
|
||||
chf.cells = (rcCompactCell*)rcAlloc(sizeof(rcCompactCell)*w*h, RC_ALLOC_PERM);
|
||||
if (!chf.cells)
|
||||
{
|
||||
ctx->log(RC_LOG_ERROR, "rcBuildCompactHeightfield: Out of memory 'chf.cells' (%d)", w*h);
|
||||
return false;
|
||||
}
|
||||
memset(chf.cells, 0, sizeof(rcCompactCell)*w*h);
|
||||
chf.spans = (rcCompactSpan*)rcAlloc(sizeof(rcCompactSpan)*spanCount, RC_ALLOC_PERM);
|
||||
if (!chf.spans)
|
||||
{
|
||||
ctx->log(RC_LOG_ERROR, "rcBuildCompactHeightfield: Out of memory 'chf.spans' (%d)", spanCount);
|
||||
return false;
|
||||
}
|
||||
memset(chf.spans, 0, sizeof(rcCompactSpan)*spanCount);
|
||||
chf.areas = (unsigned char*)rcAlloc(sizeof(unsigned char)*spanCount, RC_ALLOC_PERM);
|
||||
if (!chf.areas)
|
||||
{
|
||||
ctx->log(RC_LOG_ERROR, "rcBuildCompactHeightfield: Out of memory 'chf.areas' (%d)", spanCount);
|
||||
return false;
|
||||
}
|
||||
memset(chf.areas, RC_NULL_AREA, sizeof(unsigned char)*spanCount);
|
||||
|
||||
const int headerSize = rcAlign4(sizeof(rcLeanHeightfield));
|
||||
const int countsSize = rcAlign4(sizeof(unsigned char)*lhf.width*lhf.height);
|
||||
const int floorsSize = rcAlign4(sizeof(unsigned short)*lhf.spanCount);
|
||||
const unsigned char* data = (const unsigned char*)&lhf;
|
||||
const unsigned char* counts = (const unsigned char*)&data[headerSize];
|
||||
const unsigned short* floors = (const unsigned short*)&data[headerSize+countsSize];
|
||||
const unsigned char* areas = (const unsigned char*)&data[headerSize+countsSize+floorsSize];
|
||||
|
||||
const unsigned short MASK_Y = (1<<RC_SPAN_HEIGHT_BITS)-1;
|
||||
const unsigned short MASK_H = (1<<(16-RC_SPAN_HEIGHT_BITS))-1;
|
||||
|
||||
// Fill in cells and spans.
|
||||
int idx = 0;
|
||||
for (int y = 0; y < chf.height; ++y)
|
||||
{
|
||||
for (int x = 0; x < chf.width; ++x)
|
||||
{
|
||||
const int count = counts[x+y*chf.width];
|
||||
|
||||
rcCompactCell& c = chf.cells[x+y*w];
|
||||
c.index = idx;
|
||||
c.count = count;
|
||||
|
||||
for (int i = idx, ni = idx+count; i < ni; ++i)
|
||||
{
|
||||
unsigned short y = (unsigned short)(floors[i] & MASK_Y);
|
||||
unsigned char h = (unsigned char)((floors[i]>>RC_SPAN_HEIGHT_BITS) & MASK_H);
|
||||
chf.spans[i].y = y;
|
||||
chf.spans[i].h = h == 0 ? 0 : (unsigned char)(walkableHeight + (h-1)*2);
|
||||
chf.areas[i] = areas[i];
|
||||
}
|
||||
|
||||
idx += count;
|
||||
}
|
||||
}
|
||||
|
||||
// Find neighbour connections.
|
||||
const int MAX_LAYERS = RC_NOT_CONNECTED-1;
|
||||
int tooHighNeighbour = 0;
|
||||
|
||||
for (int y = 0; y < h; ++y)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const rcCompactCell& c = chf.cells[x+y*w];
|
||||
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
||||
{
|
||||
rcCompactSpan& s = chf.spans[i];
|
||||
|
||||
for (int dir = 0; dir < 4; ++dir)
|
||||
{
|
||||
rcSetCon(s, dir, RC_NOT_CONNECTED);
|
||||
const int nx = x + rcGetDirOffsetX(dir);
|
||||
const int ny = y + rcGetDirOffsetY(dir);
|
||||
// First check that the neighbour cell is in bounds.
|
||||
if (nx < 0 || ny < 0 || nx >= w || ny >= h)
|
||||
continue;
|
||||
|
||||
// Iterate over all neighbour spans and check if any of the is
|
||||
// accessible from current cell.
|
||||
const rcCompactCell& nc = chf.cells[nx+ny*w];
|
||||
for (int k = (int)nc.index, nk = (int)(nc.index+nc.count); k < nk; ++k)
|
||||
{
|
||||
const rcCompactSpan& ns = chf.spans[k];
|
||||
const int bot = rcMax(s.y, ns.y);
|
||||
const int top = rcMin(s.y+s.h, ns.y+ns.h);
|
||||
|
||||
// Check that the gap between the spans is walkable,
|
||||
// and that the climb height between the gaps is not too high.
|
||||
if ((top - bot) >= walkableHeight && rcAbs((int)ns.y - (int)s.y) <= walkableClimb)
|
||||
{
|
||||
// Mark direction as walkable.
|
||||
const int idx = k - (int)nc.index;
|
||||
if (idx < 0 || idx > MAX_LAYERS)
|
||||
{
|
||||
tooHighNeighbour = rcMax(tooHighNeighbour, idx);
|
||||
continue;
|
||||
}
|
||||
rcSetCon(s, dir, idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tooHighNeighbour > MAX_LAYERS)
|
||||
{
|
||||
ctx->log(RC_LOG_ERROR, "rcBuildCompactHeightfield: Heightfield has too many layers %d (max: %d)",
|
||||
tooHighNeighbour, MAX_LAYERS);
|
||||
}
|
||||
|
||||
ctx->stopTimer(RC_TIMER_BUILD_COMPACTHEIGHTFIELD);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
static int getHeightfieldMemoryUsage(const rcHeightfield& hf)
|
||||
{
|
||||
|
@ -54,15 +54,27 @@ bool rcErodeWalkableArea(rcContext* ctx, int radius, rcCompactHeightfield& chf)
|
||||
const rcCompactCell& c = chf.cells[x+y*w];
|
||||
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
||||
{
|
||||
if (chf.areas[i] != RC_NULL_AREA)
|
||||
if (chf.areas[i] == RC_NULL_AREA)
|
||||
{
|
||||
dist[i] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
const rcCompactSpan& s = chf.spans[i];
|
||||
int nc = 0;
|
||||
for (int dir = 0; dir < 4; ++dir)
|
||||
{
|
||||
if (rcGetCon(s, dir) != RC_NOT_CONNECTED)
|
||||
{
|
||||
const int nx = x + rcGetDirOffsetX(dir);
|
||||
const int ny = y + rcGetDirOffsetY(dir);
|
||||
const int ni = (int)chf.cells[nx+ny*w].index + rcGetCon(s, dir);
|
||||
if (chf.areas[ni] != RC_NULL_AREA)
|
||||
{
|
||||
nc++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// At least one missing neighbour.
|
||||
if (nc != 4)
|
||||
dist[i] = 0;
|
||||
@ -414,3 +426,69 @@ void rcMarkConvexPolyArea(rcContext* ctx, const float* verts, const int nverts,
|
||||
|
||||
ctx->stopTimer(RC_TIMER_MARK_CONVEXPOLY_AREA);
|
||||
}
|
||||
|
||||
void rcMarkCylinderArea(rcContext* ctx, const float* pos,
|
||||
const float r, const float h, unsigned char areaId,
|
||||
rcCompactHeightfield& chf)
|
||||
{
|
||||
rcAssert(ctx);
|
||||
|
||||
ctx->startTimer(RC_TIMER_MARK_CYLINDER_AREA);
|
||||
|
||||
float bmin[3], bmax[3];
|
||||
bmin[0] = pos[0] - r;
|
||||
bmin[1] = pos[1];
|
||||
bmin[2] = pos[2] - r;
|
||||
bmax[0] = pos[0] + r;
|
||||
bmax[1] = pos[1] + h;
|
||||
bmax[2] = pos[2] + r;
|
||||
const float r2 = r*r;
|
||||
|
||||
int minx = (int)((bmin[0]-chf.bmin[0])/chf.cs);
|
||||
int miny = (int)((bmin[1]-chf.bmin[1])/chf.ch);
|
||||
int minz = (int)((bmin[2]-chf.bmin[2])/chf.cs);
|
||||
int maxx = (int)((bmax[0]-chf.bmin[0])/chf.cs);
|
||||
int maxy = (int)((bmax[1]-chf.bmin[1])/chf.ch);
|
||||
int maxz = (int)((bmax[2]-chf.bmin[2])/chf.cs);
|
||||
|
||||
if (maxx < 0) return;
|
||||
if (minx >= chf.width) return;
|
||||
if (maxz < 0) return;
|
||||
if (minz >= chf.height) return;
|
||||
|
||||
if (minx < 0) minx = 0;
|
||||
if (maxx >= chf.width) maxx = chf.width-1;
|
||||
if (minz < 0) minz = 0;
|
||||
if (maxz >= chf.height) maxz = chf.height-1;
|
||||
|
||||
|
||||
for (int z = minz; z <= maxz; ++z)
|
||||
{
|
||||
for (int x = minx; x <= maxx; ++x)
|
||||
{
|
||||
const rcCompactCell& c = chf.cells[x+z*chf.width];
|
||||
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
||||
{
|
||||
rcCompactSpan& s = chf.spans[i];
|
||||
|
||||
if (chf.areas[i] == RC_NULL_AREA)
|
||||
continue;
|
||||
|
||||
if ((int)s.y >= miny && (int)s.y <= maxy)
|
||||
{
|
||||
const float sx = chf.bmin[0] + (x+0.5f)*chf.cs;
|
||||
const float sz = chf.bmin[2] + (z+0.5f)*chf.cs;
|
||||
const float dx = sx - pos[0];
|
||||
const float dz = sz - pos[2];
|
||||
|
||||
if (dx*dx + dz*dz < r2)
|
||||
{
|
||||
chf.areas[i] = areaId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ctx->stopTimer(RC_TIMER_MARK_CYLINDER_AREA);
|
||||
}
|
||||
|
@ -25,11 +25,14 @@
|
||||
6B2AEC530FFB8958005BE9CC /* Sample_TileMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; };
|
||||
6B324C66111C5D9A00EBD2FD /* ConvexVolumeTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */; };
|
||||
6B555DB1100B212E00247EA3 /* imguiRenderGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */; };
|
||||
6B5683B812D9E7D3000B9960 /* Sample_TempObstacles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B5683B712D9E7D3000B9960 /* Sample_TempObstacles.cpp */; };
|
||||
6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; };
|
||||
6B8036AE113BAABE005ED67B /* Sample_Debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */; };
|
||||
6B847777122D221D00ADF63D /* ValueHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B847776122D221C00ADF63D /* ValueHistory.cpp */; };
|
||||
6B8632DA0F78122C00E2684A /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632D90F78122C00E2684A /* SDL.framework */; };
|
||||
6B8632DC0F78123E00E2684A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632DB0F78123E00E2684A /* OpenGL.framework */; };
|
||||
6B8BA92812DAE1DF00EE6EFF /* lzf_c.c in Sources */ = {isa = PBXBuildFile; fileRef = 6B8BA92612DAE1DF00EE6EFF /* lzf_c.c */; };
|
||||
6B8BA92912DAE1DF00EE6EFF /* lzf_d.c in Sources */ = {isa = PBXBuildFile; fileRef = 6B8BA92712DAE1DF00EE6EFF /* lzf_d.c */; };
|
||||
6B8DE88910B69E3E00DF20FB /* DetourNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; };
|
||||
6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; };
|
||||
6B98463311E6144400FA177B /* Sample_SoloMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B98463211E6144400FA177B /* Sample_SoloMeshTiled.cpp */; };
|
||||
@ -94,6 +97,9 @@
|
||||
6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imguiRenderGL.h; path = ../../Include/imguiRenderGL.h; sourceTree = SOURCE_ROOT; };
|
||||
6B555DB0100B212E00247EA3 /* imguiRenderGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imguiRenderGL.cpp; path = ../../Source/imguiRenderGL.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B555DF6100B273500247EA3 /* stb_truetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_truetype.h; path = ../../Contrib/stb_truetype.h; sourceTree = SOURCE_ROOT; };
|
||||
6B5683B612D9E7D3000B9960 /* Sample_TempObstacles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_TempObstacles.h; path = ../../Include/Sample_TempObstacles.h; sourceTree = SOURCE_ROOT; };
|
||||
6B5683B712D9E7D3000B9960 /* Sample_TempObstacles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_TempObstacles.cpp; path = ../../Source/Sample_TempObstacles.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B56847412DA05F2000B9960 /* lzf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lzf.h; path = "../../Contrib/liblzf-3.5/lzf.h"; sourceTree = SOURCE_ROOT; };
|
||||
6B624169103434880002E346 /* RecastMeshDetail.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastMeshDetail.cpp; path = ../../../Recast/Source/RecastMeshDetail.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B8036AC113BAABE005ED67B /* Sample_Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_Debug.h; path = ../../Include/Sample_Debug.h; sourceTree = SOURCE_ROOT; };
|
||||
6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_Debug.cpp; path = ../../Source/Sample_Debug.cpp; sourceTree = SOURCE_ROOT; };
|
||||
@ -101,6 +107,9 @@
|
||||
6B847776122D221C00ADF63D /* ValueHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueHistory.cpp; path = ../../Source/ValueHistory.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B8632D90F78122C00E2684A /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = Library/Frameworks/SDL.framework; sourceTree = SDKROOT; };
|
||||
6B8632DB0F78123E00E2684A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
|
||||
6B8BA92612DAE1DF00EE6EFF /* lzf_c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lzf_c.c; path = "../../Contrib/liblzf-3.5/lzf_c.c"; sourceTree = SOURCE_ROOT; };
|
||||
6B8BA92712DAE1DF00EE6EFF /* lzf_d.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lzf_d.c; path = "../../Contrib/liblzf-3.5/lzf_d.c"; sourceTree = SOURCE_ROOT; };
|
||||
6B8BA93912DAE5CC00EE6EFF /* lzfP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lzfP.h; path = "../../Contrib/liblzf-3.5/lzfP.h"; sourceTree = SOURCE_ROOT; };
|
||||
6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourNavMesh.cpp; path = ../../../Detour/Source/DetourNavMesh.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; };
|
||||
6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNavMesh.h; path = ../../../Detour/Include/DetourNavMesh.h; sourceTree = SOURCE_ROOT; };
|
||||
@ -172,6 +181,10 @@
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6B56847412DA05F2000B9960 /* lzf.h */,
|
||||
6B8BA93912DAE5CC00EE6EFF /* lzfP.h */,
|
||||
6B8BA92612DAE1DF00EE6EFF /* lzf_c.c */,
|
||||
6B8BA92712DAE1DF00EE6EFF /* lzf_d.c */,
|
||||
6BB93C7610CFE1BD00F74F2B /* DebugUtils */,
|
||||
6BDD9E030F91110C00904EEF /* Detour */,
|
||||
6B137C7D0F7FCBE800459200 /* Recast */,
|
||||
@ -310,6 +323,8 @@
|
||||
6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */,
|
||||
6B8036AC113BAABE005ED67B /* Sample_Debug.h */,
|
||||
6B8036AD113BAABE005ED67B /* Sample_Debug.cpp */,
|
||||
6B5683B612D9E7D3000B9960 /* Sample_TempObstacles.h */,
|
||||
6B5683B712D9E7D3000B9960 /* Sample_TempObstacles.cpp */,
|
||||
);
|
||||
name = Samples;
|
||||
sourceTree = "<group>";
|
||||
@ -465,6 +480,9 @@
|
||||
6B9EFF0912281C3E00535FF1 /* DetourObstacleAvoidance.cpp in Sources */,
|
||||
6B847777122D221D00ADF63D /* ValueHistory.cpp in Sources */,
|
||||
6BD667DA123D28100021A7A4 /* CrowdManager.cpp in Sources */,
|
||||
6B5683B812D9E7D3000B9960 /* Sample_TempObstacles.cpp in Sources */,
|
||||
6B8BA92812DAE1DF00EE6EFF /* lzf_c.c in Sources */,
|
||||
6B8BA92912DAE1DF00EE6EFF /* lzf_d.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
125
RecastDemo/Contrib/liblzf-3.5/Changes
Normal file
125
RecastDemo/Contrib/liblzf-3.5/Changes
Normal file
@ -0,0 +1,125 @@
|
||||
3.5 Fri May 1 02:28:42 CEST 2009
|
||||
- lzf_compress did sometimes write one octet past the given output
|
||||
buffer (analyzed and nice testcase by Salvatore Sanfilippo).
|
||||
|
||||
3.4 Tue Sep 2 06:45:00 CEST 2008
|
||||
- the fix from 3.3 introduced a compression bug, which is fixed in
|
||||
this release (which explains the mysterious prerelease...). Thanks
|
||||
once more to Clément Calmels.
|
||||
|
||||
3.3 Mon Aug 25 03:17:42 CEST 2008
|
||||
- lzf_compress could access memory after the given input buffer
|
||||
when outputting back references. reported with nice testcase
|
||||
by Clément Calmels.
|
||||
|
||||
3.2 Fri May 9 18:52:23 CEST 2008
|
||||
- include a workaround for failing POSIX and real-world compliance
|
||||
on 64 bit windows (microsoft claims to support POSIX, but is far
|
||||
from it). (bug found and analysed nicely by John Lilley).
|
||||
|
||||
3.1 Fri Nov 30 11:33:04 CET 2007
|
||||
- IMPORTANT BUGFIX: a too long final literal run would corrupt data
|
||||
in the encoder (this was introduced in 3.0 only, earlier versions
|
||||
are safe).
|
||||
|
||||
3.0 Tue Nov 13 22:13:09 CET 2007
|
||||
- switched to 2-clause bsd with "GPL v2 or any later version" option.
|
||||
- speed up compression by ~10-15% in common cases
|
||||
by some manual unrolling.
|
||||
- import some compiler tricks from JSON::XS, for further speed-ups.
|
||||
- tune hash functions depending on ULTRA_FAST or VERY_FAST settings.
|
||||
- for typical binary data (e.g. /bin/bash, memory dumps,
|
||||
canterbury corpus etc.), speed is now comparable to fastlz, but
|
||||
with better compression ratio. with ULTRA_FAST, it's typically
|
||||
3-15% faster than fastlz while still maintaining a similar ratio.
|
||||
(amd64 and core 2 duo, ymmv). thanks a lot for the competition :)
|
||||
- undo inline assembly in compressor, it is no longer helpful.
|
||||
- no changes to the decompressor.
|
||||
- use a HLOG of 16 by default now (formerly 15).
|
||||
|
||||
2.1 Fri Nov 2 13:34:42 CET 2007
|
||||
- switched to a 2-clause bsd license with GPL exception.
|
||||
- get rid of memcpy.
|
||||
- tentatively use rep movsb on x86 and x86_64 (gcc only) for a
|
||||
moderate speed improvement.
|
||||
- applied patch by Kein-Hong Man to maske lzf.c compile under
|
||||
the crippled mingw32 environment.
|
||||
|
||||
2.0 Fri Feb 16 23:11:18 CET 2007
|
||||
- replaced lzf demo by industrial-strength lzf utility with behaviour
|
||||
similar other compression utilities. Thanks for Stefan Traby for
|
||||
rewriting it!
|
||||
- fix state arg prototype.
|
||||
|
||||
1.7 Wed Sep 27 17:29:15 CEST 2006
|
||||
- remove bogus "unlzf" patch.
|
||||
note to self: never accept well-meant patches.
|
||||
- make lzf more robust in presence of padding bytes or sudden eof.
|
||||
|
||||
1.6 Fri Jul 7 17:31:26 CEST 2006
|
||||
- the lzf example utility will now uncompress if invoked
|
||||
as "unlzf" (patch by Scott Feeney).
|
||||
- add CHECK_INPUT option that adds more checks for input
|
||||
data validity.
|
||||
- help applications that do not pass in the correct length
|
||||
(such as php) by returning either EINVAL or E2BIG.
|
||||
- default HLOG size is now 15 (cpu caches have increased).
|
||||
- documentation fixes.
|
||||
|
||||
1.51 Thu Apr 14 22:15:46 CEST 2005
|
||||
- incorporated C♯ implementation of both the en- and decoder,
|
||||
written by "Oren J. Maurice".
|
||||
You can find it in the cs/ subdirectory.
|
||||
- make FRST, NEXT IDX overridable if lzf_c.c is directly included
|
||||
in the code.
|
||||
|
||||
1.5 Tue Mar 8 20:23:23 CET 2005
|
||||
- incorporated improvements by Adam D. Moss,
|
||||
which includes a new VERY_FAST mode which is
|
||||
a bit slower than ULTRA_FAST but much better,
|
||||
and enabled it as default.
|
||||
|
||||
1.401 Thu Mar 3 18:00:52 CET 2005
|
||||
- use cstring in c++, not string.h.
|
||||
- change of contact address.
|
||||
|
||||
1.4 Wed Dec 15 08:08:49 CET 2004
|
||||
- very very slight tuning of the hashing function.
|
||||
|
||||
1.3 Thu Mar 25 15:41:17 CET 2004
|
||||
- changed license of lzf core code to explicitly allow
|
||||
relicensing under the GPLv2.
|
||||
- added VPATH support as suggested by Björn Eriksson.
|
||||
|
||||
1.2 Mon Dec 29 13:47:28 CET 2003
|
||||
- avoid spurious memory accesses after the to-be-compressed
|
||||
memory region. originally reported by Michal Zalewski.
|
||||
- flip LZF_STACK_ARG meaning (to be correct).
|
||||
|
||||
1.1 Tue Dec 23 05:48:32 CET 2003
|
||||
- removed #warn directive, it's not worth the hassle.
|
||||
- add LZF_STACK_ARG and AVOID_ERRNO configurations
|
||||
for embedded systems.
|
||||
- make it compile cleanly as c++.
|
||||
- some small documentation and code fixes.
|
||||
|
||||
1.0 Sun Nov 17 12:37:37 CET 2002
|
||||
- slightly better compression ratio, almost unmeasurably
|
||||
slower.
|
||||
- some documentation fixes.
|
||||
|
||||
0.4 Thu Jun 13 14:11:10 CEST 2002
|
||||
- typoe fix.
|
||||
- lzf demo program now properly decompresses small files.
|
||||
- fix another 64 bit issue, found by Laurent Deniel.
|
||||
|
||||
0.3 Tue Jan 16 13:21:14 CET 2001
|
||||
- fix silly beginners 32/64 bit mistake.
|
||||
|
||||
0.2 Thu Jan 4 05:56:42 CET 2001
|
||||
- now totally independent of autoconfig, for
|
||||
easy inclusion into other programs.
|
||||
- much better fine-tuning, faster and better than 0.1.
|
||||
|
||||
0.1 2000
|
||||
- initial release.
|
27
RecastDemo/Contrib/liblzf-3.5/LICENSE
Normal file
27
RecastDemo/Contrib/liblzf-3.5/LICENSE
Normal file
@ -0,0 +1,27 @@
|
||||
Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp@schmorp.de>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modifica-
|
||||
tion, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Alternatively, the following files carry an additional notice that
|
||||
explicitly allows relicensing under the GPLv2: lzf.c lzf.h lzfP.h lzf_c.c
|
||||
lzf_d.c
|
||||
|
66
RecastDemo/Contrib/liblzf-3.5/Makefile
Normal file
66
RecastDemo/Contrib/liblzf-3.5/Makefile
Normal file
@ -0,0 +1,66 @@
|
||||
VERSION = 3.5
|
||||
|
||||
prefix = /usr/local
|
||||
exec_prefix = ${prefix}
|
||||
libdir = ${exec_prefix}/lib
|
||||
bindir = ${exec_prefix}/bin
|
||||
includedir = ${prefix}/include
|
||||
|
||||
|
||||
|
||||
CC = gcc
|
||||
CPPFLAGS = -I.
|
||||
CFLAGS = -g -O2 -O3 -funroll-all-loops
|
||||
LDFLAGS =
|
||||
RANLIB = ranlib
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
|
||||
all: Makefile lzf
|
||||
|
||||
clean:
|
||||
-rm -f *.o *.a lzf bench
|
||||
|
||||
lzf_c.o: lzf_c.c lzfP.h
|
||||
|
||||
lzf_d.o: lzf_d.c lzfP.h
|
||||
|
||||
lzf.o: lzf.c
|
||||
|
||||
lzf: lzf.o liblzf.a
|
||||
|
||||
lzfP.h: lzf.h config.h
|
||||
|
||||
liblzf.a: lzf_c.o lzf_d.o
|
||||
rm -f $@
|
||||
$(AR) rc $@ $^
|
||||
$(RANLIB) $@
|
||||
|
||||
install: all
|
||||
$(INSTALL) -d $(bindir)
|
||||
$(INSTALL) -m 755 lzf $(bindir)
|
||||
$(INSTALL) -d $(includedir)
|
||||
$(INSTALL_DATA) lzf.h $(includedir)
|
||||
$(INSTALL) -d $(libdir)
|
||||
$(INSTALL_DATA) liblzf.a $(libdir)
|
||||
|
||||
dist:
|
||||
mkdir liblzf-$(VERSION)
|
||||
tar c LICENSE README Makefile.in config.h.in \
|
||||
configure configure.ac install-sh \
|
||||
cs/README cs/CLZF.cs \
|
||||
lzf.h lzfP.h lzf_c.c lzf_d.c \
|
||||
crc32.h lzf.c Changes \
|
||||
| tar xpC liblzf-$(VERSION)
|
||||
-chown -R root.root liblzf-$(VERSION)
|
||||
chmod -R u=rwX,go=rX liblzf-$(VERSION)
|
||||
tar cvf - liblzf-$(VERSION) | gzip -9 >liblzf-$(VERSION).tar.gz
|
||||
rm -rf liblzf-$(VERSION)
|
||||
ls -l liblzf-$(VERSION).tar.gz
|
||||
|
||||
Makefile: Makefile.in
|
||||
./config.status
|
||||
|
||||
bench: Makefile liblzf.a bench.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) -g -o bench bench.c -L. -llzf
|
||||
|
66
RecastDemo/Contrib/liblzf-3.5/Makefile.in
Normal file
66
RecastDemo/Contrib/liblzf-3.5/Makefile.in
Normal file
@ -0,0 +1,66 @@
|
||||
VERSION = 3.5
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
libdir = @libdir@
|
||||
bindir = @bindir@
|
||||
includedir = @includedir@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
CC = @CC@
|
||||
CPPFLAGS = -I. @CPPFLAGS@
|
||||
CFLAGS = @CFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
RANLIB = @RANLIB@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
all: Makefile lzf
|
||||
|
||||
clean:
|
||||
-rm -f *.o *.a lzf bench
|
||||
|
||||
lzf_c.o: lzf_c.c lzfP.h
|
||||
|
||||
lzf_d.o: lzf_d.c lzfP.h
|
||||
|
||||
lzf.o: lzf.c
|
||||
|
||||
lzf: lzf.o liblzf.a
|
||||
|
||||
lzfP.h: lzf.h config.h
|
||||
|
||||
liblzf.a: lzf_c.o lzf_d.o
|
||||
rm -f $@
|
||||
$(AR) rc $@ $^
|
||||
$(RANLIB) $@
|
||||
|
||||
install: all
|
||||
$(INSTALL) -d $(bindir)
|
||||
$(INSTALL) -m 755 lzf $(bindir)
|
||||
$(INSTALL) -d $(includedir)
|
||||
$(INSTALL_DATA) lzf.h $(includedir)
|
||||
$(INSTALL) -d $(libdir)
|
||||
$(INSTALL_DATA) liblzf.a $(libdir)
|
||||
|
||||
dist:
|
||||
mkdir liblzf-$(VERSION)
|
||||
tar c LICENSE README Makefile.in config.h.in \
|
||||
configure configure.ac install-sh \
|
||||
cs/README cs/CLZF.cs \
|
||||
lzf.h lzfP.h lzf_c.c lzf_d.c \
|
||||
crc32.h lzf.c Changes \
|
||||
| tar xpC liblzf-$(VERSION)
|
||||
-chown -R root.root liblzf-$(VERSION)
|
||||
chmod -R u=rwX,go=rX liblzf-$(VERSION)
|
||||
tar cvf - liblzf-$(VERSION) | gzip -9 >liblzf-$(VERSION).tar.gz
|
||||
rm -rf liblzf-$(VERSION)
|
||||
ls -l liblzf-$(VERSION).tar.gz
|
||||
|
||||
Makefile: Makefile.in
|
||||
./config.status
|
||||
|
||||
bench: Makefile liblzf.a bench.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) -g -o bench bench.c -L. -llzf
|
||||
|
29
RecastDemo/Contrib/liblzf-3.5/README
Normal file
29
RecastDemo/Contrib/liblzf-3.5/README
Normal file
@ -0,0 +1,29 @@
|
||||
DESCRIPTION
|
||||
LZF is an extremely fast (not that much slower than a pure memcpy)
|
||||
compression algorithm. It is ideal for applications where you want to
|
||||
save *some* space but not at the cost of speed. It is ideal for
|
||||
repetitive data as well. The module is self-contained and very small.
|
||||
|
||||
It's written in ISO-C with no external dependencies other than what
|
||||
C provides and can easily be #include'd into your code, no makefile
|
||||
changes or library builds requires.
|
||||
|
||||
A C♯ implementation without external dependencies is available, too.
|
||||
|
||||
I do not know for certain wether any patents in any countries apply
|
||||
to this algorithm, but at the moment it is believed that it is free
|
||||
from any patents. More importantly, it is also free to use in every
|
||||
software package (see LICENSE).
|
||||
|
||||
See the lzf.h file for details on how the functions in this
|
||||
mini-library are to be used.
|
||||
|
||||
NOTE: This package contains a very bare-bones command-line utility
|
||||
which is neither optimized for speed nor for compression. This library
|
||||
is really intented to be used inside larger programs.
|
||||
|
||||
AUTHOR
|
||||
This library was written by Marc Lehmann <schmorp@schmorp.de> (See also
|
||||
http://software.schmorp.de/pkg/liblzf).
|
||||
|
||||
|
17
RecastDemo/Contrib/liblzf-3.5/config.h
Normal file
17
RecastDemo/Contrib/liblzf-3.5/config.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* The number of bytes in a int. */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* The number of bytes in a long. */
|
||||
#define SIZEOF_LONG 8
|
||||
|
||||
/* The number of bytes in a short. */
|
||||
#define SIZEOF_SHORT 2
|
16
RecastDemo/Contrib/liblzf-3.5/config.h.in
Normal file
16
RecastDemo/Contrib/liblzf-3.5/config.h.in
Normal file
@ -0,0 +1,16 @@
|
||||
/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
#undef const
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* The number of bytes in a int. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The number of bytes in a long. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The number of bytes in a short. */
|
||||
#undef SIZEOF_SHORT
|
520
RecastDemo/Contrib/liblzf-3.5/config.log
Normal file
520
RecastDemo/Contrib/liblzf-3.5/config.log
Normal file
@ -0,0 +1,520 @@
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by configure, which was
|
||||
generated by GNU Autoconf 2.60. Invocation command line was
|
||||
|
||||
$ ./configure
|
||||
|
||||
## --------- ##
|
||||
## Platform. ##
|
||||
## --------- ##
|
||||
|
||||
hostname = Mikko-Mononens-MacBook.local
|
||||
uname -m = i386
|
||||
uname -r = 10.6.0
|
||||
uname -s = Darwin
|
||||
uname -v = Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386
|
||||
|
||||
/usr/bin/uname -p = i386
|
||||
/bin/uname -X = unknown
|
||||
|
||||
/bin/arch = unknown
|
||||
/usr/bin/arch -k = unknown
|
||||
/usr/convex/getsysinfo = unknown
|
||||
/usr/bin/hostinfo = Mach kernel version:
|
||||
Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386
|
||||
Kernel configured for up to 2 processors.
|
||||
2 processors are physically available.
|
||||
2 processors are logically available.
|
||||
Processor type: i486 (Intel 80486)
|
||||
Processors active: 0 1
|
||||
Primary memory available: 2.00 gigabytes
|
||||
Default processor set: 63 tasks, 303 threads, 2 processors
|
||||
Load average: 0.87, Mach factor: 1.12
|
||||
/bin/machine = unknown
|
||||
/usr/bin/oslevel = unknown
|
||||
/bin/universe = unknown
|
||||
|
||||
PATH: /usr/bin
|
||||
PATH: /bin
|
||||
PATH: /usr/sbin
|
||||
PATH: /sbin
|
||||
PATH: /usr/local/bin
|
||||
PATH: /usr/X11/bin
|
||||
|
||||
|
||||
## ----------- ##
|
||||
## Core tests. ##
|
||||
## ----------- ##
|
||||
|
||||
configure:1723: checking for gcc
|
||||
configure:1739: found /usr/bin/gcc
|
||||
configure:1750: result: gcc
|
||||
configure:1988: checking for C compiler version
|
||||
configure:1995: gcc --version >&5
|
||||
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure:1998: $? = 0
|
||||
configure:2005: gcc -v >&5
|
||||
Using built-in specs.
|
||||
Target: i686-apple-darwin10
|
||||
Configured with: /var/tmp/gcc/gcc-5664~38/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
|
||||
Thread model: posix
|
||||
gcc version 4.2.1 (Apple Inc. build 5664)
|
||||
configure:2008: $? = 0
|
||||
configure:2015: gcc -V >&5
|
||||
gcc-4.2: argument to `-V' is missing
|
||||
configure:2018: $? = 1
|
||||
configure:2041: checking for C compiler default output file name
|
||||
configure:2068: gcc conftest.c >&5
|
||||
configure:2071: $? = 0
|
||||
configure:2117: result: a.out
|
||||
configure:2122: checking whether the C compiler works
|
||||
configure:2132: ./a.out
|
||||
configure:2135: $? = 0
|
||||
configure:2152: result: yes
|
||||
configure:2159: checking whether we are cross compiling
|
||||
configure:2161: result: no
|
||||
configure:2164: checking for suffix of executables
|
||||
configure:2171: gcc -o conftest conftest.c >&5
|
||||
configure:2174: $? = 0
|
||||
configure:2198: result:
|
||||
configure:2204: checking for suffix of object files
|
||||
configure:2230: gcc -c conftest.c >&5
|
||||
configure:2233: $? = 0
|
||||
configure:2256: result: o
|
||||
configure:2260: checking whether we are using the GNU C compiler
|
||||
configure:2289: gcc -c conftest.c >&5
|
||||
configure:2295: $? = 0
|
||||
configure:2302: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:2305: $? = 0
|
||||
configure:2312: test -s conftest.o
|
||||
configure:2315: $? = 0
|
||||
configure:2329: result: yes
|
||||
configure:2334: checking whether gcc accepts -g
|
||||
configure:2364: gcc -c -g conftest.c >&5
|
||||
configure:2370: $? = 0
|
||||
configure:2377: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:2380: $? = 0
|
||||
configure:2387: test -s conftest.o
|
||||
configure:2390: $? = 0
|
||||
configure:2520: result: yes
|
||||
configure:2537: checking for gcc option to accept ISO C89
|
||||
configure:2611: gcc -c -g -O2 conftest.c >&5
|
||||
configure:2617: $? = 0
|
||||
configure:2624: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:2627: $? = 0
|
||||
configure:2634: test -s conftest.o
|
||||
configure:2637: $? = 0
|
||||
configure:2657: result: none needed
|
||||
configure:2683: checking for special C compiler options needed for large files
|
||||
configure:2810: result: no
|
||||
configure:2816: checking for _FILE_OFFSET_BITS value needed for large files
|
||||
configure:2852: gcc -c -g -O2 conftest.c >&5
|
||||
configure:2858: $? = 0
|
||||
configure:2865: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:2868: $? = 0
|
||||
configure:2875: test -s conftest.o
|
||||
configure:2878: $? = 0
|
||||
configure:2959: result: no
|
||||
configure:2969: checking for _LARGE_FILES value needed for large files
|
||||
configure:3005: gcc -c -g -O2 conftest.c >&5
|
||||
configure:3011: $? = 0
|
||||
configure:3018: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:3021: $? = 0
|
||||
configure:3028: test -s conftest.o
|
||||
configure:3031: $? = 0
|
||||
configure:3112: result: no
|
||||
configure:3172: checking for gcc
|
||||
configure:3199: result: gcc
|
||||
configure:3437: checking for C compiler version
|
||||
configure:3444: gcc --version >&5
|
||||
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure:3447: $? = 0
|
||||
configure:3454: gcc -v >&5
|
||||
Using built-in specs.
|
||||
Target: i686-apple-darwin10
|
||||
Configured with: /var/tmp/gcc/gcc-5664~38/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
|
||||
Thread model: posix
|
||||
gcc version 4.2.1 (Apple Inc. build 5664)
|
||||
configure:3457: $? = 0
|
||||
configure:3464: gcc -V >&5
|
||||
gcc-4.2: argument to `-V' is missing
|
||||
configure:3467: $? = 1
|
||||
configure:3470: checking whether we are using the GNU C compiler
|
||||
configure:3539: result: yes
|
||||
configure:3544: checking whether gcc accepts -g
|
||||
configure:3730: result: yes
|
||||
configure:3747: checking for gcc option to accept ISO C89
|
||||
configure:3867: result: none needed
|
||||
configure:3928: checking for ranlib
|
||||
configure:3944: found /usr/bin/ranlib
|
||||
configure:3955: result: ranlib
|
||||
configure:4025: checking for a BSD-compatible install
|
||||
configure:4081: result: /usr/bin/install -c
|
||||
configure:4097: checking how to run the C preprocessor
|
||||
configure:4137: gcc -E conftest.c
|
||||
configure:4143: $? = 0
|
||||
configure:4181: gcc -E conftest.c
|
||||
conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
|
||||
configure:4187: $? = 1
|
||||
configure: failed program was:
|
||||
| /* confdefs.h. */
|
||||
| #define PACKAGE_NAME ""
|
||||
| #define PACKAGE_TARNAME ""
|
||||
| #define PACKAGE_VERSION ""
|
||||
| #define PACKAGE_STRING ""
|
||||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define _GNU_SOURCE 1
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:4227: result: gcc -E
|
||||
configure:4256: gcc -E conftest.c
|
||||
configure:4262: $? = 0
|
||||
configure:4300: gcc -E conftest.c
|
||||
conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
|
||||
configure:4306: $? = 1
|
||||
configure: failed program was:
|
||||
| /* confdefs.h. */
|
||||
| #define PACKAGE_NAME ""
|
||||
| #define PACKAGE_TARNAME ""
|
||||
| #define PACKAGE_VERSION ""
|
||||
| #define PACKAGE_STRING ""
|
||||
| #define PACKAGE_BUGREPORT ""
|
||||
| #define _GNU_SOURCE 1
|
||||
| /* end confdefs.h. */
|
||||
| #include <ac_nonexistent.h>
|
||||
configure:4351: checking for grep that handles long lines and -e
|
||||
configure:4425: result: /usr/bin/grep
|
||||
configure:4430: checking for egrep
|
||||
configure:4508: result: /usr/bin/grep -E
|
||||
configure:4513: checking for ANSI C header files
|
||||
configure:4543: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4549: $? = 0
|
||||
configure:4556: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4559: $? = 0
|
||||
configure:4566: test -s conftest.o
|
||||
configure:4569: $? = 0
|
||||
configure:4665: gcc -o conftest -g -O2 conftest.c >&5
|
||||
configure:4668: $? = 0
|
||||
configure:4674: ./conftest
|
||||
configure:4677: $? = 0
|
||||
configure:4694: result: yes
|
||||
configure:4719: checking for sys/types.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for sys/stat.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for stdlib.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for string.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for memory.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for strings.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for inttypes.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for stdint.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4719: checking for unistd.h
|
||||
configure:4740: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4746: $? = 0
|
||||
configure:4753: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4756: $? = 0
|
||||
configure:4763: test -s conftest.o
|
||||
configure:4766: $? = 0
|
||||
configure:4779: result: yes
|
||||
configure:4791: checking for short
|
||||
configure:4821: gcc -c -g -O2 conftest.c >&5
|
||||
configure:4827: $? = 0
|
||||
configure:4834: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:4837: $? = 0
|
||||
configure:4844: test -s conftest.o
|
||||
configure:4847: $? = 0
|
||||
configure:4859: result: yes
|
||||
configure:4862: checking size of short
|
||||
configure:5250: gcc -o conftest -g -O2 conftest.c >&5
|
||||
configure:5253: $? = 0
|
||||
configure:5259: ./conftest
|
||||
configure:5262: $? = 0
|
||||
configure:5284: result: 2
|
||||
configure:5291: checking for int
|
||||
configure:5321: gcc -c -g -O2 conftest.c >&5
|
||||
configure:5327: $? = 0
|
||||
configure:5334: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:5337: $? = 0
|
||||
configure:5344: test -s conftest.o
|
||||
configure:5347: $? = 0
|
||||
configure:5359: result: yes
|
||||
configure:5362: checking size of int
|
||||
configure:5750: gcc -o conftest -g -O2 conftest.c >&5
|
||||
configure:5753: $? = 0
|
||||
configure:5759: ./conftest
|
||||
configure:5762: $? = 0
|
||||
configure:5784: result: 4
|
||||
configure:5791: checking for long
|
||||
configure:5821: gcc -c -g -O2 conftest.c >&5
|
||||
configure:5827: $? = 0
|
||||
configure:5834: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:5837: $? = 0
|
||||
configure:5844: test -s conftest.o
|
||||
configure:5847: $? = 0
|
||||
configure:5859: result: yes
|
||||
configure:5862: checking size of long
|
||||
configure:6250: gcc -o conftest -g -O2 conftest.c >&5
|
||||
configure:6253: $? = 0
|
||||
configure:6259: ./conftest
|
||||
configure:6262: $? = 0
|
||||
configure:6284: result: 8
|
||||
configure:6292: checking for an ANSI C-conforming const
|
||||
configure:6367: gcc -c -g -O2 conftest.c >&5
|
||||
configure:6373: $? = 0
|
||||
configure:6380: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:6383: $? = 0
|
||||
configure:6390: test -s conftest.o
|
||||
configure:6393: $? = 0
|
||||
configure:6405: result: yes
|
||||
configure:6415: checking for inline
|
||||
configure:6441: gcc -c -g -O2 conftest.c >&5
|
||||
configure:6447: $? = 0
|
||||
configure:6454: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:6457: $? = 0
|
||||
configure:6464: test -s conftest.o
|
||||
configure:6467: $? = 0
|
||||
configure:6482: result: inline
|
||||
configure:6516: checking getopt.h usability
|
||||
configure:6533: gcc -c -g -O2 conftest.c >&5
|
||||
configure:6539: $? = 0
|
||||
configure:6546: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:6549: $? = 0
|
||||
configure:6556: test -s conftest.o
|
||||
configure:6559: $? = 0
|
||||
configure:6570: result: yes
|
||||
configure:6574: checking getopt.h presence
|
||||
configure:6589: gcc -E conftest.c
|
||||
configure:6595: $? = 0
|
||||
configure:6616: result: yes
|
||||
configure:6644: checking for getopt.h
|
||||
configure:6652: result: yes
|
||||
configure:6669: checking for getopt_long
|
||||
configure:6725: gcc -o conftest -g -O2 conftest.c >&5
|
||||
configure:6731: $? = 0
|
||||
configure:6738: test -z "$ac_c_werror_flag" || test ! -s conftest.err
|
||||
configure:6741: $? = 0
|
||||
configure:6748: test -s conftest
|
||||
configure:6751: $? = 0
|
||||
configure:6765: result: yes
|
||||
configure:6885: creating ./config.status
|
||||
|
||||
## ---------------------- ##
|
||||
## Running config.status. ##
|
||||
## ---------------------- ##
|
||||
|
||||
This file was extended by config.status, which was
|
||||
generated by GNU Autoconf 2.60. Invocation command line was
|
||||
|
||||
CONFIG_FILES =
|
||||
CONFIG_HEADERS =
|
||||
CONFIG_LINKS =
|
||||
CONFIG_COMMANDS =
|
||||
$ ./config.status
|
||||
|
||||
on Mikko-Mononens-MacBook.local
|
||||
|
||||
config.status:583: creating Makefile
|
||||
config.status:583: creating config.h
|
||||
|
||||
## ---------------- ##
|
||||
## Cache variables. ##
|
||||
## ---------------- ##
|
||||
|
||||
ac_cv_c_compiler_gnu=yes
|
||||
ac_cv_c_const=yes
|
||||
ac_cv_c_inline=inline
|
||||
ac_cv_env_CC_set=
|
||||
ac_cv_env_CC_value=
|
||||
ac_cv_env_CFLAGS_set=
|
||||
ac_cv_env_CFLAGS_value=
|
||||
ac_cv_env_CPPFLAGS_set=
|
||||
ac_cv_env_CPPFLAGS_value=
|
||||
ac_cv_env_CPP_set=
|
||||
ac_cv_env_CPP_value=
|
||||
ac_cv_env_LDFLAGS_set=
|
||||
ac_cv_env_LDFLAGS_value=
|
||||
ac_cv_env_build_alias_set=
|
||||
ac_cv_env_build_alias_value=
|
||||
ac_cv_env_host_alias_set=
|
||||
ac_cv_env_host_alias_value=
|
||||
ac_cv_env_target_alias_set=
|
||||
ac_cv_env_target_alias_value=
|
||||
ac_cv_func_getopt_long=yes
|
||||
ac_cv_header_getopt_h=yes
|
||||
ac_cv_header_inttypes_h=yes
|
||||
ac_cv_header_memory_h=yes
|
||||
ac_cv_header_stdc=yes
|
||||
ac_cv_header_stdint_h=yes
|
||||
ac_cv_header_stdlib_h=yes
|
||||
ac_cv_header_string_h=yes
|
||||
ac_cv_header_strings_h=yes
|
||||
ac_cv_header_sys_stat_h=yes
|
||||
ac_cv_header_sys_types_h=yes
|
||||
ac_cv_header_unistd_h=yes
|
||||
ac_cv_objext=o
|
||||
ac_cv_path_EGREP='/usr/bin/grep -E'
|
||||
ac_cv_path_GREP=/usr/bin/grep
|
||||
ac_cv_path_install='/usr/bin/install -c'
|
||||
ac_cv_prog_CPP='gcc -E'
|
||||
ac_cv_prog_ac_ct_CC=gcc
|
||||
ac_cv_prog_ac_ct_RANLIB=ranlib
|
||||
ac_cv_prog_cc_c89=
|
||||
ac_cv_prog_cc_g=yes
|
||||
ac_cv_sizeof_int=4
|
||||
ac_cv_sizeof_long=8
|
||||
ac_cv_sizeof_short=2
|
||||
ac_cv_sys_file_offset_bits=no
|
||||
ac_cv_sys_large_files=no
|
||||
ac_cv_sys_largefile_CC=no
|
||||
ac_cv_type_int=yes
|
||||
ac_cv_type_long=yes
|
||||
ac_cv_type_short=yes
|
||||
|
||||
## ----------------- ##
|
||||
## Output variables. ##
|
||||
## ----------------- ##
|
||||
|
||||
CC='gcc'
|
||||
CFLAGS='-g -O2 -O3 -funroll-all-loops'
|
||||
CPP='gcc -E'
|
||||
CPPFLAGS=''
|
||||
DEFS='-DHAVE_CONFIG_H'
|
||||
ECHO_C='ECHO_N=''
|
||||
ECHO_T=''
|
||||
EGREP='/usr/bin/grep -E'
|
||||
EXEEXT=''
|
||||
GREP='/usr/bin/grep'
|
||||
INSTALL_DATA='${INSTALL} -m 644'
|
||||
INSTALL_PROGRAM='${INSTALL}'
|
||||
INSTALL_SCRIPT='${INSTALL}'
|
||||
LDFLAGS=''
|
||||
LIBOBJS=''
|
||||
LIBS=''
|
||||
LTLIBOBJS=''
|
||||
OBJEXT='o'
|
||||
PACKAGE_BUGREPORT=''
|
||||
PACKAGE_NAME=''
|
||||
PACKAGE_STRING=''
|
||||
PACKAGE_TARNAME=''
|
||||
PACKAGE_VERSION=''
|
||||
PATH_SEPARATOR=':'
|
||||
RANLIB='ranlib'
|
||||
SHELL='/bin/sh'
|
||||
ac_ct_CC='gcc'
|
||||
bindir='${exec_prefix}/bin'
|
||||
build_alias=''
|
||||
datadir='${datarootdir}'
|
||||
datarootdir='${prefix}/share'
|
||||
docdir='${datarootdir}/doc/${PACKAGE}'
|
||||
dvidir='${docdir}'
|
||||
exec_prefix='${prefix}'
|
||||
host_alias=''
|
||||
htmldir='${docdir}'
|
||||
includedir='${prefix}/include'
|
||||
infodir='${datarootdir}/info'
|
||||
libdir='${exec_prefix}/lib'
|
||||
libexecdir='${exec_prefix}/libexec'
|
||||
localedir='${datarootdir}/locale'
|
||||
localstatedir='${prefix}/var'
|
||||
mandir='${datarootdir}/man'
|
||||
oldincludedir='/usr/include'
|
||||
pdfdir='${docdir}'
|
||||
prefix='/usr/local'
|
||||
program_transform_name='s,x,x,'
|
||||
psdir='${docdir}'
|
||||
sbindir='${exec_prefix}/sbin'
|
||||
sharedstatedir='${prefix}/com'
|
||||
sysconfdir='${prefix}/etc'
|
||||
target_alias=''
|
||||
|
||||
## ----------- ##
|
||||
## confdefs.h. ##
|
||||
## ----------- ##
|
||||
|
||||
#define PACKAGE_NAME ""
|
||||
#define PACKAGE_TARNAME ""
|
||||
#define PACKAGE_VERSION ""
|
||||
#define PACKAGE_STRING ""
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
#define _GNU_SOURCE 1
|
||||
#define STDC_HEADERS 1
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
#define HAVE_STDLIB_H 1
|
||||
#define HAVE_STRING_H 1
|
||||
#define HAVE_MEMORY_H 1
|
||||
#define HAVE_STRINGS_H 1
|
||||
#define HAVE_INTTYPES_H 1
|
||||
#define HAVE_STDINT_H 1
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define SIZEOF_SHORT 2
|
||||
#define SIZEOF_INT 4
|
||||
#define SIZEOF_LONG 8
|
||||
#define HAVE_GETOPT_H 1
|
||||
#define HAVE_GETOPT_LONG 1
|
||||
|
||||
configure: exit 0
|
826
RecastDemo/Contrib/liblzf-3.5/config.status
Executable file
826
RecastDemo/Contrib/liblzf-3.5/config.status
Executable file
@ -0,0 +1,826 @@
|
||||
#! /bin/sh
|
||||
# Generated by configure.
|
||||
# Run this file to recreate the current configuration.
|
||||
# Compiler output produced by configure, useful for debugging
|
||||
# configure, is in config.log if it exists.
|
||||
|
||||
debug=false
|
||||
ac_cs_recheck=false
|
||||
ac_cs_silent=false
|
||||
SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
## --------------------- ##
|
||||
## M4sh Initialization. ##
|
||||
## --------------------- ##
|
||||
|
||||
# Be Bourne compatible
|
||||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
||||
emulate sh
|
||||
NULLCMD=:
|
||||
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
|
||||
# is contrary to our usage. Disable this feature.
|
||||
alias -g '${1+"$@"}'='"$@"'
|
||||
setopt NO_GLOB_SUBST
|
||||
else
|
||||
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
|
||||
fi
|
||||
BIN_SH=xpg4; export BIN_SH # for Tru64
|
||||
DUALCASE=1; export DUALCASE # for MKS sh
|
||||
|
||||
|
||||
# PATH needs CR
|
||||
# Avoid depending upon Character Ranges.
|
||||
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
|
||||
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
|
||||
as_cr_digits='0123456789'
|
||||
as_cr_alnum=$as_cr_Letters$as_cr_digits
|
||||
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
|
||||
# Support unset when possible.
|
||||
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
|
||||
as_unset=unset
|
||||
else
|
||||
as_unset=false
|
||||
fi
|
||||
|
||||
|
||||
# IFS
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent editors from complaining about space-tab.
|
||||
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
|
||||
# splitting by setting IFS to empty value.)
|
||||
as_nl='
|
||||
'
|
||||
IFS=" "" $as_nl"
|
||||
|
||||
# Find who we are. Look in the path if we contain no directory separator.
|
||||
case $0 in
|
||||
*[\\/]* ) as_myself=$0 ;;
|
||||
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
# We did not find ourselves, most probably we were run as `sh COMMAND'
|
||||
# in which case we are not to be found in the path.
|
||||
if test "x$as_myself" = x; then
|
||||
as_myself=$0
|
||||
fi
|
||||
if test ! -f "$as_myself"; then
|
||||
echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
|
||||
{ (exit 1); exit 1; }
|
||||
fi
|
||||
|
||||
# Work around bugs in pre-3.0 UWIN ksh.
|
||||
for as_var in ENV MAIL MAILPATH
|
||||
do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
|
||||
done
|
||||
PS1='$ '
|
||||
PS2='> '
|
||||
PS4='+ '
|
||||
|
||||
# NLS nuisances.
|
||||
for as_var in \
|
||||
LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
|
||||
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
|
||||
LC_TELEPHONE LC_TIME
|
||||
do
|
||||
if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
|
||||
eval $as_var=C; export $as_var
|
||||
else
|
||||
($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
|
||||
fi
|
||||
done
|
||||
|
||||
# Required to use basename.
|
||||
if expr a : '\(a\)' >/dev/null 2>&1 &&
|
||||
test "X`expr 00001 : '.*\(...\)'`" = X001; then
|
||||
as_expr=expr
|
||||
else
|
||||
as_expr=false
|
||||
fi
|
||||
|
||||
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
|
||||
as_basename=basename
|
||||
else
|
||||
as_basename=false
|
||||
fi
|
||||
|
||||
|
||||
# Name of the executable.
|
||||
as_me=`$as_basename -- "$0" ||
|
||||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
|
||||
X"$0" : 'X\(//\)$' \| \
|
||||
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X/"$0" |
|
||||
sed '/^.*\/\([^/][^/]*\)\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\/\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\/\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'`
|
||||
|
||||
# CDPATH.
|
||||
$as_unset CDPATH
|
||||
|
||||
|
||||
|
||||
as_lineno_1=$LINENO
|
||||
as_lineno_2=$LINENO
|
||||
test "x$as_lineno_1" != "x$as_lineno_2" &&
|
||||
test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
|
||||
|
||||
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO
|
||||
# uniformly replaced by the line number. The first 'sed' inserts a
|
||||
# line-number line after each line using $LINENO; the second 'sed'
|
||||
# does the real work. The second script uses 'N' to pair each
|
||||
# line-number line with the line containing $LINENO, and appends
|
||||
# trailing '-' during substitution so that $LINENO is not a special
|
||||
# case at line end.
|
||||
# (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
|
||||
# scripts with optimization help from Paolo Bonzini. Blame Lee
|
||||
# E. McMahon (1931-1989) for sed's syntax. :-)
|
||||
sed -n '
|
||||
p
|
||||
/[$]LINENO/=
|
||||
' <$as_myself |
|
||||
sed '
|
||||
s/[$]LINENO.*/&-/
|
||||
t lineno
|
||||
b
|
||||
:lineno
|
||||
N
|
||||
:loop
|
||||
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
|
||||
t loop
|
||||
s/-\n.*//
|
||||
' >$as_me.lineno &&
|
||||
chmod +x "$as_me.lineno" ||
|
||||
{ echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
|
||||
{ (exit 1); exit 1; }; }
|
||||
|
||||
# Don't try to exec as it changes $[0], causing all sort of problems
|
||||
# (the dirname of $[0] is not the place where we might find the
|
||||
# original and so on. Autoconf is especially sensitive to this).
|
||||
. "./$as_me.lineno"
|
||||
# Exit status is that of the last command.
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
|
||||
as_dirname=dirname
|
||||
else
|
||||
as_dirname=false
|
||||
fi
|
||||
|
||||
ECHO_C= ECHO_N= ECHO_T=
|
||||
case `echo -n x` in
|
||||
-n*)
|
||||
case `echo 'x\c'` in
|
||||
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
|
||||
*) ECHO_C='\c';;
|
||||
esac;;
|
||||
*)
|
||||
ECHO_N='-n';;
|
||||
esac
|
||||
|
||||
if expr a : '\(a\)' >/dev/null 2>&1 &&
|
||||
test "X`expr 00001 : '.*\(...\)'`" = X001; then
|
||||
as_expr=expr
|
||||
else
|
||||
as_expr=false
|
||||
fi
|
||||
|
||||
rm -f conf$$ conf$$.exe conf$$.file
|
||||
if test -d conf$$.dir; then
|
||||
rm -f conf$$.dir/conf$$.file
|
||||
else
|
||||
rm -f conf$$.dir
|
||||
mkdir conf$$.dir
|
||||
fi
|
||||
echo >conf$$.file
|
||||
if ln -s conf$$.file conf$$ 2>/dev/null; then
|
||||
as_ln_s='ln -s'
|
||||
# ... but there are two gotchas:
|
||||
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
|
||||
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
|
||||
# In both cases, we have to default to `cp -p'.
|
||||
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
|
||||
as_ln_s='cp -p'
|
||||
elif ln conf$$.file conf$$ 2>/dev/null; then
|
||||
as_ln_s=ln
|
||||
else
|
||||
as_ln_s='cp -p'
|
||||
fi
|
||||
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
|
||||
rmdir conf$$.dir 2>/dev/null
|
||||
|
||||
if mkdir -p . 2>/dev/null; then
|
||||
as_mkdir_p=:
|
||||
else
|
||||
test -d ./-p && rmdir ./-p
|
||||
as_mkdir_p=false
|
||||
fi
|
||||
|
||||
# Find out whether ``test -x'' works. Don't use a zero-byte file, as
|
||||
# systems may use methods other than mode bits to determine executability.
|
||||
cat >conf$$.file <<_ASEOF
|
||||
#! /bin/sh
|
||||
exit 0
|
||||
_ASEOF
|
||||
chmod +x conf$$.file
|
||||
if test -x conf$$.file >/dev/null 2>&1; then
|
||||
as_executable_p="test -x"
|
||||
else
|
||||
as_executable_p=:
|
||||
fi
|
||||
rm -f conf$$.file
|
||||
|
||||
# Sed expression to map a string onto a valid CPP name.
|
||||
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
|
||||
|
||||
# Sed expression to map a string onto a valid variable name.
|
||||
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
|
||||
|
||||
|
||||
exec 6>&1
|
||||
|
||||
# Save the log message, to keep $[0] and so on meaningful, and to
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by $as_me, which was
|
||||
generated by GNU Autoconf 2.60. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
CONFIG_HEADERS = $CONFIG_HEADERS
|
||||
CONFIG_LINKS = $CONFIG_LINKS
|
||||
CONFIG_COMMANDS = $CONFIG_COMMANDS
|
||||
$ $0 $@
|
||||
|
||||
on `(hostname || uname -n) 2>/dev/null | sed 1q`
|
||||
"
|
||||
|
||||
# Files that config.status was made for.
|
||||
config_files=" Makefile"
|
||||
config_headers=" config.h"
|
||||
|
||||
ac_cs_usage="\
|
||||
\`$as_me' instantiates files from templates according to the
|
||||
current configuration.
|
||||
|
||||
Usage: $0 [OPTIONS] [FILE]...
|
||||
|
||||
-h, --help print this help, then exit
|
||||
-V, --version print version number, then exit
|
||||
-q, --quiet do not print progress messages
|
||||
-d, --debug don't remove temporary files
|
||||
--recheck update $as_me by reconfiguring in the same conditions
|
||||
--file=FILE[:TEMPLATE]
|
||||
instantiate the configuration file FILE
|
||||
--header=FILE[:TEMPLATE]
|
||||
instantiate the configuration header FILE
|
||||
|
||||
Configuration files:
|
||||
$config_files
|
||||
|
||||
Configuration headers:
|
||||
$config_headers
|
||||
|
||||
Report bugs to <bug-autoconf@gnu.org>."
|
||||
|
||||
ac_cs_version="\
|
||||
config.status
|
||||
configured by ./configure, generated by GNU Autoconf 2.60,
|
||||
with options \"\"
|
||||
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
This config.status script is free software; the Free Software Foundation
|
||||
gives unlimited permission to copy, distribute and modify it."
|
||||
|
||||
ac_pwd='/Users/memon/Code/recastnavigation/RecastDemo/Contrib/liblzf-3.5'
|
||||
srcdir='.'
|
||||
INSTALL='/usr/bin/install -c'
|
||||
# If no file are specified by the user, then we need to provide default
|
||||
# value. By we need to know if files were specified by the user.
|
||||
ac_need_defaults=:
|
||||
while test $# != 0
|
||||
do
|
||||
case $1 in
|
||||
--*=*)
|
||||
ac_option=`expr "X$1" : 'X\([^=]*\)='`
|
||||
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
|
||||
ac_shift=:
|
||||
;;
|
||||
*)
|
||||
ac_option=$1
|
||||
ac_optarg=$2
|
||||
ac_shift=shift
|
||||
;;
|
||||
esac
|
||||
|
||||
case $ac_option in
|
||||
# Handling of the options.
|
||||
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
||||
ac_cs_recheck=: ;;
|
||||
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
|
||||
echo "$ac_cs_version"; exit ;;
|
||||
--debug | --debu | --deb | --de | --d | -d )
|
||||
debug=: ;;
|
||||
--file | --fil | --fi | --f )
|
||||
$ac_shift
|
||||
CONFIG_FILES="$CONFIG_FILES $ac_optarg"
|
||||
ac_need_defaults=false;;
|
||||
--header | --heade | --head | --hea )
|
||||
$ac_shift
|
||||
CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
|
||||
ac_need_defaults=false;;
|
||||
--he | --h)
|
||||
# Conflict between --help and --header
|
||||
{ echo "$as_me: error: ambiguous option: $1
|
||||
Try \`$0 --help' for more information." >&2
|
||||
{ (exit 1); exit 1; }; };;
|
||||
--help | --hel | -h )
|
||||
echo "$ac_cs_usage"; exit ;;
|
||||
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
||||
| -silent | --silent | --silen | --sile | --sil | --si | --s)
|
||||
ac_cs_silent=: ;;
|
||||
|
||||
# This is an error.
|
||||
-*) { echo "$as_me: error: unrecognized option: $1
|
||||
Try \`$0 --help' for more information." >&2
|
||||
{ (exit 1); exit 1; }; } ;;
|
||||
|
||||
*) ac_config_targets="$ac_config_targets $1"
|
||||
ac_need_defaults=false ;;
|
||||
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
ac_configure_extra_args=
|
||||
|
||||
if $ac_cs_silent; then
|
||||
exec 6>/dev/null
|
||||
ac_configure_extra_args="$ac_configure_extra_args --silent"
|
||||
fi
|
||||
|
||||
if $ac_cs_recheck; then
|
||||
echo "running CONFIG_SHELL=/bin/sh /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6
|
||||
CONFIG_SHELL=/bin/sh
|
||||
export CONFIG_SHELL
|
||||
exec /bin/sh "./configure" $ac_configure_extra_args --no-create --no-recursion
|
||||
fi
|
||||
|
||||
exec 5>>config.log
|
||||
{
|
||||
echo
|
||||
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
|
||||
## Running $as_me. ##
|
||||
_ASBOX
|
||||
echo "$ac_log"
|
||||
} >&5
|
||||
|
||||
|
||||
# Handling of arguments.
|
||||
for ac_config_target in $ac_config_targets
|
||||
do
|
||||
case $ac_config_target in
|
||||
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
|
||||
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||
|
||||
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
||||
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
# If the user did not use the arguments to specify the items to instantiate,
|
||||
# then the envvar interface is used. Set only those that are not.
|
||||
# We use the long form for the default assignment because of an extremely
|
||||
# bizarre bug on SunOS 4.1.3.
|
||||
if $ac_need_defaults; then
|
||||
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
||||
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
|
||||
fi
|
||||
|
||||
# Have a temporary directory for convenience. Make it in the build tree
|
||||
# simply because there is no reason against having it here, and in addition,
|
||||
# creating and moving files from /tmp can sometimes cause problems.
|
||||
# Hook for its removal unless debugging.
|
||||
# Note that there is a small window in which the directory will not be cleaned:
|
||||
# after its creation but before its name has been assigned to `$tmp'.
|
||||
$debug ||
|
||||
{
|
||||
tmp=
|
||||
trap 'exit_status=$?
|
||||
{ test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
|
||||
' 0
|
||||
trap '{ (exit 1); exit 1; }' 1 2 13 15
|
||||
}
|
||||
# Create a (secure) tmp directory for tmp files.
|
||||
|
||||
{
|
||||
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
|
||||
test -n "$tmp" && test -d "$tmp"
|
||||
} ||
|
||||
{
|
||||
tmp=./conf$$-$RANDOM
|
||||
(umask 077 && mkdir "$tmp")
|
||||
} ||
|
||||
{
|
||||
echo "$me: cannot create a temporary directory in ." >&2
|
||||
{ (exit 1); exit 1; }
|
||||
}
|
||||
|
||||
#
|
||||
# Set up the sed scripts for CONFIG_FILES section.
|
||||
#
|
||||
|
||||
# No need to generate the scripts if there are no CONFIG_FILES.
|
||||
# This happens for instance when ./config.status config.h
|
||||
if test -n "$CONFIG_FILES"; then
|
||||
|
||||
cat >"$tmp/subs-1.sed" <<\CEOF
|
||||
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
|
||||
s,@SHELL@,|#_!!_#|/bin/sh,g
|
||||
s,@PATH_SEPARATOR@,|#_!!_#|:,g
|
||||
s,@PACKAGE_NAME@,|#_!!_#|,g
|
||||
s,@PACKAGE_TARNAME@,|#_!!_#|,g
|
||||
s,@PACKAGE_VERSION@,|#_!!_#|,g
|
||||
s,@PACKAGE_STRING@,|#_!!_#|,g
|
||||
s,@PACKAGE_BUGREPORT@,|#_!!_#|,g
|
||||
s,@exec_prefix@,|#_!!_#|${prefix},g
|
||||
s,@prefix@,|#_!!_#|/usr/local,g
|
||||
s,@program_transform_name@,|#_!!_#|s\,x\,x\,,g
|
||||
s,@bindir@,|#_!!_#|${exec_prefix}/bin,g
|
||||
s,@sbindir@,|#_!!_#|${exec_prefix}/sbin,g
|
||||
s,@libexecdir@,|#_!!_#|${exec_prefix}/libexec,g
|
||||
s,@datarootdir@,|#_!!_#|${prefix}/share,g
|
||||
s,@datadir@,|#_!!_#|${datarootdir},g
|
||||
s,@sysconfdir@,|#_!!_#|${prefix}/etc,g
|
||||
s,@sharedstatedir@,|#_!!_#|${prefix}/com,g
|
||||
s,@localstatedir@,|#_!!_#|${prefix}/var,g
|
||||
s,@includedir@,|#_!!_#|${prefix}/include,g
|
||||
s,@oldincludedir@,|#_!!_#|/usr/include,g
|
||||
s,@docdir@,|#_!!_#|${datarootdir}/doc/${PACKAGE},g
|
||||
s,@infodir@,|#_!!_#|${datarootdir}/info,g
|
||||
s,@htmldir@,|#_!!_#|${docdir},g
|
||||
s,@dvidir@,|#_!!_#|${docdir},g
|
||||
s,@pdfdir@,|#_!!_#|${docdir},g
|
||||
s,@psdir@,|#_!!_#|${docdir},g
|
||||
s,@libdir@,|#_!!_#|${exec_prefix}/lib,g
|
||||
s,@localedir@,|#_!!_#|${datarootdir}/locale,g
|
||||
s,@mandir@,|#_!!_#|${datarootdir}/man,g
|
||||
s,@DEFS@,|#_!!_#|-DHAVE_CONFIG_H,g
|
||||
s,@ECHO_C@,|#_!!_#|\\c,g
|
||||
s,@ECHO_N@,|#_!!_#|,g
|
||||
s,@ECHO_T@,|#_!!_#|,g
|
||||
s,@LIBS@,|#_!!_#|,g
|
||||
s,@build_alias@,|#_!!_#|,g
|
||||
s,@host_alias@,|#_!!_#|,g
|
||||
s,@target_alias@,|#_!!_#|,g
|
||||
s,@CC@,|#_!!_#|gcc,g
|
||||
s,@CFLAGS@,|#_!!_#|-g -O2 -O3 -funroll-all-loops,g
|
||||
s,@LDFLAGS@,|#_!!_#|,g
|
||||
s,@CPPFLAGS@,|#_!!_#|,g
|
||||
s,@ac_ct_CC@,|#_!!_#|gcc,g
|
||||
s,@EXEEXT@,|#_!!_#|,g
|
||||
s,@OBJEXT@,|#_!!_#|o,g
|
||||
s,@RANLIB@,|#_!!_#|ranlib,g
|
||||
s,@INSTALL_PROGRAM@,|#_!!_#|${INSTALL},g
|
||||
s,@INSTALL_SCRIPT@,|#_!!_#|${INSTALL},g
|
||||
s,@INSTALL_DATA@,|#_!!_#|${INSTALL} -m 644,g
|
||||
s,@CPP@,|#_!!_#|gcc -E,g
|
||||
s,@GREP@,|#_!!_#|/usr/bin/grep,g
|
||||
s,@EGREP@,|#_!!_#|/usr/bin/grep -E,g
|
||||
s,@LIBOBJS@,|#_!!_#|,g
|
||||
s,@LTLIBOBJS@,|#_!!_#|,g
|
||||
:end
|
||||
s/|#_!!_#|//g
|
||||
CEOF
|
||||
fi # test -n "$CONFIG_FILES"
|
||||
|
||||
|
||||
for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS
|
||||
do
|
||||
case $ac_tag in
|
||||
:[FHLC]) ac_mode=$ac_tag; continue;;
|
||||
esac
|
||||
case $ac_mode$ac_tag in
|
||||
:[FHL]*:*);;
|
||||
:L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
|
||||
echo "$as_me: error: Invalid tag $ac_tag." >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
:[FH]-) ac_tag=-:-;;
|
||||
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
|
||||
esac
|
||||
ac_save_IFS=$IFS
|
||||
IFS=:
|
||||
set x $ac_tag
|
||||
IFS=$ac_save_IFS
|
||||
shift
|
||||
ac_file=$1
|
||||
shift
|
||||
|
||||
case $ac_mode in
|
||||
:L) ac_source=$1;;
|
||||
:[FH])
|
||||
ac_file_inputs=
|
||||
for ac_f
|
||||
do
|
||||
case $ac_f in
|
||||
-) ac_f="$tmp/stdin";;
|
||||
*) # Look for the file first in the build tree, then in the source tree
|
||||
# (if the path is not absolute). The absolute path cannot be DOS-style,
|
||||
# because $ac_f cannot contain `:'.
|
||||
test -f "$ac_f" ||
|
||||
case $ac_f in
|
||||
[\\/$]*) false;;
|
||||
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
|
||||
esac ||
|
||||
{ { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
|
||||
echo "$as_me: error: cannot find input file: $ac_f" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
esac
|
||||
ac_file_inputs="$ac_file_inputs $ac_f"
|
||||
done
|
||||
|
||||
# Let's still pretend it is `configure' which instantiates (i.e., don't
|
||||
# use $as_me), people would be surprised to read:
|
||||
# /* config.h. Generated by config.status. */
|
||||
configure_input="Generated from "`IFS=:
|
||||
echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
|
||||
if test x"$ac_file" != x-; then
|
||||
configure_input="$ac_file. $configure_input"
|
||||
{ echo "$as_me:$LINENO: creating $ac_file" >&5
|
||||
echo "$as_me: creating $ac_file" >&6;}
|
||||
fi
|
||||
|
||||
case $ac_tag in
|
||||
*:-:* | *:-) cat >"$tmp/stdin";;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
ac_dir=`$as_dirname -- "$ac_file" ||
|
||||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$ac_file" : 'X\(//\)[^/]' \| \
|
||||
X"$ac_file" : 'X\(//\)$' \| \
|
||||
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$ac_file" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'`
|
||||
{ as_dir="$ac_dir"
|
||||
case $as_dir in #(
|
||||
-*) as_dir=./$as_dir;;
|
||||
esac
|
||||
test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
|
||||
as_dirs=
|
||||
while :; do
|
||||
case $as_dir in #(
|
||||
*\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
|
||||
*) as_qdir=$as_dir;;
|
||||
esac
|
||||
as_dirs="'$as_qdir' $as_dirs"
|
||||
as_dir=`$as_dirname -- "$as_dir" ||
|
||||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$as_dir" : 'X\(//\)[^/]' \| \
|
||||
X"$as_dir" : 'X\(//\)$' \| \
|
||||
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$as_dir" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'`
|
||||
test -d "$as_dir" && break
|
||||
done
|
||||
test -z "$as_dirs" || eval "mkdir $as_dirs"
|
||||
} || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
|
||||
echo "$as_me: error: cannot create directory $as_dir" >&2;}
|
||||
{ (exit 1); exit 1; }; }; }
|
||||
ac_builddir=.
|
||||
|
||||
case "$ac_dir" in
|
||||
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
|
||||
*)
|
||||
ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
|
||||
# A ".." for each directory in $ac_dir_suffix.
|
||||
ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
|
||||
case $ac_top_builddir_sub in
|
||||
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
|
||||
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
|
||||
esac ;;
|
||||
esac
|
||||
ac_abs_top_builddir=$ac_pwd
|
||||
ac_abs_builddir=$ac_pwd$ac_dir_suffix
|
||||
# for backward compatibility:
|
||||
ac_top_builddir=$ac_top_build_prefix
|
||||
|
||||
case $srcdir in
|
||||
.) # We are building in place.
|
||||
ac_srcdir=.
|
||||
ac_top_srcdir=$ac_top_builddir_sub
|
||||
ac_abs_top_srcdir=$ac_pwd ;;
|
||||
[\\/]* | ?:[\\/]* ) # Absolute name.
|
||||
ac_srcdir=$srcdir$ac_dir_suffix;
|
||||
ac_top_srcdir=$srcdir
|
||||
ac_abs_top_srcdir=$srcdir ;;
|
||||
*) # Relative name.
|
||||
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
|
||||
ac_top_srcdir=$ac_top_build_prefix$srcdir
|
||||
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
|
||||
esac
|
||||
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
|
||||
|
||||
|
||||
case $ac_mode in
|
||||
:F)
|
||||
#
|
||||
# CONFIG_FILE
|
||||
#
|
||||
|
||||
case $INSTALL in
|
||||
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
|
||||
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
|
||||
esac
|
||||
# If the template does not know about datarootdir, expand it.
|
||||
# FIXME: This hack should be removed a few years after 2.60.
|
||||
ac_datarootdir_hack=; ac_datarootdir_seen=
|
||||
|
||||
case `sed -n '/datarootdir/ {
|
||||
p
|
||||
q
|
||||
}
|
||||
/@datadir@/p
|
||||
/@docdir@/p
|
||||
/@infodir@/p
|
||||
/@localedir@/p
|
||||
/@mandir@/p
|
||||
' $ac_file_inputs` in
|
||||
*datarootdir*) ac_datarootdir_seen=yes;;
|
||||
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
|
||||
echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
|
||||
ac_datarootdir_hack='
|
||||
s&@datadir@&${datarootdir}&g
|
||||
s&@docdir@&${datarootdir}/doc/${PACKAGE}&g
|
||||
s&@infodir@&${datarootdir}/info&g
|
||||
s&@localedir@&${datarootdir}/locale&g
|
||||
s&@mandir@&${datarootdir}/man&g
|
||||
s&\${datarootdir}&${prefix}/share&g' ;;
|
||||
esac
|
||||
sed "/^[ ]*VPATH[ ]*=/{
|
||||
s/:*\$(srcdir):*/:/
|
||||
s/:*\${srcdir}:*/:/
|
||||
s/:*@srcdir@:*/:/
|
||||
s/^\([^=]*=[ ]*\):*/\1/
|
||||
s/:*$//
|
||||
s/^[^=]*=[ ]*$//
|
||||
}
|
||||
|
||||
:t
|
||||
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
|
||||
s&@configure_input@&$configure_input&;t t
|
||||
s&@top_builddir@&$ac_top_builddir_sub&;t t
|
||||
s&@srcdir@&$ac_srcdir&;t t
|
||||
s&@abs_srcdir@&$ac_abs_srcdir&;t t
|
||||
s&@top_srcdir@&$ac_top_srcdir&;t t
|
||||
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
|
||||
s&@builddir@&$ac_builddir&;t t
|
||||
s&@abs_builddir@&$ac_abs_builddir&;t t
|
||||
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
|
||||
s&@INSTALL@&$ac_INSTALL&;t t
|
||||
$ac_datarootdir_hack
|
||||
" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
|
||||
|
||||
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
|
||||
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
|
||||
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
|
||||
{ echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
|
||||
which seems to be undefined. Please make sure it is defined." >&5
|
||||
echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
|
||||
which seems to be undefined. Please make sure it is defined." >&2;}
|
||||
|
||||
rm -f "$tmp/stdin"
|
||||
case $ac_file in
|
||||
-) cat "$tmp/out"; rm -f "$tmp/out";;
|
||||
*) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
|
||||
esac
|
||||
;;
|
||||
:H)
|
||||
#
|
||||
# CONFIG_HEADER
|
||||
#
|
||||
# First, check the format of the line:
|
||||
cat >"$tmp/defines.sed" <<\CEOF
|
||||
/^[ ]*#[ ]*undef[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[ ]*$/b def
|
||||
/^[ ]*#[ ]*define[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[( ]/b def
|
||||
b
|
||||
:def
|
||||
s/$/ /
|
||||
s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_NAME\)[ (].*,\1define\2 "" ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_TARNAME\)[ (].*,\1define\2 "" ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_VERSION\)[ (].*,\1define\2 "" ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_STRING\)[ (].*,\1define\2 "" ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_BUGREPORT\)[ (].*,\1define\2 "" ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*_GNU_SOURCE\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*STDC_HEADERS\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_SYS_TYPES_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_SYS_STAT_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_STDLIB_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRING_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_MEMORY_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRINGS_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_INTTYPES_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_STDINT_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_UNISTD_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_SHORT\)[ (].*,\1define\2 2 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_INT\)[ (].*,\1define\2 4 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_LONG\)[ (].*,\1define\2 8 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_GETOPT_H\)[ (].*,\1define\2 1 ,
|
||||
s,^\([ #]*\)[^ ]*\([ ]*HAVE_GETOPT_LONG\)[ (].*,\1define\2 1 ,
|
||||
s/ $//
|
||||
s,^[ #]*u.*,/* & */,
|
||||
CEOF
|
||||
sed -f "$tmp/defines.sed" $ac_file_inputs >"$tmp/out1"
|
||||
ac_result="$tmp/out1"
|
||||
if test x"$ac_file" != x-; then
|
||||
echo "/* $configure_input */" >"$tmp/config.h"
|
||||
cat "$ac_result" >>"$tmp/config.h"
|
||||
if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
|
||||
{ echo "$as_me:$LINENO: $ac_file is unchanged" >&5
|
||||
echo "$as_me: $ac_file is unchanged" >&6;}
|
||||
else
|
||||
rm -f $ac_file
|
||||
mv "$tmp/config.h" $ac_file
|
||||
fi
|
||||
else
|
||||
echo "/* $configure_input */"
|
||||
cat "$ac_result"
|
||||
fi
|
||||
rm -f "$tmp/out12"
|
||||
;;
|
||||
|
||||
|
||||
esac
|
||||
|
||||
done # for ac_tag
|
||||
|
||||
|
||||
{ (exit 0); exit 0; }
|
7871
RecastDemo/Contrib/liblzf-3.5/configure
vendored
Executable file
7871
RecastDemo/Contrib/liblzf-3.5/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
25
RecastDemo/Contrib/liblzf-3.5/configure.ac
Normal file
25
RecastDemo/Contrib/liblzf-3.5/configure.ac
Normal file
@ -0,0 +1,25 @@
|
||||
AC_INIT
|
||||
AC_CONFIG_SRCDIR([lzfP.h])
|
||||
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
AC_GNU_SOURCE
|
||||
AC_SYS_LARGEFILE
|
||||
AC_PROG_CC
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_INSTALL
|
||||
AC_HEADER_STDC
|
||||
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_CHECK_HEADERS(getopt.h)
|
||||
AC_CHECK_FUNCS(getopt_long)
|
||||
|
||||
if test "$GCC" = yes; then
|
||||
CFLAGS="$CFLAGS -O3 -funroll-all-loops"
|
||||
else
|
||||
AC_MSG_RESULT(no gcc)
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
65
RecastDemo/Contrib/liblzf-3.5/crc32.h
Normal file
65
RecastDemo/Contrib/liblzf-3.5/crc32.h
Normal file
@ -0,0 +1,65 @@
|
||||
#ifndef CRC32_H
|
||||
#define CRC32_H
|
||||
|
||||
/* crc32 0xdebb20e3 table and supplementary functions. */
|
||||
|
||||
static const u32 crc_32_tab[] =
|
||||
{
|
||||
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
|
||||
0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
|
||||
0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
|
||||
0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
|
||||
0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
|
||||
0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
|
||||
0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
|
||||
0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
|
||||
0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
|
||||
0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
|
||||
0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
|
||||
0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
|
||||
0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
|
||||
0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
|
||||
0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
|
||||
0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
|
||||
0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
|
||||
0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
|
||||
0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
|
||||
0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
|
||||
0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
|
||||
0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
|
||||
0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
|
||||
0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
|
||||
0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
|
||||
0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
|
||||
0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
|
||||
0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
|
||||
0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
|
||||
0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
|
||||
0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
|
||||
0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
|
||||
0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
|
||||
0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
|
||||
0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
|
||||
0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
|
||||
0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
|
||||
0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
|
||||
0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
|
||||
0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
|
||||
0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
|
||||
0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
|
||||
0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
|
||||
0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
|
||||
0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
|
||||
0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
|
||||
0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
|
||||
0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
|
||||
0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
|
||||
0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
|
||||
0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
|
||||
0x2d02ef8dL
|
||||
};
|
||||
|
||||
#define crc32(crc,byte) (crc_32_tab[(u8)(crc) ^ (u8)(byte)] ^ ((crc) >> 8))
|
||||
|
||||
#endif
|
||||
|
344
RecastDemo/Contrib/liblzf-3.5/cs/CLZF.cs
Normal file
344
RecastDemo/Contrib/liblzf-3.5/cs/CLZF.cs
Normal file
@ -0,0 +1,344 @@
|
||||
/*
|
||||
* Copyright (c) 2005 Oren J. Maurice <oymaurice@hazorea.org.il>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License version 2 (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of the above. If you wish to
|
||||
* allow the use of your version of this file only under the terms of the
|
||||
* GPL and not to allow others to use your version of this file under the
|
||||
* BSD license, indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by the GPL. If
|
||||
* you do not delete the provisions above, a recipient may use your version
|
||||
* of this file under either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace LZF.NET
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Summary description for CLZF.
|
||||
/// </summary>
|
||||
public class CLZF
|
||||
{
|
||||
// CRC32 data & function
|
||||
UInt32 []crc_32_tab = new UInt32[256]
|
||||
{
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
|
||||
0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
|
||||
0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
|
||||
0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
|
||||
0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
|
||||
0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
|
||||
0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
|
||||
0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
|
||||
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
|
||||
0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
|
||||
0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
|
||||
0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
|
||||
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
|
||||
0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
|
||||
0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
|
||||
0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
|
||||
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
|
||||
0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
|
||||
0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
|
||||
0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
|
||||
0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
|
||||
0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
|
||||
0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
|
||||
0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
|
||||
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
|
||||
0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
|
||||
0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
|
||||
0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
|
||||
0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
|
||||
0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
|
||||
0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
|
||||
0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
|
||||
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
|
||||
0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
|
||||
0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
|
||||
0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
|
||||
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
|
||||
0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
|
||||
0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
|
||||
0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
|
||||
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
|
||||
0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
|
||||
0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
|
||||
0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
|
||||
0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
|
||||
0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
|
||||
0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
|
||||
0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
|
||||
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
|
||||
0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
|
||||
0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
|
||||
0x2d02ef8d
|
||||
};
|
||||
|
||||
public UInt32 crc32(UInt32 OldCRC,byte NewData)
|
||||
{
|
||||
return crc_32_tab[(OldCRC & 0xff) ^ NewData] ^ (OldCRC >> 8);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// LZF Compressor
|
||||
/// </summary>
|
||||
|
||||
UInt32 HLOG=14;
|
||||
UInt32 HSIZE=(1<<14);
|
||||
|
||||
/*
|
||||
* don't play with this unless you benchmark!
|
||||
* decompression is not dependent on the hash function
|
||||
* the hashing function might seem strange, just believe me
|
||||
* it works ;)
|
||||
*/
|
||||
UInt32 MAX_LIT=(1 << 5);
|
||||
UInt32 MAX_OFF=(1 << 13);
|
||||
UInt32 MAX_REF=((1 << 8) + (1 << 3));
|
||||
|
||||
UInt32 FRST(byte[] Array,UInt32 ptr)
|
||||
{
|
||||
return (UInt32)(((Array[ptr]) << 8) | Array[ptr+1]);
|
||||
}
|
||||
|
||||
UInt32 NEXT(UInt32 v,byte[] Array,UInt32 ptr)
|
||||
{
|
||||
return ((v) << 8) | Array[ptr+2];
|
||||
}
|
||||
|
||||
UInt32 IDX(UInt32 h)
|
||||
{
|
||||
return ((h ^ (h << 5)) >> (int)(((3*8 - HLOG)) - h*5) & (HSIZE - 1));
|
||||
}
|
||||
|
||||
/*
|
||||
* compressed format
|
||||
*
|
||||
* 000LLLLL <L+1> ; literal
|
||||
* LLLOOOOO oooooooo ; backref L
|
||||
* 111OOOOO LLLLLLLL oooooooo ; backref L+7
|
||||
*
|
||||
*/
|
||||
|
||||
public int lzf_compress (byte[] in_data, int in_len,byte[] out_data, int out_len)
|
||||
{
|
||||
int c;
|
||||
long []htab=new long[1<<14];
|
||||
for (c=0;c<1<<14;c++)
|
||||
{
|
||||
htab[c]=0;
|
||||
}
|
||||
|
||||
long hslot;
|
||||
UInt32 iidx = 0;
|
||||
UInt32 oidx = 0;
|
||||
//byte *in_end = ip + in_len;
|
||||
//byte *out_end = op + out_len;
|
||||
long reference;
|
||||
|
||||
UInt32 hval = FRST (in_data,iidx);
|
||||
long off;
|
||||
int lit = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (iidx < in_len - 2)
|
||||
{
|
||||
hval = NEXT (hval, in_data,iidx);
|
||||
hslot = IDX (hval);
|
||||
reference = htab[hslot];
|
||||
htab[hslot] = (long)iidx;
|
||||
|
||||
if ((off = iidx - reference - 1) < MAX_OFF
|
||||
&& iidx + 4 < in_len
|
||||
&& reference > 0
|
||||
&& in_data[reference+0] == in_data[iidx+0]
|
||||
&& in_data[reference+1] == in_data[iidx+1]
|
||||
&& in_data[reference+2] == in_data[iidx+2]
|
||||
)
|
||||
{
|
||||
/* match found at *reference++ */
|
||||
UInt32 len = 2;
|
||||
UInt32 maxlen = (UInt32)in_len - iidx - len;
|
||||
maxlen = maxlen > MAX_REF ? MAX_REF : maxlen;
|
||||
|
||||
if (oidx + lit + 1 + 3 >= out_len)
|
||||
return 0;
|
||||
|
||||
do
|
||||
len++;
|
||||
while (len < maxlen && in_data[reference+len] == in_data[iidx+len]);
|
||||
|
||||
if (lit!=0)
|
||||
{
|
||||
out_data[oidx++] = (byte)(lit - 1);
|
||||
lit = -lit;
|
||||
do
|
||||
out_data[oidx++] = in_data[iidx+lit];
|
||||
while ((++lit)!=0);
|
||||
}
|
||||
|
||||
len -= 2;
|
||||
iidx++;
|
||||
|
||||
if (len < 7)
|
||||
{
|
||||
out_data[oidx++] = (byte)((off >> 8) + (len << 5));
|
||||
}
|
||||
else
|
||||
{
|
||||
out_data[oidx++] = (byte)((off >> 8) + ( 7 << 5));
|
||||
out_data[oidx++] = (byte)(len - 7);
|
||||
}
|
||||
|
||||
out_data[oidx++] = (byte)off;
|
||||
|
||||
iidx += len-1;
|
||||
hval = FRST (in_data,iidx);
|
||||
|
||||
hval = NEXT (hval,in_data, iidx);
|
||||
htab[IDX (hval)] = iidx;
|
||||
iidx++;
|
||||
|
||||
hval = NEXT (hval, in_data,iidx);
|
||||
htab[IDX (hval)] = iidx;
|
||||
iidx++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (iidx == in_len)
|
||||
break;
|
||||
|
||||
/* one more literal byte we must copy */
|
||||
lit++;
|
||||
iidx++;
|
||||
|
||||
if (lit == MAX_LIT)
|
||||
{
|
||||
if (oidx + 1 + MAX_LIT >= out_len)
|
||||
return 0;
|
||||
|
||||
out_data[oidx++] = (byte)(MAX_LIT - 1);
|
||||
lit = -lit;
|
||||
do
|
||||
out_data[oidx++] = in_data[iidx+lit];
|
||||
while ((++lit)!=0);
|
||||
}
|
||||
}
|
||||
|
||||
if (lit!=0)
|
||||
{
|
||||
if (oidx + lit + 1 >= out_len)
|
||||
return 0;
|
||||
|
||||
out_data[oidx++] = (byte)(lit - 1);
|
||||
lit = -lit;
|
||||
do
|
||||
out_data[oidx++] = in_data[iidx+lit];
|
||||
while ((++lit)!=0);
|
||||
}
|
||||
|
||||
return (int)oidx;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LZF Decompressor
|
||||
/// </summary>
|
||||
public int lzf_decompress ( byte[] in_data, int in_len, byte[] out_data, int out_len)
|
||||
{
|
||||
UInt32 iidx=0;
|
||||
UInt32 oidx=0;
|
||||
|
||||
do
|
||||
{
|
||||
UInt32 ctrl = in_data[iidx++];
|
||||
|
||||
if (ctrl < (1 << 5)) /* literal run */
|
||||
{
|
||||
ctrl++;
|
||||
|
||||
if (oidx + ctrl > out_len)
|
||||
{
|
||||
//SET_ERRNO (E2BIG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
do
|
||||
out_data[oidx++] = in_data[iidx++];
|
||||
while ((--ctrl)!=0);
|
||||
}
|
||||
else /* back reference */
|
||||
{
|
||||
UInt32 len = ctrl >> 5;
|
||||
|
||||
int reference = (int)(oidx - ((ctrl & 0x1f) << 8) - 1);
|
||||
|
||||
if (len == 7)
|
||||
len += in_data[iidx++];
|
||||
|
||||
reference -= in_data[iidx++];
|
||||
|
||||
if (oidx + len + 2 > out_len)
|
||||
{
|
||||
//SET_ERRNO (E2BIG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (reference < 0)
|
||||
{
|
||||
//SET_ERRNO (EINVAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
out_data[oidx++]=out_data[reference++];
|
||||
out_data[oidx++]=out_data[reference++];
|
||||
|
||||
do
|
||||
out_data[oidx++]=out_data[reference++];
|
||||
while ((--len)!=0);
|
||||
}
|
||||
}
|
||||
while (iidx < in_len);
|
||||
|
||||
return (int)oidx;
|
||||
}
|
||||
|
||||
public CLZF()
|
||||
{
|
||||
//
|
||||
// TODO: Add ructor logic here
|
||||
//
|
||||
}
|
||||
}
|
||||
}
|
||||
|
7
RecastDemo/Contrib/liblzf-3.5/cs/README
Normal file
7
RecastDemo/Contrib/liblzf-3.5/cs/README
Normal file
@ -0,0 +1,7 @@
|
||||
The C♯ implementation of the LZF en-/decoder functions in this
|
||||
directory was written (and is maintained) by
|
||||
|
||||
Oren J. Maurice <oymaurice@hazorea.org.il>.
|
||||
|
||||
If you have any questions or improvements, you should contact the
|
||||
original author (and maybe CC me, Marc Lehmann <liblzf@schmorp.de>).
|
251
RecastDemo/Contrib/liblzf-3.5/install-sh
Executable file
251
RecastDemo/Contrib/liblzf-3.5/install-sh
Executable file
@ -0,0 +1,251 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
chmodcmd=""
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
537
RecastDemo/Contrib/liblzf-3.5/lzf.c
Normal file
537
RecastDemo/Contrib/liblzf-3.5/lzf.c
Normal file
@ -0,0 +1,537 @@
|
||||
/*
|
||||
* Copyright (c) 2006 Stefan Traby <stefan@hello-penguin.com>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License ("GPL") version 2 or any later version,
|
||||
* in which case the provisions of the GPL are applicable instead of
|
||||
* the above. If you wish to allow the use of your version of this file
|
||||
* only under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the BSD license, indicate your decision
|
||||
* by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete the
|
||||
* provisions above, a recipient may use your version of this file under
|
||||
* either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include "lzf.h"
|
||||
|
||||
#ifdef HAVE_GETOPT_H
|
||||
# include <getopt.h>
|
||||
#endif
|
||||
|
||||
#define BLOCKSIZE (1024 * 64 - 1)
|
||||
#define MAX_BLOCKSIZE BLOCKSIZE
|
||||
|
||||
typedef unsigned char u8;
|
||||
|
||||
static off_t nr_read, nr_written;
|
||||
|
||||
static const char *imagename;
|
||||
static enum { compress, uncompress, lzcat } mode = compress;
|
||||
static int verbose = 0;
|
||||
static int force = 0;
|
||||
static long blocksize = BLOCKSIZE;
|
||||
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
|
||||
struct option longopts[] = {
|
||||
{"compress", 0, 0, 'c'},
|
||||
{"decompress", 0, 0, 'd'},
|
||||
{"uncompress", 0, 0, 'd'},
|
||||
{"force", 0, 0, 'f'},
|
||||
{"help", 0, 0, 'h'},
|
||||
{"verbose", 0, 0, 'v'},
|
||||
{"blocksize", 1, 0, 'b'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
static const char *opt =
|
||||
"-c --compress compress\n"
|
||||
"-d --decompress decompress\n"
|
||||
"-f --force force overwrite of output file\n"
|
||||
"-h --help give this help\n" "-v --verbose verbose mode\n" "-b # --blocksize # set blocksize\n" "\n";
|
||||
|
||||
#else
|
||||
|
||||
static const char *opt =
|
||||
"-c compress\n"
|
||||
"-d decompress\n"
|
||||
"-f force overwrite of output file\n"
|
||||
"-h give this help\n"
|
||||
"-v verbose mode\n"
|
||||
"-b # set blocksize\n"
|
||||
"\n";
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
usage (int rc)
|
||||
{
|
||||
fprintf (stderr, "\n"
|
||||
"lzf, a very lightweight compression/decompression utility written by Stefan Traby.\n"
|
||||
"uses liblzf written by Marc Lehmann <schmorp@schmorp.de> You can find more info at\n"
|
||||
"http://liblzf.plan9.de/\n"
|
||||
"\n"
|
||||
"usage: lzf [-dufhvb] [file ...]\n"
|
||||
" unlzf [file ...]\n"
|
||||
" lzcat [file ...]\n"
|
||||
"\n%s",
|
||||
opt);
|
||||
|
||||
exit (rc);
|
||||
}
|
||||
|
||||
static inline ssize_t
|
||||
rread (int fd, void *buf, size_t len)
|
||||
{
|
||||
ssize_t rc = 0, offset = 0;
|
||||
char *p = buf;
|
||||
|
||||
while (len && (rc = read (fd, &p[offset], len)) > 0)
|
||||
{
|
||||
offset += rc;
|
||||
len -= rc;
|
||||
}
|
||||
|
||||
nr_read += offset;
|
||||
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
/* returns 0 if all written else -1 */
|
||||
static inline ssize_t
|
||||
wwrite (int fd, void *buf, size_t len)
|
||||
{
|
||||
ssize_t rc;
|
||||
char *b = buf;
|
||||
size_t l = len;
|
||||
|
||||
while (l)
|
||||
{
|
||||
rc = write (fd, b, l);
|
||||
if (rc < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: write error: ", imagename);
|
||||
perror ("");
|
||||
return -1;
|
||||
}
|
||||
|
||||
l -= rc;
|
||||
b += rc;
|
||||
}
|
||||
|
||||
nr_written += len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Anatomy: an lzf file consists of any number of blocks in the following format:
|
||||
*
|
||||
* \x00 EOF (optional)
|
||||
* "ZV\0" 2-byte-usize <uncompressed data>
|
||||
* "ZV\1" 2-byte-csize 2-byte-usize <compressed data>
|
||||
* "ZV\2" 4-byte-crc32-0xdebb20e3 (NYI)
|
||||
*/
|
||||
|
||||
|
||||
#define TYPE0_HDR_SIZE 5
|
||||
#define TYPE1_HDR_SIZE 7
|
||||
#define MAX_HDR_SIZE 7
|
||||
#define MIN_HDR_SIZE 5
|
||||
|
||||
static int
|
||||
compress_fd (int from, int to)
|
||||
{
|
||||
ssize_t us, cs, len;
|
||||
u8 buf1[MAX_BLOCKSIZE + MAX_HDR_SIZE + 16];
|
||||
u8 buf2[MAX_BLOCKSIZE + MAX_HDR_SIZE + 16];
|
||||
u8 *header;
|
||||
|
||||
nr_read = nr_written = 0;
|
||||
while ((us = rread (from, &buf1[MAX_HDR_SIZE], blocksize)) > 0)
|
||||
{
|
||||
cs = lzf_compress (&buf1[MAX_HDR_SIZE], us, &buf2[MAX_HDR_SIZE], us > 4 ? us - 4 : us);
|
||||
if (cs)
|
||||
{
|
||||
header = &buf2[MAX_HDR_SIZE - TYPE1_HDR_SIZE];
|
||||
header[0] = 'Z';
|
||||
header[1] = 'V';
|
||||
header[2] = 1;
|
||||
header[3] = cs >> 8;
|
||||
header[4] = cs & 0xff;
|
||||
header[5] = us >> 8;
|
||||
header[6] = us & 0xff;
|
||||
len = cs + TYPE1_HDR_SIZE;
|
||||
}
|
||||
else
|
||||
{ // write uncompressed
|
||||
header = &buf1[MAX_HDR_SIZE - TYPE0_HDR_SIZE];
|
||||
header[0] = 'Z';
|
||||
header[1] = 'V';
|
||||
header[2] = 0;
|
||||
header[3] = us >> 8;
|
||||
header[4] = us & 0xff;
|
||||
len = us + TYPE0_HDR_SIZE;
|
||||
}
|
||||
|
||||
if (wwrite (to, header, len) == -1)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
uncompress_fd (int from, int to)
|
||||
{
|
||||
u8 header[MAX_HDR_SIZE];
|
||||
u8 buf1[MAX_BLOCKSIZE + MAX_HDR_SIZE + 16];
|
||||
u8 buf2[MAX_BLOCKSIZE + MAX_HDR_SIZE + 16];
|
||||
u8 *p;
|
||||
int l, rd;
|
||||
ssize_t rc, cs, us, bytes, over = 0;
|
||||
|
||||
nr_read = nr_written = 0;
|
||||
while (1)
|
||||
{
|
||||
rc = rread (from, header + over, MAX_HDR_SIZE - over);
|
||||
if (rc < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: read error: ", imagename);
|
||||
perror ("");
|
||||
return -1;
|
||||
}
|
||||
|
||||
rc += over;
|
||||
over = 0;
|
||||
if (!rc || header[0] == 0)
|
||||
return 0;
|
||||
|
||||
if (rc < MIN_HDR_SIZE || header[0] != 'Z' || header[1] != 'V')
|
||||
{
|
||||
fprintf (stderr, "%s: invalid data stream - magic not found or short header\n", imagename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (header[2])
|
||||
{
|
||||
case 0:
|
||||
cs = -1;
|
||||
us = (header[3] << 8) | header[4];
|
||||
p = &header[TYPE0_HDR_SIZE];
|
||||
break;
|
||||
case 1:
|
||||
if (rc < TYPE1_HDR_SIZE)
|
||||
{
|
||||
goto short_read;
|
||||
}
|
||||
cs = (header[3] << 8) | header[4];
|
||||
us = (header[5] << 8) | header[6];
|
||||
p = &header[TYPE1_HDR_SIZE];
|
||||
break;
|
||||
default:
|
||||
fprintf (stderr, "%s: unknown blocktype\n", imagename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
bytes = cs == -1 ? us : cs;
|
||||
l = &header[rc] - p;
|
||||
|
||||
if (l > 0)
|
||||
memcpy (buf1, p, l);
|
||||
|
||||
if (l > bytes)
|
||||
{
|
||||
over = l - bytes;
|
||||
memmove (header, &p[bytes], over);
|
||||
}
|
||||
|
||||
p = &buf1[l];
|
||||
rd = bytes - l;
|
||||
if (rd > 0)
|
||||
if ((rc = rread (from, p, rd)) != rd)
|
||||
goto short_read;
|
||||
|
||||
if (cs == -1)
|
||||
{
|
||||
if (wwrite (to, buf1, us))
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lzf_decompress (buf1, cs, buf2, us) != us)
|
||||
{
|
||||
fprintf (stderr, "%s: decompress: invalid stream - data corrupted\n", imagename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (wwrite (to, buf2, us))
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
short_read:
|
||||
fprintf (stderr, "%s: short data\n", imagename);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
open_out (const char *name)
|
||||
{
|
||||
int fd;
|
||||
int m = O_EXCL;
|
||||
|
||||
if (force)
|
||||
m = 0;
|
||||
|
||||
fd = open (name, O_CREAT | O_WRONLY | O_TRUNC | m, 600);
|
||||
#if defined(__MINGW32__)
|
||||
_setmode(fd, _O_BINARY);
|
||||
#endif
|
||||
return fd;
|
||||
}
|
||||
|
||||
static int
|
||||
compose_name (const char *fname, char *oname)
|
||||
{
|
||||
char *p;
|
||||
|
||||
if (mode == compress)
|
||||
{
|
||||
if (strlen (fname) > PATH_MAX - 4)
|
||||
{
|
||||
fprintf (stderr, "%s: %s.lzf: name too long", imagename, fname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
strcpy (oname, fname);
|
||||
strcat (oname, ".lzf");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strlen (fname) > PATH_MAX)
|
||||
{
|
||||
fprintf (stderr, "%s: %s: name too long\n", imagename, fname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
strcpy (oname, fname);
|
||||
p = &oname[strlen (oname)] - 4;
|
||||
if (p < oname || strcmp (p, ".lzf"))
|
||||
{
|
||||
fprintf (stderr, "%s: %s: unknown suffix\n", imagename, fname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
*p = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
run_file (const char *fname)
|
||||
{
|
||||
int fd, fd2;
|
||||
int rc;
|
||||
struct stat mystat;
|
||||
char oname[PATH_MAX + 1];
|
||||
|
||||
if (mode != lzcat)
|
||||
if (compose_name (fname, oname))
|
||||
return -1;
|
||||
|
||||
#if !defined(__MINGW32__)
|
||||
rc = lstat (fname, &mystat);
|
||||
#else
|
||||
rc = stat (fname, &mystat);
|
||||
#endif
|
||||
fd = open (fname, O_RDONLY);
|
||||
#if defined(__MINGW32__)
|
||||
_setmode(fd, _O_BINARY);
|
||||
#endif
|
||||
if (rc || fd == -1)
|
||||
{
|
||||
fprintf (stderr, "%s: %s: ", imagename, fname);
|
||||
perror ("");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!S_ISREG (mystat.st_mode))
|
||||
{
|
||||
fprintf (stderr, "%s: %s: not a regular file.\n", imagename, fname);
|
||||
close (fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mode == lzcat)
|
||||
{
|
||||
rc = uncompress_fd (fd, 1);
|
||||
close (fd);
|
||||
return rc;
|
||||
}
|
||||
|
||||
fd2 = open_out (oname);
|
||||
if (fd2 == -1)
|
||||
{
|
||||
fprintf (stderr, "%s: %s: ", imagename, oname);
|
||||
perror ("");
|
||||
close (fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mode == compress)
|
||||
{
|
||||
rc = compress_fd (fd, fd2);
|
||||
if (!rc && verbose)
|
||||
fprintf (stderr, "%s: %5.1f%% -- replaced with %s\n",
|
||||
fname, nr_read == 0 ? 0 : 100.0 - nr_written / ((double) nr_read / 100.0), oname);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = uncompress_fd (fd, fd2);
|
||||
if (!rc && verbose)
|
||||
fprintf (stderr, "%s: %5.1f%% -- replaced with %s\n",
|
||||
fname, nr_written == 0 ? 0 : 100.0 - nr_read / ((double) nr_written / 100.0), oname);
|
||||
}
|
||||
|
||||
#if !defined(__MINGW32__)
|
||||
fchmod (fd2, mystat.st_mode);
|
||||
#else
|
||||
chmod (oname, mystat.st_mode);
|
||||
#endif
|
||||
close (fd);
|
||||
close (fd2);
|
||||
|
||||
if (!rc)
|
||||
unlink (fname);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
char *p = argv[0];
|
||||
int optc;
|
||||
int rc = 0;
|
||||
|
||||
errno = 0;
|
||||
p = getenv ("LZF_BLOCKSIZE");
|
||||
if (p)
|
||||
{
|
||||
blocksize = strtoul (p, 0, 0);
|
||||
if (errno || !blocksize || blocksize > MAX_BLOCKSIZE)
|
||||
blocksize = BLOCKSIZE;
|
||||
}
|
||||
|
||||
p = strrchr (argv[0], '/');
|
||||
imagename = p ? ++p : argv[0];
|
||||
|
||||
if (!strncmp (imagename, "un", 2) || !strncmp (imagename, "de", 2))
|
||||
mode = uncompress;
|
||||
|
||||
if (strstr (imagename, "cat"))
|
||||
mode = lzcat;
|
||||
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
while ((optc = getopt_long (argc, argv, "cdfhvb:", longopts, 0)) != -1)
|
||||
#else
|
||||
while ((optc = getopt (argc, argv, "cdfhvb:")) != -1)
|
||||
#endif
|
||||
{
|
||||
switch (optc)
|
||||
{
|
||||
case 'c':
|
||||
mode = compress;
|
||||
break;
|
||||
case 'd':
|
||||
mode = uncompress;
|
||||
break;
|
||||
case 'f':
|
||||
force = 1;
|
||||
break;
|
||||
case 'h':
|
||||
usage (0);
|
||||
break;
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
case 'b':
|
||||
errno = 0;
|
||||
blocksize = strtoul (optarg, 0, 0);
|
||||
if (errno || !blocksize || blocksize > MAX_BLOCKSIZE)
|
||||
blocksize = BLOCKSIZE;
|
||||
break;
|
||||
default:
|
||||
usage (1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (optind == argc)
|
||||
{ // stdin stdout
|
||||
if (!force)
|
||||
{
|
||||
if ((mode == uncompress || mode == lzcat) && isatty (0))
|
||||
{
|
||||
fprintf (stderr, "%s: compressed data not read from a terminal. Use -f to force decompression.\n", imagename);
|
||||
exit (1);
|
||||
}
|
||||
if (mode == compress && isatty (1))
|
||||
{
|
||||
fprintf (stderr, "%s: compressed data not written to a terminal. Use -f to force compression.\n", imagename);
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (mode == compress)
|
||||
rc = compress_fd (0, 1);
|
||||
else
|
||||
rc = uncompress_fd (0, 1);
|
||||
|
||||
exit (rc ? 1 : 0);
|
||||
}
|
||||
|
||||
while (optind < argc)
|
||||
rc |= run_file (argv[optind++]);
|
||||
|
||||
exit (rc ? 1 : 0);
|
||||
}
|
||||
|
100
RecastDemo/Contrib/liblzf-3.5/lzf.h
Normal file
100
RecastDemo/Contrib/liblzf-3.5/lzf.h
Normal file
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License ("GPL") version 2 or any later version,
|
||||
* in which case the provisions of the GPL are applicable instead of
|
||||
* the above. If you wish to allow the use of your version of this file
|
||||
* only under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the BSD license, indicate your decision
|
||||
* by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete the
|
||||
* provisions above, a recipient may use your version of this file under
|
||||
* either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
#ifndef LZF_H
|
||||
#define LZF_H
|
||||
|
||||
/***********************************************************************
|
||||
**
|
||||
** lzf -- an extremely fast/free compression/decompression-method
|
||||
** http://liblzf.plan9.de/
|
||||
**
|
||||
** This algorithm is believed to be patent-free.
|
||||
**
|
||||
***********************************************************************/
|
||||
|
||||
#define LZF_VERSION 0x0105 /* 1.5, API version */
|
||||
|
||||
/*
|
||||
* Compress in_len bytes stored at the memory block starting at
|
||||
* in_data and write the result to out_data, up to a maximum length
|
||||
* of out_len bytes.
|
||||
*
|
||||
* If the output buffer is not large enough or any error occurs return 0,
|
||||
* otherwise return the number of bytes used, which might be considerably
|
||||
* more than in_len (but less than 104% of the original size), so it
|
||||
* makes sense to always use out_len == in_len - 1), to ensure _some_
|
||||
* compression, and store the data uncompressed otherwise (with a flag, of
|
||||
* course.
|
||||
*
|
||||
* lzf_compress might use different algorithms on different systems and
|
||||
* even different runs, thus might result in different compressed strings
|
||||
* depending on the phase of the moon or similar factors. However, all
|
||||
* these strings are architecture-independent and will result in the
|
||||
* original data when decompressed using lzf_decompress.
|
||||
*
|
||||
* The buffers must not be overlapping.
|
||||
*
|
||||
* If the option LZF_STATE_ARG is enabled, an extra argument must be
|
||||
* supplied which is not reflected in this header file. Refer to lzfP.h
|
||||
* and lzf_c.c.
|
||||
*
|
||||
*/
|
||||
unsigned int
|
||||
lzf_compress (const void *const in_data, unsigned int in_len,
|
||||
void *out_data, unsigned int out_len);
|
||||
|
||||
/*
|
||||
* Decompress data compressed with some version of the lzf_compress
|
||||
* function and stored at location in_data and length in_len. The result
|
||||
* will be stored at out_data up to a maximum of out_len characters.
|
||||
*
|
||||
* If the output buffer is not large enough to hold the decompressed
|
||||
* data, a 0 is returned and errno is set to E2BIG. Otherwise the number
|
||||
* of decompressed bytes (i.e. the original length of the data) is
|
||||
* returned.
|
||||
*
|
||||
* If an error in the compressed data is detected, a zero is returned and
|
||||
* errno is set to EINVAL.
|
||||
*
|
||||
* This function is very fast, about as fast as a copying loop.
|
||||
*/
|
||||
unsigned int
|
||||
lzf_decompress (const void *const in_data, unsigned int in_len,
|
||||
void *out_data, unsigned int out_len);
|
||||
|
||||
#endif
|
||||
|
159
RecastDemo/Contrib/liblzf-3.5/lzfP.h
Normal file
159
RecastDemo/Contrib/liblzf-3.5/lzfP.h
Normal file
@ -0,0 +1,159 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp@schmorp.de>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License ("GPL") version 2 or any later version,
|
||||
* in which case the provisions of the GPL are applicable instead of
|
||||
* the above. If you wish to allow the use of your version of this file
|
||||
* only under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the BSD license, indicate your decision
|
||||
* by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete the
|
||||
* provisions above, a recipient may use your version of this file under
|
||||
* either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
#ifndef LZFP_h
|
||||
#define LZFP_h
|
||||
|
||||
#define STANDALONE 1 /* at the moment, this is ok. */
|
||||
|
||||
#ifndef STANDALONE
|
||||
# include "lzf.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Size of hashtable is (1 << HLOG) * sizeof (char *)
|
||||
* decompression is independent of the hash table size
|
||||
* the difference between 15 and 14 is very small
|
||||
* for small blocks (and 14 is usually a bit faster).
|
||||
* For a low-memory/faster configuration, use HLOG == 13;
|
||||
* For best compression, use 15 or 16 (or more, up to 23).
|
||||
*/
|
||||
#ifndef HLOG
|
||||
# define HLOG 16
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Sacrifice very little compression quality in favour of compression speed.
|
||||
* This gives almost the same compression as the default code, and is
|
||||
* (very roughly) 15% faster. This is the preferred mode of operation.
|
||||
*/
|
||||
#ifndef VERY_FAST
|
||||
# define VERY_FAST 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Sacrifice some more compression quality in favour of compression speed.
|
||||
* (roughly 1-2% worse compression for large blocks and
|
||||
* 9-10% for small, redundant, blocks and >>20% better speed in both cases)
|
||||
* In short: when in need for speed, enable this for binary data,
|
||||
* possibly disable this for text data.
|
||||
*/
|
||||
#ifndef ULTRA_FAST
|
||||
# define ULTRA_FAST 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unconditionally aligning does not cost very much, so do it if unsure
|
||||
*/
|
||||
#ifndef STRICT_ALIGN
|
||||
# define STRICT_ALIGN !(defined(__i386) || defined (__amd64))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* You may choose to pre-set the hash table (might be faster on some
|
||||
* modern cpus and large (>>64k) blocks, and also makes compression
|
||||
* deterministic/repeatable when the configuration otherwise is the same).
|
||||
*/
|
||||
#ifndef INIT_HTAB
|
||||
# define INIT_HTAB 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Avoid assigning values to errno variable? for some embedding purposes
|
||||
* (linux kernel for example), this is neccessary. NOTE: this breaks
|
||||
* the documentation in lzf.h.
|
||||
*/
|
||||
#ifndef AVOID_ERRNO
|
||||
# define AVOID_ERRNO 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Wether to pass the LZF_STATE variable as argument, or allocate it
|
||||
* on the stack. For small-stack environments, define this to 1.
|
||||
* NOTE: this breaks the prototype in lzf.h.
|
||||
*/
|
||||
#ifndef LZF_STATE_ARG
|
||||
# define LZF_STATE_ARG 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Wether to add extra checks for input validity in lzf_decompress
|
||||
* and return EINVAL if the input stream has been corrupted. This
|
||||
* only shields against overflowing the input buffer and will not
|
||||
* detect most corrupted streams.
|
||||
* This check is not normally noticable on modern hardware
|
||||
* (<1% slowdown), but might slow down older cpus considerably.
|
||||
*/
|
||||
#ifndef CHECK_INPUT
|
||||
# define CHECK_INPUT 1
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
/* nothing should be changed below */
|
||||
|
||||
typedef unsigned char u8;
|
||||
|
||||
typedef const u8 *LZF_STATE[1 << (HLOG)];
|
||||
|
||||
#if !STRICT_ALIGN
|
||||
/* for unaligned accesses we need a 16 bit datatype. */
|
||||
# include <limits.h>
|
||||
# if USHRT_MAX == 65535
|
||||
typedef unsigned short u16;
|
||||
# elif UINT_MAX == 65535
|
||||
typedef unsigned int u16;
|
||||
# else
|
||||
# undef STRICT_ALIGN
|
||||
# define STRICT_ALIGN 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if ULTRA_FAST
|
||||
# if defined(VERY_FAST)
|
||||
# undef VERY_FAST
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if INIT_HTAB
|
||||
# ifdef __cplusplus
|
||||
# include <cstring>
|
||||
# else
|
||||
# include <string.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
296
RecastDemo/Contrib/liblzf-3.5/lzf_c.c
Normal file
296
RecastDemo/Contrib/liblzf-3.5/lzf_c.c
Normal file
@ -0,0 +1,296 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp@schmorp.de>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License ("GPL") version 2 or any later version,
|
||||
* in which case the provisions of the GPL are applicable instead of
|
||||
* the above. If you wish to allow the use of your version of this file
|
||||
* only under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the BSD license, indicate your decision
|
||||
* by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete the
|
||||
* provisions above, a recipient may use your version of this file under
|
||||
* either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
#include "lzfP.h"
|
||||
|
||||
#define HSIZE (1 << (HLOG))
|
||||
|
||||
/*
|
||||
* don't play with this unless you benchmark!
|
||||
* decompression is not dependent on the hash function
|
||||
* the hashing function might seem strange, just believe me
|
||||
* it works ;)
|
||||
*/
|
||||
#ifndef FRST
|
||||
# define FRST(p) (((p[0]) << 8) | p[1])
|
||||
# define NEXT(v,p) (((v) << 8) | p[2])
|
||||
# if ULTRA_FAST
|
||||
# define IDX(h) ((( h >> (3*8 - HLOG)) - h ) & (HSIZE - 1))
|
||||
# elif VERY_FAST
|
||||
# define IDX(h) ((( h >> (3*8 - HLOG)) - h*5) & (HSIZE - 1))
|
||||
# else
|
||||
# define IDX(h) ((((h ^ (h << 5)) >> (3*8 - HLOG)) - h*5) & (HSIZE - 1))
|
||||
# endif
|
||||
#endif
|
||||
/*
|
||||
* IDX works because it is very similar to a multiplicative hash, e.g.
|
||||
* ((h * 57321 >> (3*8 - HLOG)) & (HSIZE - 1))
|
||||
* the latter is also quite fast on newer CPUs, and compresses similarly.
|
||||
*
|
||||
* the next one is also quite good, albeit slow ;)
|
||||
* (int)(cos(h & 0xffffff) * 1e6)
|
||||
*/
|
||||
|
||||
#if 0
|
||||
/* original lzv-like hash function, much worse and thus slower */
|
||||
# define FRST(p) (p[0] << 5) ^ p[1]
|
||||
# define NEXT(v,p) ((v) << 5) ^ p[2]
|
||||
# define IDX(h) ((h) & (HSIZE - 1))
|
||||
#endif
|
||||
|
||||
#define MAX_LIT (1 << 5)
|
||||
#define MAX_OFF (1 << 13)
|
||||
#define MAX_REF ((1 << 8) + (1 << 3))
|
||||
|
||||
#if __GNUC__ >= 3
|
||||
# define expect(expr,value) __builtin_expect ((expr),(value))
|
||||
# define inline inline
|
||||
#else
|
||||
# define expect(expr,value) (expr)
|
||||
# define inline static
|
||||
#endif
|
||||
|
||||
#define expect_false(expr) expect ((expr) != 0, 0)
|
||||
#define expect_true(expr) expect ((expr) != 0, 1)
|
||||
|
||||
/*
|
||||
* compressed format
|
||||
*
|
||||
* 000LLLLL <L+1> ; literal
|
||||
* LLLooooo oooooooo ; backref L
|
||||
* 111ooooo LLLLLLLL oooooooo ; backref L+7
|
||||
*
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
lzf_compress (const void *const in_data, unsigned int in_len,
|
||||
void *out_data, unsigned int out_len
|
||||
#if LZF_STATE_ARG
|
||||
, LZF_STATE htab
|
||||
#endif
|
||||
)
|
||||
{
|
||||
#if !LZF_STATE_ARG
|
||||
LZF_STATE htab;
|
||||
#endif
|
||||
const u8 **hslot;
|
||||
const u8 *ip = (const u8 *)in_data;
|
||||
u8 *op = (u8 *)out_data;
|
||||
const u8 *in_end = ip + in_len;
|
||||
u8 *out_end = op + out_len;
|
||||
const u8 *ref;
|
||||
|
||||
/* off requires a type wide enough to hold a general pointer difference.
|
||||
* ISO C doesn't have that (size_t might not be enough and ptrdiff_t only
|
||||
* works for differences within a single object). We also assume that no
|
||||
* no bit pattern traps. Since the only platform that is both non-POSIX
|
||||
* and fails to support both assumptions is windows 64 bit, we make a
|
||||
* special workaround for it.
|
||||
*/
|
||||
#if defined (WIN32) && defined (_M_X64)
|
||||
unsigned _int64 off; /* workaround for missing POSIX compliance */
|
||||
#else
|
||||
unsigned long off;
|
||||
#endif
|
||||
unsigned int hval;
|
||||
int lit;
|
||||
|
||||
if (!in_len || !out_len)
|
||||
return 0;
|
||||
|
||||
#if INIT_HTAB
|
||||
memset (htab, 0, sizeof (htab));
|
||||
# if 0
|
||||
for (hslot = htab; hslot < htab + HSIZE; hslot++)
|
||||
*hslot++ = ip;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
lit = 0; op++; /* start run */
|
||||
|
||||
hval = FRST (ip);
|
||||
while (ip < in_end - 2)
|
||||
{
|
||||
hval = NEXT (hval, ip);
|
||||
hslot = htab + IDX (hval);
|
||||
ref = *hslot; *hslot = ip;
|
||||
|
||||
if (1
|
||||
#if INIT_HTAB
|
||||
&& ref < ip /* the next test will actually take care of this, but this is faster */
|
||||
#endif
|
||||
&& (off = ip - ref - 1) < MAX_OFF
|
||||
&& ip + 4 < in_end
|
||||
&& ref > (u8 *)in_data
|
||||
#if STRICT_ALIGN
|
||||
&& ref[0] == ip[0]
|
||||
&& ref[1] == ip[1]
|
||||
&& ref[2] == ip[2]
|
||||
#else
|
||||
&& *(u16 *)ref == *(u16 *)ip
|
||||
&& ref[2] == ip[2]
|
||||
#endif
|
||||
)
|
||||
{
|
||||
/* match found at *ref++ */
|
||||
unsigned int len = 2;
|
||||
unsigned int maxlen = in_end - ip - len;
|
||||
maxlen = maxlen > MAX_REF ? MAX_REF : maxlen;
|
||||
|
||||
if (expect_false (op + 3 + 1 >= out_end)) /* first a faster conservative test */
|
||||
if (op - !lit + 3 + 1 >= out_end) /* second the exact but rare test */
|
||||
return 0;
|
||||
|
||||
op [- lit - 1] = lit - 1; /* stop run */
|
||||
op -= !lit; /* undo run if length is zero */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (expect_true (maxlen > 16))
|
||||
{
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
len++; if (ref [len] != ip [len]) break;
|
||||
}
|
||||
|
||||
do
|
||||
len++;
|
||||
while (len < maxlen && ref[len] == ip[len]);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
len -= 2; /* len is now #octets - 1 */
|
||||
ip++;
|
||||
|
||||
if (len < 7)
|
||||
{
|
||||
*op++ = (off >> 8) + (len << 5);
|
||||
}
|
||||
else
|
||||
{
|
||||
*op++ = (off >> 8) + ( 7 << 5);
|
||||
*op++ = len - 7;
|
||||
}
|
||||
|
||||
*op++ = off;
|
||||
lit = 0; op++; /* start run */
|
||||
|
||||
ip += len + 1;
|
||||
|
||||
if (expect_false (ip >= in_end - 2))
|
||||
break;
|
||||
|
||||
#if ULTRA_FAST || VERY_FAST
|
||||
--ip;
|
||||
# if VERY_FAST && !ULTRA_FAST
|
||||
--ip;
|
||||
# endif
|
||||
hval = FRST (ip);
|
||||
|
||||
hval = NEXT (hval, ip);
|
||||
htab[IDX (hval)] = ip;
|
||||
ip++;
|
||||
|
||||
# if VERY_FAST && !ULTRA_FAST
|
||||
hval = NEXT (hval, ip);
|
||||
htab[IDX (hval)] = ip;
|
||||
ip++;
|
||||
# endif
|
||||
#else
|
||||
ip -= len + 1;
|
||||
|
||||
do
|
||||
{
|
||||
hval = NEXT (hval, ip);
|
||||
htab[IDX (hval)] = ip;
|
||||
ip++;
|
||||
}
|
||||
while (len--);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/* one more literal byte we must copy */
|
||||
if (expect_false (op >= out_end))
|
||||
return 0;
|
||||
|
||||
lit++; *op++ = *ip++;
|
||||
|
||||
if (expect_false (lit == MAX_LIT))
|
||||
{
|
||||
op [- lit - 1] = lit - 1; /* stop run */
|
||||
lit = 0; op++; /* start run */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (op + 3 > out_end) /* at most 3 bytes can be missing here */
|
||||
return 0;
|
||||
|
||||
while (ip < in_end)
|
||||
{
|
||||
lit++; *op++ = *ip++;
|
||||
|
||||
if (expect_false (lit == MAX_LIT))
|
||||
{
|
||||
op [- lit - 1] = lit - 1; /* stop run */
|
||||
lit = 0; op++; /* start run */
|
||||
}
|
||||
}
|
||||
|
||||
op [- lit - 1] = lit - 1; /* end run */
|
||||
op -= !lit; /* undo run if length is zero */
|
||||
|
||||
return op - (u8 *)out_data;
|
||||
}
|
||||
|
150
RecastDemo/Contrib/liblzf-3.5/lzf_d.c
Normal file
150
RecastDemo/Contrib/liblzf-3.5/lzf_d.c
Normal file
@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp@schmorp.de>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modifica-
|
||||
* tion, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
|
||||
* CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
|
||||
* CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
|
||||
* ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* the GNU General Public License ("GPL") version 2 or any later version,
|
||||
* in which case the provisions of the GPL are applicable instead of
|
||||
* the above. If you wish to allow the use of your version of this file
|
||||
* only under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the BSD license, indicate your decision
|
||||
* by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete the
|
||||
* provisions above, a recipient may use your version of this file under
|
||||
* either the BSD or the GPL.
|
||||
*/
|
||||
|
||||
#include "lzfP.h"
|
||||
|
||||
#if AVOID_ERRNO
|
||||
# define SET_ERRNO(n)
|
||||
#else
|
||||
# include <errno.h>
|
||||
# define SET_ERRNO(n) errno = (n)
|
||||
#endif
|
||||
|
||||
/*
|
||||
#if (__i386 || __amd64) && __GNUC__ >= 3
|
||||
# define lzf_movsb(dst, src, len) \
|
||||
asm ("rep movsb" \
|
||||
: "=D" (dst), "=S" (src), "=c" (len) \
|
||||
: "0" (dst), "1" (src), "2" (len));
|
||||
#endif
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
lzf_decompress (const void *const in_data, unsigned int in_len,
|
||||
void *out_data, unsigned int out_len)
|
||||
{
|
||||
u8 const *ip = (const u8 *)in_data;
|
||||
u8 *op = (u8 *)out_data;
|
||||
u8 const *const in_end = ip + in_len;
|
||||
u8 *const out_end = op + out_len;
|
||||
|
||||
do
|
||||
{
|
||||
unsigned int ctrl = *ip++;
|
||||
|
||||
if (ctrl < (1 << 5)) /* literal run */
|
||||
{
|
||||
ctrl++;
|
||||
|
||||
if (op + ctrl > out_end)
|
||||
{
|
||||
SET_ERRNO (E2BIG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if CHECK_INPUT
|
||||
if (ip + ctrl > in_end)
|
||||
{
|
||||
SET_ERRNO (EINVAL);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef lzf_movsb
|
||||
lzf_movsb (op, ip, ctrl);
|
||||
#else
|
||||
do
|
||||
*op++ = *ip++;
|
||||
while (--ctrl);
|
||||
#endif
|
||||
}
|
||||
else /* back reference */
|
||||
{
|
||||
unsigned int len = ctrl >> 5;
|
||||
|
||||
u8 *ref = op - ((ctrl & 0x1f) << 8) - 1;
|
||||
|
||||
#if CHECK_INPUT
|
||||
if (ip >= in_end)
|
||||
{
|
||||
SET_ERRNO (EINVAL);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if (len == 7)
|
||||
{
|
||||
len += *ip++;
|
||||
#if CHECK_INPUT
|
||||
if (ip >= in_end)
|
||||
{
|
||||
SET_ERRNO (EINVAL);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
ref -= *ip++;
|
||||
|
||||
if (op + len + 2 > out_end)
|
||||
{
|
||||
SET_ERRNO (E2BIG);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ref < (u8 *)out_data)
|
||||
{
|
||||
SET_ERRNO (EINVAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef lzf_movsb
|
||||
len += 2;
|
||||
lzf_movsb (op, ref, len);
|
||||
#else
|
||||
*op++ = *ref++;
|
||||
*op++ = *ref++;
|
||||
|
||||
do
|
||||
*op++ = *ref++;
|
||||
while (--len);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
while (ip < in_end);
|
||||
|
||||
return op - (u8 *)out_data;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ enum SampleToolType
|
||||
TOOL_NONE = 0,
|
||||
TOOL_TILE_EDIT,
|
||||
TOOL_TILE_HIGHLIGHT,
|
||||
TOOL_TEMP_OBSTACLE,
|
||||
TOOL_NAVMESH_TESTER,
|
||||
TOOL_OFFMESH_CONNECTION,
|
||||
TOOL_CONVEX_VOLUME,
|
||||
@ -87,6 +88,7 @@ protected:
|
||||
float m_agentMaxSlope;
|
||||
float m_regionMinSize;
|
||||
float m_regionMergeSize;
|
||||
bool m_monotonePartitioning;
|
||||
float m_edgeMaxLen;
|
||||
float m_edgeMaxError;
|
||||
float m_vertsPerPoly;
|
||||
|
@ -837,7 +837,7 @@ CrowdManager::CrowdManager() :
|
||||
}
|
||||
|
||||
// TODO: the radius should be related to the agent radius used to create the navmesh!
|
||||
m_grid.init(100, 1.0f);
|
||||
m_grid.init(MAX_AGENTS, 1.0f);
|
||||
|
||||
reset();
|
||||
}
|
||||
|
@ -120,6 +120,7 @@ void Sample::resetCommonSettings()
|
||||
m_agentMaxSlope = 45.0f;
|
||||
m_regionMinSize = 8;
|
||||
m_regionMergeSize = 20;
|
||||
m_monotonePartitioning = false;
|
||||
m_edgeMaxLen = 12.0f;
|
||||
m_edgeMaxError = 1.3f;
|
||||
m_vertsPerPoly = 6.0f;
|
||||
@ -155,6 +156,8 @@ void Sample::handleCommonSettings()
|
||||
imguiLabel("Region");
|
||||
imguiSlider("Min Region Size", &m_regionMinSize, 0.0f, 150.0f, 1.0f);
|
||||
imguiSlider("Merged Region Size", &m_regionMergeSize, 0.0f, 150.0f, 1.0f);
|
||||
if (imguiCheck("Monotore Partitioning", m_monotonePartitioning))
|
||||
m_monotonePartitioning = !m_monotonePartitioning;
|
||||
|
||||
imguiSeparator();
|
||||
imguiLabel("Polygonization");
|
||||
|
@ -487,6 +487,18 @@ bool Sample_SoloMeshSimple::handleBuild()
|
||||
for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i)
|
||||
rcMarkConvexPolyArea(m_ctx, vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *m_chf);
|
||||
|
||||
if (m_monotonePartitioning)
|
||||
{
|
||||
// Partition the walkable surface into simple regions without holes.
|
||||
// Monotone partitioning does not need distancefield.
|
||||
if (!rcBuildRegionsMonotone(m_ctx, *m_chf, m_cfg.borderSize, m_cfg.minRegionArea, m_cfg.mergeRegionArea))
|
||||
{
|
||||
m_ctx->log(RC_LOG_ERROR, "buildNavigation: Could not build regions.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Prepare for region partitioning, by calculating distance field along the walkable surface.
|
||||
if (!rcBuildDistanceField(m_ctx, *m_chf))
|
||||
{
|
||||
@ -500,6 +512,7 @@ bool Sample_SoloMeshSimple::handleBuild()
|
||||
m_ctx->log(RC_LOG_ERROR, "buildNavigation: Could not build regions.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Step 5. Trace and simplify region contours.
|
||||
|
@ -863,6 +863,16 @@ bool Sample_SoloMeshTiled::handleBuild()
|
||||
for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i)
|
||||
rcMarkConvexPolyArea(m_ctx, vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *tile.chf);
|
||||
|
||||
if (m_monotonePartitioning)
|
||||
{
|
||||
if (!rcBuildRegionsMonotone(m_ctx, *tile.chf, tileCfg.borderSize, tileCfg.minRegionArea, tileCfg.mergeRegionArea))
|
||||
{
|
||||
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rcBuildDistanceField(m_ctx, *tile.chf))
|
||||
{
|
||||
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build distance fields.", x, y);
|
||||
@ -874,6 +884,7 @@ bool Sample_SoloMeshTiled::handleBuild()
|
||||
m_ctx->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
tile.cset = rcAllocContourSet();
|
||||
if (!tile.cset)
|
||||
|
@ -1036,6 +1036,17 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const
|
||||
for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i)
|
||||
rcMarkConvexPolyArea(m_ctx, vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *m_chf);
|
||||
|
||||
if (m_monotonePartitioning)
|
||||
{
|
||||
// Partition the walkable surface into simple regions without holes.
|
||||
if (!rcBuildRegionsMonotone(m_ctx, *m_chf, m_cfg.borderSize, m_cfg.minRegionArea, m_cfg.mergeRegionArea))
|
||||
{
|
||||
m_ctx->log(RC_LOG_ERROR, "buildNavigation: Could not build regions.");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Prepare for region partitioning, by calculating distance field along the walkable surface.
|
||||
if (!rcBuildDistanceField(m_ctx, *m_chf))
|
||||
{
|
||||
@ -1049,6 +1060,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const int tx, const int ty, const
|
||||
m_ctx->log(RC_LOG_ERROR, "buildNavigation: Could not build regions.");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Create contours.
|
||||
m_cset = rcAllocContourSet();
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "Sample_SoloMeshSimple.h"
|
||||
#include "Sample_SoloMeshTiled.h"
|
||||
#include "Sample_TileMesh.h"
|
||||
#include "Sample_TempObstacles.h"
|
||||
#include "Sample_Debug.h"
|
||||
|
||||
#ifdef WIN32
|
||||
@ -49,13 +50,15 @@ Sample* createSoloSimple() { return new Sample_SoloMeshSimple(); }
|
||||
Sample* createSoloTiled() { return new Sample_SoloMeshTiled(); }
|
||||
Sample* createTile() { return new Sample_TileMesh(); }
|
||||
Sample* createDebug() { return new Sample_Debug(); }
|
||||
Sample* createTempObstacle() { return new Sample_TempObstacles(); }
|
||||
|
||||
static SampleItem g_samples[] =
|
||||
{
|
||||
{ createSoloSimple, "Solo Mesh Simple" },
|
||||
{ createSoloTiled, "Solo Mesh Tiled" },
|
||||
{ createTile, "Tile Mesh" },
|
||||
{ createDebug, "Debug" },
|
||||
{ createTempObstacle, "Temp Obstacles" },
|
||||
// { createDebug, "Debug" },
|
||||
};
|
||||
static const int g_nsamples = sizeof(g_samples)/sizeof(SampleItem);
|
||||
|
||||
@ -370,11 +373,7 @@ int main(int /*argc*/, char** /*argv*/)
|
||||
if (processHitTest && geom && sample)
|
||||
{
|
||||
float t;
|
||||
TimeVal t0 = getPerfTime();
|
||||
bool hit = geom->raycastMesh(rays, raye, t);
|
||||
TimeVal t1 = getPerfTime();
|
||||
|
||||
printf("raycast() %.4fms\n", getPerfDeltaTimeUsec(t0,t1)/1000.0f);
|
||||
|
||||
if (hit)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user