Skip to content

Commit 03674f2

Browse files
committed
testing
1 parent f068727 commit 03674f2

File tree

8 files changed

+151
-162
lines changed

8 files changed

+151
-162
lines changed

.ci/ci_build.sh

+70-117
Original file line numberDiff line numberDiff line change
@@ -27,74 +27,61 @@ fi
2727

2828
[ -z "${USE_STANDARD_INSTALLER_NAME}" ] && USE_STANDARD_INSTALLER_NAME="OFF"
2929

30-
echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}, is archive enabled: ${IS_ARCHIVE_SKIPPED}"
30+
echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}, is archive enabled: ${IS_ARCHIVE_SKIPPED}, use ccache: ${USE_CCACHE}, reset ccache: ${RESET_CACHE}"
31+
32+
# clear ccache if neccesery
33+
if [[ "$RESET_CACHE" == '1' ]]; then
34+
echo "Clearing ccache"
35+
rm -rf .ccache || true
36+
rm -rf build/.ccache || true
37+
fi
3138

3239
# Build the package on osx or linux
3340
if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
3441
echo "Start: osx or darwin"
42+
3543
if [[ "$USE_CCACHE" == '1' ]]; then
3644
echo "Using ccache"
37-
38-
# Init ccache
39-
mkdir -p .ccache
40-
cd .ccache
41-
42-
if [[ "$RESET_CACHE" == '1' ]]; then
43-
echo "Clearing ccache"
44-
rm -rf ..?* .[!.]* *
45-
fi
46-
47-
CCACHE_PATH=$PWD
48-
cd ..
49-
cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache ${IS_ARCHIVE_SKIPPED}"
50-
export CCACHE_SLOPPINESS=pch_defines,time_macros && export CCACHE_DIR=${CCACHE_PATH} && export CCACHE_COMPRESS=true && export CCACHE_COMPRESSLEVEL=1 && export CCACHE_MAXSIZE=400M
51-
echo "CCache parameters: ${cachecommand}"
52-
ls -a .ccache
53-
54-
mkdir build || exit 1
55-
cd build
56-
ccache -p
57-
cmake ${cachecommand} -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ../ || exit 2
58-
make -j $(sysctl -n hw.ncpu) || exit 3
59-
sudo cpack || exit 3
60-
exit 0;
61-
exit 1 || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
45+
BUILD_OPTION=""
6246
else
6347
echo "Not using ccache"
64-
mkdir build || exit 1
65-
cd build
66-
cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ../ || exit 2
67-
make -j $(sysctl -n hw.ncpu) || exit 3
68-
sudo cpack || exit 3
69-
exit 0;
70-
exit 1 || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
48+
BUILD_OPTION="-DDISABLE_CCACHE_USAGE=ON"
7149
fi
50+
51+
echo "Build option: ${BUILD_OPTION}"
52+
53+
mkdir -p build/.ccache
54+
ls -a build/.ccache
55+
cd build
56+
cmake -DPLATFORM=${PLATFORM} ${BUILD_OPTION} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ../ || exit 2
57+
make -j $(sysctl -n hw.ncpu) || exit 3
58+
sudo cpack || exit 3
59+
ccache -s -d ./.ccache || true
60+
exit 0;
61+
exit 1 || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
62+
7263
elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
7364
echo "Start: windows"
74-
echo "Number of cores: $NUMBER_OF_PROCESSORS"
75-
65+
echo "Number of cores: $NUMBER_OF_PROCESSORS"
66+
7667
if [[ "$USE_CCACHE" == '1' ]]; then
7768
echo "Using ccache"
78-
79-
mkdir -p .ccache
80-
81-
if [[ "$RESET_CACHE" == '1' ]]; then
82-
echo "Clearing ccache"
83-
pushd .
84-
cd .ccache && rm -rf ..?* .[!.]* *
85-
popd
86-
fi
87-
export CCACHE_SLOPPINESS=pch_defines,time_macros && export CCACHE_DIR=$PWD/.ccache && export CCACHE_NOCOMPRESS=true && export CCACHE_MAXSIZE=600M
69+
BUILD_OPTION="${IS_ARCHIVE_SKIPPED}"
70+
else
71+
echo "Not using ccache"
72+
BUILD_OPTION="-DDISABLE_CCACHE_USAGE=ON ${IS_ARCHIVE_SKIPPED}"
8873
fi
8974

