Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .teamcity/MacOS/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class CarbonBuildMacOS(buildName: String, configType: String, preset: String, ag
exec {
name = "Configure"
path = "cmake"
arguments = "--preset %env.CMAKE_PRESET% -S %teamcity.build.checkoutDir%/%github_checkout_folder% -B %env.CMAKE_BUILD_FOLDER% -DINSTALL_TO_MONOLITH=ON -DCMAKE_INSTALL_PREFIX=%env.CMAKE_INSTALL_PREFIX% -DVCPKG_INSTALL_OPTIONS=--x-buildtrees-root=%teamcity.build.checkoutDir%/%github_checkout_folder%/buildtrees"
arguments = "--preset %env.CMAKE_PRESET% -S %teamcity.build.checkoutDir%/%github_checkout_folder% -B %env.CMAKE_BUILD_FOLDER% -DINSTALL_TO_MONOLITH=ON -DBUILD_CLI=ON -DBUILD_TESTING=ON -DBUILD_DOCUMENTATION=ON -DCMAKE_INSTALL_PREFIX=%env.CMAKE_INSTALL_PREFIX% -DVCPKG_INSTALL_OPTIONS=--x-buildtrees-root=%teamcity.build.checkoutDir%/%github_checkout_folder%/buildtrees"
}
exec {
name = "Build"
Expand Down
20 changes: 10 additions & 10 deletions .teamcity/Windows/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ import jetbrains.buildServer.configs.kotlin.triggers.vcs
import jetbrains.buildServer.configs.kotlin.vcs.GitVcsRoot
import jetbrains.buildServer.configs.kotlin.buildFeatures.provideAwsCredentials

val Debug = CarbonBuildWindows("Debug Windows", "Debug", "x64-windows-debug")
val Internal = CarbonBuildWindows("Internal Windows", "Internal", "x64-windows-internal")
val TrinityDev = CarbonBuildWindows("TrinityDev Windows", "TrinityDev", "x64-windows-trinitydev")
val Release = CarbonBuildWindows("Release Windows", "Release", "x64-windows-release")
val ReleaseDevFeatures = CarbonBuildWindows("Release Windows with Dev Features", "Release", "x64-windows-release-with-dev-features")
val BuildParameters = "-arch=x64 -vcvars_ver=14.51"
val Debug = CarbonBuildWindows("Debug Windows", "Debug", "x64-windows-debug",BuildParameters)
val Internal = CarbonBuildWindows("Internal Windows", "Internal", "x64-windows-internal",BuildParameters)
val TrinityDev = CarbonBuildWindows("TrinityDev Windows", "TrinityDev", "x64-windows-trinitydev",BuildParameters)
val Release = CarbonBuildWindows("Release Windows", "Release", "x64-windows-release",BuildParameters)
val ReleaseDevFeatures = CarbonBuildWindows("Release Windows with Dev Features", "Release", "x64-windows-release-with-dev-features",BuildParameters)

object Project : Project({
id("Windows")
Expand All @@ -38,7 +39,7 @@ object Project : Project({
})


class CarbonBuildWindows(buildName: String, configType: String, preset: String) : BuildType({
class CarbonBuildWindows(buildName: String, configType: String, preset: String, vsDevBatSwitches: String) : BuildType({
id(buildName.toId())
this.name = buildName

Expand All @@ -48,8 +49,7 @@ class CarbonBuildWindows(buildName: String, configType: String, preset: String)
param("env.GIT_TAG_HASH_OVERRIDE", "")
param("github_checkout_folder", "github")
param("env.CTEST_JUNIT_OUTPUT_FILE", "ctest_results.xml")
select("env.VISUAL_STUDIO_PLATFORM_TOOLSET", "v141", label = "Visual Studio Platform Toolset", description = "Specify the toolset for the build. e.g. v141 or v143.",
options = listOf("v141 (2017)" to "v141", "v143 (2022)" to "v143"))
param("VS_DEV_BAT_SWITCHES", vsDevBatSwitches)
param("env.CMAKE_BUILD_TARGETS", "all")
param("env.CMAKE_INSTALL_PREFIX", ".build-artifact")
param("env.CMAKE_CONFIG_TYPE", configType)
Expand Down Expand Up @@ -91,7 +91,7 @@ class CarbonBuildWindows(buildName: String, configType: String, preset: String)
scriptContent = """
REM unfortunately ninja does not find the VS environment otherwise
REM NB: the exported PATH also contains the location where we installed sentry-cli, e.g. teamcity.agent.work.dir
call "%%ProgramFiles(x86)%%\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\vsdevcmd.bat" -arch=x64
call "%env.VSDEV_BAT_PATH%" %VS_DEV_BAT_SWITCHES%
echo ##teamcity[setParameter name='env.INCLUDE' value='%%INCLUDE%%']
echo ##teamcity[setParameter name='env.LIB' value='%%LIB%%']
echo ##teamcity[setParameter name='env.LIBPATH' value='%%LIBPATH%%']
Expand All @@ -101,7 +101,7 @@ class CarbonBuildWindows(buildName: String, configType: String, preset: String)
exec {
name = "Configure"
path = "cmake"
arguments = "--preset %env.CMAKE_PRESET% -S %teamcity.build.checkoutDir%/%github_checkout_folder% -B %env.CMAKE_BUILD_FOLDER% -DINSTALL_TO_MONOLITH=ON -DCMAKE_INSTALL_PREFIX=%env.CMAKE_INSTALL_PREFIX% -DVCPKG_INSTALL_OPTIONS=--x-buildtrees-root=%teamcity.build.checkoutDir%/%github_checkout_folder%/buildtrees"
arguments = "--preset %env.CMAKE_PRESET% -S %teamcity.build.checkoutDir%/%github_checkout_folder% -B %env.CMAKE_BUILD_FOLDER% -DINSTALL_TO_MONOLITH=ON -DBUILD_CLI=ON -DBUILD_TESTING=ON -DBUILD_DOCUMENTATION=ON -DCMAKE_INSTALL_PREFIX=%env.CMAKE_INSTALL_PREFIX% -DVCPKG_INSTALL_OPTIONS=--x-buildtrees-root=%teamcity.build.checkoutDir%/%github_checkout_folder%/buildtrees"
}
exec {
name = "Build"
Expand Down
184 changes: 112 additions & 72 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
# Copyright © 2025 CCP ehf.

cmake_minimum_required(VERSION 3.31.0)
project(resources VERSION 4.3.1)
cmake_minimum_required(VERSION 3.31.1)

option(BUILD_CLI "Build CLI." OFF)
if (BUILD_CLI)
list(APPEND VCPKG_MANIFEST_FEATURES "cli")
endif()

option(BUILD_DOCUMENTATION "Build Documentation." OFF)
if (BUILD_DOCUMENTATION)
list(APPEND VCPKG_MANIFEST_FEATURES "docs")
endif()

option(BUILD_TESTING "Build and run tests." OFF)
if (BUILD_TESTING)
list(APPEND VCPKG_MANIFEST_FEATURES "tests")
endif()

project(resources VERSION 4.3.2)

include(cmake/CcpTargetConfigurations.cmake)
include(cmake/CcpDocsGenerator.cmake)
Expand All @@ -13,55 +29,58 @@ find_package(yaml-cpp CONFIG REQUIRED)
# Add subdirectory for resource tools static library
add_subdirectory(tools)

set(SRC_FILES
include/BundleResourceGroup.h
include/Exports.h
include/PatchResourceGroup.h
include/ResourceGroup.h
include/Enums.h
include/Version.h

src/BundleResourceGroup.cpp
src/BundleResourceGroupImpl.cpp
src/BundleResourceGroupImpl.h
src/PatchResourceGroup.cpp
src/PatchResourceGroupImpl.cpp
src/PatchResourceGroupImpl.h
src/ResourceGroup.cpp
src/ResourceGroupFactory.h
src/ResourceGroupFactory.cpp
src/ResourceGroupImpl.cpp
src/ResourceGroupImpl.h
src/Enums.cpp
src/VersionInternal.h
src/VersionInternal.cpp

src/ResourceInfo/BundleResourceInfo.cpp
src/ResourceInfo/BundleResourceInfo.h
src/ResourceInfo/PatchResourceInfo.cpp
src/ResourceInfo/PatchResourceInfo.h
src/ResourceInfo/ResourceInfo.cpp
src/ResourceInfo/ResourceInfo.h
src/ResourceInfo/ResourceGroupInfo.h
src/ResourceInfo/ResourceGroupInfo.cpp
src/ResourceInfo/PatchResourceGroupInfo.h
src/ResourceInfo/PatchResourceGroupInfo.cpp
src/ResourceInfo/BundleResourceGroupInfo.h
src/ResourceInfo/BundleResourceGroupInfo.cpp
src/StatusSettings.h
src/StatusSettings.cpp
src/ParameterVersion.h
src/ParameterVersion.cpp
set(PUBLIC_HEADER_FILES
include/BundleResourceGroup.h
include/Exports.h
include/PatchResourceGroup.h
include/ResourceGroup.h
include/Enums.h
)

add_library(resources STATIC ${SRC_FILES})

target_compile_definitions(resources PRIVATE EXPORT_LIBRARY)

# Version is required in code
# Added as config
configure_file(src/Version.h.in include/Version.h @ONLY)

set(PUBLIC_GENERATED_VERSION_HEADER_FILE include/Version.h)

set(SRC_FILES
src/BundleResourceGroup.cpp
src/BundleResourceGroupImpl.cpp
src/BundleResourceGroupImpl.h
src/PatchResourceGroup.cpp
src/PatchResourceGroupImpl.cpp
src/PatchResourceGroupImpl.h
src/ResourceGroup.cpp
src/ResourceGroupFactory.h
src/ResourceGroupFactory.cpp
src/ResourceGroupImpl.cpp
src/ResourceGroupImpl.h
src/Enums.cpp
src/VersionInternal.h
src/VersionInternal.cpp

src/ResourceInfo/BundleResourceInfo.cpp
src/ResourceInfo/BundleResourceInfo.h
src/ResourceInfo/PatchResourceInfo.cpp
src/ResourceInfo/PatchResourceInfo.h
src/ResourceInfo/ResourceInfo.cpp
src/ResourceInfo/ResourceInfo.h
src/ResourceInfo/ResourceGroupInfo.h
src/ResourceInfo/ResourceGroupInfo.cpp
src/ResourceInfo/PatchResourceGroupInfo.h
src/ResourceInfo/PatchResourceGroupInfo.cpp
src/ResourceInfo/BundleResourceGroupInfo.h
src/ResourceInfo/BundleResourceGroupInfo.cpp
src/StatusSettings.h
src/StatusSettings.cpp
src/ParameterVersion.h
src/ParameterVersion.cpp
)

add_library(resources STATIC ${SRC_FILES} ${PUBLIC_HEADER_FILES} ${PUBLIC_GENERATED_VERSION_HEADER_FILE})

target_compile_definitions(resources PRIVATE EXPORT_LIBRARY)

if (WIN32)
target_compile_definitions(resources PRIVATE NOMINMAX) # Do not define min/max macros.
endif ()
Expand All @@ -83,11 +102,12 @@ source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}"
FILES ${_SOURCES}
)

add_subdirectory(cli)
if(BUILD_CLI)
add_subdirectory(cli)
endif()

# Enable testing based on option set (on by default)
# Enable testing
if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
option(BUILD_TESTING "Build and run tests. Enabled by default." ON)
if (BUILD_TESTING)
include(CTest)
add_subdirectory(tests)
Expand All @@ -96,16 +116,7 @@ endif ()

# Provide an install target if this is the top level project only
if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
# Determine if/when to generate/build documentation. The rules are as follows:
# - If running locally - Build documentation is OFF by default
# - If running on a build agent (TeamCity) - Build documentation is ON by default
# - If -DBUILD_DOCUMENTATION=ON/OFF flag is explicitly set, use it.
set(BUILD_DOCUMENTATION_DEFAULT_FLAG OFF)
if (DEFINED ENV{TEAMCITY_VERSION})
set(BUILD_DOCUMENTATION_DEFAULT_FLAG ON)
endif ()
message(STATUS "Document generation settings: default=${BUILD_DOCUMENTATION_DEFAULT_FLAG}, option BUILD_DOCUMENTATION=${BUILD_DOCUMENTATION}")
option(BUILD_DOCUMENTATION "Build Documentation" ${BUILD_DOCUMENTATION_DEFAULT_FLAG})
option(INSTALL_TO_MONOLITH "Install this package to a perforce branch vendor folder - provided for backwards compatability" OFF)

if (BUILD_DOCUMENTATION)
find_package(Python3 COMPONENTS Interpreter REQUIRED)
Expand All @@ -130,23 +141,52 @@ if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
add_dependencies(Sphinx resources)
endif ()


# Install rule to ensure that our runtime files are in the expected, platform-specific folder
install(
# Install rule for available public headers
install(FILES ${PUBLIC_HEADER_FILES} DESTINATION include)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PUBLIC_GENERATED_VERSION_HEADER_FILE} DESTINATION include)

if(INSTALL_TO_MONOLITH)
# Install rule to ensure that our runtime files are in the expected, platform-specific folder
install(
TARGETS resources
EXPORT resourcesTarget
CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}
LIBRARY DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
ARCHIVE DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
RUNTIME DESTINATION bin/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
)
install(
TARGETS resources-tools
EXPORT resourcesToolsTarget
CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}
LIBRARY DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
ARCHIVE DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
RUNTIME DESTINATION bin/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
)
else()
install(
TARGETS resources
EXPORT resourcesTarget
EXPORT ResourcesTargets
CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}
LIBRARY DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
ARCHIVE DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
RUNTIME DESTINATION bin/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
)
install(
LIBRARY DESTINATION lib/
ARCHIVE DESTINATION lib/
RUNTIME DESTINATION bin/
)

install(
TARGETS resources-tools
EXPORT resourcesToolsTarget
EXPORT ResourcesTargets
CONFIGURATIONS ${CMAKE_CONFIGURATION_TYPES}
LIBRARY DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
ARCHIVE DESTINATION lib/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
RUNTIME DESTINATION bin/${CCP_PLATFORM}/${CCP_ARCHITECTURE}/${CCP_TOOLSET}/
)
LIBRARY DESTINATION lib/
ARCHIVE DESTINATION lib/
RUNTIME DESTINATION bin/
)

install(
EXPORT ResourcesTargets
DESTINATION share/carbon-resources
FILE carbon-resourcesConfig.cmake
)
endif()

endif ()
30 changes: 14 additions & 16 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,10 @@
"cacheVariables": {
"VCPKG_USE_HOST_TOOLS": "ON",
"CMAKE_COMPILE_WARNING_AS_ERROR": "ON",
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/customized_toolchain/triplets",
"BUILD_DOCUMENTATION": "ON",
"BUILD_TESTING": "ON",
"VCPKG_MANIFEST_FEATURES": "tests;docs"
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/vendor/github.com/carbonengine/vcpkg-registry/triplets"
},
"environment": {
"VCPKG_ROOT": "${sourceDir}/vendor/github.com/microsoft/vcpkg"
"PATH_TO_VCPKG_ROOT": "${sourceDir}/vendor/github.com/microsoft/vcpkg"
},
"hidden": true
},
Expand Down Expand Up @@ -47,7 +44,7 @@
"name": "x64-windows",
"inherits": "windows",
"cacheVariables": {
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/customized_toolchain/toolchains/x64-windows-carbon.cmake"
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/vendor/github.com/carbonengine/vcpkg-registry/toolchains/x64-windows-145-carbon.cmake"
},
"hidden": true
},
Expand All @@ -56,7 +53,7 @@
"inherits": "osx",
"cacheVariables": {
"CMAKE_OSX_ARCHITECTURES": "arm64",
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/customized_toolchain/toolchains/arm64-osx-carbon.cmake"
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/vendor/github.com/carbonengine/vcpkg-registry/toolchains/arm64-osx-carbon.cmake"
},
"hidden": true
},
Expand All @@ -65,44 +62,45 @@
"inherits": "osx",
"cacheVariables": {
"CMAKE_OSX_ARCHITECTURES": "x86_64",
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/customized_toolchain/toolchains/x64-osx-carbon.cmake"
"VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/vendor/github.com/carbonengine/vcpkg-registry/toolchains/x64-osx-carbon.cmake"
},
"hidden": true
},

{
"name": "x64-windows-internal",
"inherits": "x64-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Internal",
"VCPKG_TARGET_TRIPLET": "x64-windows-internal",
"VCPKG_HOST_TRIPLET": "x64-windows-internal"
"VCPKG_TARGET_TRIPLET": "x64-windows-145-internal",
"VCPKG_HOST_TRIPLET": "x64-windows-145-internal"
}
},
{
"name": "x64-windows-release",
"inherits": "x64-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"VCPKG_TARGET_TRIPLET": "x64-windows-release",
"VCPKG_HOST_TRIPLET": "x64-windows-release"
"VCPKG_TARGET_TRIPLET": "x64-windows-145-release",
"VCPKG_HOST_TRIPLET": "x64-windows-145-release"
}
},
{
"name": "x64-windows-debug",
"inherits": "x64-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_TARGET_TRIPLET": "x64-windows-debug",
"VCPKG_HOST_TRIPLET": "x64-windows-debug"
"VCPKG_TARGET_TRIPLET": "x64-windows-145-debug",
"VCPKG_HOST_TRIPLET": "x64-windows-145-debug"
}
},
{
"name": "x64-windows-trinitydev",
"inherits": "x64-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "TrinityDev",
"VCPKG_TARGET_TRIPLET": "x64-windows-trinitydev",
"VCPKG_HOST_TRIPLET": "x64-windows-trinitydev"
"VCPKG_TARGET_TRIPLET": "x64-windows-145-trinitydev",
"VCPKG_HOST_TRIPLET": "x64-windows-145-trinitydev"
}
},
{
Expand Down
Loading