MuseScore/src/framework/global/CMakeLists.txt

225 lines
8.3 KiB
CMake

# SPDX-License-Identifier: GPL-3.0-only
# MuseScore-CLA-applies
#
# MuseScore
# Music Composition & Notation
#
# Copyright (C) 2021 MuseScore BVBA and others
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
set(MODULE global)
include(${CMAKE_CURRENT_LIST_DIR}/modularity/modularity.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/async/async.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_logger/logger.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_profiler/profiler.cmake)
set(MODULE_SRC
${MODULARITY_SRC}
${ASYNC_SRC}
${KORS_LOGGER_SRC}
${KORS_PROFILER_SRC}
${CMAKE_CURRENT_LIST_DIR}/globaltypes.h
${CMAKE_CURRENT_LIST_DIR}/iapplication.h
${CMAKE_CURRENT_LIST_DIR}/iinteractive.h
${CMAKE_CURRENT_LIST_DIR}/iglobalconfiguration.h
${CMAKE_CURRENT_LIST_DIR}/log.h
${CMAKE_CURRENT_LIST_DIR}/logstream.h
${CMAKE_CURRENT_LIST_DIR}/logger.h
${CMAKE_CURRENT_LIST_DIR}/logremover.cpp
${CMAKE_CURRENT_LIST_DIR}/logremover.h
${CMAKE_CURRENT_LIST_DIR}/profiler.h
${CMAKE_CURRENT_LIST_DIR}/dataformatter.cpp
${CMAKE_CURRENT_LIST_DIR}/dataformatter.h
${CMAKE_CURRENT_LIST_DIR}/muversion.cpp
${CMAKE_CURRENT_LIST_DIR}/muversion.h
${CMAKE_CURRENT_LIST_DIR}/stringutils.cpp
${CMAKE_CURRENT_LIST_DIR}/stringutils.h
${CMAKE_CURRENT_LIST_DIR}/ptrutils.h
${CMAKE_CURRENT_LIST_DIR}/realfn.h
${CMAKE_CURRENT_LIST_DIR}/runtime.cpp
${CMAKE_CURRENT_LIST_DIR}/runtime.h
${CMAKE_CURRENT_LIST_DIR}/translation.cpp
${CMAKE_CURRENT_LIST_DIR}/translation.h
${CMAKE_CURRENT_LIST_DIR}/timer.h
${CMAKE_CURRENT_LIST_DIR}/progress.h
${CMAKE_CURRENT_LIST_DIR}/utils.cpp
${CMAKE_CURRENT_LIST_DIR}/utils.h
${CMAKE_CURRENT_LIST_DIR}/defer.h
${CMAKE_CURRENT_LIST_DIR}/containers.h
${CMAKE_CURRENT_LIST_DIR}/icryptographichash.h
${CMAKE_CURRENT_LIST_DIR}/allocator.cpp
${CMAKE_CURRENT_LIST_DIR}/allocator.h
${CMAKE_CURRENT_LIST_DIR}/dlib.h
${CMAKE_CURRENT_LIST_DIR}/iprocess.h
${CMAKE_CURRENT_LIST_DIR}/number.h
${CMAKE_CURRENT_LIST_DIR}/types/bytearray.cpp
${CMAKE_CURRENT_LIST_DIR}/types/bytearray.h
${CMAKE_CURRENT_LIST_DIR}/types/string.cpp
${CMAKE_CURRENT_LIST_DIR}/types/string.h
${CMAKE_CURRENT_LIST_DIR}/types/datetime.cpp
${CMAKE_CURRENT_LIST_DIR}/types/datetime.h
${CMAKE_CURRENT_LIST_DIR}/types/flags.h
${CMAKE_CURRENT_LIST_DIR}/types/id.cpp
${CMAKE_CURRENT_LIST_DIR}/types/id.h
${CMAKE_CURRENT_LIST_DIR}/types/val.cpp
${CMAKE_CURRENT_LIST_DIR}/types/val.h
${CMAKE_CURRENT_LIST_DIR}/types/ret.cpp
${CMAKE_CURRENT_LIST_DIR}/types/ret.h
${CMAKE_CURRENT_LIST_DIR}/types/retval.h
${CMAKE_CURRENT_LIST_DIR}/types/uri.cpp
${CMAKE_CURRENT_LIST_DIR}/types/uri.h
${CMAKE_CURRENT_LIST_DIR}/types/sharedhashmap.h
${CMAKE_CURRENT_LIST_DIR}/types/sharedmap.h
${CMAKE_CURRENT_LIST_DIR}/types/translatablestring.h
${CMAKE_CURRENT_LIST_DIR}/types/mnemonicstring.cpp
${CMAKE_CURRENT_LIST_DIR}/types/mnemonicstring.h
${CMAKE_CURRENT_LIST_DIR}/types/version.cpp
${CMAKE_CURRENT_LIST_DIR}/types/version.h
${CMAKE_CURRENT_LIST_DIR}/io/ioenums.h
${CMAKE_CURRENT_LIST_DIR}/io/path.cpp
${CMAKE_CURRENT_LIST_DIR}/io/path.h
${CMAKE_CURRENT_LIST_DIR}/io/iodevice.cpp
${CMAKE_CURRENT_LIST_DIR}/io/iodevice.h
${CMAKE_CURRENT_LIST_DIR}/io/file.cpp
${CMAKE_CURRENT_LIST_DIR}/io/file.h
${CMAKE_CURRENT_LIST_DIR}/io/buffer.cpp
${CMAKE_CURRENT_LIST_DIR}/io/buffer.h
${CMAKE_CURRENT_LIST_DIR}/io/ifilesystem.h
${CMAKE_CURRENT_LIST_DIR}/io/ioretcodes.h
${CMAKE_CURRENT_LIST_DIR}/io/fileinfo.cpp
${CMAKE_CURRENT_LIST_DIR}/io/fileinfo.h
${CMAKE_CURRENT_LIST_DIR}/io/dir.cpp
${CMAKE_CURRENT_LIST_DIR}/io/dir.h
${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamreader.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamreader.h
${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamwriter.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamwriter.h
${CMAKE_CURRENT_LIST_DIR}/thirdparty//tinyxml/tinyxml2.cpp
${CMAKE_CURRENT_LIST_DIR}/thirdparty//tinyxml/tinyxml2.h
${CMAKE_CURRENT_LIST_DIR}/serialization/zipreader.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/zipreader.h
${CMAKE_CURRENT_LIST_DIR}/serialization/zipwriter.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/zipwriter.h
${CMAKE_CURRENT_LIST_DIR}/serialization/internal/zipcontainer.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/internal/zipcontainer.h
${CMAKE_CURRENT_LIST_DIR}/serialization/textstream.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/textstream.h
${CMAKE_CURRENT_LIST_DIR}/serialization/json.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/json.h
${CMAKE_CURRENT_LIST_DIR}/serialization/xmldom.cpp
${CMAKE_CURRENT_LIST_DIR}/serialization/xmldom.h
${CMAKE_CURRENT_LIST_DIR}/concurrency/taskscheduler.h
)
if (GLOBAL_NO_INTERNAL)
set(MODULE_DEF ${MODULE_DEF} -DGLOBAL_NO_INTERNAL)
else()
set(MODULE_SRC ${MODULE_SRC}
${CMAKE_CURRENT_LIST_DIR}/globalmodule.cpp
${CMAKE_CURRENT_LIST_DIR}/globalmodule.h
${CMAKE_CURRENT_LIST_DIR}/settings.cpp
${CMAKE_CURRENT_LIST_DIR}/settings.h
${CMAKE_CURRENT_LIST_DIR}/internal/application.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/application.h
${CMAKE_CURRENT_LIST_DIR}/internal/globalconfiguration.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/globalconfiguration.h
${CMAKE_CURRENT_LIST_DIR}/internal/interactive.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/interactive.h
${CMAKE_CURRENT_LIST_DIR}/internal/cryptographichash.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/cryptographichash.h
${CMAKE_CURRENT_LIST_DIR}/internal/invoker.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/invoker.h
${CMAKE_CURRENT_LIST_DIR}/internal/process.cpp
${CMAKE_CURRENT_LIST_DIR}/internal/process.h
${CMAKE_CURRENT_LIST_DIR}/io/internal/filesystem.cpp
${CMAKE_CURRENT_LIST_DIR}/io/internal/filesystem.h
${CMAKE_CURRENT_LIST_DIR}/deprecated/xmlreader.cpp
${CMAKE_CURRENT_LIST_DIR}/deprecated/xmlreader.h
${CMAKE_CURRENT_LIST_DIR}/deprecated/xmlwriter.cpp
${CMAKE_CURRENT_LIST_DIR}/deprecated/xmlwriter.h
${CMAKE_CURRENT_LIST_DIR}/deprecated/qzip.cpp
${CMAKE_CURRENT_LIST_DIR}/deprecated/qzipreader_p.h
${CMAKE_CURRENT_LIST_DIR}/deprecated/qzipwriter_p.h
)
include(GetPlatformInfo)
if (OS_IS_MAC)
set(MODULE_SRC ${MODULE_SRC}
${CMAKE_CURRENT_LIST_DIR}/internal/platform/macos/macosinteractivehelper.mm
${CMAKE_CURRENT_LIST_DIR}/internal/platform/macos/macosinteractivehelper.h
)
set_source_files_properties(
${CMAKE_CURRENT_LIST_DIR}/internal/platform/macos/macosinteractivehelper.mm
PROPERTIES
SKIP_UNITY_BUILD_INCLUSION ON
SKIP_PRECOMPILE_HEADERS ON
)
find_library(AppKit NAMES AppKit)
list(APPEND MODULE_LINK ${AppKit})
endif()
endif()
set(FS_LIB )
# The use of `filesystem` is disabled until
# I figure out how to use it correctly for all platforms and compilers (including MinGW)
# (igor.korsukov@gmail.com)
#if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# set(FS_LIB stdc++fs)
#endif()
include(GetCompilerInfo)
set(Z_LIB )
if (CC_IS_MSVC)
include(FindStaticLibrary)
set(Z_LIB zlibstat)
set(Z_INCLUDE ${PROJECT_SOURCE_DIR}/dependencies/include/zlib)
elseif (CC_IS_EMSCRIPTEN)
#zlib included in main linker
else ()
set(Z_LIB z)
endif ()
list(APPEND MODULE_INCLUDE
${Z_INCLUDE}
)
list(APPEND MODULE_LINK
${FS_LIB}
${Z_LIB}
)
if (MUE_ENABLE_CUSTOM_ALLOCATOR)
set(MODULE_DEF ${MODULE_DEF} -DMUE_ENABLE_CUSTOM_ALLOCATOR)
endif()
if (MUE_ENABLE_LOGGER_DEBUGLEVEL)
set(MODULE_DEF ${MODULE_DEF} -DMUE_ENABLE_LOGGER_DEBUGLEVEL)
endif()
include(SetupModule)
if (MUE_BUILD_UNIT_TESTS)
add_subdirectory(tests)
endif()