90-
mkdir -p build || exit 1
75+
echo "Build option: ${BUILD_OPTION}"
76+
77+
mkdir -p build/.ccache
78+
9179
cd build
92-
cmake -G "Visual Studio 17 2022" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_GITHUB_ACTION=1 ${IS_ARCHIVE_SKIPPED} ../ || exit 2
80+
cmake -G "Visual Studio 17 2022" ${BUILD_OPTION} -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_GITHUB_ACTION=1 ../ || exit 2
81+
./ccache.exe -p || true
9382
cmake --build . --target package --config Release -- -nologo -v:m -maxcpucount || exit 3
83+
./ccache.exe -s || true
9484

95-
if [[ "$USE_CCACHE" == '1' ]]; then
96-
./ccache.exe -s
97-
fi
9885
exit 0;
9986

10087
elif [[ "$CI_NAME" == 'linux' ]]; then
@@ -105,6 +92,20 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
10592

10693
# take ownership of deploy dir
10794
mkdir -p ${CI_BUILD_DIR}/deploy
95+
mkdir -p .ccache
96+
97+
if [[ "$USE_CCACHE" == '1' ]]; then
98+
echo "Using ccache"
99+
BUILD_OPTION="${IS_ARCHIVE_SKIPPED}"
100+
cache_env="export CCACHE_DIR=/.ccache"
101+
ls -a .ccache
102+
else
103+
echo "Not using ccache"
104+
BUILD_OPTION="-DDISABLE_CCACHE_USAGE=ON ${IS_ARCHIVE_SKIPPED}"
105+
cache_env="true"
106+
fi
107+
108+
echo "Build option: ${BUILD_OPTION}, ccache: ${cache_env}"
108109

