v1.03 prerelease - Full Linux port of crnlib/crunch, in progress - still more testing to do, and some cmd line options (such as -timestamp) don't work under linux yet, but the core stuff (compression/decompression/transcoding) should work fine and performance under Linux is comparable to Windows. The 3 examples haven't been ported yet.
This commit is contained in:
+104
-29
@@ -6,38 +6,34 @@
|
||||
#pragma warning (disable: 4201) // nonstandard extension used : nameless struct/union
|
||||
#pragma warning (disable: 4127) // conditional expression is constant
|
||||
#pragma warning (disable: 4793) // function compiled as native
|
||||
#pragma warning (disable: 4324) // structure was padded due to __declspec(align())
|
||||
#endif
|
||||
|
||||
#if defined(WIN32)
|
||||
|
||||
#if 0
|
||||
#if defined(WIN32) && !defined(CRNLIB_ANSI_CPLUSPLUS)
|
||||
// MSVC or MinGW, x86 or x64, Win32 API's for threading and Win32 Interlocked API's or GCC built-ins for atomic ops.
|
||||
#ifdef NDEBUG
|
||||
// Ensure checked iterators are disabled.
|
||||
#define _SECURE_SCL 0
|
||||
#define _HAS_ITERATOR_DEBUGGING 0
|
||||
#endif
|
||||
|
||||
#ifndef _DLL
|
||||
// If we're using the DLL form of the run-time libs, we're also going to be enabling exceptions because we'll be building CLR apps.
|
||||
// Otherwise, we disable exceptions for a small (up to 5%) speed boost.
|
||||
// Otherwise, we disable exceptions for a small speed boost.
|
||||
#define _HAS_EXCEPTIONS 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//#define _CRT_SECURE_NO_WARNINGS
|
||||
#define NOMINMAX
|
||||
|
||||
#define CRNLIB_PLATFORM_PC 1
|
||||
|
||||
#ifdef _WIN64
|
||||
#define CRNLIB_PLATFORM_PC_X64 1
|
||||
#else
|
||||
#define CRNLIB_PLATFORM_PC_X86 1
|
||||
#endif
|
||||
|
||||
#define CRNLIB_USE_WIN32_API 1
|
||||
|
||||
#ifdef _WIN64
|
||||
#if defined(__MINGW32__) || defined(__MINGW64__)
|
||||
#define CRNLIB_USE_GCC_ATOMIC_BUILTINS 1
|
||||
#else
|
||||
#define CRNLIB_USE_WIN32_ATOMIC_FUNCTIONS 1
|
||||
#endif
|
||||
|
||||
#define CRNLIB_PLATFORM_PC 1
|
||||
|
||||
#if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
|
||||
#define CRNLIB_PLATFORM_PC_X64 1
|
||||
#define CRNLIB_64BIT_POINTERS 1
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 1
|
||||
@@ -48,15 +44,99 @@
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 0
|
||||
#define CRNLIB_LITTLE_ENDIAN_CPU 1
|
||||
#endif
|
||||
|
||||
#define CRNLIB_USE_UNALIGNED_INT_LOADS 1
|
||||
#define CRNLIB_RESTRICT __restrict
|
||||
#define CRNLIB_FORCE_INLINE __forceinline
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
|
||||
#define CRNLIB_USE_MSVC_INTRINSICS 1
|
||||
#endif
|
||||
|
||||
#define CRNLIB_INT64_FORMAT_SPECIFIER "%I64i"
|
||||
#define CRNLIB_UINT64_FORMAT_SPECIFIER "%I64u"
|
||||
|
||||
#define CRNLIB_STDCALL __stdcall
|
||||
#define CRNLIB_MEMORY_IMPORT_BARRIER
|
||||
#define CRNLIB_MEMORY_EXPORT_BARRIER
|
||||
#elif defined(__GNUC__) && !defined(CRNLIB_ANSI_CPLUSPLUS)
|
||||
// GCC x86 or x64, pthreads for threading and GCC built-ins for atomic ops.
|
||||
#define CRNLIB_PLATFORM_PC 1
|
||||
|
||||
#if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
|
||||
#define CRNLIB_PLATFORM_PC_X64 1
|
||||
#define CRNLIB_64BIT_POINTERS 1
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 1
|
||||
#else
|
||||
#define CRNLIB_PLATFORM_PC_X86 1
|
||||
#define CRNLIB_64BIT_POINTERS 0
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 0
|
||||
#endif
|
||||
|
||||
#define CRNLIB_USE_UNALIGNED_INT_LOADS 1
|
||||
|
||||
#define CRNLIB_LITTLE_ENDIAN_CPU 1
|
||||
|
||||
#define CRNLIB_USE_PTHREADS_API 1
|
||||
#define CRNLIB_USE_GCC_ATOMIC_BUILTINS 1
|
||||
|
||||
#define CRNLIB_RESTRICT
|
||||
|
||||
#define CRNLIB_FORCE_INLINE inline __attribute__((__always_inline__,__gnu_inline__))
|
||||
|
||||
#define CRNLIB_INT64_FORMAT_SPECIFIER "%lli"
|
||||
#define CRNLIB_UINT64_FORMAT_SPECIFIER "%llu"
|
||||
|
||||
#define CRNLIB_STDCALL
|
||||
#define CRNLIB_MEMORY_IMPORT_BARRIER
|
||||
#define CRNLIB_MEMORY_EXPORT_BARRIER
|
||||
#else
|
||||
// Vanilla ANSI-C/C++
|
||||
// No threading support, unaligned loads are NOT okay.
|
||||
#if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
|
||||
#define CRNLIB_64BIT_POINTERS 1
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 1
|
||||
#else
|
||||
#define CRNLIB_64BIT_POINTERS 0
|
||||
#define CRNLIB_CPU_HAS_64BIT_REGISTERS 0
|
||||
#endif
|
||||
|
||||
#define CRNLIB_USE_UNALIGNED_INT_LOADS 0
|
||||
|
||||
#if __BIG_ENDIAN__
|
||||
#define CRNLIB_BIG_ENDIAN_CPU 1
|
||||
#else
|
||||
#define CRNLIB_LITTLE_ENDIAN_CPU 1
|
||||
#endif
|
||||
|
||||
#define CRNLIB_USE_GCC_ATOMIC_BUILTINS 0
|
||||
#define CRNLIB_USE_WIN32_ATOMIC_FUNCTIONS 0
|
||||
|
||||
#define CRNLIB_RESTRICT
|
||||
#define CRNLIB_FORCE_INLINE inline
|
||||
|
||||
#define CRNLIB_INT64_FORMAT_SPECIFIER "%I64i"
|
||||
#define CRNLIB_UINT64_FORMAT_SPECIFIER "%I64u"
|
||||
|
||||
#define CRNLIB_STDCALL
|
||||
#define CRNLIB_MEMORY_IMPORT_BARRIER
|
||||
#define CRNLIB_MEMORY_EXPORT_BARRIER
|
||||
#endif
|
||||
|
||||
#define CRNLIB_SLOW_STRING_LEN_CHECKS 1
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
#include <locale>
|
||||
#include <memory.h>
|
||||
#include <limits.h>
|
||||
#include <algorithm>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef min
|
||||
#undef min
|
||||
@@ -78,16 +158,15 @@
|
||||
#ifndef NDEBUG
|
||||
#define NDEBUG
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#error DEBUG cannot be defined in CRNLIB_BUILD_RELEASE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "crn_platform.h"
|
||||
|
||||
#if defined(WIN32)
|
||||
#include "crn_mutex.h"
|
||||
#endif
|
||||
|
||||
#include "crn_assert.h"
|
||||
#include "crn_types.h"
|
||||
#include "crn_assert.h"
|
||||
#include "crn_platform.h"
|
||||
#include "crn_helpers.h"
|
||||
#include "crn_traits.h"
|
||||
#include "crn_mem.h"
|
||||
@@ -95,9 +174,5 @@
|
||||
#include "crn_utils.h"
|
||||
#include "crn_hash.h"
|
||||
#include "crn_vector.h"
|
||||
#include "crn_win32_timer.h"
|
||||
#include "crn_win32_threading.h"
|
||||
#include "crn_timer.h"
|
||||
#include "crn_dynamic_string.h"
|
||||
#include "crn_dynamic_wstring.h"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user