aboutsummaryrefslogtreecommitdiff
path: root/utils/winmm_drv/CMakeLists.txt
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-09-21 03:33:23 +0300
committerWohlstand <admin@wohlnet.ru>2020-09-21 03:33:23 +0300
commit08773b7ed7181e03392a766a7c1a8335d4ac44e6 (patch)
tree1b268346e585af8ca0151a8af24a9e8d7219f988 /utils/winmm_drv/CMakeLists.txt
parent31f32ac688336e179ebad0ba24ee991804ac17d0 (diff)
downloadlibADLMIDI-08773b7ed7181e03392a766a7c1a8335d4ac44e6.tar.gz
libADLMIDI-08773b7ed7181e03392a766a7c1a8335d4ac44e6.tar.bz2
libADLMIDI-08773b7ed7181e03392a766a7c1a8335d4ac44e6.zip
WinMM-Drv: Better compatibility with older Windows
Do link of a mingwex statically
Diffstat (limited to 'utils/winmm_drv/CMakeLists.txt')
-rw-r--r--utils/winmm_drv/CMakeLists.txt22
1 files changed, 21 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()