Files
OpenKJ/CMakeLists.txt
2025-08-08 08:27:22 -05:00

773 lines
28 KiB
CMake

cmake_minimum_required(VERSION 3.5...3.10)
file(READ "src/okjversion.h" vercontents)
string(REGEX MATCH "OKJ_VERSION_MAJOR ([0-9]*)" _ ${vercontents})
set(ver_major ${CMAKE_MATCH_1})
string(REGEX MATCH "OKJ_VERSION_MINOR ([0-9]*)" _ ${vercontents})
set(ver_minor ${CMAKE_MATCH_1})
string(REGEX MATCH "OKJ_VERSION_BUILD ([0-9]*)" _ ${vercontents})
set(ver_build ${CMAKE_MATCH_1})
set(sem_ver "${ver_major}.${ver_minor}.${ver_build}")
message(STATUS "Building OpenKJ ${sem_ver}")
message("Building OpenKJ ${sem_ver}")
project(openkj
VERSION ${sem_ver}
LANGUAGES CXX C
)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Gui Sql Network Widgets Concurrent Svg PrintSupport REQUIRED)
include_directories(
src/
)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
find_package(PkgConfig)
pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0 gstreamer-pbutils-1.0 gstreamer-controller-1.0 gstreamer-video-1.0)
include_directories(
${GSTREAMER_INCLUDE_DIRS}
${GLIB_LIBRARY_DIRS}
)
link_directories(
${GSTREAMER_LIBRARY_DIRS}
${GLIB_INCLUDE_DIRS}
)
pkg_check_modules(TAGLIB IMPORTED_TARGET taglib)
if (TAGLIB_FOUND)
message(STATUS "Using OS installed taglib")
include_directories(
${TAGLIB_INCLUDE_DIRS}
)
link_directories(
${TAGLIB_LIBRARY_DIRS}
)
set(EXTERNAL_TAGLIB True)
else ()
set(STATIC_TAGLIB True)
endif ()
if (NOT DEFINED SPDLOG_USE_CPM AND NOT DEFINED SPDLOG_USE_BUNDLED)
pkg_check_modules(SPDLOG IMPORTED_TARGET spdlog)
if (SPDLOG_FOUND)
message(STATUS "Using OS installed spdlog")
add_definitions(-DSPDLOG_FMT_EXTERNAL)
link_directories(${SPDLOG_LIBRARY_DIRS})
include_directories(${SPDLOG_INCLUDE_DIRS})
set(EXTERNAL_SPDLOG True)
# include_directories(
# ${SPDLOG_INCLUDE_DIRS}
# )
endif ()
else ()
message("SPDLOG_USE_CPM or SPDLOG_USE_BUNDLED defined, ignoring OS packages")
endif ()
endif ()
if (NOT EXTERNAL_SPDLOG)
if (CMAKE_VERSION VERSION_LESS 3.14 OR DEFINED SPDLOG_USE_BUNDLED)
message(STATUS "No spdlog install found, SPDLOG_USE_BUNDLED define, or SPDLOG_USE_CPM defined and cmake too old for CPM, trying git submodule")
add_subdirectory(
src/3rdparty/spdlog
)
include_directories(
src/3rdparty/spdlog/include
)
else ()
message(STATUS "No spdlog install found or CPM spdlog forced, pulling it in via CPM")
include(cmake/CPM.cmake)
CPMAddPackage("gh:gabime/spdlog@1.8.2")
endif ()
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message("macOS detected")
set(STATIC_TAGLIB True)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0 gstreamer-pbutils-1.0 gstreamer-controller-1.0 gstreamer-video-1.0)
include_directories(
${GSTREAMER_INCLUDE_DIRS}
)
link_directories(
${GSTREAMER_LIBRARY_DIRS}
)
if (DEFINED BUNDLE_GSTREAMER)
message("Will bundle GStreamer into the app bundle")
add_compile_definitions(
MAC_OVERRIDE_GST
)
endif ()
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(STATIC_TAGLIB True)
set(WINDOWS_ICON_RC "src/appicon.rc")
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(GST_BASE_PATH "C:/Program Files/gstreamer/1.0/mingw_x86")
set(GST_BASE_PATH_NATIVE "C:\\Program Files\\gstreamer\\1.0\\mingw_x86")
elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(GST_BASE_PATH "C:/Program Files/gstreamer/1.0/mingw_x86_64")
set(GST_BASE_PATH_NATIVE "C:\\Program Files\\gstreamer\\1.0\\mingw_x86_64")
endif ()
message("Using GST_BASE_PATH: ${GST_BASE_PATH}")
message("Using GST_BASE_PATH_NATIVE: ${GST_BASE_PATH_NATIVE}")
include_directories(
${GST_BASE_PATH}/include/gstreamer-1.0
${GST_BASE_PATH}/include/glib-2.0
${GST_BASE_PATH}/lib/glib-2.0/include
${GST_BASE_PATH}/include/glib-2.0/gobject
)
link_directories(
"${GST_BASE_PATH}/lib"
)
add_compile_definitions(
MINIZ_NO_TIME
)
link_libraries(
gstreamer-1.0
glib-2.0
gobject-2.0
gstbase-1.0
gstapp-1.0
gstaudio-1.0
gstpbutils-1.0
gstcontroller-1.0
gstvideo-1.0
winmm
)
endif ()
if (STATIC_TAGLIB)
message("Building using included taglib")
add_compile_definitions(
TAGLIB_STATIC
)
include_directories(
src/taglib
src/taglib/toolkit
src/taglib/mpeg/id3v2
src/taglib/mpeg/id3v2/frames
src/taglib/mpeg/id3v1
src/taglib/mod
src/taglib/ogg
src/taglib/ogg/flac
src/taglib/ogg/opus
src/taglib/ogg/speex
src/taglib/ogg/vorbis
src/taglib/flac
src/taglib/ape
src/taglib/riff
src/taglib/asf
src/taglib/mpeg
src/taglib/riff
src/taglib/riff/aiff
src/taglib/riff/wav
src/taglib/it
src/taglib/mp4
src/taglib/mpc
src/taglib/s3m
src/taglib/trueaudio
src/taglib/wavpack
src/taglib/xm
)
set(TAGLIB_SOURCES
src/taglib/ape/apefile.cpp
src/taglib/ape/apefooter.cpp
src/taglib/ape/apeitem.cpp
src/taglib/ape/apeproperties.cpp
src/taglib/ape/apetag.cpp
src/taglib/asf/asfattribute.cpp
src/taglib/asf/asffile.cpp
src/taglib/asf/asfpicture.cpp
src/taglib/asf/asfproperties.cpp
src/taglib/asf/asftag.cpp
src/taglib/flac/flacfile.cpp
src/taglib/flac/flacmetadatablock.cpp
src/taglib/flac/flacpicture.cpp
src/taglib/flac/flacproperties.cpp
src/taglib/flac/flacunknownmetadatablock.cpp
src/taglib/it/itfile.cpp
src/taglib/it/itproperties.cpp
src/taglib/mod/modfile.cpp
src/taglib/mod/modfilebase.cpp
src/taglib/mod/modproperties.cpp
src/taglib/mod/modtag.cpp
src/taglib/mp4/mp4atom.cpp
src/taglib/mp4/mp4coverart.cpp
src/taglib/mp4/mp4file.cpp
src/taglib/mp4/mp4item.cpp
src/taglib/mp4/mp4properties.cpp
src/taglib/mp4/mp4tag.cpp
src/taglib/mpc/mpcfile.cpp
src/taglib/mpc/mpcproperties.cpp
src/taglib/mpeg/id3v1/id3v1genres.cpp
src/taglib/mpeg/id3v1/id3v1tag.cpp
src/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp
src/taglib/mpeg/id3v2/frames/chapterframe.cpp
src/taglib/mpeg/id3v2/frames/commentsframe.cpp
src/taglib/mpeg/id3v2/frames/eventtimingcodesframe.cpp
src/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp
src/taglib/mpeg/id3v2/frames/ownershipframe.cpp
src/taglib/mpeg/id3v2/frames/podcastframe.cpp
src/taglib/mpeg/id3v2/frames/popularimeterframe.cpp
src/taglib/mpeg/id3v2/frames/privateframe.cpp
src/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp
src/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp
src/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp
src/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
src/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp
src/taglib/mpeg/id3v2/frames/unknownframe.cpp
src/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp
src/taglib/mpeg/id3v2/frames/urllinkframe.cpp
src/taglib/mpeg/id3v2/id3v2extendedheader.cpp
src/taglib/mpeg/id3v2/id3v2footer.cpp
src/taglib/mpeg/id3v2/id3v2frame.cpp
src/taglib/mpeg/id3v2/id3v2framefactory.cpp
src/taglib/mpeg/id3v2/id3v2header.cpp
src/taglib/mpeg/id3v2/id3v2synchdata.cpp
src/taglib/mpeg/id3v2/id3v2tag.cpp
src/taglib/mpeg/mpegfile.cpp
src/taglib/mpeg/mpegheader.cpp
src/taglib/mpeg/mpegproperties.cpp
src/taglib/mpeg/xingheader.cpp
src/taglib/ogg/flac/oggflacfile.cpp
src/taglib/ogg/opus/opusfile.cpp
src/taglib/ogg/opus/opusproperties.cpp
src/taglib/ogg/speex/speexfile.cpp
src/taglib/ogg/speex/speexproperties.cpp
src/taglib/ogg/vorbis/vorbisfile.cpp
src/taglib/ogg/vorbis/vorbisproperties.cpp
src/taglib/ogg/oggfile.cpp
src/taglib/ogg/oggpage.cpp
src/taglib/ogg/oggpageheader.cpp
src/taglib/ogg/xiphcomment.cpp
src/taglib/riff/aiff/aifffile.cpp
src/taglib/riff/aiff/aiffproperties.cpp
src/taglib/riff/wav/infotag.cpp
src/taglib/riff/wav/wavfile.cpp
src/taglib/riff/wav/wavproperties.cpp
src/taglib/riff/rifffile.cpp
src/taglib/s3m/s3mfile.cpp
src/taglib/s3m/s3mproperties.cpp
src/taglib/toolkit/tbytevector.cpp
src/taglib/toolkit/tbytevectorlist.cpp
src/taglib/toolkit/tbytevectorstream.cpp
src/taglib/toolkit/tdebug.cpp
src/taglib/toolkit/tdebuglistener.cpp
src/taglib/toolkit/tfile.cpp
src/taglib/toolkit/tfilestream.cpp
src/taglib/toolkit/tiostream.cpp
src/taglib/toolkit/tpropertymap.cpp
src/taglib/toolkit/trefcounter.cpp
src/taglib/toolkit/tstring.cpp
src/taglib/toolkit/tstringlist.cpp
src/taglib/toolkit/tzlib.cpp
src/taglib/toolkit/unicode.cpp
src/taglib/trueaudio/trueaudiofile.cpp
src/taglib/trueaudio/trueaudioproperties.cpp
src/taglib/wavpack/wavpackfile.cpp
src/taglib/wavpack/wavpackproperties.cpp
src/taglib/xm/xmfile.cpp
src/taglib/xm/xmproperties.cpp
src/taglib/audioproperties.cpp
src/taglib/fileref.cpp
src/taglib/tag.cpp
src/taglib/tagunion.cpp
src/taglib/tagutils.cpp
src/taglib/ape/apefile.h
src/taglib/ape/apefooter.h
src/taglib/ape/apeitem.h
src/taglib/ape/apeproperties.h
src/taglib/ape/apetag.h
src/taglib/asf/asfattribute.h
src/taglib/asf/asffile.h
src/taglib/asf/asfpicture.h
src/taglib/asf/asfproperties.h
src/taglib/asf/asftag.h
src/taglib/asf/asfutils.h
src/taglib/flac/flacfile.h
src/taglib/flac/flacmetadatablock.h
src/taglib/flac/flacpicture.h
src/taglib/flac/flacproperties.h
src/taglib/flac/flacunknownmetadatablock.h
src/taglib/it/itfile.h
src/taglib/it/itproperties.h
src/taglib/mod/modfile.h
src/taglib/mod/modfilebase.h
src/taglib/mod/modfileprivate.h
src/taglib/mod/modproperties.h
src/taglib/mod/modtag.h
src/taglib/mp4/mp4atom.h
src/taglib/mp4/mp4coverart.h
src/taglib/mp4/mp4file.h
src/taglib/mp4/mp4item.h
src/taglib/mp4/mp4properties.h
src/taglib/mp4/mp4tag.h
src/taglib/mpc/mpcfile.h
src/taglib/mpc/mpcproperties.h
src/taglib/mpeg/id3v1/id3v1genres.h
src/taglib/mpeg/id3v1/id3v1tag.h
src/taglib/mpeg/id3v2/frames/attachedpictureframe.h
src/taglib/mpeg/id3v2/frames/chapterframe.h
src/taglib/mpeg/id3v2/frames/commentsframe.h
src/taglib/mpeg/id3v2/frames/eventtimingcodesframe.h
src/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h
src/taglib/mpeg/id3v2/frames/ownershipframe.h
src/taglib/mpeg/id3v2/frames/podcastframe.h
src/taglib/mpeg/id3v2/frames/popularimeterframe.h
src/taglib/mpeg/id3v2/frames/privateframe.h
src/taglib/mpeg/id3v2/frames/relativevolumeframe.h
src/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h
src/taglib/mpeg/id3v2/frames/tableofcontentsframe.h
src/taglib/mpeg/id3v2/frames/textidentificationframe.h
src/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h
src/taglib/mpeg/id3v2/frames/unknownframe.h
src/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h
src/taglib/mpeg/id3v2/frames/urllinkframe.h
src/taglib/mpeg/id3v2/id3v2extendedheader.h
src/taglib/mpeg/id3v2/id3v2footer.h
src/taglib/mpeg/id3v2/id3v2frame.h
src/taglib/mpeg/id3v2/id3v2framefactory.h
src/taglib/mpeg/id3v2/id3v2header.h
src/taglib/mpeg/id3v2/id3v2synchdata.h
src/taglib/mpeg/id3v2/id3v2tag.h
src/taglib/mpeg/mpegfile.h
src/taglib/mpeg/mpegheader.h
src/taglib/mpeg/mpegproperties.h
src/taglib/mpeg/mpegutils.h
src/taglib/mpeg/xingheader.h
src/taglib/ogg/flac/oggflacfile.h
src/taglib/ogg/opus/opusfile.h
src/taglib/ogg/opus/opusproperties.h
src/taglib/ogg/speex/speexfile.h
src/taglib/ogg/speex/speexproperties.h
src/taglib/ogg/vorbis/vorbisfile.h
src/taglib/ogg/vorbis/vorbisproperties.h
src/taglib/ogg/oggfile.h
src/taglib/ogg/oggpage.h
src/taglib/ogg/oggpageheader.h
src/taglib/ogg/xiphcomment.h
src/taglib/riff/aiff/aifffile.h
src/taglib/riff/aiff/aiffproperties.h
src/taglib/riff/wav/infotag.h
src/taglib/riff/wav/wavfile.h
src/taglib/riff/wav/wavproperties.h
src/taglib/riff/rifffile.h
src/taglib/riff/riffutils.h
src/taglib/s3m/s3mfile.h
src/taglib/s3m/s3mproperties.h
src/taglib/toolkit/taglib.h
src/taglib/toolkit/tbytevector.h
src/taglib/toolkit/tbytevectorlist.h
src/taglib/toolkit/tbytevectorstream.h
src/taglib/toolkit/tdebug.h
src/taglib/toolkit/tdebuglistener.h
src/taglib/toolkit/tfile.h
src/taglib/toolkit/tfilestream.h
src/taglib/toolkit/tiostream.h
src/taglib/toolkit/tlist.h
src/taglib/toolkit/tmap.h
src/taglib/toolkit/tpropertymap.h
src/taglib/toolkit/trefcounter.h
src/taglib/toolkit/tstring.h
src/taglib/toolkit/tstringlist.h
src/taglib/toolkit/tutils.h
src/taglib/toolkit/tzlib.h
src/taglib/toolkit/unicode.h
src/taglib/trueaudio/trueaudiofile.h
src/taglib/trueaudio/trueaudioproperties.h
src/taglib/wavpack/wavpackfile.h
src/taglib/wavpack/wavpackproperties.h
src/taglib/xm/xmfile.h
src/taglib/xm/xmproperties.h
src/taglib/audioproperties.h
src/taglib/fileref.h
src/taglib/tag.h
src/taglib/taglib_export.h
src/taglib/tagunion.h
src/taglib/tagutils.h
)
endif ()
set(SOURCE_FILES
${TAGLIB_SOURCES}
src/miniz/miniz.h
src/miniz/miniz.c
src/main.cpp
src/dlgaddsong.cpp
src/mediabackend.cpp
src/mzarchive.cpp
src/okjutil.h
src/okjtypes.cpp
src/dlgvideopreview.cpp
src/mainwindow.cpp
src/dbupdater.cpp
src/directorymonitor.cpp
src/dlgkeychange.cpp
src/dlgdatabase.cpp
src/dlgrequests.cpp
src/dlgregularexport.cpp
src/dlgregularimport.cpp
src/dlgregularsingers.cpp
src/dlgsettings.cpp
src/dlgcdg.cpp
src/okarchive.cpp
src/models/tablemodelbreaksongs.cpp
src/models/tablemodelcustomnamingpatterns.cpp
src/models/tablemodelhistorysingers.cpp
src/models/tablemodelhistorysongs.cpp
src/models/tablemodelkaraokesongs.cpp
src/models/tablemodelkaraokesourcedirs.cpp
src/models/tablemodelplaylistsongs.cpp
src/models/tablemodelqueuesongs.cpp
src/models/tablemodelrequests.cpp
src/models/tablemodelrotation.cpp
src/models/tablemodelsongshopsongs.cpp
src/tagreader.cpp
src/bmdbupdatethread.cpp
src/settings.cpp
src/bmdbdialog.cpp
src/dlgcustompatterns.cpp
src/audiorecorder.cpp
src/okjsongbookapi.cpp
src/dlgdbupdate.cpp
src/dlgbookcreator.cpp
src/dlgeq.cpp
src/audiofader.cpp
src/customlineedit.cpp
src/tickernew.cpp
src/updatechecker.cpp
src/videodisplay.cpp
src/volslider.cpp
src/dlgaddsinger.cpp
src/songshop.cpp
src/dlgsongshop.cpp
src/simplecrypt.cpp
src/dlgsongshoppurchase.cpp
src/dlgsetpassword.cpp
src/dlgpassword.cpp
src/dlgpurchaseprogress.cpp
src/karaokefileinfo.cpp
src/karaokefilepatternresolver.cpp
src/custompattern.cpp
src/dlgeditsong.cpp
src/soundfxbutton.cpp
src/runguard/runguard.cpp
src/durationlazyupdater.cpp
src/idledetect.cpp
src/mainwindow.h
src/dlgaddsong.h
src/dlgvideopreview.h
src/mediabackend.h
src/mzarchive.h
src/okjutil.h
src/okjtypes.h
src/dbupdater.h
src/directorymonitor.h
src/dlgkeychange.h
src/dlgdatabase.h
src/dlgrequests.h
src/dlgregularexport.h
src/dlgregularimport.h
src/dlgregularsingers.h
src/dlgsettings.h
src/dlgcdg.h
src/okarchive.h
src/models/tablemodelbreaksongs.h
src/models/tablemodelcustomnamingpatterns.h
src/models/tablemodelhistorysingers.h
src/models/tablemodelhistorysongs.h
src/models/tablemodelkaraokesongs.h
src/models/tablemodelkaraokesourcedirs.h
src/models/tablemodelplaylistsongs.h
src/models/tablemodelqueuesongs.h
src/models/tablemodelrequests.h
src/models/tablemodelrotation.h
src/models/tablemodelsongshopsongs.h
src/tagreader.h
src/bmdbupdatethread.h
src/settings.h
src/bmdbdialog.h
src/dlgcustompatterns.h
src/audiorecorder.h
src/okjsongbookapi.h
src/dlgdbupdate.h
src/dlgbookcreator.h
src/dlgeq.h
src/audiofader.h
src/customlineedit.h
src/tickernew.h
src/updatechecker.h
src/videodisplay.h
src/volslider.h
src/okjversion.h
src/dlgaddsinger.h
src/songshop.h
src/dlgsongshop.h
src/simplecrypt.h
src/dlgsongshoppurchase.h
src/dlgsetpassword.h
src/dlgpassword.h
src/dlgpurchaseprogress.h
src/karaokefileinfo.h
src/karaokefilepatternresolver.h
src/custompattern.h
src/dlgeditsong.h
src/soundfxbutton.h
src/runguard/runguard.h
src/models/tableviewtooltipfilter.h
src/durationlazyupdater.h
src/idledetect.h
src/mainwindow.ui
src/dlgaddsong.ui
src/dlgkeychange.ui
src/dlgdatabase.ui
src/dlgrequests.ui
src/dlgregularexport.ui
src/dlgregularimport.ui
src/dlgregularsingers.ui
src/dlgsettings.ui
src/dlgcdg.ui
src/bmdbdialog.ui
src/dlgcustompatterns.ui
src/dlgdbupdate.ui
src/dlgbookcreator.ui
src/dlgeq.ui
src/dlgaddsinger.ui
src/dlgsongshop.ui
src/dlgsongshoppurchase.ui
src/dlgsetpassword.ui
src/dlgpassword.ui
src/dlgpurchaseprogress.ui
src/dlgeditsong.ui
src/dlgvideopreview.ui
src/resources.qrc
src/softwarerendervideosink.cpp
src/softwarerendervideosink.h
src/cdg/cdgappsrc.cpp
src/cdg/cdgappsrc.h
src/cdg/cdgfilereader.cpp
src/cdg/cdgfilereader.h
src/cdg/cdgimageframe.cpp
src/cdg/cdgimageframe.h
src/cdg/libCDG.h
src/gstreamer/gstreamerhelper.cpp
src/gstreamer/gstreamerhelper.h
)
set(LIBRARIES
spdlog
Qt5::Widgets
Qt5::Core
Qt5::Gui
Qt5::Sql
Qt5::Network
Qt5::Svg
Qt5::PrintSupport
Qt5::Concurrent
)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
if (EXTERNAL_TAGLIB)
list(APPEND LIBRARIES "PkgConfig::TAGLIB")
endif ()
if (EXTERNAL_SPDLOG)
list(APPEND LIBRARIES "PkgConfig::SPDLOG")
endif ()
add_executable(openkj
${SOURCE_FILES}
)
target_link_libraries(openkj ${LIBRARIES} ${GSTREAMER_LIBRARIES})
install(
TARGETS openkj
DESTINATION bin
)
install(
FILES src/Icons/org.openkj.OpenKJ.svg
DESTINATION share/icons/hicolor/scalable/apps
)
install(
FILES src/org.openkj.OpenKJ.desktop
DESTINATION share/applications
)
install(
FILES src/org.openkj.OpenKJ.metainfo.xml
DESTINATION share/metainfo
)
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(openkj_ICON ${CMAKE_CURRENT_SOURCE_DIR}/src/Icons/OpenKJ.icns)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0 gstreamer-pbutils-1.0 gstreamer-controller-1.0 gstreamer-video-1.0)
set_source_files_properties(${openkj_ICON} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
add_executable(openkj
MACOSX_BUNDLE
${openkj_ICON}
${SOURCE_FILES}
)
set_target_properties(openkj PROPERTIES
BUNDLE True
MACOSX_BUNDLE_GUI_IDENTIFIER org.openkj.openkj
MACOSX_BUNDLE_BUNDLE_NAME OpenKJ
MACOSX_BUNDLE_BUNDLE_VERSION ${sem_ver}
MACOSX_BUNDLE_ICON_FILE OpenKJ.icns
)
target_link_libraries(openkj
${LIBRARIES}
#"-F /Library/Frameworks -framework GStreamer"
${GSTREAMER_LIBRARIES}
${GSTREAMER_FRAMEWORK}
)
if (NOT DEFINED BUILDONLY)
get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
execute_process(
COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt5_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (qt5_install_prefix)
find_program(MACDEPLOYQT macdeployqt HINTS ${qt5_install_prefix} PATH_SUFFIXES bin)
if (MACDEPLOYQT)
if (DEFINED MAC_SIGNING_IDENTITY)
add_custom_command(
TARGET openkj
COMMAND "${MACDEPLOYQT}"
VERBATIM
ARGS
"${CMAKE_BINARY_DIR}/openkj.app"
-codesign=${MAC_SIGNING_IDENTITY}
"-appstore-compliant"
)
else ()
add_custom_command(
TARGET openkj
COMMAND "${MACDEPLOYQT}"
ARGS "${CMAKE_BINARY_DIR}/openkj.app"
)
endif ()
else ()
message("Can't find macdeployqt")
endif ()
else ()
message("QT_INSTALL_DIR not defined")
endif ()
if (DEFINED BUNDLE_GSTREAMER)
message("Installing GStreamer framework into app bundle")
install(
DIRECTORY "/Library/Frameworks/GStreamer.framework.dist"
DESTINATION "openkj.app/Contents/Frameworks/GStreamer.framework"
)
add_custom_command(
TARGET openkj
POST_BUILD
COMMAND "cp"
ARGS
"-pR"
"/Library/Frameworks/GStreamer.framework.dist"
"openkj.app/Contents/Frameworks/GStreamer.framework"
COMMAND "osxrelocator"
ARGS
"openkj.app/Contents/Frameworks/GStreamer.framework/Versions/Current/lib"
"/Library/Frameworks/GStreamer.framework/"
"@executable_path/../Frameworks/GStreamer.framework/"
"-r"
USES_TERMINAL
COMMAND "osxrelocator"
ARGS
"openkj.app/Contents/Frameworks/GStreamer.framework/Versions/Current/libexec"
"/Library/Frameworks/GStreamer.framework/"
"@executable_path/../../../../../../Frameworks/GStreamer.framework/"
"-r"
USES_TERMINAL
COMMAND "osxrelocator"
ARGS
"openkj.app/Contents/Frameworks/GStreamer.framework/Versions/Current/bin"
"/Library/Frameworks/GStreamer.framework/"
"@executable_path/../../../../Frameworks/GStreamer.framework/"
"-r"
USES_TERMINAL
COMMAND "osxrelocator"
ARGS
"openkj.app/Contents/MacOS"
"/Library/Frameworks/GStreamer.framework/"
"@executable_path/../Frameworks/GStreamer.framework/"
"-r"
USES_TERMINAL
)
endif ()
endif ()
endif ()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
add_executable(openkj
${SOURCE_FILES}
${WINDOWS_ICON_RC}
)
target_link_libraries(openkj PRIVATE ${LIBRARIES})
set_property(
TARGET openkj
PROPERTY WIN32_EXECUTABLE true
)
if (DEFINED DEPLOY_DEPS)
get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
execute_process(
COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt5_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
install(DIRECTORY "${GST_BASE_PATH}/bin/" DESTINATION "bin")
if (qt5_install_prefix)
find_program(WINDEPLOYQT windeployqt HINTS ${qt5_install_prefix} PATH_SUFFIXES bin)
if (WINDEPLOYQT)
add_custom_command(
TARGET openkj
COMMAND "${WINDEPLOYQT}"
ARGS "${CMAKE_BINARY_DIR}\\openkj.exe"
)
else ()
message("Can't find windeployqt")
endif ()
else ()
message("QT_INSTALL_DIR not defined")
endif ()
add_custom_command(
TARGET openkj
COMMAND "xcopy"
ARGS "${GST_BASE_PATH_NATIVE}\\*" "/s" "/y"
COMMAND "xcopy"
ARGS "${GST_BASE_PATH_NATIVE}\\bin\\*.dll" "/y"
)
endif ()
endif ()