mirror of
https://github.com/OpenKJ/OpenKJ.git
synced 2025-10-24 09:40:49 -07:00
773 lines
28 KiB
CMake
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 ()
|
|
|
|
|