リビジョン | 46f663529320ad7c23ba0c7e0238596ab296624e (tree) |
---|---|
日時 | 2020-05-03 05:54:58 |
作者 | AlaskanEmily <emily@alas...> |
コミッター | AlaskanEmily |
Fix compiling on OpenBSD for OSS rather than OpenAL
@@ -7,10 +7,15 @@ include gcc.mk | ||
7 | 7 | |
8 | 8 | BACKEND?=openal |
9 | 9 | |
10 | +CURDIR=$(shell pwd) | |
10 | 11 | ifeq "$(BACKEND)" "dsound" |
11 | 12 | LINK?=$(CXX) |
12 | 13 | else ifeq "$(BACKEND)" "oss" |
14 | + | |
13 | 15 | EXTRALIBS=-lpthread |
16 | +# Get OSS emulation on BSD's | |
17 | +EXTRALIBS+=$(if $(findstring $(shell uname),"BSD"),-lossaudio,) | |
18 | + | |
14 | 19 | LINK?="$(CC)" |
15 | 20 | else ifeq "$(BACKEND)" "openal" |
16 | 21 | EXTRALIBS=-lopenal |
@@ -8,8 +8,8 @@ CIN_DEBUGFLAGS?= -g | ||
8 | 8 | CC?=gcc |
9 | 9 | CXX?=g++ |
10 | 10 | CCFLAGS?=-Wall -Wextra -pedantic -Wshadow -Wenum-compare -Wno-switch $(CIN_DEBUGFLAGS) $(CIN_FPICFLAGS) |
11 | -CFLAGS?=$(CCFLAGS) -ansi | |
12 | -CXXFLAGS?=$(CCFLAGS) -std=c++98 -fno-rtti -fno-exceptions | |
11 | +CFLAGS=$(CCFLAGS) -ansi | |
12 | +CXXFLAGS=$(CCFLAGS) -std=c++98 -fno-rtti -fno-exceptions | |
13 | 13 | AR?=ar |
14 | 14 | RANLIB?=ranlib |
15 | 15 | LINKFLAGS?=$(CIN_DEBUGFLAGS) $(CIN_FPICFLAGS) |
@@ -7,10 +7,15 @@ | ||
7 | 7 | |
8 | 8 | BACKEND?=oss |
9 | 9 | |
10 | +CURDIR=${PWD} | |
10 | 11 | .if "${BACKEND}" == "dsound" |
11 | 12 | LINK?=$(CXX) |
12 | 13 | .else |
13 | 14 | LINK=$(CC) |
14 | 15 | .endif |
15 | 16 | |
17 | +.if ${BACKEND} == oss | |
18 | +EXTRALIBS=-lossaudio -lpthread | |
19 | +.endif | |
20 | + | |
16 | 21 | .include "unix.mk" |
@@ -14,10 +14,6 @@ | ||
14 | 14 | #define _DEFAULT_SOURCE |
15 | 15 | #define _BSD_SOURCE |
16 | 16 | |
17 | -#if defined __GNUC__ | |
18 | -#include <alloca.h> | |
19 | -#endif | |
20 | - | |
21 | 17 | #include <assert.h> |
22 | 18 | #include <stdlib.h> |
23 | 19 | #include <stdio.h> |
@@ -323,7 +323,8 @@ enum Cin_DriverError Cin_CreateDriver(struct Cin_Driver *drv){ | ||
323 | 323 | drv->id_counter = 0; |
324 | 324 | |
325 | 325 | { |
326 | - int dev = -1, val = 0; | |
326 | + int dev = -1, val; | |
327 | + char buffer[] = "/dev/audio\0"; | |
327 | 328 | const char *const devname = getenv("AUDIODEV"); |
328 | 329 | if(devname != NULL) |
329 | 330 | dev = open(devname, O_WRONLY); |
@@ -331,6 +332,12 @@ enum Cin_DriverError Cin_CreateDriver(struct Cin_Driver *drv){ | ||
331 | 332 | if(dev == -1 && devname == NULL) |
332 | 333 | dev = open("/dev/dsp", O_WRONLY); |
333 | 334 | |
335 | + /* Some BSD systems have /dev/audio* instead. */ | |
336 | + for(val = 0; dev == -1 && val <= 10; val++){ | |
337 | + dev = open(buffer, O_WRONLY); | |
338 | + buffer[sizeof(buffer)-2] = '0' + val; | |
339 | + } | |
340 | + | |
334 | 341 | if(dev == -1){ |
335 | 342 | ret = Cin_eDriverNoDevice; |
336 | 343 | goto fail_mutex; |
@@ -16,7 +16,7 @@ libcin_oss_x.a: $(OBJECTS) | ||
16 | 16 | |
17 | 17 | libcin_oss.a: $(CIN_COMMONLIB) $(CIN_MIXERLIB) libcin_oss_x.a |
18 | 18 | if [ -f libcin_oss2.a ] ; then rm libcin_oss2.a ; fi |
19 | - echo 'create libcin_oss2.a\naddlib libcin_oss_x.a\naddlib $(CIN_COMMONLIB)\naddlib $(CIN_MIXERLIB)\nsave\nend\n' | $(AR) M | |
19 | + echo 'create libcin_oss2.a\naddlib libcin_oss_x.a\naddlib $(CIN_COMMONLIB)\naddlib $(CIN_MIXERLIB)\nsave\nend\n' | $(AR) -M | |
20 | 20 | $(RANLIB) libcin_oss2.a |
21 | 21 | mv libcin_oss2.a libcin_oss.a |
22 | 22 |