!include( ../config.pri ):error( "Couldn't find the config.pri file!" ) ############################# BUILD CONFIG ###################################### TARGET = $$LIBRARY_NAME DESTDIR = $$CHART_BUILD_LIB_DIR TEMPLATE = lib QT = core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets DEFINES += QTCOMMERCIALCHART_LIBRARY win32:CONFIG += create_prl # treat warnings as errors win32-msvc*: { QMAKE_CXXFLAGS += /WX } else { # QMAKE_CXXFLAGS += -Werror } unix:!qnx { QMAKE_CXXFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden } ############################# DEPEDENCES ######################################## win32-msvc*: LIBS += User32.lib LIBS -= -l$$LIBRARY_NAME INCLUDEPATH += ../include . ############################# SOURCES ########################################## SOURCES += \ $$PWD/chartdataset.cpp \ $$PWD/chartpresenter.cpp \ $$PWD/chartthememanager.cpp \ $$PWD/qchart.cpp \ $$PWD/qchartview.cpp \ $$PWD/qabstractseries.cpp \ $$PWD/chartbackground.cpp \ $$PWD/chartelement.cpp \ $$PWD/chartitem.cpp \ $$PWD/scroller.cpp \ $$PWD/charttitle.cpp \ $$PWD/qpolarchart.cpp PRIVATE_HEADERS += \ $$PWD/chartdataset_p.h \ $$PWD/chartitem_p.h \ $$PWD/chartpresenter_p.h \ $$PWD/chartthememanager_p.h \ $$PWD/chartbackground_p.h \ $$PWD/chartelement_p.h \ $$PWD/chartconfig_p.h \ $$PWD/qchart_p.h \ $$PWD/qchartview_p.h \ $$PWD/scroller_p.h \ $$PWD/qabstractseries_p.h \ $$PWD/charttitle_p.h \ $$PWD/charthelpers_p.h PUBLIC_HEADERS += \ $$PWD/qchart.h \ $$PWD/qchartglobal.h \ $$PWD/qabstractseries.h \ $$PWD/qchartview.h \ $$PWD/chartsnamespace.h \ $$PWD/qpolarchart.h include(animations/animations.pri) include(areachart/areachart.pri) include(axis/axis.pri) include(domain/domain.pri) include(barchart/barchart.pri) include(legend/legend.pri) include(linechart/linechart.pri) include(piechart/piechart.pri) include(scatterchart/scatter.pri) include(splinechart/splinechart.pri) include(themes/themes.pri) include(xychart/xychart.pri) include(layout/layout.pri) include(boxplotchart/boxplotchart.pri) HEADERS += $$PUBLIC_HEADERS HEADERS += $$PRIVATE_HEADERS HEADERS += $$THEMES ############################# BUILD PATH ########################################## OBJECTS_DIR = $$CHART_BUILD_DIR/lib MOC_DIR = $$CHART_BUILD_DIR/lib UI_DIR = $$CHART_BUILD_DIR/lib RCC_DIR = $$CHART_BUILD_DIR/lib ############################# PUBLIC HEADERS GENERATOR ########################################## !exists($$CHART_BUILD_PUBLIC_HEADER_DIR/QChartGlobal) { system($$QMAKE_MKDIR $$CHART_BUILD_PUBLIC_HEADER_DIR) contains(QMAKE_HOST.os, Windows) { command = "echo $${LITERAL_HASH}include \"qchartglobal.h\" > $$CHART_BUILD_PUBLIC_HEADER_DIR/QChartGlobal" }else{ command = "echo \"$${LITERAL_HASH}include \\\"qchartglobal.h\\\"\" > $$CHART_BUILD_PUBLIC_HEADER_DIR/QChartGlobal" } PUBLIC_QT_HEADERS += $$CHART_BUILD_PUBLIC_HEADER_DIR/QChartGlobal system($$command) } for(file, PUBLIC_HEADERS) { name = $$split(file,'/') last_name = $$last(name) class = "$$cat($$file)" found_class = $$find(class,class) !isEmpty(found_class){ split_class = $$split(found_class,QTCOMMERCIALCHART_EXPORT) member_class = $$member(split_class,1) member_split_class = $$split(member_class,' ') modified_class = $$replace(member_split_class,' ','') final_class = $$member(modified_class,0) contains(QMAKE_HOST.os, Windows) { command = "echo $${LITERAL_HASH}include \"$$last_name\" > $$CHART_BUILD_PUBLIC_HEADER_DIR/$$final_class" }else{ command = "echo \"$${LITERAL_HASH}include \\\"$$last_name\\\"\" > $$CHART_BUILD_PUBLIC_HEADER_DIR/$$final_class" } PUBLIC_QT_HEADERS += $$CHART_BUILD_PUBLIC_HEADER_DIR/$$final_class system($$command) } unset(name) unset(last_name) unset(class) unset(found_class) unset(split_class) unset(member_class) unset(member_split_class) unset(modified_class) unset(final_class) } ############################# INSTALLERS ########################################## public_headers.path = $$[QT_INSTALL_HEADERS]/QtCommercialChart public_headers.files = $$PUBLIC_HEADERS $$PUBLIC_QT_HEADERS INSTALLS += public_headers install_build_public_headers.name = build_public_headers install_build_public_headers.output = $$CHART_BUILD_PUBLIC_HEADER_DIR/${QMAKE_FILE_BASE}.h install_build_public_headers.input = PUBLIC_HEADERS install_build_public_headers.commands = $$QMAKE_COPY \ ${QMAKE_FILE_NAME} \ $$CHART_BUILD_PUBLIC_HEADER_DIR install_build_public_headers.CONFIG += target_predeps \ no_link install_build_private_headers.name = build_private_headers install_build_private_headers.output = $$CHART_BUILD_PRIVATE_HEADER_DIR/${QMAKE_FILE_BASE}.h install_build_private_headers.input = PRIVATE_HEADERS install_build_private_headers.commands = $$QMAKE_COPY \ ${QMAKE_FILE_NAME} \ $$CHART_BUILD_PRIVATE_HEADER_DIR install_build_private_headers.CONFIG += target_predeps \ no_link QMAKE_EXTRA_COMPILERS += install_build_public_headers \ install_build_private_headers \ win32:{ bintarget.CONFIG += no_check_exist !staticlib: { bintarget.files += $$CHART_BUILD_LIB_DIR\\$${TARGET}.dll } win32-msvc*:CONFIG(debug, debug|release): { bintarget.files += $$CHART_BUILD_LIB_DIR\\$${TARGET}.pdb } bintarget.path = $$[QT_INSTALL_BINS] libtarget.CONFIG += no_check_exist libtarget.files = $$CHART_BUILD_LIB_DIR\\$${TARGET}.prl win32-msvc*: { libtarget.files += $$CHART_BUILD_LIB_DIR\\$${TARGET}.lib } else { libtarget.files += $$CHART_BUILD_LIB_DIR\\lib$${TARGET}.a } libtarget.path = $$[QT_INSTALL_LIBS] DLLDESTDIR = $$CHART_BUILD_BIN_DIR INSTALLS += bintarget libtarget }else{ target.path=$$[QT_INSTALL_LIBS] INSTALLS += target } mac: !staticlib: { # Update the name (id) of the library on OSX to point to the lib path MAC_CHARTS_LIB_NAME = "lib"$$LIBRARY_NAME".1.dylib" QMAKE_POST_LINK += "install_name_tool -id $$CHART_BUILD_LIB_DIR"/"$$MAC_CHARTS_LIB_NAME $$CHART_BUILD_LIB_DIR"/"$$MAC_CHARTS_LIB_NAME" # Update the name (id) of the installed library on OSX to point to the installation path postinstall.path = $$[QT_INSTALL_LIBS] postinstall.extra = "install_name_tool -id $(INSTALL_ROOT)"/"$$[QT_INSTALL_LIBS]"/"$$MAC_CHARTS_LIB_NAME $(INSTALL_ROOT)"/"$$[QT_INSTALL_LIBS]"/"$$MAC_CHARTS_LIB_NAME" INSTALLS += postinstall } ################################ DEVELOPMENT BUILD ########################################## # There is a problem with jom.exe currently. It does not seem to understand QMAKE_EXTRA_TARGETS properly. # This is the case at least with shadow builds. # http://qt-project.org/wiki/jom development_build:!win32-msvc*:{ chartversion.target = $$PWD/qchartversion_p.h unix:{ chartversion.commands = @echo \ \" $${LITERAL_HASH}ifndef QCHARTVERSION_P_H\\n\ $${LITERAL_HASH}define QCHARTVERSION_P_H\\n\ const char *buildTime = \\\"`date +'%y%m%d%H%M'`\\\" ; \\n\ const char *gitHead = \\\"`git rev-parse HEAD`\\\" ; \\n \ $${LITERAL_HASH}endif \" \ > \ $$chartversion.target; }else{ chartversion.commands = @echo \ "const char *buildTime = \"%date%_%time%\" ; \ const char *gitHead = \"unknown\" ; " \ > \ $$chartversion.target } chartversion.depends = $$HEADERS \ $$SOURCES PRE_TARGETDEPS += $$chartversion.target QMAKE_CLEAN += $$PWD/qchartversion_p.h QMAKE_EXTRA_TARGETS += chartversion } ############################### CLEAN ########################################### unix:QMAKE_DISTCLEAN += -r \ $$CHART_BUILD_HEADER_DIR \ $$CHART_BUILD_LIB_DIR win32:QMAKE_DISTCLEAN += /Q \ $$CHART_BUILD_HEADER_DIR \ $$CHART_BUILD_LIB_DIR ############################## COVERAGE ######################################### unix:coverage:{ QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage QMAKE_LDFLAGS += -fprofile-arcs -ftest-coverage LIBS += -lgcov QMAKE_CLEAN += $$OBJECTS_DIR/*.gcda $$OBJECTS_DIR/*.gcno $$PWD/*.gcov ../coverage/*.info QMAKE_EXTRA_TARGETS += preparecoverage gencoverage preparecoverage.target = prepare_coverage preparecoverage.depends = all preparecoverage.commands = lcov --directory $$OBJECTS_DIR --zerocounters ;\ lcov -i -d $$OBJECTS_DIR -c -o ../coverage/base.info -b $$PWD; gencoverage.target = gen_coverage gencoverage.depends = all gencoverage.commands = lcov -d $$OBJECTS_DIR -c -o ../coverage/src.info -b $$PWD;\ lcov -e ../coverage/base.info $$PWD/* $$PWD/animations/* $$PWD/areachart/* $$PWD/axis/* $$PWD/barchart/* $$PWD/legend/* $$PWD/linechart/* $$PWD/piechart/* $$PWD/scatterchart/* $$PWD/splinechart/* $$PWD/themes/* $$PWD/xychart/* -o ../coverage/base.info;\ lcov -e ../coverage/src.info $$PWD/* $$PWD/animations/* $$PWD/areachart/* $$PWD/axis/* $$PWD/barchart/* $$PWD/legend/* $$PWD/linechart/* $$PWD/piechart/* $$PWD/scatterchart/* $$PWD/splinechart/* $$PWD/themes/* $$PWD/xychart/* -o ../coverage/src.info;\ lcov -a ../coverage/base.info -a ../coverage/src.info -o ../coverage/coverage.info; }