On Wed, Dec 23, 2009 at 10:03:32AM +0000, Phil Thompson wrote: > On Tue, 22 Dec 2009 20:54:22 -0600, Albert Chin > <py...@mlists.thewrittenword.com> wrote: > > How do I insert a literal $ in QMAKE_LINK_SHLIB_CMD for sip spec files? > > What I really want is the following for specs/aix-g++: > > QMAKE_LINK_SHLIB_CMD = rm -f objects.o; \ > > ld -r -o objects.o -bnogc $(OFILES); \ > > rm -f lib.exp; /usr/ccs/bin/nm -BCpg objects.o | \ > > awk '{ if ((($$2 == "T") || ($$2 == "D") || ($$2 == "B")) && \ > > (substr($$3,1,1) != ".")) { print $$3 } }' | sort -u >lib.exp; > \ > > g++ -shared -Wl,-bE:lib.exp -o $(TARGET) $(LFLAGS) \ > > objects.o $(LIBS); rm objects.o > > Try $$LITERAL_DOLLAR
Then how do I use get $$2 in the awk expression? $$LITERAL_DOLLAR$$LITERAL_DOLLAR2? I don't think the second $$LITERAL_DOLLAR2 will work. Anyway, sip doesn't seem to support QMAKE_LINK_SHLIB_CMD. So, I created the attached patch. With this patch, and you suggestion of $$LITERAL_DOLLAR, and QMAKE_LINK_SHLIB_CMD set to: QMAKE_LINK_SHLIB_CMD = rm -f objects.o; \ ld -r -o objects.o -bnogc $$LITERAL_DOLLAR{OFILES}; \ rm -f lib.exp; /usr/ccs/bin/nm -BCpg objects.o | \ awk '{ if ((($$LITERAL_DOLLAR$$LITERAL_DOLLAR2 == "T") || ($$LITERAL_DOLLAR$$LITERAL_DOLLAR2 == "D") || ($$LITERAL_DOLLAR$$LITERAL_DOLLAR2 == "B")) && \ (substr($$LITERAL_DOLLAR$$LITERAL_DOLLAR3,1,1) != ".")) { print $$LITERAL_DOLLAR$$LITERAL_DOLLAR3 } }' | sort -u >lib.exp; \ g++ -shared -Wl,-bE:lib.exp -o $$LITERAL_DOLLAR{TARGET} \ $$LITERAL_DOLLAR{LFLAGS} objects.o $$LITERAL_DOLLAR{LIBS}; \ rm objects.o I get the following in siplib/Makefile: $(TARGET): $(OFILES) @echo '#!' >sip.exp; \ echo 'initsip' >>sip.exp rm -f objects.o; ld -r -o objects.o -bnogc LITERAL_DOLLAR{OFILES}; rm -f lib.exp; /usr/ccs/bin/nm -BCpg objects.o | awk '{ if (((LITERAL_DOLLARLITERAL_DOLLAR2 == "T") || (LITERAL_DOLLARLITERAL_DOLLAR2 == "D") || (LITERAL_DOLLARLITERAL_DOLLAR2 == "B")) && (substr(LITERAL_DOLLARLITERAL_DOLLAR3,1,1) != ".")) { print LITERAL_DOLLARLITERAL_DOLLAR3 } }' | sort -u >lib.exp; g++ -shared -Wl,-bE:lib.exp -o LITERAL_DOLLAR{TARGET} LITERAL_DOLLAR{LFLAGS} objects.o LITERAL_DOLLAR{LIBS}; rm objects.o If I use $${LITERAL_DOLLAR}, I get the following in siplib/Makefile: $(TARGET): $(OFILES) @echo '#!' >sip.exp; \ echo 'initsip' >>sip.exp rm -f objects.o; ld -r -o objects.o -bnogc ${OFILES}; rm -f lib.exp; /usr/ccs/bin/nm -BCpg objects.o | awk '{ if (((${LITERAL_DOLLAR}2 == "T") || (${LITERAL_DOLLAR}2 == "D") || (${LITERAL_DOLLAR}2 == "B")) && (substr(${LITERAL_DOLLAR}3,1,1) != ".")) { print ${LITERAL_DOLLAR}3 } }' | sort -u >lib.exp; g++ -shared -Wl,-bE:lib.exp -o ${TARGET} ${LFLAGS} objects.o ${LIBS}; rm objects.o -- albert chin (ch...@thewrittenword.com)
Index: siputils.py =================================================================== --- siputils.py.orig 2009-11-23 13:49:24.000000000 +0000 +++ siputils.py 2009-12-23 16:01:37.587779542 +0000 @@ -1586,7 +1600,12 @@ mfile.write("\...@echo '#!' >%s.exp" % self._target) mfile.write("; \\\n\t echo '%s' >>%s.exp\n" % (self._entry_point, self._target)) - mfile.write("\t$(LINK) $(LFLAGS) -o $(TARGET) $(OFILES) $(LIBS)\n") + link_shlib_cmd = self.optional_string("LINK_SHLIB_CMD") + + if link_shlib_cmd: + mfile.write("\t" + link_shlib_cmd + "\n") + else: + mfile.write("\t$(LINK) $(LFLAGS) -o $(TARGET) $(OFILES) $(LIBS)\n") def generate_target_install(self, mfile): """Generate the install target.
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt