blob: e65f281b91a27926ca69ea68e5d9ec3f4ba21f5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
if(NOT WIN32)
message(FATAL_ERROR "WinDriver: This component is for Windows Platform only")
endif()
option(WITH_WINMMDRV_PTHREADS "Link libwinpthreads statically (when using pthread-based builds)" ON)
#====================================
# Driver module
#====================================
set(ADLMIDI_DRIVER_SRC
src/winmm_drv.def
src/winmm_drv.cpp
src/MidiSynth.cpp
config/regconfig.c
)
add_library(adlmididrv MODULE ${ADLMIDI_DRIVER_SRC})
set_target_properties(adlmididrv PROPERTIES PREFIX "")
target_link_libraries(adlmididrv PRIVATE winmm ADLMIDI_static)
target_include_directories(adlmididrv PRIVATE config)
target_compile_definitions(adlmididrv PRIVATE
-D_USRDLL
-D_WINDLL
-DMM_WIN32DRV_EXPORTS
-DENABLE_REG_SERVER
)
if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
set_property(TARGET adlmididrv APPEND_STRING PROPERTY LINK_FLAGS " -static-libgcc -static-libstdc++ -Wl,--enable-stdcall-fixup")
if(WITH_WINMMDRV_PTHREADS)
set_property(TARGET adlmididrv APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive")
endif()
endif()
if(NOT MSVC)
target_compile_options(adlmididrv PRIVATE "-Wno-cast-function-type")
endif()
#====================================
# Install utility
#====================================
set(ADLMIDI_INSTALLER_SRC
installer/drvinst.c
)
if(NOT MSVC)
list(APPEND ADLMIDI_INSTALLER_SRC
installer/drvinst.rc
)
endif()
add_executable(drvsetup ${ADLMIDI_INSTALLER_SRC})
target_compile_definitions(drvsetup PRIVATE
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1
-D_CRT_SECURE_NO_WARNINGS
)
if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
set_property(TARGET drvsetup APPEND_STRING PROPERTY LINK_FLAGS " -static-libgcc")
endif()
#====================================
# A unit test to verify the driver
#====================================
add_executable(drvtest test/test.c)
target_link_libraries(drvtest PRIVATE winmm)
target_compile_options(drvtest PRIVATE "-Wno-cast-function-type")
#====================================
# Control panel applet
#====================================
set(ADLMIDI_DRIVER_SRC
cpl/adlconfig.def
cpl/adlconfig.rc
cpl/config_dialog.c
config/regconfig.c
)
add_library(adlmidiconfig MODULE ${ADLMIDI_DRIVER_SRC} cpl/adlconfig.c)
set_target_properties(adlmidiconfig PROPERTIES PREFIX "" OUTPUT_NAME "libadlconfig" SUFFIX ".cpl")
target_include_directories(adlmidiconfig PRIVATE config)
target_compile_definitions(adlmidiconfig PRIVATE
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1
-D_CRT_SECURE_NO_WARNINGS
-D_UNICODE
-DUNICODE
-DADL_IS_CPL_APPLET
)
target_link_libraries(adlmidiconfig PRIVATE comctl32 gdi32 user32)
add_executable(adlmidiconfigtool ${ADLMIDI_DRIVER_SRC} cpl/adlconfig-tool.c)
set_target_properties(adlmidiconfigtool PROPERTIES WIN32_EXECUTABLE ON)
target_include_directories(adlmidiconfigtool PRIVATE config)
target_compile_definitions(adlmidiconfigtool PRIVATE
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1
-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1
-D_CRT_SECURE_NO_WARNINGS
-D_UNICODE
-DUNICODE
)
target_link_libraries(adlmidiconfigtool PRIVATE comctl32 gdi32 user32)
if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
target_compile_options(adlmidiconfig PRIVATE "-Wno-cast-function-type")
target_compile_options(adlmidiconfigtool PRIVATE "-Wno-cast-function-type")
set_property(TARGET adlmidiconfig APPEND_STRING PROPERTY LINK_FLAGS " -static-libgcc -Wl,--enable-stdcall-fixup")
set_property(TARGET adlmidiconfigtool APPEND_STRING PROPERTY LINK_FLAGS " -static-libgcc -Wl,--enable-stdcall-fixup")
endif()
#install(TARGETS adlmididrv
# RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|