Skip to content

Commit da3c4fa

Browse files
committed
chore: use install target on linux for packaging a dir
1 parent c9e9598 commit da3c4fa

File tree

10 files changed

+61
-51
lines changed

10 files changed

+61
-51
lines changed

BUILDING.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ You can figure out which files you need by looking at each of the `ExternalProje
3838

3939
1. Install Visual Studio 2022.
4040

41-
3. `git clone --single-branch --branch master https://github.com/CasparCG/server casparcg-server-master`
41+
2. `git clone --single-branch --branch master https://github.com/CasparCG/server casparcg-server-master`
4242

43-
4. Open the cloned folder in Visual Studio.
43+
3. Open the cloned folder in Visual Studio.
4444

45-
5. Build All and ensure it builds successfully
45+
4. Build All and ensure it builds successfully
4646

4747
# Linux
4848

@@ -83,7 +83,8 @@ Before beginning, check the build options section below, to decide if you want t
8383
4. If using system CEF (default & recommended), `sudo add-apt-repository ppa:casparcg/ppa` and `sudo apt-get install casparcg-cef-131-dev`
8484
5. `mkdir build && cd build`
8585
6. `cmake ../src` You can add any of the build options from below to this command
86-
7. `make -j8`
86+
7. `cmake --build . --parallel`
87+
8. `cmake --install . --prefix staging`
8788

8889
If all goes to plan, a folder called 'staging' has been created with everything you need to run CasparCG server.
8990

@@ -96,3 +97,5 @@ If all goes to plan, a folder called 'staging' has been created with everything
9697
-DUSE_SYSTEM_CEF=OFF - (Linux only, default ON) use the version of CEF from your OS. This expects to be using builds from https://launchpad.net/~casparcg/+archive/ubuntu/ppa
9798

9899
-DDIAG_FONT_PATH - Specify an alternate path/font to use for the DIAG window. On linux, this will often want to be set to an absolute path of a font
100+
101+
-DCASPARCG_BINARY_NAME=casparcg-server - (Linux only) generate the executable with the specified name. This also reconfigures the install target to be a bit more friendly with system package managers.

src/CMakeModules/Bootstrap_Linux.cmake

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ endif()
1414
set(ENABLE_HTML ON CACHE BOOL "Enable CEF and HTML producer")
1515
set(USE_STATIC_BOOST OFF CACHE BOOL "Use shared library version of Boost")
1616
set(USE_SYSTEM_CEF ON CACHE BOOL "Use the version of cef from your OS (only tested with Ubuntu)")
17+
set(CASPARCG_BINARY_NAME "casparcg" CACHE STRING "Custom name of the binary to build (this disables some install files)")
1718

1819
# Determine build (target) platform
1920
SET (PLATFORM_FOLDER_NAME "linux")
@@ -47,9 +48,12 @@ endif()
4748
if (ENABLE_HTML)
4849
if (USE_SYSTEM_CEF)
4950
set(CEF_LIB_PATH "/usr/lib/casparcg-cef-131")
50-
set(CEF_INCLUDE_PATH "/usr/include/casparcg-cef-131")
5151