109110
if [[ "$DOCKER_TAG" == "ArchLinux" ]]; then
110111
echo "Arch Linux detected"
@@ -113,75 +114,27 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
113114
chmod -R a+rw ${CI_BUILD_DIR}/deploy
114115
versionFile=`cat version`
115116
sed -i "s/{VERSION}/${versionFile}/" PKGBUILD
116-
fi
117-
118-
if [[ "$USE_CCACHE" == '1' ]]; then
119-
echo "Using ccache"
120-
121-
mkdir -p .ccache
122-
123-
cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache ${IS_ARCHIVE_SKIPPED}"
124-
125-
if [[ "$RESET_CACHE" == '1' ]]; then
126-
echo "Clearing ccache"
127-
cache_env="export CCACHE_SLOPPINESS=pch_defines,time_macros && export CCACHE_DIR=/.ccache && export CCACHE_NOCOMPRESS=true && export CCACHE_MAXSIZE=600M && cd /.ccache && rm -rf ..?* .[!.]* *"
128-
else
129-
cache_env="export CCACHE_SLOPPINESS=pch_defines,time_macros && export CCACHE_DIR=/.ccache && export CCACHE_NOCOMPRESS=true && export CCACHE_MAXSIZE=600M"
130-
fi
131-
132-
echo "CCache parameters: ${cachecommand}, env: ${cache_env}"
133-
134-
if [[ "$DOCKER_TAG" == "ArchLinux" ]]; then
135-
sed -i "s/{CACHE}/${cachecommand}/" PKGBUILD
136-
echo "Using makepkg"
137-
cat PKGBUILD
138-
chmod -R a+rw ${CI_BUILD_DIR}/.ccache
139-
else
140-
executeCommand="cd build && ( cmake ${cachecommand} -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDEBIAN_NAME_TAG=${DOCKER_TAG} -DUSE_STANDARD_INSTALLER_NAME=${USE_STANDARD_INSTALLER_NAME} ../ || exit 2 )"
141-
executeCommand+=" && ( make -j $(nproc) package || exit 3 )"
142-
fi
143-
144-
ls -a .ccache
145-
# run docker
146-
docker run --rm \
147-
-v "${CI_BUILD_DIR}/.ccache:/.ccache" \
148-
-v "${CI_BUILD_DIR}/deploy:/deploy" \
149-
-v "${CI_BUILD_DIR}:/source:ro" \
150-
$REGISTRY_URL:$DOCKER_TAG \
151-
/bin/bash -c "${cache_env} && cd / && mkdir -p hyperhdr && cp -r source/. /hyperhdr &&
152-
cd /hyperhdr && mkdir build && (${executeCommand}) &&
153-
(cp /hyperhdr/build/bin/h* /deploy/ 2>/dev/null || : ) &&
154-
(cp /hyperhdr/build/Hyper* /deploy/ 2>/dev/null || : ) &&
155-
(cp /hyperhdr/Hyper*.zst /deploy/ 2>/dev/null || : ) &&
156-
ccache -s &&
157-
exit 0;
158-
exit 1 " || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
159-
ls -a .ccache
117+
sed -i "s/{BUILD_OPTION}/${BUILD_OPTION}/" PKGBUILD
118+
chmod -R a+rw ${CI_BUILD_DIR}/.ccache
160119
else
161-
echo "Not using cache"
162-
163-
if [[ "$DOCKER_TAG" == "ArchLinux" ]]; then
164-
sed -i "s/{CACHE}//" PKGBUILD
165-
echo "Using makepkg"
166-
cat PKGBUILD
167-
else
168-
executeCommand="cd build && ( cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDEBIAN_NAME_TAG=${DOCKER_TAG} -DUSE_STANDARD_INSTALLER_NAME=${USE_STANDARD_INSTALLER_NAME} ../ || exit 2 )"
169-
executeCommand+=" && ( make -j $(nproc) package || exit 3 )"
170-
fi
171-
172-
# run docker
173-
docker run --rm \
174-
-v "${CI_BUILD_DIR}/deploy:/deploy" \
175-
-v "${CI_BUILD_DIR}:/source:ro" \
176-
$REGISTRY_URL:$DOCKER_TAG \
177-
/bin/bash -c "cd / && mkdir -p hyperhdr && cp -r source/. /hyperhdr &&
178-
cd /hyperhdr && mkdir build && (${executeCommand}) &&
179-
(cp /hyperhdr/build/bin/h* /deploy/ 2>/dev/null || : ) &&
180-
(cp /hyperhdr/build/Hyper* /deploy/ 2>/dev/null || : ) &&
181-
(cp /hyperhdr/Hyper*.zst /deploy/ 2>/dev/null || : ) &&
182-
exit 0;
183-
exit 1 " || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
120+
executeCommand="cd build && ( cmake ${BUILD_OPTION} -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDEBIAN_NAME_TAG=${DOCKER_TAG} -DUSE_STANDARD_INSTALLER_NAME=${USE_STANDARD_INSTALLER_NAME} ../ || exit 2 )"
121+
executeCommand+=" && ( make -j $(nproc) package || exit 3 )"
184122
fi
123+
124+
# run docker
125+
docker run --rm \
126+
-v "${CI_BUILD_DIR}/.ccache:/.ccache" \
127+
-v "${CI_BUILD_DIR}/deploy:/deploy" \
128+
-v "${CI_BUILD_DIR}:/source:ro" \
129+
$REGISTRY_URL:$DOCKER_TAG \
130+
/bin/bash -c "${cache_env} && cd / && mkdir -p hyperhdr && cp -r source/. /hyperhdr &&
131+
cd /hyperhdr && mkdir build && (${executeCommand}) &&
132+
(cp /hyperhdr/build/bin/h* /deploy/ 2>/dev/null || : ) &&
133+
(cp /hyperhdr/build/Hyper* /deploy/ 2>/dev/null || : ) &&
134+
(cp /hyperhdr/Hyper*.zst /deploy/ 2>/dev/null || : ) &&
135+
(ccache -s || true) &&
136+
exit 0;
137+
exit 1 " || { echo "---> HyperHDR compilation failed! Abort"; exit 5; }
185138

