Fix CMake support for MinGW, MSVC, and others

This improves the general building experience by integrating with the
newly created `sourceball` for windows. Most fixes involves either
adding `#ifdef WIN32` or replacing GCC-specific extensions with more
portable solutions.

Has been tested with MSVC 15 and MinGW64.
This commit is contained in:
Felix Kaaman 2016-01-05 19:25:51 +01:00
parent f9d144722a
commit 357d4d2aad
18 changed files with 251 additions and 112 deletions

1
.gitignore vendored
View File

@ -12,6 +12,7 @@
# windows build crap
winlibs/
dist/
*.dll
# windows crap i mean why the hell does it do this crap

View File

@ -2,62 +2,83 @@
cmake_minimum_required (VERSION 2.8.4)
project (iceball)
#set(CMAKE_BINARY_DIR build)
set(CMAKE_SOURCE_DIR src)
set(OUTDIR ../build)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -g -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
IF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)")
add_definitions(/W4) # warning level
add_definitions(/TP) # compile as c++
ELSEIF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-Wall -g) # keep debugging symbols even in Release builds
ENDIF()
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-fno-strict-aliasing -Wall -Wextra -g) # keep debugging symbols even in Release builds
endif ()
include_directories(include)
if (WIN32)
if (MSVC)
set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX )
endif (MSVC)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/glew")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/lua")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/SDL")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/zlib")
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs")
endif (WIN32)
# here be sackit
link_directories("${CMAKE_CURRENT_SOURCE_DIR}/xlibinc")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/xlibinc")
if (MINGW)
set(CMAKE_PREFIX_PATH "dist/mingw/enet;dist/mingw/sdl2;dist/mingw/lua51;dist/mingw/sackit;dist/mingw/zlib;dist/mingw/glew" CACHE PATH "" FORCE)
elseif (MSVC)
set(CMAKE_PREFIX_PATH "dist/msvc/enet;dist/msvc/sdl2;dist/msvc/lua51;dist/msvc/sackit;dist/msvc/zlib;dist/msvc/glew" CACHE PATH "" FORCE)
endif ()
# find the hidden treasures
find_package(ENet REQUIRED)
find_package(PNG REQUIRED)
find_package(SDL2 REQUIRED)
find_package(zlib REQUIRED)
find_package(Lua REQUIRED)
find_package(sackit REQUIRED)
find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED)
# include the outcasts
include_directories(
${PNG_INCLUDE_DIRS}
${ENet_INCLUDE_DIRS}
${SACKIT_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS}
${GLEW_INCLUDE_DIRS}
${SDL2_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
${ENet_INCLUDE_DIRS}
${sackit_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
${GLEW_INCLUDE_DIRS}
${SDL2_INCLUDE_DIR}
${LUA_INCLUDE_DIR}
)
add_subdirectory(src)
file(GLOB LUA_FILES src/lua*)
set(MAIN_FILES
src/dsp.c
src/img.c
src/json.c
src/logtxt.c
src/main.c
src/map.c
src/model.c
src/network.c
src/path.c
src/vecmath.c
src/wav.c
src/png.c
)
set(GL_FILES
src/gl/render.c
src/gl/render_img.c
)
source_group(gl FILES ${GL_FILES})
source_group(lua FILES ${LUA_FILES})
add_custom_command(TARGET iceball POST_BUILD # Adds a post-build event to MyTest
COMMAND ${CMAKE_COMMAND} -E copy_if_different # which executes "cmake - E copy_if_different..."
"${LUA_LIBRARY}" # <--this is in-file
$<TARGET_FILE_DIR:MyTest>) # <--this is out-file path
# iceball target
add_executable(iceball ${MAIN_FILES} ${LUA_FILES} ${GL_FILES})
message("${ENet_LIBRARIES}\n${sackit_LIBRARY}\n${LUA_LIBRARIES}\n${OPENGL_LIBRARIES}\n${GLEW_LIBRARIES}\n${SDL2_LIBRARIES}")
target_link_libraries(iceball ${ENet_LIBRARIES} ${ZLIB_LIBRARIES} ${sackit_LIBRARY} ${LUA_LIBRARIES} ${SDL2_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})
set_target_properties(iceball PROPERTIES COMPILE_DEFINITIONS "USE_OPENGL")
# iceball-dedi target
add_executable(iceball-dedi EXCLUDE_FROM_ALL ${MAIN_FILES} ${LUA_FILES})
target_link_libraries(iceball-dedi ${ENet_LIBRARIES} ${ZLIB_LIBRARIES} ${LUA_LIBRARIES} ${SDL_LIBRARY})
set_target_properties(iceball-dedi PROPERTIES COMPILE_DEFINITIONS "DEDI")

View File

@ -19,7 +19,6 @@ FIND_PATH(ENet_INCLUDE_DIRS enet/enet.h
$ENV{ENETDIR}
/usr/local
/usr
"${CMAKE_CURRENT_SOURCE_DIR}/winlibs"
PATH_SUFFIXES include
)
@ -29,7 +28,6 @@ FIND_LIBRARY(ENet_LIBRARY
$ENV{ENETDIR}
/usr/local
/usr
"${CMAKE_CURRENT_SOURCE_DIR}/winlibs"
PATH_SUFFIXES lib
)

View File

@ -249,6 +249,15 @@ IF(SDL2_LIBRARY_TEMP)
SET(SDL2_FOUND "YES")
ENDIF(SDL2_LIBRARY_TEMP)
IF(SDL2_FOUND)
IF(WIN32)
SET(WINDOWS_SDL2_DEPENDENCIES "user32;gdi32;winmm;imm32;ole32;oleaut32;version;uuid")
SET(SDL2_LIBRARIES ${SDL2_LIBRARY} ${WINDOWS_SDL2_DEPENDENCIES})
ELSE(WIN32)
SET(SDL2_LIBRARIES ${SDL2_LIBRARY})
ENDIF(WIN32)
ENDIF (SDL2_FOUND)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)

35
cmake/Findsackit.cmake Normal file
View File

@ -0,0 +1,35 @@
# - Try to find sackit
# Once done this will define
#
# SACKIT_FOUND - system has sackit
# sackit_INCLUDE_DIRS - the sackit include directory
# sackit_LIBRARIES - the libraries needed to use sackit
#
# $SACKITDIR is an environment variable used for finding sackit.
#
FIND_PATH(sackit_INCLUDE_DIRS sackit.h
PATHS
$ENV{SACKITDIR}
/usr/local
/usr
PATH_SUFFIXES include
)
FIND_LIBRARY(sackit_LIBRARY
NAMES sackit
PATHS
$ENV{SACKITDIR}
/usr/local
/usr
PATH_SUFFIXES lib
)
# handle the QUIETLY and REQUIRED arguments and set SACKIT_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(sackit DEFAULT_MSG sackit_LIBRARY sackit_INCLUDE_DIRS)
SET(sackit_LIBRARIES ${sackit_LIBRARY})
MARK_AS_ADVANCED(sackit_LIBRARY sackit_LIBRARIES sackit_INCLUDE_DIRS)

View File

@ -44,6 +44,23 @@
//define RENDER_FACE_COUNT 2
#ifdef WIN32
//#define close(x) closesocket(x)
// TODO: remove?
#if _MSC_VER_
int bind(SOCKET s, void* name, int namelen)
{
return bind(s, (const sockaddr*)name, namelen);
}
int setsockopt(SOCKET s, int level, int optname, void* optval, int optlen)
{
return setsockopt(s, level, optname, (const char*)optval, optlen);
}
#endif
#endif
#ifndef _MSC_VER
#define PACK_START
#define PACK_END
@ -58,7 +75,6 @@
#endif
#include <stdint.h>
#else
#define __attribute__(x)
#define PACK_START __pragma( pack(push, 1) )
#define PACK_END __pragma( pack(pop) )
typedef signed __int8 int8_t;
@ -69,11 +85,23 @@ typedef signed __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
#if (_MSC_VER != 1900)
#define snprintf sprintf_s
#endif
#define _USE_MATH_DEFINES //M_PI and whatnot from math.h
#pragma warning( disable: 4200 4244 4996)
#endif
#if defined(_MSC_VER)
#define ALIGNED_(x) __declspec(align(x))
#else
#if defined(__GNUC__)
#define ALIGNED_(x) __attribute__ ((aligned(x)))
#endif
#endif
#define ALIGNED_TYPE_(t,x) typedef t ALIGNED_(x)
#ifdef _OPENMP
#include <omp.h>
#endif
@ -183,28 +211,24 @@ enum
#define SCREEN_BSWAP_32_ENDIAN
#endif
#ifdef __SSE__
__attribute__((aligned(16)))
#endif
PACK_START
typedef union vec4f
#pragma pack(push, 1)
ALIGNED_TYPE_(union, 16) vec4f
{
struct { float x,y,z,w; } __attribute__((__packed__)) p;
struct { float x,y,z,w; } p;
float a[4];
#ifdef __SSE__
#if defined(__SSE__) && !defined(_MSC_VER)
float __attribute__ ((vector_size (16))) m;
#endif
} __attribute__((__packed__)) vec4f_t;
} vec4f_t;
#pragma pack(pop)
#ifdef __SSE__
__attribute__((aligned(16)))
#endif
typedef struct matrix
#pragma pack(push, 1)
ALIGNED_TYPE_(struct, 16) matrix
{
//column-major!
vec4f_t c[4];
} __attribute__((__packed__)) matrix_t;
PACK_END
} matrix_t;
#pragma pack(pop)
typedef struct camera
{
@ -215,14 +239,14 @@ typedef struct camera
float mpx,mpy,mpz,mppad;
} camera_t;
PACK_START
#pragma pack(push, 1)
typedef struct model_point
{
uint16_t radius;
int16_t x,y,z;
uint8_t b,g,r,resv1;
} __attribute__((__packed__)) model_point_t;
PACK_END
} model_point_t;
#pragma pack(pop)
typedef struct model model_t;
typedef struct model_bone
@ -293,8 +317,8 @@ typedef struct fbo
} fbo_t;
PACK_START
// source: http://paulbourke.net/dataformats/tga/
#pragma pack(push, 1)
typedef struct img_tgahead
{
uint8_t idlen;
@ -309,8 +333,8 @@ typedef struct img_tgahead
uint16_t height;
uint8_t bpp;
uint8_t flags;
} __attribute__((__packed__)) img_tgahead_t;
PACK_END
} img_tgahead_t;
#pragma pack(pop)
typedef struct img
{
@ -509,7 +533,7 @@ enum
// dsp.c
float interp_linear(float y0, float y1, float x);
float interp_cubic(float y0, float y1, float y2, float y3, float x);
float interp_hermite6p(float y0, float y1, float y2, float y3,
float interp_hermite6p(float y0, float y1, float y2, float y3,
float y4, float y5, float x);
float frequency2wavelength(int rate, float frequency);
float wavelength2frequency(int rate, float wavelength);

View File

@ -1,21 +0,0 @@
#/src/CMakeLists.txt
file(GLOB LUA_FILES lua*)
set(MAIN_FILES dsp.c img.c json.c logtxt.c main.c map.c model.c network.c path.c vecmath.c wav.c png.c)
set(GL_FILES gl/render.c gl/render_img.c)
source_group(gl FILES ${GL_FILES})
set(SOFT_FILES softgm/render.c softgm/render_img.c)
source_group(softgm FILES ${SOFT_FILES})
source_group(lua FILES ${LUA_FILES})
# iceball target
add_executable(iceball ${MAIN_FILES} ${LUA_FILES} ${GL_FILES})
target_link_libraries(iceball ${PNG_LIBRARIES} ${ENet_LIBRARIES} sackit ${LUA_LIBRARIES} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})
set_target_properties(iceball PROPERTIES COMPILE_DEFINITIONS "USE_OPENGL")
# iceball-dedi target
add_executable(iceball-dedi EXCLUDE_FROM_ALL ${MAIN_FILES} ${LUA_FILES})
target_link_libraries(iceball-dedi ${PNG_LIBRARIES} ${ENet_LIBRARIES} ${LUA_LIBRARIES} ${SDL_LIBRARY})
set_target_properties(iceball-dedi PROPERTIES COMPILE_DEFINITIONS "DEDI")

View File

@ -1730,7 +1730,7 @@ void render_vertex_array(uint32_t *pixels, int width, int height, int pitch, cam
{
glClientActiveTexture(GL_TEXTURE0 + i);
glActiveTexture(GL_TEXTURE0 + i);
glTexCoordPointer(va->texcoord_size[i%va->texcoord_count], GL_FLOAT, sizeof(float)*va->stride, ((void *)0+sizeof(float)*va->texcoord_offs[i%va->texcoord_count]));
glTexCoordPointer(va->texcoord_size[i%va->texcoord_count], GL_FLOAT, sizeof(float)*va->stride, (void *)(sizeof(float)*va->texcoord_offs[i%va->texcoord_count]));
}
if(gl_shaders)

View File

@ -432,9 +432,13 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch,
__m128i xmm_src1_alpha0 = _mm_unpackhi_epi16(xmm_src1_alpha,xmm_src1_alpha);
__m128i xmm_src1_alpha1 = _mm_unpacklo_epi16(xmm_src1_alpha,xmm_src1_alpha);
#ifdef _MSC_VER
xmm_src0_alpha = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(xmm_src0_alpha1),_mm_castsi128_ps(xmm_src0_alpha0),0xFF));
xmm_src1_alpha = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(xmm_src1_alpha1),_mm_castsi128_ps(xmm_src1_alpha0),0xFF));
#else
xmm_src0_alpha = (__m128i)_mm_shuffle_ps((__m128)xmm_src0_alpha1,(__m128)xmm_src0_alpha0,0xFF);
xmm_src1_alpha = (__m128i)_mm_shuffle_ps((__m128)xmm_src1_alpha1,(__m128)xmm_src1_alpha0,0xFF);
#endif
// Found some instructions which should speed this up.
// NOTE: actually runs at the same damn speed... maybe even worse.