52-
set(CEF_LIB
52+
add_library(CEF::CEF INTERFACE IMPORTED)
53+
target_include_directories(CEF::CEF INTERFACE
54+
"/usr/include/casparcg-cef-131"
55+
)
56+
target_link_libraries(CEF::CEF INTERFACE
5357
"-Wl,-rpath,${CEF_LIB_PATH} ${CEF_LIB_PATH}/libcef.so"
5458
"${CEF_LIB_PATH}/libcef_dll_wrapper.a"
5559
)
@@ -68,15 +72,31 @@ if (ENABLE_HTML)
6872
ExternalProject_Get_Property(cef SOURCE_DIR)
6973
ExternalProject_Get_Property(cef BINARY_DIR)
7074

71-
# Note: All of these must be referenced in the BUILD_BYPRODUCTS above, to satisfy ninja
72-
set(CEF_LIB
75+
add_library(CEF::CEF INTERFACE IMPORTED)
76+
target_include_directories(CEF::CEF INTERFACE
77+
"${SOURCE_DIR}"
78+
)
79+
target_link_libraries(CEF::CEF INTERFACE
80+
# Note: All of these must be referenced in the BUILD_BYPRODUCTS above, to satisfy ninja
7381
"${SOURCE_DIR}/Release/libcef.so"
7482
"${BINARY_DIR}/libcef_dll_wrapper/libcef_dll_wrapper.a"
7583
)
7684

77-
set(CEF_INCLUDE_PATH "${SOURCE_DIR}")
78-
set(CEF_BIN_PATH "${SOURCE_DIR}/Release")
79-
set(CEF_RESOURCE_PATH "${SOURCE_DIR}/Resources")
85+
install(DIRECTORY ${SOURCE_DIR}/Resources/locales TYPE LIB)
86+
install(FILES ${SOURCE_DIR}/Resources/chrome_100_percent.pak TYPE LIB)
87+
install(FILES ${SOURCE_DIR}/Resources/chrome_200_percent.pak TYPE LIB)
88+
install(FILES ${SOURCE_DIR}/Resources/icudtl.dat TYPE LIB)
89+
install(FILES ${SOURCE_DIR}/Resources/resources.pak TYPE LIB)
90+
91+
install(FILES ${SOURCE_DIR}/Release/chrome-sandbox TYPE LIB)
92+
install(FILES ${SOURCE_DIR}/Release/libcef.so TYPE LIB)
93+
install(FILES ${SOURCE_DIR}/Release/libEGL.so TYPE LIB)
94+
install(FILES ${SOURCE_DIR}/Release/libGLESv2.so TYPE LIB)
95+
install(FILES ${SOURCE_DIR}/Release/libvk_swiftshader.so TYPE LIB)
96+
install(FILES ${SOURCE_DIR}/Release/libvulkan.so.1 TYPE LIB)
97+
install(FILES ${SOURCE_DIR}/Release/snapshot_blob.bin TYPE LIB)
98+
install(FILES ${SOURCE_DIR}/Release/v8_context_snapshot.bin TYPE LIB)
99+
install(FILES ${SOURCE_DIR}/Release/vk_swiftshader_icd.json TYPE LIB)
80100
endif()
81101
endif ()
82102

src/CMakeModules/Bootstrap_Windows.cmake

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,20 +232,22 @@ if (ENABLE_HTML)
232232
ExternalProject_Get_Property(cef SOURCE_DIR)
233233
ExternalProject_Get_Property(cef BINARY_DIR)
234234

235+
add_library(CEF::CEF INTERFACE IMPORTED)
236+
target_include_directories(CEF::CEF INTERFACE
237+
"${SOURCE_DIR}"
238+
)
235239

236-
set(CEF_INCLUDE_PATH ${SOURCE_DIR})
237240
set(CEF_RESOURCE_PATH ${SOURCE_DIR}/Resources)
238241
set(CEF_BIN_PATH ${SOURCE_DIR}/Release)
239-
link_directories(${SOURCE_DIR}/Release)
240-
link_directories(${BINARY_DIR}/libcef_dll_wrapper)
242+
target_link_directories(CEF::CEF INTERFACE ${SOURCE_DIR}/Release ${BINARY_DIR}/libcef_dll_wrapper)
241243

242244
if (CMAKE_GENERATOR MATCHES "Visual Studio")
243-
set(CEF_LIB
245+
target_link_libraries(CEF::CEF INTERFACE
244246
libcef
245247
optimized Release/libcef_dll_wrapper
246248
debug Debug/libcef_dll_wrapper)
247249
else()
248-
set(CEF_LIB
250+
target_link_libraries(CEF::CEF INTERFACE
249251
libcef
250252
libcef_dll_wrapper)
251253
endif()

src/modules/html/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@ casparcg_add_module_project(html
2121

2222
target_include_directories(html PRIVATE
2323
../..
24-
${CEF_INCLUDE_PATH}
2524
)
26-
target_link_libraries(html PRIVATE ${CEF_LIB})
25+
target_link_libraries(html PRIVATE CEF::CEF)
2726

2827
set_target_properties(html PROPERTIES FOLDER modules)
2928
source_group(sources\\producer producer/*)

src/shell/CMakeLists.txt

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ endif ()
3131

3232

3333
add_executable(casparcg ${SOURCES} ${HEADERS})
34+
set_target_properties(casparcg PROPERTIES
35+
OUTPUT_NAME "${CASPARCG_BINARY_NAME}"
36+
)
3437
target_compile_features(casparcg PRIVATE cxx_std_17)
3538
target_include_directories(casparcg PRIVATE
3639
..
@@ -46,9 +49,10 @@ target_link_libraries(casparcg
4649
core
4750
protocol
4851

52+
"${CASPARCG_MODULE_PROJECTS}"
53+
4954
TBB::tbb
5055
TBB::tbbmalloc
51-
"${CASPARCG_MODULE_PROJECTS}"
5256
)
5357

5458
if (MSVC)
@@ -189,27 +193,13 @@ if (MSVC)
189193
endforeach(FILE_TO_COPY)
190194
endif ()
191195
else ()
192-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/shell/casparcg ${CMAKE_BINARY_DIR}/staging/bin/casparcg)
193-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/shell/casparcg.config ${CMAKE_BINARY_DIR}/staging/casparcg.config)
194-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/shell/liberation-fonts/LiberationMono-Regular.ttf ${CMAKE_BINARY_DIR}/staging/LiberationMono-Regular.ttf)
195-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/shell/run.sh ${CMAKE_BINARY_DIR}/staging/run.sh)
196-
197-
# Disabled as HTML module is disabled
198-
if (ENABLE_HTML AND NOT USE_SYSTEM_CEF)
199-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CEF_RESOURCE_PATH}/locales ${CMAKE_BINARY_DIR}/staging/lib/locales)
200-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_RESOURCE_PATH}/chrome_100_percent.pak ${CMAKE_BINARY_DIR}/staging/lib/chrome_100_percent.pak)
201-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_RESOURCE_PATH}/chrome_200_percent.pak ${CMAKE_BINARY_DIR}/staging/lib/chrome_200_percent.pak)
202-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_RESOURCE_PATH}/icudtl.dat ${CMAKE_BINARY_DIR}/staging/lib/icudtl.dat)
203-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_RESOURCE_PATH}/resources.pak ${CMAKE_BINARY_DIR}/staging/lib/resources.pak)
204-
205-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/chrome-sandbox ${CMAKE_BINARY_DIR}/staging/lib/chrome-sandbox)
206-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/libcef.so ${CMAKE_BINARY_DIR}/staging/lib/libcef.so)
207-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/libEGL.so ${CMAKE_BINARY_DIR}/staging/lib/libEGL.so)
208-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/libGLESv2.so ${CMAKE_BINARY_DIR}/staging/lib/libGLESv2.so)
209-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/libvk_swiftshader.so ${CMAKE_BINARY_DIR}/staging/lib/libvk_swiftshader.so)
210-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/libvulkan.so.1 ${CMAKE_BINARY_DIR}/staging/lib/libvulkan.so.1)
211-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/snapshot_blob.bin ${CMAKE_BINARY_DIR}/staging/lib/snapshot_blob.bin)
212-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/v8_context_snapshot.bin ${CMAKE_BINARY_DIR}/staging/lib/v8_context_snapshot.bin)
213-
ADD_CUSTOM_COMMAND (TARGET casparcg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CEF_BIN_PATH}/vk_swiftshader_icd.json ${CMAKE_BINARY_DIR}/staging/lib/vk_swiftshader_icd.json)
214-
endif ()
196+
install(TARGETS casparcg)
197+
198+
if ("${CASPARCG_BINARY_NAME}" STREQUAL "casparcg")
199+
# Looks like a 'default' build, produce a portable folder
200+
install(FILES casparcg.config run.sh DESTINATION ".")
201+
else ()
202+
# Looks like a build for a system package manager
203+
install(FILES casparcg.config DESTINATION "share/${CASPARCG_BINARY_NAME}")
204+
endif ()
215205
endif ()

tools/linux/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ FROM docker.io/buildpack-deps:jammy AS build-casparcg
1515

1616
RUN cmake -GNinja /source -DUSE_STATIC_BOOST=ON -DUSE_SYSTEM_CEF=OFF
1717

18-
RUN ninja
18+
RUN cmake --build .
19+
20+
RUN cmake --install . --prefix staging
1921

2022
# Find a better way to copy deps
2123
RUN ln -s /build/staging /staging && \

tools/linux/deb/ubuntu-jammy/debian/casparcg-server-beta.install

Lines changed: 0 additions & 3 deletions
This file was deleted.

tools/linux/deb/ubuntu-jammy/debian/rules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
dh $@ --sourcedirectory=src --buildsystem=cmake
44

55
override_dh_auto_configure:
6-
dh_auto_configure -- -DUSE_SYSTEM_CEF=ON -DUSE_STATIC_BOOST=OFF -DDIAG_FONT_PATH=/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf
6+
dh_auto_configure -- -DDIAG_FONT_PATH=/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf -DCASPARCG_BINARY_NAME=casparcg-server-beta
77

88
# Generate and install manual page
99
debian/casparcg-server-beta.1: debian/casparcg.txt2man

tools/linux/deb/ubuntu-noble/debian/casparcg-server-beta.install

Lines changed: 0 additions & 3 deletions
This file was deleted.

tools/linux/deb/ubuntu-noble/debian/rules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
dh $@ --sourcedirectory=src --buildsystem=cmake
44

55
override_dh_auto_configure:
6-
dh_auto_configure -- -DUSE_SYSTEM_CEF=ON -DUSE_STATIC_BOOST=OFF -DDIAG_FONT_PATH=/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf
6+
dh_auto_configure -- -DDIAG_FONT_PATH=/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf -DCASPARCG_BINARY_NAME=casparcg-server-beta
77

88
# Generate and install manual page
99
debian/casparcg-server-beta.1: debian/casparcg.txt2man

0 commit comments

Comments
 (0)