186139
# overwrite file owner to current user
187140
sudo chown -fR $(stat -c "%U:%G" ${CI_BUILD_DIR}/deploy) ${CI_BUILD_DIR}/deploy

.github/workflows/push-master.yml

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ name: HyperHDR CI Build
22

33
on:
44
push:
5-
pull_request:
5+
# pull_request:
66

77
env:
88
USE_CACHE: "1"
99
RESET_CACHE: "0"
10-
USE_CODEQL: "1"
10+
USE_CODEQL: "0"
1111
BUILD_ARCHIVES: ${{ startsWith(github.event.ref, 'refs/tags') && 1 || 0 }}
1212

1313
jobs:
@@ -163,7 +163,7 @@ jobs:
163163
if: ( env.USE_CACHE == '1' )
164164
uses: actions/cache@v4
165165
with:
166-
path: .ccache
166+
path: build/.ccache
167167
key: macOS-ccache-${{ matrix.NICE_NAME }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
168168
restore-keys: macOS-ccache-${{ matrix.NICE_NAME }}
169169

@@ -248,7 +248,7 @@ jobs:
248248
if: ( env.USE_CACHE == '1' )
249249
uses: actions/cache@v4
250250
with:
251-
path: .ccache
251+
path: build/.ccache
252252
key: ${{ runner.os }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
253253
restore-keys: ${{ runner.os }}-ccache
254254

@@ -305,7 +305,6 @@ jobs:
305305
analyze:
306306
name: Analyze (CodeQL)
307307
runs-on: ubuntu-latest
308-
if: ( true )
309308
permissions:
310309
actions: read
311310
contents: read
@@ -319,11 +318,13 @@ jobs:
319318
steps:
320319
- name: Checkout repository
321320
uses: actions/checkout@v4
321+
if: ( env.USE_CODEQL == '1' )
322322
with:
323323
submodules: true
324324

325325
- name: Run composite CodeQL job for '${{matrix.language}}' language
326326
uses: ./.github/actions/codeql
327+
if: ( env.USE_CODEQL == '1' )
327328
with:
328329
language: ${{matrix.language}}
329330

CMakeLists.txt

+35-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
if (WIN32)
2-
cmake_minimum_required(VERSION 3.24.0)
2+
cmake_minimum_required(VERSION 3.25.0)
3+
cmake_policy(SET CMP0141 NEW)
34
else()
45
cmake_minimum_required(VERSION 3.16.0)
56
endif()
@@ -52,36 +53,50 @@ SET ( DEFAULT_SYSTRAY ON )
5253
SET ( DEFAULT_SHARED_LIBS ON )
5354

5455
# Configure CCache if available
55-
find_program(CCACHE_FOUND ccache HINTS "${CMAKE_CURRENT_SOURCE_DIR}/build")
56-
if ( CCACHE_FOUND )
57-
if (DEFINED ENV{CCACHE_DIR})
56+
if (NOT DISABLE_CCACHE_USAGE)
57+
find_program(CCACHE_FOUND ccache HINTS "${CMAKE_CURRENT_SOURCE_DIR}/build")
58+
if ( CCACHE_FOUND )
5859
set( CCACHE_ENABLED ON )
59-
message ( STATUS "Found CCache (${CCACHE_FOUND}) and its env settings ($ENV{CCACHE_DIR}). Will try to use it." )
60+
61+
if (DEFINED ENV{CCACHE_DIR})
62+
set (CCACHE_DIR_CACHE_LOCATION $ENV{CCACHE_DIR})
63+
message ( STATUS "Found CCache (${CCACHE_FOUND}) and its env settings: ${CCACHE_DIR_CACHE_LOCATION}. Will try to use it." )
64+
elseif (WIN32 AND NOT CMAKE_GITHUB_ACTION)
65+
set (CCACHE_DIR_CACHE_LOCATION "$ENV{AppData}/.ccache")
66+
message ( STATUS "Found CCache (${CCACHE_FOUND}) and set ccache dir: ${CCACHE_DIR_CACHE_LOCATION}. Will try to use it." )
67+
else()
68+
set (CCACHE_DIR_CACHE_LOCATION "${CMAKE_BINARY_DIR}/.ccache")
69+
message ( STATUS "Found CCache (${CCACHE_FOUND}) and set ccache dir: ${CCACHE_DIR_CACHE_LOCATION}. Will try to use it." )
70+
endif()
71+
6072
if (WIN32)
6173
file(COPY_FILE
6274
${CCACHE_FOUND} ${CMAKE_BINARY_DIR}/cl.exe
6375
ONLY_IF_DIFFERENT
6476
)
65-
66-
message(STATUS "Setting MSVC debug information format to 'Embedded'")
6777
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
68-
69-
set(CMAKE_VS_GLOBALS
70-
"CLToolExe=cl.exe"
71-
"CLToolPath=${CMAKE_BINARY_DIR}"
72-
"TrackFileAccess=false"
73-
"UseMultiToolTask=true"
74-
"DebugInformationFormat=OldStyle"
75-
)
78+
message ( STATUS "Writing CCache config to user profile: $ENV{USERPROFILE}/.ccache/ccache.conf")
79+
configure_file(${OUR_CMAKE_MODULES}/ccache.windows.conf.in $ENV{USERPROFILE}/.ccache/ccache.conf)
80+
configure_file(${OUR_CMAKE_MODULES}/Directory.Build.props.in ${CMAKE_BINARY_DIR}/Directory.Build.props)
7681
else()
77-
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")
82+
set(HYPERHDR_CCACHE_PARAMS
83+
CCACHE_MAXSIZE=600M
84+
CCACHE_DIR=${CCACHE_DIR_CACHE_LOCATION}
85+
CCACHE_SLOPPINESS=pch_defines,time_macros
86+
CACHE STRING "CCache parameters")
87+
mark_as_advanced(HYPERHDR_CCACHE_PARAMS)
88+
89+
set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env ${HYPERHDR_CCACHE_PARAMS} ${CCACHE_FOUND})
90+
set(CMAKE_CXX_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env ${HYPERHDR_CCACHE_PARAMS} ${CCACHE_FOUND})
91+
92+
message(STATUS "Using CCache for compilation. It is invoked as: ${CMAKE_CXX_COMPILER_LAUNCHER}")
7893
endif()
7994
else()
80-
message ( WARNING "Found CCache but env settings: CCACHE_DIR is not set. Skipping." )
81-
endif()
95+
message ( STATUS "CCache is not found" )
96+
endif(CCACHE_FOUND)
8297
else()
83-
message ( STATUS "CCache is not found" )
84-
endif(CCACHE_FOUND)
98+
message ( STATUS "CCache usage is disabled" )
99+
endif()
85100

86101
# find QT libs
87102
find_package(Qt6 COMPONENTS Core Network SerialPort QUIET)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project>
2+
<PropertyGroup>
3+
<CLToolPath>@CMAKE_BINARY_DIR@</CLToolPath>
4+
</PropertyGroup>
5+
<PropertyGroup>
6+
<UseMultiToolTask>true</UseMultiToolTask>
7+
</PropertyGroup>
8+
<ItemDefinitionGroup>
9+
<ClCompile>
10+
<DebugInformationFormat>OldStyle</DebugInformationFormat>
11+
<ForcedIncludeFiles />
12+
<ObjectFileName>$(IntDir)%(FileName).obj</ObjectFileName>
13+
</ClCompile>
14+
</ItemDefinitionGroup>
15+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cache_dir = @CCACHE_DIR_CACHE_LOCATION@
2+
sloppiness = pch_defines,time_macros
3+
inode_cache = true
4+
depend_mode = true

0 commit comments

Comments
 (0)