2017-03-23 16:10:45 +00:00
|
|
|
include(CMakeParseArguments)
|
|
|
|
|
|
|
|
function(find_pkg_config_with_fallback name)
|
|
|
|
cmake_parse_arguments(ARGS "" "PKG_CONFIG_NAME" "LIB_NAMES;LIB_DIR_HINTS;INCLUDE_NAMES;INCLUDE_DIR_PATHS;INCLUDE_DIR_HINTS;INCLUDE_DIR_SUFFIXES;DEPENDS" ${ARGN})
|
|
|
|
set(${name}_PKG_CONFIG_NAME ${ARGS_PKG_CONFIG_NAME} PARENT_SCOPE)
|
|
|
|
find_package(PkgConfig)
|
|
|
|
|
|
|
|
if(PKG_CONFIG_FOUND)
|
|
|
|
pkg_search_module(${name}_PKG_CONFIG QUIET ${ARGS_PKG_CONFIG_NAME})
|
|
|
|
endif(PKG_CONFIG_FOUND)
|
|
|
|
|
|
|
|
if (${name}_PKG_CONFIG_FOUND)
|
2019-12-28 02:11:51 +00:00
|
|
|
# Found via pkg-config, using its result values
|
2017-03-23 16:10:45 +00:00
|
|
|
set(${name}_FOUND ${${name}_PKG_CONFIG_FOUND})
|
|
|
|
|
Added full Windows support (#8)
* Windows compatibility Tweaks
* Add experimental windows installer
This nsis script should create a windows installer.
Although the installer worked for the first tests
you should handle it with care and consider it
highly experimental
* Prepare signing
Collected some infos regarding signing
a windows build.
* Revert "Prepare signing"
I copied the files into the wrong folder…
… it's late, sorry.
This reverts commit 7d6b9e7f4cd066b4b59eddec09be3bcac5c6c656.
* Prepare signing
Collected some infos regarding signing
a windows build.
* Fix typo in Dino slogan
* Add license to windows installer
* Add startmenu folder with several items
Added a startmenu folder with the following items:
* Dino launcher
* License
* Link to Dino website
* Uninstaller
* Prevent duplicated DLLs
* Add dino logo again
The dino logo for the startmenu was accidentally
no longer included since the last commit.
* Simplify installer script
The current build script already places the files in the right
folder structure so the installer doesn't have to do it itself
* Add german language.
* Add option to install without OpenPGP plugin
* Removed compenent section
This section was only introduced to be able to
disable the OpenPGP plugin as Dino often crashed
on Windows if OpenPGP was not installed but the
plugin enabled.
This is no more necessary as the OpenPGP plugin
is now disabled by default.
* Remove installation type "OpenPGP" support
This is no longer needed (see previous commit)
but was forgotten to remove in the previous
commit.
* Add compression to achieve smaller installer size.
* Add AppID (untested).
* Fix syntax error for setting AppID.
* Windows compatibility Tweaks
* fix build on newest MSYS2
* Do not search for the built-in libraries when compiling with MINGW
* Added _WIN32 define to VALAC on Windows
* Add missing _WIN32
* Add support for OpenPGP on Windows
* Use ShellExecute instead of AppInfo to open files on Windows
* Use slight larger font on Windows so it matches Linux style
Also fixes some fuzzy fonts.
* Fixed some Windows not appearing when opening file
* Set alternate file stream for downloaded files.
* Added information and Dino icon to Windows executable
* Set Windows executable version from PROJECT_VERSION
* Add WIN32 fonts as a plugin
* Every call to CoInitialize() must be balanced
with a call to CoUninitialize()
* Add --export-all-symbols to Windows compilation
* Add implicit link directories to package HINT path on MingW
Instead of blacklisting those libraries
* Do not hardcode GPG path on Windows
* Export all plugin symbols on Windows
* Use Dino.Util.get_content_type also on preview
* Allow 32-bit linking
Win32 apis are __stdcall
* Use last_index_of instead of index_of
* Initial notification support
* Refactor windows-notification plugin
* Clean up
* Use code from Dino.Ui.Util
* Convert C code to Vala
* Add callback support
* Allow null image_path
* Use dynamic linking instead of runtime loading
Also made me notice that the signature of the function with the callback was wrong. Oops.
* Added 32-bit wintoast linker library
* Use VAPI and generate template in-app
* Initial plugin using new notification provider
* Add support for custom actions on notification
* Add notification retraction
* Use list with all notifications
* Rename field
* Fix muc invite and voide request not working
* Do not use GLib to open links in messages
Use ShellExecute
* Add MIT licensed winrt headers
* Initial code for using winrt headers
* Initial callback support
* Initial GObject wrapper for WinRT notifications
Still missing a lot of stuff
* Initial code to allow buttons and text
* Use string_view
* Increase ref on event token
* Add toastnotifier
* Fix string conversion
* Actions can stack
* Remove unity compilation unit
* No need to enable coroutines
* Fields must be created in the private struct
Also change unordered_map to list, we do not need hashing and stuff.
* Add failed and dimissed actions
* Cleanup dismissed actions on toast notification finalizer
* Add template type enum
* Rename enums to better match what Vala expects
* Rename plugin vala file
* Add template getter
* Initial experiments with notification XML building
* Anitial builder
* Initial notification provider using WinRT
Crashes when activating actions, might be related to threads.
* Delegate `activate_action` to UI thread
* Fixed crash with multiple notifications
Sometimes an invalid function pointer was called with an invalid context
* Add comment to builder
* Use async
* Use g_new0 and g_free to generate raw strings
* Valac think that getters are always owned by the struct
* introduce try_invoke -- a logging exception catcher
* stop exceptions from crossing ABI boundary in a few places
* mark exception-safe C entry points as such
* clarify some entry points' names
* make GetCurrentModulePath and GetShortcutPath throw win32 errors
* clarify GetCurrentModulePath's name
* generalize GetShortcutPath into GetEnv
* make GetEnv more robust and not limit length of variables
* change some local functions' signatures
* constify all the things
* rewrite shortcut management code with RAII, error logging and exceptions
It actually works now.
* add restoration of shortcut's target path
* switch to runtime loading of PropVariantToStringAlloc
Now it really should work.
* Add ginvoke to CMakeLists
* Removed unused library on linker
It is loaded dynamically
* Add README.md to Windows notification plugin
* Fix notifications not hiding
* unimplement accidentally implemented wide string overloads of describe_argument
* work around GetEnvironmentVariable not resetting last error
* handle exe paths longer than 259 chars
* move some whitespace around
* use lower-case 0x prefix for hresult code formatting everywhere
* remove an unused include
* make meta-error messages more precise
* handle empty hresult_error message specially
* handle theoretical future failures of wsview_to_char
* fix UB in glib::describe_arguments called with no arguments
Makes failure logging of nullary invokables non-crashy.
* make glib::impl::varstring less explosive
* fiddle with punctuation
* add nullary version of g_try_invoke macro
* generalize glib::try_invoke to any return-by-value type and void
* protect GetTemplateContent callers from exceptions
* rewrite InitApartment and protect callers from (the rest of the) exceptions
Initializing COM by calling `winrt::init_apartment()` would always cause
stack unwinding *in practice*, which is suboptimal at best, and even using
`apartment_type::single_threaded` still would require exception filtering
*just in case*.
* handle empty menu-relative shortcut paths
* move module loading functions out of shortcutcreator.cpp
* work around a (pedantic) format specifier warning
* silence enum stringification warnings by first casting to underlying types
* fix / work around uninitialized fields warnings
* don't use FALSE as a null pointer constant
* replace C-style concurrent initialization of statics
C++ statics are thread-safe as is and are usually implemented more
efficiently. Besides, `volatile` is likely misused here anyway.
* reflow/respace
* stop checking for empty AUMIDs
The downstream code handles them just fine.
* log SetCurrentProcessExplicitAppUserModelID errors
* remove the no-longer-needed -municode compile option
* replace lists with vectors
* init `Callback` completely always
The `token` pointer was left dangerously uninitialized after construction.
* comment out unused arguments [-Wunused-parameter]
* Add support for adaptive Windows 10 notifications
* Add support for inline images to notification
* Allow null header, body, applogo, and image on notification builder
* DelegateToUi must be an owned function
* Prefer primary DirectSound device on Windows
It automatically selects the default device for use,
there is no book keeping necessary and things just work
The primary DirectSound device has a (NULL) guid, making
it wasy to be found.
* Do not allow selection of WASAPI devices
Dino would have to resample it own audio, do more book keeping and
somehow find out manually which is the default device.
* Add initial call notifications
* Use correct generic type for ArrayList
Nullable crashes Dino
* Allow devices with properties and use has_classes
* Remove YoloRT from tree
* Build YoloRT on project build
* Do not generate WinRT headers, just download them on build
* Fix compilation on gcc 11
* define _POSIX_C_SOURCE=1 on windows
Fixes "undefined reference to `localtime_r`" in, e.g., Vala's GLib.Time.local
when building on mingw-w64.
* fix call notifications buttons not working
* no need to ignore wasapi
* Ignore wasapi devices as they do not work well yet
* Removed version from Dino executable
We need a better way to get the version number
* Automatically set PANGOCAIRO_BACKEND to fontconfig on win32
* Fixed using GTK3 instead of GTK4
* Check YoloRT checksum before building
* Fix GPGME
* Added build script for windows
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added README-WIN64.md
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed dist-install dir
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Removed unnecessary installer files
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added build-installer target to build-win64.sh
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed build dependencies
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Move download yolort headers logic into prepare stage, delete yolort download script
* Added CI for MSYS2 (MINGW64) (#2)
- Use quotes in windows build script;
- Added missing gstreamer, webrtc-audio-processing and git;
- Added CI for Windows.
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
Co-authored-by: LAGonauta <lagonauta@gmail.com>
Co-authored-by: Martin Dosch <spam@mdosch.de>
Co-authored-by: Martin Dosch <martin@mdosch.de>
Co-authored-by: mjk <yuubi-san@users.noreply.github.com>
Co-authored-by: Daniel Reuther <daniel.reuther@liferay.com>
Co-authored-by: Felipe <LAGonauta@users.noreply.github.com>
Co-authored-by: Psayker <kirill970528@yandex.ru>
2024-03-18 19:51:50 +00:00
|
|
|
if(MINGW)
|
|
|
|
set(MINGWLIBPATH ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
|
|
|
|
endif(MINGW)
|
|
|
|
|
2017-03-23 16:10:45 +00:00
|
|
|
# Try to find real file name of libraries
|
|
|
|
foreach(lib ${${name}_PKG_CONFIG_LIBRARIES})
|
Added full Windows support (#8)
* Windows compatibility Tweaks
* Add experimental windows installer
This nsis script should create a windows installer.
Although the installer worked for the first tests
you should handle it with care and consider it
highly experimental
* Prepare signing
Collected some infos regarding signing
a windows build.
* Revert "Prepare signing"
I copied the files into the wrong folder…
… it's late, sorry.
This reverts commit 7d6b9e7f4cd066b4b59eddec09be3bcac5c6c656.
* Prepare signing
Collected some infos regarding signing
a windows build.
* Fix typo in Dino slogan
* Add license to windows installer
* Add startmenu folder with several items
Added a startmenu folder with the following items:
* Dino launcher
* License
* Link to Dino website
* Uninstaller
* Prevent duplicated DLLs
* Add dino logo again
The dino logo for the startmenu was accidentally
no longer included since the last commit.
* Simplify installer script
The current build script already places the files in the right
folder structure so the installer doesn't have to do it itself
* Add german language.
* Add option to install without OpenPGP plugin
* Removed compenent section
This section was only introduced to be able to
disable the OpenPGP plugin as Dino often crashed
on Windows if OpenPGP was not installed but the
plugin enabled.
This is no more necessary as the OpenPGP plugin
is now disabled by default.
* Remove installation type "OpenPGP" support
This is no longer needed (see previous commit)
but was forgotten to remove in the previous
commit.
* Add compression to achieve smaller installer size.
* Add AppID (untested).
* Fix syntax error for setting AppID.
* Windows compatibility Tweaks
* fix build on newest MSYS2
* Do not search for the built-in libraries when compiling with MINGW
* Added _WIN32 define to VALAC on Windows
* Add missing _WIN32
* Add support for OpenPGP on Windows
* Use ShellExecute instead of AppInfo to open files on Windows
* Use slight larger font on Windows so it matches Linux style
Also fixes some fuzzy fonts.
* Fixed some Windows not appearing when opening file
* Set alternate file stream for downloaded files.
* Added information and Dino icon to Windows executable
* Set Windows executable version from PROJECT_VERSION
* Add WIN32 fonts as a plugin
* Every call to CoInitialize() must be balanced
with a call to CoUninitialize()
* Add --export-all-symbols to Windows compilation
* Add implicit link directories to package HINT path on MingW
Instead of blacklisting those libraries
* Do not hardcode GPG path on Windows
* Export all plugin symbols on Windows
* Use Dino.Util.get_content_type also on preview
* Allow 32-bit linking
Win32 apis are __stdcall
* Use last_index_of instead of index_of
* Initial notification support
* Refactor windows-notification plugin
* Clean up
* Use code from Dino.Ui.Util
* Convert C code to Vala
* Add callback support
* Allow null image_path
* Use dynamic linking instead of runtime loading
Also made me notice that the signature of the function with the callback was wrong. Oops.
* Added 32-bit wintoast linker library
* Use VAPI and generate template in-app
* Initial plugin using new notification provider
* Add support for custom actions on notification
* Add notification retraction
* Use list with all notifications
* Rename field
* Fix muc invite and voide request not working
* Do not use GLib to open links in messages
Use ShellExecute
* Add MIT licensed winrt headers
* Initial code for using winrt headers
* Initial callback support
* Initial GObject wrapper for WinRT notifications
Still missing a lot of stuff
* Initial code to allow buttons and text
* Use string_view
* Increase ref on event token
* Add toastnotifier
* Fix string conversion
* Actions can stack
* Remove unity compilation unit
* No need to enable coroutines
* Fields must be created in the private struct
Also change unordered_map to list, we do not need hashing and stuff.
* Add failed and dimissed actions
* Cleanup dismissed actions on toast notification finalizer
* Add template type enum
* Rename enums to better match what Vala expects
* Rename plugin vala file
* Add template getter
* Initial experiments with notification XML building
* Anitial builder
* Initial notification provider using WinRT
Crashes when activating actions, might be related to threads.
* Delegate `activate_action` to UI thread
* Fixed crash with multiple notifications
Sometimes an invalid function pointer was called with an invalid context
* Add comment to builder
* Use async
* Use g_new0 and g_free to generate raw strings
* Valac think that getters are always owned by the struct
* introduce try_invoke -- a logging exception catcher
* stop exceptions from crossing ABI boundary in a few places
* mark exception-safe C entry points as such
* clarify some entry points' names
* make GetCurrentModulePath and GetShortcutPath throw win32 errors
* clarify GetCurrentModulePath's name
* generalize GetShortcutPath into GetEnv
* make GetEnv more robust and not limit length of variables
* change some local functions' signatures
* constify all the things
* rewrite shortcut management code with RAII, error logging and exceptions
It actually works now.
* add restoration of shortcut's target path
* switch to runtime loading of PropVariantToStringAlloc
Now it really should work.
* Add ginvoke to CMakeLists
* Removed unused library on linker
It is loaded dynamically
* Add README.md to Windows notification plugin
* Fix notifications not hiding
* unimplement accidentally implemented wide string overloads of describe_argument
* work around GetEnvironmentVariable not resetting last error
* handle exe paths longer than 259 chars
* move some whitespace around
* use lower-case 0x prefix for hresult code formatting everywhere
* remove an unused include
* make meta-error messages more precise
* handle empty hresult_error message specially
* handle theoretical future failures of wsview_to_char
* fix UB in glib::describe_arguments called with no arguments
Makes failure logging of nullary invokables non-crashy.
* make glib::impl::varstring less explosive
* fiddle with punctuation
* add nullary version of g_try_invoke macro
* generalize glib::try_invoke to any return-by-value type and void
* protect GetTemplateContent callers from exceptions
* rewrite InitApartment and protect callers from (the rest of the) exceptions
Initializing COM by calling `winrt::init_apartment()` would always cause
stack unwinding *in practice*, which is suboptimal at best, and even using
`apartment_type::single_threaded` still would require exception filtering
*just in case*.
* handle empty menu-relative shortcut paths
* move module loading functions out of shortcutcreator.cpp
* work around a (pedantic) format specifier warning
* silence enum stringification warnings by first casting to underlying types
* fix / work around uninitialized fields warnings
* don't use FALSE as a null pointer constant
* replace C-style concurrent initialization of statics
C++ statics are thread-safe as is and are usually implemented more
efficiently. Besides, `volatile` is likely misused here anyway.
* reflow/respace
* stop checking for empty AUMIDs
The downstream code handles them just fine.
* log SetCurrentProcessExplicitAppUserModelID errors
* remove the no-longer-needed -municode compile option
* replace lists with vectors
* init `Callback` completely always
The `token` pointer was left dangerously uninitialized after construction.
* comment out unused arguments [-Wunused-parameter]
* Add support for adaptive Windows 10 notifications
* Add support for inline images to notification
* Allow null header, body, applogo, and image on notification builder
* DelegateToUi must be an owned function
* Prefer primary DirectSound device on Windows
It automatically selects the default device for use,
there is no book keeping necessary and things just work
The primary DirectSound device has a (NULL) guid, making
it wasy to be found.
* Do not allow selection of WASAPI devices
Dino would have to resample it own audio, do more book keeping and
somehow find out manually which is the default device.
* Add initial call notifications
* Use correct generic type for ArrayList
Nullable crashes Dino
* Allow devices with properties and use has_classes
* Remove YoloRT from tree
* Build YoloRT on project build
* Do not generate WinRT headers, just download them on build
* Fix compilation on gcc 11
* define _POSIX_C_SOURCE=1 on windows
Fixes "undefined reference to `localtime_r`" in, e.g., Vala's GLib.Time.local
when building on mingw-w64.
* fix call notifications buttons not working
* no need to ignore wasapi
* Ignore wasapi devices as they do not work well yet
* Removed version from Dino executable
We need a better way to get the version number
* Automatically set PANGOCAIRO_BACKEND to fontconfig on win32
* Fixed using GTK3 instead of GTK4
* Check YoloRT checksum before building
* Fix GPGME
* Added build script for windows
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added README-WIN64.md
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed dist-install dir
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Removed unnecessary installer files
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added build-installer target to build-win64.sh
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed build dependencies
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Move download yolort headers logic into prepare stage, delete yolort download script
* Added CI for MSYS2 (MINGW64) (#2)
- Use quotes in windows build script;
- Added missing gstreamer, webrtc-audio-processing and git;
- Added CI for Windows.
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
Co-authored-by: LAGonauta <lagonauta@gmail.com>
Co-authored-by: Martin Dosch <spam@mdosch.de>
Co-authored-by: Martin Dosch <martin@mdosch.de>
Co-authored-by: mjk <yuubi-san@users.noreply.github.com>
Co-authored-by: Daniel Reuther <daniel.reuther@liferay.com>
Co-authored-by: Felipe <LAGonauta@users.noreply.github.com>
Co-authored-by: Psayker <kirill970528@yandex.ru>
2024-03-18 19:51:50 +00:00
|
|
|
find_library(${name}_${lib}_LIBRARY ${lib} HINTS ${${name}_PKG_CONFIG_LIBRARY_DIRS} ${MINGWLIBPATH})
|
2017-04-23 08:01:40 +00:00
|
|
|
mark_as_advanced(${name}_${lib}_LIBRARY)
|
|
|
|
if(NOT ${name}_${lib}_LIBRARY)
|
Added full Windows support (#8)
* Windows compatibility Tweaks
* Add experimental windows installer
This nsis script should create a windows installer.
Although the installer worked for the first tests
you should handle it with care and consider it
highly experimental
* Prepare signing
Collected some infos regarding signing
a windows build.
* Revert "Prepare signing"
I copied the files into the wrong folder…
… it's late, sorry.
This reverts commit 7d6b9e7f4cd066b4b59eddec09be3bcac5c6c656.
* Prepare signing
Collected some infos regarding signing
a windows build.
* Fix typo in Dino slogan
* Add license to windows installer
* Add startmenu folder with several items
Added a startmenu folder with the following items:
* Dino launcher
* License
* Link to Dino website
* Uninstaller
* Prevent duplicated DLLs
* Add dino logo again
The dino logo for the startmenu was accidentally
no longer included since the last commit.
* Simplify installer script
The current build script already places the files in the right
folder structure so the installer doesn't have to do it itself
* Add german language.
* Add option to install without OpenPGP plugin
* Removed compenent section
This section was only introduced to be able to
disable the OpenPGP plugin as Dino often crashed
on Windows if OpenPGP was not installed but the
plugin enabled.
This is no more necessary as the OpenPGP plugin
is now disabled by default.
* Remove installation type "OpenPGP" support
This is no longer needed (see previous commit)
but was forgotten to remove in the previous
commit.
* Add compression to achieve smaller installer size.
* Add AppID (untested).
* Fix syntax error for setting AppID.
* Windows compatibility Tweaks
* fix build on newest MSYS2
* Do not search for the built-in libraries when compiling with MINGW
* Added _WIN32 define to VALAC on Windows
* Add missing _WIN32
* Add support for OpenPGP on Windows
* Use ShellExecute instead of AppInfo to open files on Windows
* Use slight larger font on Windows so it matches Linux style
Also fixes some fuzzy fonts.
* Fixed some Windows not appearing when opening file
* Set alternate file stream for downloaded files.
* Added information and Dino icon to Windows executable
* Set Windows executable version from PROJECT_VERSION
* Add WIN32 fonts as a plugin
* Every call to CoInitialize() must be balanced
with a call to CoUninitialize()
* Add --export-all-symbols to Windows compilation
* Add implicit link directories to package HINT path on MingW
Instead of blacklisting those libraries
* Do not hardcode GPG path on Windows
* Export all plugin symbols on Windows
* Use Dino.Util.get_content_type also on preview
* Allow 32-bit linking
Win32 apis are __stdcall
* Use last_index_of instead of index_of
* Initial notification support
* Refactor windows-notification plugin
* Clean up
* Use code from Dino.Ui.Util
* Convert C code to Vala
* Add callback support
* Allow null image_path
* Use dynamic linking instead of runtime loading
Also made me notice that the signature of the function with the callback was wrong. Oops.
* Added 32-bit wintoast linker library
* Use VAPI and generate template in-app
* Initial plugin using new notification provider
* Add support for custom actions on notification
* Add notification retraction
* Use list with all notifications
* Rename field
* Fix muc invite and voide request not working
* Do not use GLib to open links in messages
Use ShellExecute
* Add MIT licensed winrt headers
* Initial code for using winrt headers
* Initial callback support
* Initial GObject wrapper for WinRT notifications
Still missing a lot of stuff
* Initial code to allow buttons and text
* Use string_view
* Increase ref on event token
* Add toastnotifier
* Fix string conversion
* Actions can stack
* Remove unity compilation unit
* No need to enable coroutines
* Fields must be created in the private struct
Also change unordered_map to list, we do not need hashing and stuff.
* Add failed and dimissed actions
* Cleanup dismissed actions on toast notification finalizer
* Add template type enum
* Rename enums to better match what Vala expects
* Rename plugin vala file
* Add template getter
* Initial experiments with notification XML building
* Anitial builder
* Initial notification provider using WinRT
Crashes when activating actions, might be related to threads.
* Delegate `activate_action` to UI thread
* Fixed crash with multiple notifications
Sometimes an invalid function pointer was called with an invalid context
* Add comment to builder
* Use async
* Use g_new0 and g_free to generate raw strings
* Valac think that getters are always owned by the struct
* introduce try_invoke -- a logging exception catcher
* stop exceptions from crossing ABI boundary in a few places
* mark exception-safe C entry points as such
* clarify some entry points' names
* make GetCurrentModulePath and GetShortcutPath throw win32 errors
* clarify GetCurrentModulePath's name
* generalize GetShortcutPath into GetEnv
* make GetEnv more robust and not limit length of variables
* change some local functions' signatures
* constify all the things
* rewrite shortcut management code with RAII, error logging and exceptions
It actually works now.
* add restoration of shortcut's target path
* switch to runtime loading of PropVariantToStringAlloc
Now it really should work.
* Add ginvoke to CMakeLists
* Removed unused library on linker
It is loaded dynamically
* Add README.md to Windows notification plugin
* Fix notifications not hiding
* unimplement accidentally implemented wide string overloads of describe_argument
* work around GetEnvironmentVariable not resetting last error
* handle exe paths longer than 259 chars
* move some whitespace around
* use lower-case 0x prefix for hresult code formatting everywhere
* remove an unused include
* make meta-error messages more precise
* handle empty hresult_error message specially
* handle theoretical future failures of wsview_to_char
* fix UB in glib::describe_arguments called with no arguments
Makes failure logging of nullary invokables non-crashy.
* make glib::impl::varstring less explosive
* fiddle with punctuation
* add nullary version of g_try_invoke macro
* generalize glib::try_invoke to any return-by-value type and void
* protect GetTemplateContent callers from exceptions
* rewrite InitApartment and protect callers from (the rest of the) exceptions
Initializing COM by calling `winrt::init_apartment()` would always cause
stack unwinding *in practice*, which is suboptimal at best, and even using
`apartment_type::single_threaded` still would require exception filtering
*just in case*.
* handle empty menu-relative shortcut paths
* move module loading functions out of shortcutcreator.cpp
* work around a (pedantic) format specifier warning
* silence enum stringification warnings by first casting to underlying types
* fix / work around uninitialized fields warnings
* don't use FALSE as a null pointer constant
* replace C-style concurrent initialization of statics
C++ statics are thread-safe as is and are usually implemented more
efficiently. Besides, `volatile` is likely misused here anyway.
* reflow/respace
* stop checking for empty AUMIDs
The downstream code handles them just fine.
* log SetCurrentProcessExplicitAppUserModelID errors
* remove the no-longer-needed -municode compile option
* replace lists with vectors
* init `Callback` completely always
The `token` pointer was left dangerously uninitialized after construction.
* comment out unused arguments [-Wunused-parameter]
* Add support for adaptive Windows 10 notifications
* Add support for inline images to notification
* Allow null header, body, applogo, and image on notification builder
* DelegateToUi must be an owned function
* Prefer primary DirectSound device on Windows
It automatically selects the default device for use,
there is no book keeping necessary and things just work
The primary DirectSound device has a (NULL) guid, making
it wasy to be found.
* Do not allow selection of WASAPI devices
Dino would have to resample it own audio, do more book keeping and
somehow find out manually which is the default device.
* Add initial call notifications
* Use correct generic type for ArrayList
Nullable crashes Dino
* Allow devices with properties and use has_classes
* Remove YoloRT from tree
* Build YoloRT on project build
* Do not generate WinRT headers, just download them on build
* Fix compilation on gcc 11
* define _POSIX_C_SOURCE=1 on windows
Fixes "undefined reference to `localtime_r`" in, e.g., Vala's GLib.Time.local
when building on mingw-w64.
* fix call notifications buttons not working
* no need to ignore wasapi
* Ignore wasapi devices as they do not work well yet
* Removed version from Dino executable
We need a better way to get the version number
* Automatically set PANGOCAIRO_BACKEND to fontconfig on win32
* Fixed using GTK3 instead of GTK4
* Check YoloRT checksum before building
* Fix GPGME
* Added build script for windows
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added README-WIN64.md
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed dist-install dir
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Removed unnecessary installer files
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Added build-installer target to build-win64.sh
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Fixed build dependencies
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
* Move download yolort headers logic into prepare stage, delete yolort download script
* Added CI for MSYS2 (MINGW64) (#2)
- Use quotes in windows build script;
- Added missing gstreamer, webrtc-audio-processing and git;
- Added CI for Windows.
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
---------
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
Co-authored-by: LAGonauta <lagonauta@gmail.com>
Co-authored-by: Martin Dosch <spam@mdosch.de>
Co-authored-by: Martin Dosch <martin@mdosch.de>
Co-authored-by: mjk <yuubi-san@users.noreply.github.com>
Co-authored-by: Daniel Reuther <daniel.reuther@liferay.com>
Co-authored-by: Felipe <LAGonauta@users.noreply.github.com>
Co-authored-by: Psayker <kirill970528@yandex.ru>
2024-03-18 19:51:50 +00:00
|
|
|
message(${name} ": " ${lib} " library not found")
|
2017-03-23 16:10:45 +00:00
|
|
|
unset(${name}_FOUND)
|
2017-04-23 08:01:40 +00:00
|
|
|
endif(NOT ${name}_${lib}_LIBRARY)
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(lib)
|
|
|
|
if(${name}_FOUND)
|
|
|
|
set(${name}_LIBRARIES "")
|
|
|
|
foreach(lib ${${name}_PKG_CONFIG_LIBRARIES})
|
2017-04-23 08:01:40 +00:00
|
|
|
list(APPEND ${name}_LIBRARIES ${${name}_${lib}_LIBRARY})
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(lib)
|
|
|
|
list(REMOVE_DUPLICATES ${name}_LIBRARIES)
|
|
|
|
set(${name}_LIBRARIES ${${name}_LIBRARIES} PARENT_SCOPE)
|
|
|
|
list(GET ${name}_LIBRARIES "0" ${name}_LIBRARY)
|
|
|
|
|
|
|
|
set(${name}_FOUND ${${name}_FOUND} PARENT_SCOPE)
|
|
|
|
set(${name}_INCLUDE_DIRS ${${name}_PKG_CONFIG_INCLUDE_DIRS} PARENT_SCOPE)
|
|
|
|
set(${name}_LIBRARIES ${${name}_PKG_CONFIG_LIBRARIES} PARENT_SCOPE)
|
|
|
|
set(${name}_LIBRARY ${${name}_LIBRARY} PARENT_SCOPE)
|
|
|
|
set(${name}_VERSION ${${name}_PKG_CONFIG_VERSION} PARENT_SCOPE)
|
|
|
|
|
|
|
|
if(NOT TARGET ${ARGS_PKG_CONFIG_NAME})
|
|
|
|
add_library(${ARGS_PKG_CONFIG_NAME} INTERFACE IMPORTED)
|
|
|
|
set_property(TARGET ${ARGS_PKG_CONFIG_NAME} PROPERTY INTERFACE_COMPILE_OPTIONS "${${name}_PKG_CONFIG_CFLAGS_OTHER}")
|
|
|
|
set_property(TARGET ${ARGS_PKG_CONFIG_NAME} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${name}_PKG_CONFIG_INCLUDE_DIRS}")
|
|
|
|
set_property(TARGET ${ARGS_PKG_CONFIG_NAME} PROPERTY INTERFACE_LINK_LIBRARIES "${${name}_LIBRARIES}")
|
|
|
|
endif(NOT TARGET ${ARGS_PKG_CONFIG_NAME})
|
|
|
|
endif(${name}_FOUND)
|
|
|
|
else(${name}_PKG_CONFIG_FOUND)
|
|
|
|
# No success with pkg-config, try via find_library on all lib_names
|
|
|
|
set(${name}_FOUND "1")
|
|
|
|
foreach(lib ${ARGS_LIB_NAMES})
|
2017-04-23 08:01:40 +00:00
|
|
|
find_library(${name}_${lib}_LIBRARY ${ARGS_LIB_NAMES} HINTS ${ARGS_LIB_DIR_HINTS})
|
|
|
|
mark_as_advanced(${name}_${lib}_LIBRARY)
|
2017-03-23 16:10:45 +00:00
|
|
|
|
2017-04-23 08:01:40 +00:00
|
|
|
if(NOT ${name}_${lib}_LIBRARY)
|
2017-03-23 16:10:45 +00:00
|
|
|
unset(${name}_FOUND)
|
2017-04-23 08:01:40 +00:00
|
|
|
endif(NOT ${name}_${lib}_LIBRARY)
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(lib)
|
|
|
|
|
|
|
|
foreach(inc ${ARGS_INCLUDE_NAMES})
|
2017-04-23 08:01:40 +00:00
|
|
|
find_path(${name}_${inc}_INCLUDE_PATH ${inc} HINTS ${ARGS_INCLUDE_DIR_HINTS} PATHS ${ARGS_INCLUDE_DIR_PATHS} PATH_SUFFIXES ${ARGS_INCLUDE_DIR_SUFFIXES})
|
|
|
|
mark_as_advanced(${name}_${inc}_INCLUDE_PATH)
|
2017-03-23 16:10:45 +00:00
|
|
|
|
2017-04-23 08:01:40 +00:00
|
|
|
if(NOT ${name}_${inc}_INCLUDE_PATH)
|
2017-03-23 16:10:45 +00:00
|
|
|
unset(${name}_FOUND)
|
2017-04-23 08:01:40 +00:00
|
|
|
endif(NOT ${name}_${inc}_INCLUDE_PATH)
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(inc)
|
|
|
|
|
|
|
|
if(${name}_FOUND)
|
|
|
|
set(${name}_LIBRARIES "")
|
|
|
|
set(${name}_INCLUDE_DIRS "")
|
|
|
|
foreach(lib ${ARGS_LIB_NAMES})
|
2017-04-23 08:01:40 +00:00
|
|
|
list(APPEND ${name}_LIBRARIES ${${name}_${lib}_LIBRARY})
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(lib)
|
|
|
|
foreach(inc ${ARGS_INCLUDE_NAMES})
|
2017-04-23 08:01:40 +00:00
|
|
|
list(APPEND ${name}_INCLUDE_DIRS ${${name}_${inc}_INCLUDE_PATH})
|
2017-03-23 16:10:45 +00:00
|
|
|
endforeach(inc)
|
|
|
|
list(GET ${name}_LIBRARIES "0" ${name}_LIBRARY)
|
|
|
|
|
|
|
|
foreach(dep ${ARGS_DEPENDS})
|
2017-04-23 08:01:40 +00:00
|
|
|
find_package(${dep} ${${dep}_GLOBAL_VERSION} QUIET)
|
2017-03-23 16:10:45 +00:00
|
|
|
|
|
|
|
if(${dep}_FOUND)
|
|
|
|
list(APPEND ${name}_INCLUDE_DIRS ${${dep}_INCLUDE_DIRS})
|
|
|
|
list(APPEND ${name}_LIBRARIES ${${dep}_LIBRARIES})
|
|
|
|
else(${dep}_FOUND)
|
|
|
|
unset(${name}_FOUND)
|
|
|
|
endif(${dep}_FOUND)
|
|
|
|
endforeach(dep)
|
|
|
|
|
|
|
|
set(${name}_FOUND ${${name}_FOUND} PARENT_SCOPE)
|
|
|
|
set(${name}_INCLUDE_DIRS ${${name}_INCLUDE_DIRS} PARENT_SCOPE)
|
|
|
|
set(${name}_LIBRARIES ${${name}_LIBRARIES} PARENT_SCOPE)
|
|
|
|
set(${name}_LIBRARY ${${name}_LIBRARY} PARENT_SCOPE)
|
|
|
|
unset(${name}_VERSION PARENT_SCOPE)
|
|
|
|
|
|
|
|
if(NOT TARGET ${ARGS_PKG_CONFIG_NAME})
|
|
|
|
add_library(${ARGS_PKG_CONFIG_NAME} INTERFACE IMPORTED)
|
|
|
|
set_property(TARGET ${ARGS_PKG_CONFIG_NAME} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${name}_INCLUDE_DIRS}")
|
|
|
|
set_property(TARGET ${ARGS_PKG_CONFIG_NAME} PROPERTY INTERFACE_LINK_LIBRARIES "${${name}_LIBRARIES}")
|
|
|
|
endif(NOT TARGET ${ARGS_PKG_CONFIG_NAME})
|
|
|
|
endif(${name}_FOUND)
|
|
|
|
endif(${name}_PKG_CONFIG_FOUND)
|
2017-04-23 08:01:40 +00:00
|
|
|
endfunction()
|