qt5base-lts/mkspecs/features/vxworks.prf
Qt by Nokia 38be0d1383 Initial import from the monolithic Qt.
This is the beginning of revision history for this module. If you
want to look at revision history older than this, please refer to the
Qt Git wiki for how to use Git history grafting. At the time of
writing, this wiki is located here:

http://qt.gitorious.org/qt/pages/GitIntroductionWithQt

If you have already performed the grafting and you don't see any
history beyond this commit, try running "git log" with the "--follow"
argument.

Branched from the monolithic repo, Qt master branch, at commit
896db169ea224deb96c59ce8af800d019de63f12
2011-04-27 12:05:43 +02:00

65 lines
3.5 KiB
Plaintext

# VxWorks Munching Feature
# When compiling C++ sources on VxWorks in kernel mode, all .o files have to
# be processed by the so-called 'munch' script which will generate
# additional code for static c'tors and d'tors. The resulting .c file has to
# be compiled in turn and linked to the executable.
# This can only been done when linking applications, since the munch script
# generates a .c file containing static symbols: linking a lib that was
# already munched to a munched application would lead to duplicate symbols!
isEmpty(VXWORKS_MUNCH_EXT):VXWORKS_MUNCH_EXT = vxm
isEmpty(VXWORKS_MUNCH_TOOL):VXWORKS_MUNCH_TOOL = $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl
!exists($$VXWORKS_MUNCH_TOOL) {
error("Could not find VxWorks Munch tool: '$${VXWORKS_MUNCH_TOOL}'. Please set the environment variable WIND_BASE correctly.")
}
# The following scope is entered for any project that specifies 'shared' as well
# as for any project specifying neither 'shared', nor 'lib', nor 'staticlib'.
# This means that for a static build only the executable is munched, while for
# a shared build, every lib, plugin and executable is munched separately.
shared|!staticlib:!lib {
*-dcc {
VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \
ddump -Ng \"$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \
$$QMAKE_CC -c $$QMAKE_CFLAGS \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \
$$QMAKE_LINK $$QMAKE_LFLAGS -X -r5 -r4 \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(TARGET)\" -o \"$(TARGET).munched\" && \
mv \"$(TARGET).munched\" \"$(TARGET)\" && \
chmod +x \"$(TARGET)\"
}
*-g++ {
VXWORKS_MUNCH_CMD = targ=`basename $(TARGET)`; \
nm \"$(DESTDIR)$(TARGET)\" | tclsh $$VXWORKS_MUNCH_TOOL -c $$VXWORKS_ARCH_MUNCH >\"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" && \
$$QMAKE_CC -c $$QMAKE_CFLAGS -fdollars-in-identifiers \"$(OBJECTS_DIR)/\$\${targ}_ctdt.c\" -o \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" && \
$$QMAKE_LINK $$QMAKE_LFLAGS -nostdlib -Wl,-X -T $(WIND_BASE)/target/h/tool/gnu/ldscripts/link.OUT \"$(OBJECTS_DIR)/\$\${targ}_ctdt.o\" \"$(DESTDIR)$(TARGET)\" -o \"$(DESTDIR)$(TARGET).munched\" && \
mv \"$(DESTDIR)$(TARGET).munched\" \"$(DESTDIR)$(TARGET)\" && \
chmod +x \"$(DESTDIR)$(TARGET)\"
}
# We need to create a dummy lib.a in case someone links against this lib.
# In VxWorks it's the responsibility of the run-time linker ld to resolve
# symbols, since there are no real shared libraries for the toolchain linker
# to link against.
shared:contains(TEMPLATE, lib) {
VXWORKS_MUNCH_CMD += "&&"
VXWORKS_MUNCH_CMD += (atarg=`basename $(TARGET) .so.$${VERSION}`.a ; touch \"$(DESTDIR)\$\${atarg}\")
}
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK
QMAKE_POST_LINK = $$VXWORKS_MUNCH_CMD$$QMAKE_POST_LINK
silent:QMAKE_POST_LINK = @echo creating $@.$$VXWORKS_MUNCH_EXT && $$QMAKE_POST_LINK
isEmpty(DESTDIR) {
target.targets += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT"
QMAKE_DISTCLEAN += "`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT"
} else {
target.targets += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT"
QMAKE_DISTCLEAN += "$(DESTDIR)/`basename $(TARGET)`.$$VXWORKS_MUNCH_EXT"
}
*-g++:LIBS += -lgcc
}