aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils/winmm_drv/CMakeLists.txt22
-rw-r--r--utils/winmm_drv/installer/install.bat1
-rw-r--r--utils/winmm_drv/installer/uninstall.bat1
3 files changed, 23 insertions, 1 deletions
diff --git a/utils/winmm_drv/CMakeLists.txt b/utils/winmm_drv/CMakeLists.txt
index ad35aaa..ae76a0c 100644
--- a/utils/winmm_drv/CMakeLists.txt
+++ b/utils/winmm_drv/CMakeLists.txt
@@ -3,7 +3,10 @@ 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)
+if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
+ option(WITH_WINMMDRV_PTHREADS "Link libwinpthreads statically (when using pthread-based builds)" ON)
+ option(WITH_WINMMDRV_MINGWEX "Link libmingwex statically (when using vanilla MinGW builds)" OFF)
+endif()
#====================================
# Driver module
@@ -32,6 +35,9 @@ if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
if(WITH_WINMMDRV_PTHREADS)
set_property(TARGET adlmididrv APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive")
endif()
+ if(WITH_WINMMDRV_MINGWEX)
+ set_property(TARGET adlmididrv APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lmingwex -Wl,-Bdynamic,--no-whole-archive")
+ endif()
endif()
if(NOT MSVC)
@@ -64,8 +70,14 @@ target_compile_definitions(drvsetup PRIVATE
if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
set_property(TARGET drvsetup APPEND_STRING PROPERTY LINK_FLAGS " -static-libgcc")
+ if(WITH_WINMMDRV_MINGWEX)
+ set_property(TARGET drvsetup APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lmingwex -Wl,-Bdynamic,--no-whole-archive")
+ endif()
endif()
+configure_file(installer/install.bat ${CMAKE_BINARY_DIR}/install.bat COPYONLY)
+configure_file(installer/uninstall.bat ${CMAKE_BINARY_DIR}/uninstall.bat COPYONLY)
+
#====================================
# A unit test to verify the driver
@@ -74,6 +86,9 @@ endif()
add_executable(drvtest test/test.c)
target_link_libraries(drvtest PRIVATE winmm)
target_compile_options(drvtest PRIVATE "-Wno-cast-function-type")
+if(WITH_WINMMDRV_MINGWEX)
+ set_property(TARGET drvtest APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lmingwex -Wl,-Bdynamic,--no-whole-archive")
+endif()
#====================================
@@ -101,6 +116,7 @@ target_compile_definitions(adlmidiconfig PRIVATE
target_link_libraries(adlmidiconfig PRIVATE comctl32 gdi32 user32)
+
add_executable(adlmidiconfigtool ${ADLMIDI_DRIVER_SRC} cpl/adlconfig-tool.c cpl/res-tool.rc)
set_target_properties(adlmidiconfigtool PROPERTIES WIN32_EXECUTABLE ON)
target_include_directories(adlmidiconfigtool PRIVATE config)
@@ -119,6 +135,10 @@ if(WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
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")
+ if(WITH_WINMMDRV_MINGWEX)
+ set_property(TARGET adlmidiconfig APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lmingwex -Wl,-Bdynamic,--no-whole-archive")
+ set_property(TARGET adlmidiconfigtool APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-Bstatic,--whole-archive -lmingwex -Wl,-Bdynamic,--no-whole-archive")
+ endif()
endif()
diff --git a/utils/winmm_drv/installer/install.bat b/utils/winmm_drv/installer/install.bat
new file mode 100644
index 0000000..3daf94d
--- /dev/null
+++ b/utils/winmm_drv/installer/install.bat
@@ -0,0 +1 @@
+.\drvsetup install \ No newline at end of file
diff --git a/utils/winmm_drv/installer/uninstall.bat b/utils/winmm_drv/installer/uninstall.bat
new file mode 100644
index 0000000..537a8e8
--- /dev/null
+++ b/utils/winmm_drv/installer/uninstall.bat
@@ -0,0 +1 @@
+.\drvsetup uninstall \ No newline at end of file