# http://creativecommons.org/publicdomain/zero/1.0/
OBJ?=.o
-SO?=.so
-A?=.a
-LIB?=lib
-CP?=cp
-MV?=mv
-MVFLAGS?=
-CPFLAGS?=
-
-CC?=gcc
-CXX?=g++
-AR?=ar
-RANLIB?=ranlib
-LINKER?=$(CXX)
-SHAREDFLAG?=-shared
-LINKFLAGS?=-g
-CCFLAGS=-Wall -Wextra -pedantic -Wshadow -Werror -g -DCIN_INTERNAL
-
-CFLAGS?=
-CFLAGS+=-ansi -Wenum-compare -Os
-
-CXXFLAGS?=
-CXXFLAGS+=-fno-rtti -fno-exceptions -O2
include cin_build.mk
include cin_build_openal.mk
-
-openal: $(OPENAL_OBJECTS) cin_common.o $(TEST_OBJS)
- $(LINK) $(OPENAL_OBJECTS) cin_common.o -lopenal $(LINKFLAGS) -o $(LIB)cinnamon$(SO)
- $(CP) $(CPFLAGS) $(LIB)cinnamon$(SO) $(LIB)cinnamon_openal$(SO)
- $(AR) rc x.a $(OPENAL_OBJECTS) cin_common.o
- $(RANLIB) x.a
- $(CP) $(CPFLAGS) x.a $(LIB)cinnamon_openal$(A)
- $(MV) $(MVFLAGS) x.a $(LIB)cinnamon$(A)
-
-# Common objects
-cin_common.o: $(CIN_COMMON_DEPS)
- $(CC) $(CFLAGS) cin_common.c -o cin_common.o
-
-cin_loader_soft.o: $(CIN_LOADER_SOFT_DEPS)
- $(CC) $(CFLAGS) -c cin_loader_soft.c -o cin_loader_soft.o
-
-# OpenAL objects
-cin_loader_openal.o: $(CIN_LOADER_OPENAL_DEPS)
- $(CC) $(CFLAGS) -c cin_loader_openal.c -o cin_loader_openal.o
-
-cin_driver_openal.o: $(CIN_DRIVER_OPENAL_DEPS)
- $(CC) $(CFLAGS) -c cin_driver_openal.c -o cin_driver_openal.o
-
-cin_sound_openal.o: $(CIN_SOUND_OPENAL_DEPS)
- $(CC) $(CFLAGS) -c cin_sound_openal.c -o cin_sound_openal.o
-
-#Test objects
-sine_test.o: $(SINE_TEST_DEPS)
- $(CC) $(CFLAGS) -c sine_test.c
-
-.PHONY: openal
+include cin_build_gcc.mk
const enum Cin_DriverError drv_err =
Cin_DriverSupportsSampleRate(drv, sample_rate);
if(drv_err != Cin_eDriverSuccess){
- assert(drv_err == Cin_eLoaderUnsupportedSampleRate);
+ assert(drv_err == Cin_eDriverUnsupportedSampleRate);
return (enum Cin_LoaderError)drv_err;
}
}
case 22050:
case 44100:
case 44800:
+ case 48000:
return Cin_eDriverSuccess;
default:
return Cin_eDriverUnsupportedSampleRate;
unsigned num_channels,
enum Cin_Format format){
- assert(out);
- assert(drv);
+ assert(out != NULL);
+ assert(drv != NULL);
{
const enum Cin_LoaderError err =
#include "cin_openal.h"
#include <assert.h>
+#include <stdlib.h>
unsigned Cin_StructDriverSize(){
return sizeof(struct Cin_Driver);
#endif
#elif defined __GNUC__ /* GCC or not WIN32 */
-
+
+#ifdef __CYGWIN__
/* Use the C calling convention for all exported symbols, with protected visibility. */
#define CIN_EXPORT(X) X __attribute__((visibility ("default"), cdecl, used))
-
/* Internal functions have hidden visibility. */
#define CIN_PRIVATE(X) X __attribute__((visibility("hidden"), fastcall))
+#else
+ #define CIN_EXPORT(X) X __attribute__((visibility ("default")))
+ #define CIN_PRIVATE(X) X __attribute__((visibility("hidden")))
+#endif
#else /* not WIN32 and not GCC */
#include "cin_loader_soft.h"
#include "cin_loader.h"
+#include <assert.h>
#include <stdlib.h>
unsigned Cin_StructLoaderSize(){
unsigned channels,
enum Cin_Format format){
+ assert(out != NULL);
+
out->sample_rate = sample_rate;
out->channels = channels;
out->format = format;
struct Cin_LoaderData *const lddata =
malloc(sizeof(struct Cin_LoaderData) + byte_size);
+ assert(lddata != NULL);
+
lddata->next = NULL;
lddata->len = byte_size;
!INCLUDE cin_build_openal.mk
!INCLUDE cin_build_dsound.mk
-dsound: $(DSOUND_OBJECTS) cin_common.obj $(TEST_OBJS)
- $(LINK) $(DSOUND_OBJECTS) cin_common.obj dsound.lib dxguid.lib $(LINKFLAGS)
- $(LINK) sine_test.obj cinnamon.lib /NOLOGO
-
-openal: $(OPENAL_OBJECTS) cin_common.obj $(TEST_OBJS)
- $(LINK) $(OPENAL_OBJECTS) cin_common.obj lib\OpenAL32.lib $(LINKFLAGS)
- $(LINK) sine_test.obj cinnamon.lib /NOLOGO
-
# Common objects
cin_common.obj: $(CIN_COMMON_DEPS)
$(CL) $(CFLAGS) cin_common.c
#Test objects
sine_test.obj: $(SINE_TEST_DEPS)
$(CL) $(CFLAGS) sine_test.c
+
+cinnamon.dll: $(DSOUND_OBJECTS) cin_common.obj $(TEST_OBJS)
+ $(LINK) $(DSOUND_OBJECTS) cin_common.obj dsound.lib dxguid.lib $(LINKFLAGS)
+ $(LINK) sine_test.obj cinnamon.lib /NOLOGO
+
+openal: $(OPENAL_OBJECTS) cin_common.obj $(TEST_OBJS)
+ $(LINK) $(OPENAL_OBJECTS) cin_common.obj lib\OpenAL32.lib $(LINKFLAGS)
+ $(LINK) sine_test.obj cinnamon.lib /NOLOGO
+
+dsound: cinnamon.dll
* http://creativecommons.org/publicdomain/zero/1.0/
*/
+#define _POSIX_C_SOURCE 199309L
+
#include "cin_driver.h"
#include "cin_loader.h"
#include "cin_sound.h"
#include <Windows.h>
#else
#include <time.h>
+#include <unistd.h>
#endif
#ifndef M_PI
/* TODO: Make these configurable */
unsigned num_channels = 2,
- sample_rate = 44100,
+ sample_rate = 48000,
sin_frequency = 440,
num_seconds = 11;