Update .pro (gmic and .qm files handling)

This commit is contained in:
Sebastien Fourey 2022-11-06 19:40:47 +01:00
parent fc0de38c88
commit a344dbcafd
3 changed files with 108 additions and 73 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
Makefile
*.a
*.o
*.pro.user

View File

@ -1,23 +1,85 @@
#!/bin/bash
#
# Usage: check_version.sh GMIC_PATH [gmic|CImg|stdlib]
#
if [ $# != 2 ]; then
echo
set -o errexit
function usage()
{
echo " Usage:"
echo
echo " check_version.sh GMIC_PATH [gmic|CImg|stdlib]"
echo
exit 0
}
function die()
{
local message="$1"
>&2 echo "Error: $*"
exit 1
}
(( $# == 0 )) && usage
[[ -d "$1" ]] || die "$1 is not an existing directory"
# @param folder
function gmic_version()
{
local folder="$1"
[[ -e "${folder}/gmic.h" ]] || die "File not found: ${folder}/gmic.h"
local version=$(grep -F "#define gmic_version " ${folder}/gmic.h)
echo ${version//* }
}
# @param folder
function cimg_version()
{
local folder="$1"
[[ -e "${folder}/CImg.h" ]] || die "File not found: ${folder}/CImg.h"
local version=$(grep -F "#define cimg_version " ${folder}/CImg.h)
echo ${version//* }
}
# @param folder
function stdlib_version()
{
local folder="$1"
[[ -e "${folder}/gmic_stdlib_community.h" ]] || die "File not found: ${folder}/gmic_stdlib_community.h"
local version=$(grep -E "File.*gmic_stdlib_community.h.*\(v." ${folder}/gmic_stdlib_community.h)
version=${version#*v.}
version=${version%)}
version=${version//.}
echo ${version}
}
if [[ "$2" == gmic ]]; then
gmic_version "$1"
exit 0
fi
if [ "$2" = gmic ]; then
grep "define gmic_version " $1/gmic.h | cut -d' ' -f3
if [[ "$2" == CImg ]]; then
cimg_version "$1"
exit 0
fi
if [ "$2" = CImg ]; then
grep "define cimg_version " $1/CImg.h | cut -d' ' -f3
if [[ "$2" == stdlib ]]; then
stdlib_version "$1"
exit 0
fi
if [ "$2" = stdlib ]; then
VERSION=$(grep "File.*gmic_stdlib_community.h.*(v." $1/gmic_stdlib_community.h)
VERSION=${VERSION#*v.}
VERSION=${VERSION%)}
VERSION=${VERSION//.}
echo "$VERSION"
echo "Checking G'MIC and CImg versions..."
GMIC_VERSION=$(gmic_version "$1")
CIMG_VERSION=$(cimg_version "$1")
STDLIB_VERSION=$(stdlib_version "$1")
echo "G'MIC version is .................... $GMIC_VERSION"
echo "gmic_stdlib_community.h version is .. $STDLIB_VERSION"
echo "CImg version is ..................... $CIMG_VERSION"
if [[ $GMIC_VERSION != $CIMG_VERSION ]]; then
die "Version numbers of files 'gmic.h' (${GMIC_VERSION}) and 'CImg.h' (${CIMG_VERSION}) mismatch"
fi
if [[ $GMIC_VERSION != $STDLIB_VERSION ]]; then
die "Version numbers of files 'gmic.h' (${GMIC_VERSION}) and 'gmic_stdlib_community.h' (${STDLIB_VERSION}) mismatch"
fi
exit 0

View File

@ -87,56 +87,47 @@ defined(GMIC_PATH, var) {
defined(GMIC_PATH, var):!exists( $$GMIC_PATH/gmic.cpp ) {
error("G'MIC repository was not found ("$$GMIC_PATH")")
}
!defined(GMIC_PATH, var) {
error("GMIC_PATH variable not set, and no G'MIC source tree found")
}
message("G'MIC repository was found ("$$GMIC_PATH")")
DEPENDPATH += $$GMIC_PATH
equals( COMPILER, "clang" ) {
message("Compiler is clang++")
QMAKE_CXX = clang++
QMAKE_LINK = clang++
}
#
# Make sure CImg.h is in G'MIC source tree
#
!exists( $$GMIC_PATH/CImg.h ) {
message( "CImg.h is missing. Trying to get it..." )
!system(make -C $$GMIC_PATH CImg.h) {
error("Could not get CImg.h from G'MIC repository")
}
!exists($$GMIC_PATH/CImg.h) {
error("Could not get CImg.h from G'MIC repository")
}
message("CImg.h found")
}
gmic_files.commands = \$(MAKE) -C $$GMIC_PATH CImg.h
gmic_files.commands += $$escape_expand(\n\t)\$(MAKE) -C $$GMIC_PATH gmic_stdlib_community.h
gmic_files.commands += $$escape_expand(\n\t)bash ./check_versions.sh $$GMIC_PATH
#
# Make sure gmic_stdlib_community.h is in G'MIC source tree
#
!exists( $$GMIC_PATH/gmic_stdlib_community.h ) {
message( "gmic_stdlib_community.h is missing. Trying to get it..." )
!system(make -C $$GMIC_PATH gmic_stdlib_community.h) {
error("Could not get gmic_stdlib_community.h from G'MIC repository")
}
!exists($$GMIC_PATH/gmic_stdlib_community.h) {
error("Could not get gmic_stdlib_community.h from G'MIC repository")
}
message("gmic_stdlib_community.h found")
}
QMAKE_DISTCLEAN = \
translations/*.qm \
translations/filters/*.ts \
translations/filters/*.qm
# Make sure CImg, gmic and gmic_stdlib_community.h are the same version
GMIC_VERSION = $$system(bash check_versions.sh $$GMIC_PATH gmic)
STDLIB_VERSION = $$system(bash check_versions.sh $$GMIC_PATH stdlib)
CIMG_VERSION = $$system(bash check_versions.sh $$GMIC_PATH CImg)
message("G'MIC version is ................." $$GMIC_VERSION)
message("gmic_stdlib_community.h version is" $$STDLIB_VERSION)
message("CImg version is .................." $$CIMG_VERSION)
!equals(GMIC_VERSION, $$CIMG_VERSION):{
error("Version numbers of files 'gmic.h' (" $$GMIC_VERSION ") and 'CImg.h' (" $$CIMG_VERSION ") mismatch")
}
!equals(GMIC_VERSION, $$STDLIB_VERSION):{
error("Version numbers of files 'gmic.h' (" $$GMIC_VERSION ") and 'gmic_stdlib_community.h' (" $$STDLIB_VERSION ") mismatch")
}
'$(SOURCES)'.depends += gmic_files
'.PHONY'.depends += gmic_files
'translations/%.qm'.depends += 'translations/%.ts'
'translations/%.qm'.commands += './translations/lrelease.sh $<'
'translations/filters/%.qm'.depends += 'translations/filters/%.ts'
'translations/filters/%.qm'.commands += './translations/lrelease.sh $<'
'translations/filters/%.ts'.depends += 'translations/filters/gmic_qt_%.csv'
'translations/filters/%.ts'.commands += './translations/filters/csv2ts.sh -o $@ $<'
QMAKE_EXTRA_TARGETS += '.PHONY' \
'$(SOURCES)' \
'gmic_files' \
'translations/%.qm' \
'translations/filters/%.qm' \
'translations/filters/%.ts'
!isEmpty(PRERELEASE) {
message( Prerelease date is $$PRERELEASE )
@ -214,7 +205,6 @@ equals( HOST, "8bf") {
CONFIG += openmp
}
# use qmake CONFIG+=openmp ... to force using openmp
# For example, on OS X with GCC 4.8 installed:
# qmake -spec unsupported/macx-clang QMAKE_CXX=g++-4.8 QMAKE_LINK=g++-4.8 CONFIG+=openmp
@ -332,8 +322,6 @@ HEADERS += \
HEADERS += $$GMIC_PATH/gmic.h
HEADERS += $$GMIC_PATH/CImg.h
HEADERS += $$GMIC_PATH/gmic_stdlib_community.h
SOURCES += \
src/ClickableLabel.cpp \
@ -456,25 +444,9 @@ translations/zh_tw.ts
RESOURCES += wip_translations.qrc
# message(Build QM translation files)
# system(make -C translations)
# system(make -C translations/filters)
qm_files.commands += make -C translations
qm_filter_files.commands += make -C translations/filters
QMAKE_EXTRA_TARGETS += qm_files qm_filter_files
PRE_TARGETDEPS += qm_files qm_filter_files
QMAKE_DISTCLEAN = \
translations/*.qm \
translations/filters/*.ts \
translations/filters/*.qm
# Prevent overwriting of these files by lupdate
# TRANSLATIONS += translations/filters/fr.ts
# PRE_TARGETDEPS +=
QMAKE_CXXFLAGS_RELEASE += -Ofast # -O3 -s
QMAKE_LFLAGS_RELEASE += -s
QMAKE_CXXFLAGS_DEBUG += -Dcimg_verbosity=3