Changeset 1677 for trunk/kBuild/units


Ignore:
Timestamp:
Jul 14, 2008, 2:44:51 AM (17 years ago)
Author:
bird
Message:

qt4 unit: Implemented QT_MODULES and QT_PREFIX, pluss trying to autodetect the whereabouts of the Qt headers and libs (SDK_QT4).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/units/qt4.kmk

    r1676 r1677  
    2828
    2929# Add our target properties.
    30 PROPS_SINGLE += QTTOOL MOCTOOL UICTOOL RCCTOOL LRCTOOL QT_TRANSLATIONS_INST QT_TRANSLATIONS_TEMPLATE
    31 PROPS_ACCUMULATE_R += MOCDEFS MOCFLAGS UICFLAGS RCCFLAGS LRCFLAGS QT_TRANSLATIONS QT_MOCSRCS QT_MOCHDRS
     30PROPS_SINGLE += QTTOOL MOCTOOL UICTOOL RCCTOOL LRCTOOL QT_TRANSLATIONS_INST QT_TRANSLATIONS_TEMPLATE QT_PREFIX
     31PROPS_ACCUMULATE_R += MOCDEFS MOCFLAGS UICFLAGS RCCFLAGS LRCFLAGS QT_TRANSLATIONS QT_MOCSRCS QT_MOCHDRS QT_MODULES
    3232
    3333
     
    3838# It also makes things easier to develop, with fewer files I mean.
    3939#
     40## @todo the SDK might actually not be necessary as it turns out... For now it servers
     41# a purpose if the host differs from the target, in theory at least.
    4042SDK_QT4 = Qt4
    41 ## @todo
     43
     44# SDK Specific Properties
     45ifndef PATH_SDK_QT4
     46 PATH_SDK_QT4 := $(firstword $(rsort $(wildcard $(PATH_DEVTOOLS_TRG)/qt/v4*)))
     47 ifeq ($(PATH_SDK_QT4),)
     48  # If target == host, try look for Qt in the various platform specific places.
     49  ifeq ($(KBUILD_TARGET),$(KBUILD_HOST))
     50   ifeq ($(KBUILD_TARGET),darwin)
     51    PATH_SDK_QT4 := $(patsubst %/Frameworks/QtCore.framework/Versions/4,%,$(firstword $(wildcard /Library/Frameworks/QtCore.framework/Versions/4)))
     52   else ifeq ($(KBUILD_TARGET),win)
     53    # No idea here yet...
     54   else
     55    # The Unices. Includes and esp. libs are tricky, so override the PATH_SDK_QT4_LIB* stuff if it doesn't work.
     56    PATH_SDK_QT4 := $(patsubst %/bin/qt3to4,%,$(firstword $(wildcard /usr/bin/qt3to4 /usr/local/bin/qt3to4 /usr/qt/4/bin/qt3to4)))
     57    ifneq ($(PATH_SDK_QT4),)
     58     ifeq ($(PATH_SDK_QT4_INC),)
     59      PATH_SDK_QT4_INC := $(patsubst %/QtCore/qglobal.h,%,$(firstword $(wildcard $(PATH_SDK_QT4)/include/QtCore/qglobal.h $(PATH_SDK_QT4)/include/qt4/QtCore/qglobal.h)))
     60     endif
     61     ifeq ($(PATH_SDK_QT4_LIB.x86),)
     62      PATH_SDK_QT4_LIB.x86   := $(patsubst %/libQtCore$(SUFF_DLL),%,$(firstword $(wildcard \
     63        $(PATH_SDK_QT4)/lib32/libQtCore$(SUFF_DLL) \
     64        $(PATH_SDK_QT4)/lib32/qt4/libQtCore$(SUFF_DLL) \
     65        $(PATH_SDK_QT4)/lib/libQtCore$(SUFF_DLL) \
     66        $(PATH_SDK_QT4)/lib/qt4/libQtCore$(SUFF_DLL) \
     67        )))
     68     endif
     69     ifeq ($(PATH_SDK_QT4_LIB.amd64),)
     70      PATH_SDK_QT4_LIB.amd64 := $(patsubst %/libQtCore$(SUFF_DLL),%,$(firstword $(wildcard \
     71        $(PATH_SDK_QT4)/lib64/libQtCore$(SUFF_DLL) \
     72        $(PATH_SDK_QT4)/lib64/qt4/libQtCore$(SUFF_DLL) \
     73        $(PATH_SDK_QT4)/lib/amd64/libQtCore$(SUFF_DLL) \
     74        $(PATH_SDK_QT4)/lib/libQtCore$(SUFF_DLL) \
     75        $(PATH_SDK_QT4)/lib/qt4/libQtCore$(SUFF_DLL) \
     76        )))
     77     endif
     78     ifeq ($(PATH_SDK_QT4_LIB),)
     79      PATH_SDK_QT4_LIB := $(PATH_SDK_QT4_LIB.$(KBUILD_TARGET))
     80      ifeq ($(PATH_SDK_QT4_LIB),)
     81       PATH_SDK_QT4_LIB := $(patsubst %/libQtCore$(SUFF_DLL),%,$(firstword $(wildcard \
     82        $(PATH_SDK_QT4)/lib/libQtCore$(SUFF_DLL) \
     83        $(PATH_SDK_QT4)/lib/qt4/libQtCore$(SUFF_DLL) \
     84        )))
     85      endif
     86     endif
     87    endif
     88   endif # Unices
     89  endif
     90  # Found it?
     91  ifeq ($(PATH_SDK_QT4),)
     92   $(warning kBuild: Couldn't find the Qt4 headers and libaries...)
     93   PATH_SDK_QT4 := $(PATH_DEVTOOLS_TRG)/qt/not-found
     94  endif
     95 endif
     96else
     97 # Resolve any fancy stuff once and for all.
     98 PATH_SDK_QT4 := $(PATH_SDK_QT4)
     99endif
     100
     101# Libraries can be in either Frameworks or lib depending on how you
     102# build it on the mac. The .dmg installs into Frameworks but builds into lib.
     103ifeq ($(KBUILD_TARGET),darwin)
     104 ifndef PATH_SDK_QT4_LIB
     105  ifneq ($(wildcard $(PATH_SDK_QT4)/Frameworks),)
     106   PATH_SDK_QT4_LIB ?= $(PATH_SDK_QT4)/Frameworks
     107  else
     108   PATH_SDK_QT4_LIB ?= $(PATH_SDK_QT4)/lib
     109  endif
     110 endif
     111else
     112 PATH_SDK_QT4_LIB ?= $(PATH_SDK_QT4)/lib
     113 PATH_SDK_QT4_INC ?= $(PATH_SDK_QT4)/include
     114endif
     115
     116# The bits that kBuild picks up.
     117#  (nothing here)
    42118
    43119
     
    687763endif
    688764
     765# Deal with QT_MODULES and QT_PREFIX.
     766local qt_modules := \
     767        $($(target)_QT_MODULES.$(_bld_trg)) \
     768        $($(target)_QT_MODULES.$(_bld_trg_arch)) \
     769        $($(target)_QT_MODULES.$(_bld_trg).$(_bld_trg_arch)) \
     770        $($(target)_QT_MODULES.$(_bld_trg_cpu)) \
     771        $($(target)_QT_MODULES.$(_bld_type)) \
     772        $($(target)_QT_MODULES)
     773local qt_prefix := $(firstword \
     774        $($(target)_QT_PREFIX.$(_bld_trg)) \
     775        $($(target)_QT_PREFIX.$(_bld_trg_arch)) \
     776        $($(target)_QT_PREFIX.$(_bld_trg).$(_bld_trg_arch)) \
     777        $($(target)_QT_PREFIX.$(_bld_trg_cpu)) \
     778        $($(target)_QT_PREFIX.$(_bld_type)) \
     779        $($(target)_QT_PREFIX))
     780ifeq ($(bld_trg),darwin)
     781 $(eval $(target)_LDFLAGS += -F$(PATH_SDK_QT4_LIB) $(addprefix -framework Qt$(qt_prefix),$(qt_modules)))
     782 $(eval $(target)_INCS    += $(foreach module,$(qt_modules), $(PATH_SDK_QT4_LIB)/$(qt_prefix)Qt$(module).framework/Versions/4/Headers))
     783else
     784 $(eval $(target)_LIBS    += $(foreach module,$(qt_modules), $(PATH_SDK_QT4_LIB)/$(qt_prefix)Qt$(module)$(SUFF_DLL)))
     785 $(eval $(target)_INCS    += $(addprefix $(PATH_SDK_QT_INC)/Qt,$(qt_modules)))
     786endif
     787$(eval $(target)_DEFS     += $(foreach module,$(toupper $(qt_modules)), QT_$(module)_LIB))
     788
     789
    689790# Autodetect source files with Q_OBJECT references if QT_MOCSRCS is undefined. (slow)
    690791# Tip: Use target_QT_MOCSRCS = $(NO_SUCH_VARIABLE) to avoid this.
Note: See TracChangeset for help on using the changeset viewer.