From a344dbcafd0dcf32554d146260649c6e08cece45 Mon Sep 17 00:00:00 2001 From: Sebastien Fourey Date: Sun, 6 Nov 2022 19:40:47 +0100 Subject: [PATCH] Update .pro (gmic and .qm files handling) --- .gitignore | 1 + check_versions.sh | 92 +++++++++++++++++++++++++++++++++++++++-------- gmic_qt.pro | 88 ++++++++++++++++----------------------------- 3 files changed, 108 insertions(+), 73 deletions(-) diff --git a/.gitignore b/.gitignore index 1f7903a..e16515c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +Makefile *.a *.o *.pro.user diff --git a/check_versions.sh b/check_versions.sh index 9ec82a7..56f4786 100755 --- a/check_versions.sh +++ b/check_versions.sh @@ -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 diff --git a/gmic_qt.pro b/gmic_qt.pro index 41b5067..1d44d8f 100644 --- a/gmic_qt.pro +++ b/gmic_qt.pro @@ -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