1 cmake_minimum_required(VERSION 3.0.2)
3 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
5 include(CheckCCompilerFlag)
6 include(CheckCSourceCompiles)
8 include(CheckIncludeFile)
13 IF(NOT CMAKE_BUILD_TYPE)
14 SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
15 "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
24 set(DSOAL_OBJS buffer.c
41 set(DSOAL_INC ${DSOAL_INC} ${DSOAL_BINARY_DIR} ${DSOAL_SOURCE_DIR}/include/AL)
44 check_type_size("long" SIZEOF_LONG)
45 set(DSOAL_DEFS ${DSOAL_DEFS} "SIZEOF_LONG=${SIZEOF_LONG}")
47 check_c_source_compiles("#include <intrin.h>
50 unsigned long idx = 0;
51 _BitScanForward64(&idx, 1);
53 }" HAVE_BITSCANFORWARD64_INTRINSIC)
54 if(HAVE_BITSCANFORWARD64_INTRINSIC)
55 set(DSOAL_DEFS ${DSOAL_DEFS} HAVE_BITSCANFORWARD64_INTRINSIC)
57 check_c_source_compiles("#include <intrin.h>
60 unsigned long idx = 0;
61 _BitScanForward(&idx, 1);
63 }" HAVE_BITSCANFORWARD_INTRINSIC)
64 if(HAVE_BITSCANFORWARD_INTRINSIC)
65 set(DSOAL_DEFS ${DSOAL_DEFS} HAVE_BITSCANFORWARD_INTRINSIC)
71 set(DSOAL_FLAGS ${DSOAL_FLAGS} -Winline -Wall)
72 check_c_compiler_flag(-Wextra HAVE_W_EXTRA)
74 set(DSOAL_FLAGS ${DSOAL_FLAGS} -Wextra)
76 set(DSOAL_LIBS ${DSOAL_LIBS} -static-libgcc)
79 check_c_compiler_flag(-fvisibility=hidden HAVE_FVISIBILITY_HIDDEN)
80 if(HAVE_FVISIBILITY_HIDDEN)
81 set(DSOAL_FLAGS ${DSOAL_FLAGS} -fvisibility=hidden)
85 set(CMAKE_RC_COMPILER_INIT windres)
86 set(CMAKE_RC_COMPILE_OBJECT
87 "<CMAKE_RC_COMPILER> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
91 set(DSOAL_OBJS ${DSOAL_OBJS} debug.c version.rc)
93 set(DSOAL_DEFS ${DSOAL_DEFS} _WIN32 WINVER=0x0600 DEBUG_INFO)
95 set(DSOAL_LIBS ${DSOAL_LIBS} winmm ole32)
97 set(DSOAL_DEFS ${DSOAL_DEFS} COBJMACROS)
100 add_library(dsound SHARED ${DSOAL_OBJS} msvc.def)
101 set(DSOAL_DEFS ${DSOAL_DEFS} _CRT_SECURE_NO_WARNINGS)
102 set(DSOAL_FLAGS ${DSOAL_FLAGS} /W3 /wd4090 /wd4113)
104 add_library(dsound SHARED ${DSOAL_OBJS} mingw.def)
108 set_target_properties(dsound PROPERTIES PREFIX "")
110 target_compile_definitions(dsound PRIVATE ${DSOAL_DEFS})
111 target_include_directories(dsound PRIVATE ${DSOAL_INC})
112 target_compile_options(dsound PRIVATE ${DSOAL_FLAGS})
113 target_link_libraries(dsound PRIVATE ${DSOAL_LIBS})