Always dynamically load OpenAL, using the name dsoal-aldrv.dll
[dsound-openal.git] / CMakeLists.txt
blob7464b12fe37efabc8a2065d9cd6e34675e881abd
1 cmake_minimum_required(VERSION 3.0.2)
3 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
5 include(CheckCCompilerFlag)
6 include(CheckIncludeFile)
8 project(DSOAL C)
11 IF(NOT CMAKE_BUILD_TYPE)
12     SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
13         "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
14         FORCE)
15 ENDIF()
17 set(DSOAL_DEFS "")
18 set(DSOAL_INC "")
19 set(DSOAL_FLAGS "")
20 set(DSOAL_LIBS "")
22 set(DSOAL_OBJS buffer.c
23                capture.c
24                dsound8.c
25                dsound_main.c
26                dsound_private.h
27                duplex.c
28                eax.h
29                primary.c
30                propset.c)
32 set(DSOAL_INC ${DSOAL_INC} ${DSOAL_BINARY_DIR} ${DSOAL_SOURCE_DIR}/include/AL)
34 if(NOT MSVC)
35     set(DSOAL_FLAGS ${DSOAL_FLAGS} -Winline -Wall)
36     check_c_compiler_flag(-Wextra HAVE_W_EXTRA)
37     if(HAVE_W_EXTRA)
38         set(DSOAL_FLAGS ${DSOAL_FLAGS} -Wextra)
39     endif()
40 endif()
41 if(NOT WIN32)
42     check_c_compiler_flag(-fvisibility=hidden HAVE_FVISIBILITY_HIDDEN)
43     if(HAVE_FVISIBILITY_HIDDEN)
44         set(DSOAL_FLAGS ${DSOAL_FLAGS} -fvisibility=hidden)
45     endif()
46 else()
47     if(MINGW)
48         set(CMAKE_RC_COMPILER_INIT windres)
49         set(CMAKE_RC_COMPILE_OBJECT
50             "<CMAKE_RC_COMPILER> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
51     endif(MINGW)
52     enable_language(RC)
54     set(DSOAL_OBJS ${DSOAL_OBJS} debug.c version.rc)
56     set(DSOAL_DEFS ${DSOAL_DEFS} _WIN32 WINVER=0x0600 DEBUG_INFO)
58     set(DSOAL_LIBS ${DSOAL_LIBS} winmm ole32)
59 endif()
60 set(DSOAL_DEFS ${DSOAL_DEFS} COBJMACROS)
62 add_library(dsound SHARED ${DSOAL_OBJS} dsound.def)
63 if(WIN32)
64     set_target_properties(dsound PROPERTIES PREFIX "")
65 endif()
66 target_compile_definitions(dsound PRIVATE ${DSOAL_DEFS})
67 target_include_directories(dsound PRIVATE ${DSOAL_INC})
68 target_compile_options(dsound PRIVATE ${DSOAL_FLAGS})
69 target_link_libraries(dsound PRIVATE ${DSOAL_LIBS})