View File

@ -148,16 +148,13 @@ int icelua_fn_client_mk_sys_execv(lua_State *L)
#else
char *v = strdup("iceball.exe");
arglist[0] = v;
main_argv0 = v;
#endif
#endif
printf("argv0: [%s]\n", main_argv0);
fflush(stdout);
#ifdef WIN32
execv(v, arglist);
#else
execv(main_argv0, arglist);
#endif
printf("WORK YOU FUCKASS: %s\n", strerror(errno));
fflush(stdout);

View File

@ -87,7 +87,7 @@ int icelua_fn_client_glsl_create(lua_State *L)
glGetShaderiv(sh_v, GL_INFO_LOG_LENGTH, &len);
if (len > 0) {
char info[len];
char *info = alloca(len);
glGetShaderInfoLog(sh_v, len, NULL, info);
luaL_addstring(&b, "Vertex shader compile error:\n");
luaL_addstring(&b, info);
@ -97,7 +97,7 @@ int icelua_fn_client_glsl_create(lua_State *L)
glGetShaderiv(sh_f, GL_INFO_LOG_LENGTH, &len);
if (len > 0) {
char info[len];
char *info = alloca(len);
glGetShaderInfoLog(sh_f, len, NULL, info);
luaL_addstring(&b, "Fragment shader compile error:\n");
luaL_addstring(&b, info);
@ -126,7 +126,7 @@ int icelua_fn_client_glsl_create(lua_State *L)
glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &len);
if (len > 0) {
char info[len];
char *info = alloca(len);
glGetProgramInfoLog(prog, len, NULL, info);
luaL_addstring(&b, "Link error:\n");
luaL_addstring(&b, info);

View File

@ -15,7 +15,9 @@
along with Iceball. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _MSC_VER
#include <unistd.h> //fixes some warning, some POSIX shit ~Dany0
#endif
int whitelist_validate(const char *name, int port);

View File

@ -112,15 +112,62 @@ int platform_init(void)
return 0;
}
static const char* get_gl_debug_type_name(GLenum type)
{
switch (type) {
case GL_DEBUG_TYPE_ERROR:
return "ERROR";
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
return "DEPRECATED_BEHAVIOR";
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
return "UNDEFINED_BEHAVIOR";
case GL_DEBUG_TYPE_PORTABILITY:
return "PORTABILITY";
case GL_DEBUG_TYPE_PERFORMANCE:
return "PERFORMANCE";
case GL_DEBUG_TYPE_OTHER:
return "OTHER";
default:
return "<UNKNOWN>";
}
}
static const char* get_gl_debug_severity_name(GLenum severity)
{
switch (severity) {
case GL_DEBUG_SEVERITY_LOW:
return "LOW";
case GL_DEBUG_SEVERITY_MEDIUM:
return "MEDIUM";
case GL_DEBUG_SEVERITY_HIGH:
return "HIGH";
default:
return "<UNKNOWN>";
}
}
void APIENTRY opengl_cb_fun(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, void* userParam)
{
printf("---------------------opengl-callback-start------------\n");
printf("message: %s\n", message);
printf("type: %s\n", get_gl_debug_type_name(type));
printf("id: %d\n", id);
printf("severity: %s\n", get_gl_debug_severity_name(severity));
printf("---------------------opengl-callback-end--------------\n");
}
int video_init(void)
{
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
#ifndef NDEBUG
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
#endif
if (screen_antialiasing_level > 0)
{
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
@ -128,10 +175,10 @@ int video_init(void)
}
window = SDL_CreateWindow("iceball",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
screen_width,
screen_height, SDL_WINDOW_OPENGL | (screen_fullscreen ? SDL_WINDOW_FULLSCREEN : 0));
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
screen_width,
screen_height, SDL_WINDOW_OPENGL | (screen_fullscreen ? SDL_WINDOW_FULLSCREEN : 0));
if(window == NULL)
return error_sdl("SDL_CreateWindow");
@ -154,6 +201,7 @@ int video_init(void)
//if(screen == NULL)
// return error_sdl("SDL_GetWindowSurface");
glewExperimental = 1;
GLenum err_glew = glewInit();
if(err_glew != GLEW_OK)
{
@ -169,6 +217,25 @@ int video_init(void)
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max_texunits);
#ifndef NDEBUG
if (glDebugMessageCallbackARB != NULL) {
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glDebugMessageCallback(opengl_cb_fun, NULL);
GLuint unusedIds = 0;
glDebugMessageControl(GL_DONT_CARE,
GL_DONT_CARE,
GL_DONT_CARE,
0,
&unusedIds,
1);
fprintf(stdout, "Registered ARB_debug_output callback\n");
}
else {
fprintf(stderr, "WARNING: Could not register ARB_debug_output callback\n");
}
#endif
return 0;
}
@ -862,6 +929,7 @@ int main_dbghelper(int argc, char *argv[])
main_argv0 = argv[0];
main_oldcwd = NULL;
/*
#ifdef WIN32
// necessary for the server list to work, apparently
{
@ -888,6 +956,7 @@ int main_dbghelper(int argc, char *argv[])
}
}
#endif
*/
#ifdef DEDI
if(argc <= 1)

