From 992307a9150d3f10599bd3fa8d4552133a5cccd8 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 27 Aug 2017 17:44:41 +0200 Subject: [PATCH] More on build: proper library versioning, rc file used through RC_FILE, deployment on Linux. --- build.sh | 15 +++++++++++ src/buddies/unit_tests/unit_tests.pro | 14 +++++----- src/edt/edt/edt.pro | 4 +-- src/ext/ext/ext.pro | 8 +++--- src/ext/unit_tests/unit_tests.pro | 10 ++++---- src/klayout.pri | 8 +++--- src/klayout.pro | 37 ++++++++++++--------------- src/klayout_main/klayout_main.pro | 11 +------- src/lay/lay/lay.pro | 4 +-- src/lib.pri | 10 ++++++-- 10 files changed, 66 insertions(+), 55 deletions(-) diff --git a/build.sh b/build.sh index 1025ce831..82b4565d6 100755 --- a/build.sh +++ b/build.sh @@ -183,6 +183,15 @@ done echo "Scanning installation .." echo "" +# Import version info +. ./version.sh + +echo "Version Info:" +echo " version = $KLAYOUT_VERSION" +echo " date = $KLAYOUT_VERSION_DATE" +echo " rev = $KLAYOUT_VERSION_REV" +echo "" + # if not given, try to detect the qt major version to use if [ "$HAVE_QT5" = "" ]; then qt_major=`$QMAKE -v | grep 'Using Qt version' | sed 's/.*version *\([0-9][0-9]*\).*/\1/'` @@ -451,6 +460,9 @@ fi $QMAKE -v +# Force a minimum rebuild because of version info +touch src/version/version.h + qmake_cmd="$QMAKE $CURR_DIR/src/klayout.pro -recursive \ CONFIG+=$CONFIG \ RUBYLIBFILE=$RUBYLIBFILE \ @@ -465,6 +477,9 @@ qmake_cmd="$QMAKE $CURR_DIR/src/klayout.pro -recursive \ HAVE_64BIT_COORD=$HAVE_64BIT_COORD \ HAVE_QT5=$HAVE_QT5 \ PREFIX=$BIN \ + KLAYOUT_VERSION=$KLAYOUT_VERSION \ + KLAYOUT_VERSION_DATE=$KLAYOUT_VERSION_DATE \ + KLAYOUT_VERSION_REV=$KLAYOUT_VERSION_REV \ " echo $qmake_cmd diff --git a/src/buddies/unit_tests/unit_tests.pro b/src/buddies/unit_tests/unit_tests.pro index b833c2efb..9a0205b85 100644 --- a/src/buddies/unit_tests/unit_tests.pro +++ b/src/buddies/unit_tests/unit_tests.pro @@ -10,13 +10,13 @@ include($$PWD/../../lib_ut.pri) SOURCES = \ bdBasicTests.cc \ bdConverterTests.cc \ - bdStrm2txtTests.cc \ - bdStrmclipTests.cc \ - bdStrmcmpTests.cc \ - bdStrmxorTests.cc \ + bdStrm2txtTests.cc \ + bdStrmclipTests.cc \ + bdStrmcmpTests.cc \ + bdStrmxorTests.cc \ -INCLUDEPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$UT_INC -DEPENDPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$UT_INC +INCLUDEPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$UT_INC +DEPENDPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$UT_INC -LIBS += -L$$DESTDIR_UT -lklayout_bd -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_lay -lklayout_ut +LIBS += -L$$DESTDIR_UT -lklayout_bd -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut diff --git a/src/edt/edt/edt.pro b/src/edt/edt/edt.pro index a9d477036..a88af9d5b 100644 --- a/src/edt/edt/edt.pro +++ b/src/edt/edt/edt.pro @@ -63,8 +63,8 @@ DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC # Note: this accounts for UI-generated headers placed into the output folders in # shadow builds: -INCLUDEPATH += $$DESTDIR/laybasic -DEPENDPATH += $$DESTDIR/laybasic +INCLUDEPATH += $$DESTDIR/laybasic/laybasic +DEPENDPATH += $$DESTDIR/laybasic/laybasic LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db diff --git a/src/ext/ext/ext.pro b/src/ext/ext/ext.pro index b85ebfd7b..d7285ce1e 100644 --- a/src/ext/ext/ext.pro +++ b/src/ext/ext/ext.pro @@ -75,12 +75,12 @@ DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$DB_INC $$RDB_INC $$A # Note: this accounts for UI-generated headers placed into the output folders in # shadow builds: -INCLUDEPATH += $$DESTDIR/ext $$DESTDIR/laybasic -DEPENDPATH += $$DESTDIR/ext $$DESTDIR/laybasic +INCLUDEPATH += $$DESTDIR/ext/ext $$DESTDIR/laybasic/laybasic +DEPENDPATH += $$DESTDIR/ext/ext $$DESTDIR/laybasic/laybasic LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db -lklayout_rdb -lklayout_ant -lklayout_edt # TODO: ideally this should not be there: -INCLUDEPATH += $$DESTDIR/lay -DEPENDPATH += $$DESTDIR/lay +INCLUDEPATH += $$DESTDIR/lay/lay +DEPENDPATH += $$DESTDIR/lay/lay LIBS += -L$$DESTDIR -lklayout_lay diff --git a/src/ext/unit_tests/unit_tests.pro b/src/ext/unit_tests/unit_tests.pro index 148142adc..8983972d8 100644 --- a/src/ext/unit_tests/unit_tests.pro +++ b/src/ext/unit_tests/unit_tests.pro @@ -16,13 +16,13 @@ DEPENDPATH += $$EXT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC # Note: this accounts for UI-generated headers placed into the output folders in # shadow builds: -INCLUDEPATH += $$DESTDIR/ext $$DESTDIR/laybasic -DEPENDPATH += $$DESTDIR/ext $$DESTDIR/laybasic +INCLUDEPATH += $$DESTDIR_UT/ext/ext $$DESTDIR_UT/laybasic/laybasic +DEPENDPATH += $$DESTDIR_UT/ext/ext $$DESTDIR_UT/laybasic/laybasic LIBS += -L$$DESTDIR_UT -lklayout_ext -lklayout_laybasic -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut # TODO: ideally this should not be there: -INCLUDEPATH += $$DESTDIR/lay -DEPENDPATH += $$DESTDIR/lay -LIBS += -L$$DESTDIR -lklayout_lay +INCLUDEPATH += $$DESTDIR_UT/lay/lay +DEPENDPATH += $$DESTDIR_UT/lay/lay +LIBS += -L$$DESTDIR_UT -lklayout_lay diff --git a/src/klayout.pri b/src/klayout.pri index d5f42ed17..0607d16a2 100644 --- a/src/klayout.pri +++ b/src/klayout.pri @@ -84,6 +84,8 @@ win32 { } DEFINES += \ - KLAYOUT_VERSION=$$(KLAYOUT_VERSION) \ - KLAYOUT_VERSION_REV=$$(KLAYOUT_VERSION_REV) \ - KLAYOUT_VERSION_DATE=$$(KLAYOUT_VERSION_DATE) \ + KLAYOUT_VERSION=$$KLAYOUT_VERSION \ + KLAYOUT_VERSION_REV=$$KLAYOUT_VERSION_REV \ + KLAYOUT_VERSION_DATE=$$KLAYOUT_VERSION_DATE \ + +VERSION = $$KLAYOUT_VERSION diff --git a/src/klayout.pro b/src/klayout.pro index 4df408b80..d9d6b757a 100644 --- a/src/klayout.pro +++ b/src/klayout.pro @@ -9,6 +9,7 @@ SUBDIRS = \ tl/tl \ tl/unit_tests \ gsi/gsi \ + gsi/gsi_test \ gsi/unit_tests \ db/db \ db/unit_tests \ @@ -26,23 +27,32 @@ SUBDIRS = \ buddies \ drc \ +LANG_DEPENDS = + equals(HAVE_RUBY, "1") { - SUBDIRS += rba - rba.depends += gsi/gsi ut + SUBDIRS += rba/rba rba/unit_tests + rba.depends += gsi/gsi + LANG_DEPENDS += rba/rba + rba-unit_tests.depends += ut gsi/gsi_test } else { SUBDIRS += rbastub rbastub.depends += gsi/gsi + LANG_DEPENDS += rbastub } equals(HAVE_PYTHON, "1") { - SUBDIRS += pya - pya.depends += gsi/gsi ut + SUBDIRS += pya/pya pya/unit_tests + pya.depends += gsi/gsi + LANG_DEPENDS += pya/pya + pya-unit_tests.depends += ut gsi/gsi_test } else { SUBDIRS += pyastub pyastub.depends += gsi/gsi + LANG_DEPENDS += pyastub } gsi-gsi.depends += tl/tl +gsi-gsi_test.depends += tl/tl gsi/gsi db-db.depends += gsi/gsi rdb.depends += db/db ut laybasic.depends += rdb @@ -51,35 +61,22 @@ img.depends += laybasic edt.depends += laybasic drc.depends += rdb lym -lym.depends += gsi/gsi ut -equals(HAVE_RUBY, "1") { - lym.depends += rba -} else { - lym.depends += rbastub -} -equals(HAVE_PYTHON, "1") { - lym.depends += pya -} else { - lym.depends += pyastub -} - +lym.depends += gsi/gsi ut $$LANG_DEPENDS lay.depends += laybasic ant img edt lym ext.depends += lay lib.depends += db/db ut buddies.depends += db/db ut +ut.depends += db/db $$LANG_DEPENDS equals(HAVE_QTBINDINGS, "1") { SUBDIRS += gsiqt gsiqt.depends += gsi/gsi laybasic.depends += gsiqt - lay.depends += gsiqt } -ut.depends += db/db - # YES. It's tl-unit_tests (for tl/unit_tests) tl-unit_tests.depends += ut -gsi-unit_tests.depends += ut +gsi-unit_tests.depends += ut gsi/gsi_test db-unit_tests.depends += ut plugins.depends += lay ext lib ut diff --git a/src/klayout_main/klayout_main.pro b/src/klayout_main/klayout_main.pro index 9646e2353..fb70da893 100644 --- a/src/klayout_main/klayout_main.pro +++ b/src/klayout_main/klayout_main.pro @@ -18,14 +18,5 @@ SOURCES = \ RESOURCES = \ win32 { - - windres.target = klayout_rc.o - windres.depends = $$PWD/klayout.rc - windres.commands = windres $$windres.depends $$windres.target - - PRE_TARGETDEPS += klayout_rc.o - QMAKE_EXTRA_TARGETS += windres - - LIBS += $$windres.target - + RC_FILE = $$PWD/klayout.rc } diff --git a/src/lay/lay/lay.pro b/src/lay/lay/lay.pro index a3ae94e39..5d0b02984 100644 --- a/src/lay/lay/lay.pro +++ b/src/lay/lay/lay.pro @@ -181,8 +181,8 @@ win32 { # Note: this accounts for UI-generated headers placed into the output folders in # shadow builds: -INCLUDEPATH += $$DESTDIR/laybasic -DEPENDPATH += $$DESTDIR/laybasic +INCLUDEPATH += $$DESTDIR/laybasic/laybasic +DEPENDPATH += $$DESTDIR/laybasic/laybasic INCLUDEPATH += $$GSIQT_INC DEPENDPATH += $$GSIQT_INC diff --git a/src/lib.pri b/src/lib.pri index 23eebfc37..7e9f22f51 100644 --- a/src/lib.pri +++ b/src/lib.pri @@ -5,8 +5,14 @@ TEMPLATE = lib inst_target.path = $$PREFIX win32 { - inst_target.files = $$DESTDIR/$${TARGET}.dll + + inst_target.files = $(DESTDIR_TARGET) + } else { - inst_target.files = $$DESTDIR/lib$${TARGET}.so + + inst_target.files = $$DESTDIR/$(TARGET) + inst_target.extra = ln -s $(TARGET) $(TARGET0) && ln -s $(TARGET) $(TARGET1) && ln -s $(TARGET) $(TARGET2) + } + INSTALLS = inst_target