Initial release
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
#[=======================================================================[.md:
|
||||
|
||||
Configures the macOS bundle
|
||||
The usual usage is:
|
||||
```cmake
|
||||
smtg_target_set_bundle(yourplugin
|
||||
BUNDLE_IDENTIFIER "com.yourcompany.vst3.yourplugin"
|
||||
COMPANY_NAME "yourplugin"
|
||||
)
|
||||
```
|
||||
#]=======================================================================]
|
||||
function(smtg_target_set_bundle target)
|
||||
if(NOT SMTG_MAC)
|
||||
return()
|
||||
endif(NOT SMTG_MAC)
|
||||
|
||||
set(options
|
||||
PREPROCESS
|
||||
)
|
||||
set(oneValueArgs
|
||||
EXTENSION
|
||||
INFOPLIST
|
||||
INFOPLIST_IN
|
||||
BUNDLE_IDENTIFIER
|
||||
COMPANY_NAME
|
||||
)
|
||||
set(multiValueArgs
|
||||
RESOURCES
|
||||
PREPROCESSOR_FLAGS
|
||||
)
|
||||
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
if(ARG_UNPARSED_ARGUMENTS)
|
||||
message(FATAL_ERROR "[SMTG] The following parameters are unrecognized: ${ARG_UNPARSED_ARGUMENTS}")
|
||||
endif(ARG_UNPARSED_ARGUMENTS)
|
||||
|
||||
# Adding the bundle resources to the target sources creates a warning, see https://cmake.org/Bug/view.php?id=15272
|
||||
target_sources(${target}
|
||||
PRIVATE
|
||||
${ARG_RESOURCES}
|
||||
)
|
||||
|
||||
get_target_property(type ${target} TYPE)
|
||||
if(type STREQUAL MODULE_LIBRARY)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
BUNDLE TRUE
|
||||
)
|
||||
elseif(type STREQUAL EXECUTABLE)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
MACOSX_BUNDLE TRUE
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ARG_EXTENSION)
|
||||
if(XCODE)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
XCODE_ATTRIBUTE_WRAPPER_EXTENSION ${ARG_EXTENSION}
|
||||
)
|
||||
else()
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
BUNDLE_EXTENSION ${ARG_EXTENSION}
|
||||
)
|
||||
endif(XCODE)
|
||||
endif(ARG_EXTENSION)
|
||||
|
||||
if(ARG_RESOURCES)
|
||||
set_source_files_properties(${ARG_RESOURCES}
|
||||
PROPERTIES
|
||||
MACOSX_PACKAGE_LOCATION Resources
|
||||
)
|
||||
endif(ARG_RESOURCES)
|
||||
|
||||
if(ARG_INFOPLIST AND XCODE)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
XCODE_ATTRIBUTE_INFOPLIST_FILE "${ARG_INFOPLIST}"
|
||||
)
|
||||
if(ARG_PREPROCESS)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
XCODE_ATTRIBUTE_INFOPLIST_PREPROCESS "YES"
|
||||
)
|
||||
endif(ARG_PREPROCESS)
|
||||
if(ARG_PREPROCESSOR_FLAGS)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
XCODE_ATTRIBUTE_INFOPLIST_OTHER_PREPROCESSOR_FLAGS "${ARG_PREPROCESSOR_FLAGS}"
|
||||
)
|
||||
endif(ARG_PREPROCESSOR_FLAGS)
|
||||
elseif(XCODE)
|
||||
# Build Copyright string:
|
||||
string(TIMESTAMP BUNDLE_INFO_STRING_YEAR "%Y")
|
||||
set(BUNDLE_COPYRIGHT "© ${BUNDLE_INFO_STRING_YEAR} ${ARG_COMPANY_NAME}.")
|
||||
|
||||
# Check for custom info.plist template:
|
||||
if(ARG_INFOPLIST_IN)
|
||||
# dest Info.plist.in template file in cmake format
|
||||
# see: https://duckduckgo.com/?q=MACOSX_BUNDLE_INFO_PLIST
|
||||
set(SMTG_BUNDLE_INFO_PLIST "${PROJECT_BINARY_DIR}/smtg_mac/Info.plist.in")
|
||||
# Configure SMTG_BUNDLE_INFO_PLIST to cmake MACOSX_BUNDLE_INFO_PLIST template
|
||||
# Use @VAR@ for variables not defined in MACOSX_BUNDLE_INFO_PLIST
|
||||
configure_file("${ARG_INFOPLIST_IN}" "${SMTG_BUNDLE_INFO_PLIST}" @ONLY)
|
||||
|
||||
set_target_properties(${smtg_target}
|
||||
PROPERTIES
|
||||
MACOSX_BUNDLE_INFO_PLIST ${SMTG_BUNDLE_INFO_PLIST}
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER ${ARG_BUNDLE_IDENTIFIER}
|
||||
MACOSX_BUNDLE_COPYRIGHT ${BUNDLE_COPYRIGHT}
|
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}
|
||||
MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION}
|
||||
MACOSX_BUNDLE_INFO_STRING ${PROJECT_VERSION}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ARG_BUNDLE_IDENTIFIER)
|
||||
if(XCODE)
|
||||
set_target_properties(${target}
|
||||
PROPERTIES
|
||||
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${ARG_BUNDLE_IDENTIFIER}"
|
||||
)
|
||||
endif(XCODE)
|
||||
endif(ARG_BUNDLE_IDENTIFIER)
|
||||
endfunction()
|
||||
|
||||
#[=======================================================================[.md:
|
||||
Creates the file projectversion.h and adds the directory as an
|
||||
include directory.
|
||||
#]=======================================================================]
|
||||
function(smtg_target_configure_version_file target)
|
||||
|
||||
set(SMTG_PROJECT_VERSION "")
|
||||
|
||||
if(NOT "${PROJECT_VERSION_MAJOR}" STREQUAL "")
|
||||
string(APPEND SMTG_PROJECT_VERSION "${PROJECT_VERSION_MAJOR}")
|
||||
endif()
|
||||
if(NOT "${PROJECT_VERSION_MINOR}" STREQUAL "")
|
||||
string(APPEND SMTG_PROJECT_VERSION ".${PROJECT_VERSION_MINOR}")
|
||||
endif()
|
||||
if(NOT "${PROJECT_VERSION_PATCH}" STREQUAL "")
|
||||
string(APPEND SMTG_PROJECT_VERSION ".${PROJECT_VERSION_PATCH}")
|
||||
endif()
|
||||
|
||||
configure_file(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../templates/projectversion.h.in projectversion.h)
|
||||
|
||||
target_include_directories(${target}
|
||||
PUBLIC
|
||||
"${PROJECT_BINARY_DIR}"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
#[=======================================================================[.md:
|
||||
Deprecated since 3.7.4
|
||||
#]=======================================================================]
|
||||
function(smtg_set_bundle target)
|
||||
message(DEPRECATION "[SMTG] Use smtg_target_set_bundle instead of smtg_set_bundle")
|
||||
smtg_target_set_bundle (${target})
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user