View File

@ -16,6 +16,9 @@
*/
#include "common.h"
#define PILLAR_SIZE 1028 // (256 + 1) * 4
int map_parse_root(map_t *map, const char *dend, const char *data, int xlen, int ylen, int zlen, int wipe_lighting)
{
// TODO: refactor a bit
@ -41,7 +44,6 @@ int map_parse_root(map_t *map, const char *dend, const char *data, int xlen, int
return 0;
}
const int PILLAR_SIZE = (256+1)*4;
uint8_t pillar_temp[PILLAR_SIZE];
int i,x,z,pi;

View File

@ -19,18 +19,6 @@
#ifdef WIN32
WSADATA wsaStartup;
#define close(x) closesocket(x)
#if _MSC_VER
int bind( SOCKET s, void* name, int namelen )
{
return bind( s, (const sockaddr*)name, namelen );
}
int setsockopt( SOCKET s, int level, int optname, void* optval, int optlen )
{
return setsockopt( s, level, optname, (const char*)optval, optlen );
}
#endif
#endif
int server_sockfd_ipv4 = SOCKFD_NONE;

View File

@ -17,10 +17,12 @@
#include "common.h"
#pragma pack(push, 1)
typedef struct pngheader {
uint32_t width, height;
uint8_t bpc, ctyp, cmpr, filt, inter;
} __attribute__((__packed__)) pngheader_t;
} pngheader_t;
#pragma pack(pop)
#ifndef DEDI
void expandtex_gl(int *iw, int *ih);
@ -524,8 +526,14 @@ void img_write_png(const char *fname, img_t *img)
size_t img_size = row_size * img->head.height;
size_t img_uncomp_len = (row_size - (gap-1)) * img->head.height;
uint8_t *img_uncomp = malloc(img_uncomp_len);
#ifdef _MSC_VER
// TODO: broken?
uint8_t **rowP = alloca(row_size * 1);
uint8_t **rowC = alloca(row_size * 5);
#else
uint8_t rowP[1][row_size];
uint8_t rowC[5][row_size];
#endif
uint8_t *src_pixels = (uint8_t *)(img->pixels);
int rowsel = 0;

View File

@ -21,7 +21,7 @@ vec4f_t mtx_apply_vec(matrix_t *mtx, vec4f_t *vec)
{
int i,j;
#ifndef __SSE__
#if !defined(__SSE__) || defined(_MSC_VER)
vec4f_t ret;

View File

@ -25,12 +25,14 @@ sackit_playback_t *icesackit_pb = NULL;
float icesackit_vol = 1.0f;
float icesackit_mvol = 1.0f;
#pragma pack(push, 1)
typedef struct wavfmt {
uint16_t codec, chns;
uint32_t freq;
uint32_t bytes_sec;
uint16_t blkalign, bps;
} __attribute__((__packed__)) wavfmt_t;
} wavfmt_t;
#pragma pack(pop)
// These 2 tables are from here: http://wiki.multimedia.cx/index.php?title=IMA_ADPCM
int ima_index_table[16] = {