Faits:
A. B._, né en 1952, a travaillé en qualité d'employé d'imprimerie. Il a interrompu son activité le 16 septembre 1999 pour cause de maladie et s'est annoncé le 4 juillet 2000 à l'assurance-invalidité.
L'Office de l'assurance-invalidité pour le canton de Vaud a recueilli plusieurs avis médicaux. Au nombre de ceux-ci, il convient de mentionner celui du docteur U._, rhumatologue auprès de la Clinique X._, qui a posé le diagnostic de trouble somatoforme douloureux persistant et de tendinite d'Achille gauche chronique. Selon ce médecin, les plaintes douloureuses ne comportent pas d'élément spécifique; par ailleurs, les facteurs limitant la capacité de travail sont de nature subjectives et non mesurables (rapport du 28 juin 2002). De son côté, le docteur F._, spécialiste en psychiatrie et psychothérapie auprès de la Clinique X._, a diagnostiqué un syndrome douloureux somatoforme persistant, un trouble anxieux et dépressif non spécifié, ainsi qu'un trouble de la personnalité non spécifié. A son avis, ces facteurs ne justifient au plus qu'une incapacité de travail de 25 %, quelle que soit la profession exercée (rapport du 20 août 2002).
Par décision du 24 mars 2003, confirmée sur opposition le 12 novembre 2003, l'office AI a rejeté la demande au motif que le taux d'invalidité était inférieur à 40 %. L'administration avait retenu une capacité de travail résiduelle de 75 % au moins dans son activité d'imprimeur offset ainsi que dans une activité adaptée.
Cette décision a été annulée par le Tribunal des assurances du canton de Vaud, qui par jugement du 28 juin 2004 a renvoyé la cause à l'office AI afin qu'il procède à une nouvelle évaluation psychiatrique du cas. Sur le plan physique, les juges cantonaux se sont ralliés à l'avis du docteur U._, admettant que l'assuré ne présentait aucune incapacité de travail (consid. 6b p. 15 du jugement du 28 juin 2004).
Dans le cadre de ce complément d'instruction, l'office AI a recueilli l'avis du docteur S._, spécialiste en psychiatrie et psychothérapie (rapport du 21 octobre 2005). Considérant que ce rapport n'était pas convaincant, l'office AI a mandaté le docteur O._, également spécialiste en psychiatrie et psychothérapie. Ce médecin n'a retenu aucun diagnostic psychiatrique; il a attesté qu'il n'y avait pas d'incapacité de travail ni de diminution de rendement sur le plan psychiatrique (rapport du 31 juillet 2007).
Par décision du 11 mars 2008, l'office AI a rejeté la demande de prestations.
B. B._ a déféré cette décision au Tribunal cantonal des assurances (aujourd'hui : Cour des assurances sociales du Tribunal cantonal du canton de Vaud) en concluant au versement d'une rente entière d'invalidité depuis le 1er octobre 2000. A l'appui de ses conclusions, le recourant a produit un rapport du docteur L._, spécialiste en psychiatrie et psychothérapie (du 27 février 2008). D'après ce médecin, l'assuré présente un syndrome douloureux persistant (depuis 1999), un trouble dépressif récurrent, en rémission sous traitement (depuis 2000), ainsi qu'une accentuation de certains traits de personnalité (depuis l'adolescence); à son avis, l'assuré n'a plus de capacité de travail exploitable de manière lucrative.
Par jugement du 23 juin 2009, la juridiction cantonale a rejeté le recours.
C. B._ interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation, avec suite de dépens, en concluant principalement au versement d'une rente entière d'invalidité depuis le 1er octobre 2000, subsidiairement au renvoi de la cause pour instruction complémentaire.
Par lettre du 1er décembre 2009, le recourant a sollicité la suspension de la procédure dans l'attente d'examens médicaux susceptibles de l'amener à retirer son recours. Le 29 septembre 2010, il a requis la reprise de l'instruction et a déposé, le 18 octobre 2010, un rapport du docteur G._ (du 29 septembre 2010).
Le Tribunal fédéral n'a pas ordonné d'échange d'écritures.

Considérant en droit:
1. Le litige porte sur le taux d'invalidité du recourant, singulièrement sur son droit à une rente.
Les premiers juges ont exposé correctement les règles applicables à la solution du litige, si bien qu'il suffit de renvoyer au jugement attaqué.
2. Le recourant soulève trois griefs principaux à l'encontre du jugement attaqué.
En premier lieu, il se prévaut d'une appréciation arbitraire des rapports médicaux figurant au dossier, estimant que le tribunal des assurances aurait dû écarter l'expertise du docteur O._ au profit de celles de ses confrères S._ et L._.
Le recourant soutient ensuite que le volet somatique du dossier médical n'a pas été suffisamment instruit. Singulièrement, il estime que le rapport du docteur U._, ainsi que celui du docteur P._ réalisé en 2000, étaient dépassés au moment où l'office intimé a statué.
En dernier lieu, le recourant est d'avis que les juges cantonaux ont omis de tenir compte de l'interruption d'un stage entrepris en 2003, pour des raisons de santé. L'échec de cette mesure de réinsertion aurait dû conduire le tribunal cantonal à instruire davantage la question des limitations fonctionnelles sur le plan physique.
3. 3.1 Par ses griefs, le recourant invoque une violation du droit fédéral au sens de l'art. 95 let. a LTF, résultant aussi bien d'une mauvaise appréciation des preuves que d'une application erronée du principe inquisitoire (art. 61 let. c LGPA). Le point de savoir si la juridiction cantonale de recours a correctement administré et apprécié les preuves relève d'une question de droit, de sorte que le Tribunal fédéral peut examiner librement les griefs soulevés.
A cet égard, on précisera que le rapport du docteur G._ du 29 septembre 2010, que le recourant a produit en procédure fédérale, constitue un nouveau moyen de preuve qui n'est pas recevable (cf. art. 99 al. 1 LTF).
3.2 A propos du volet psychiatrique, les juges cantonaux ont été confrontés à deux appréciations médicales différentes de la situation du recourant. Leur approche du cas et le résultat auquel ils sont parvenus ne prêtent pourtant pas le flanc à la critique. En effet, cette autorité a exposé clairement les motifs qui l'ont conduite à s'en tenir à l'avis du docteur O._, puis à admettre que les conditions présidant à la reconnaissance du caractère invalidant du trouble somatoforme douloureux n'étaient pas réalisées.
A cet égard, le discours du recourant (qui reproduit en grande partie le mémoire de recours qu'il avait formé contre la décision administrative) revient en définitive à rappeler que les vues des spécialistes qui s'étaient exprimés divergeaient tant sur les diagnostics que sur la capacité de travail, ce que l'on sait déjà. Cela ne permet toutefois pas pour autant d'admettre que l'appréciation du tribunal cantonal serait arbitraire (au contraire, elle apparaît convaincante sur la question du caractère invalidant du trouble somatoforme). Par ailleurs, on saisit mal en quoi l'intimé aurait mandaté à tort le docteur O._, après avoir admis que le rapport d'expertise du docteur S._ ne satisfaisait pas aux réquisits jurisprudentiels relatifs à la valeur probante de tels documents.
3.3 A propos du volet somatique, plusieurs années s'étaient certes écoulées entre le moment où le docteur U._ avait rédigé son rapport et le jour où la décision sur opposition avait été rendue (le juge des assurances sociales apprécie la légalité des décisions administratives au jour où elles sont rendues : <ref-ruling> consid. 2.1.2.1 p. 412 et les références). A lui seul, l'écoulement du temps n'altère pas la valeur probante de cette expertise (cf. <ref-ruling> consid. 3a p. 352). Seul est décisif le fait que les conclusions du docteur U._ n'avaient pas été remises en cause par un avis médical pertinent, au jour où l'intimé a statué, de façon à justifier la mise en oeuvre d'un complément d'instruction.
Sur ce point, on ajoutera que le recourant n'a plus abordé l'aspect somatique du cas dans la procédure de recours cantonale qu'il a dirigée contre la décision du 11 mars 2008, cette question ayant été développée dans le jugement de renvoi du 28 juin 2004 (consid. 6b p. 15). Les reproches que le recourant adresse maintenant à la juridiction cantonale (le défaut d'une nouvelle instruction de ce volet du dossier médical et la non prise en considération d'un stage) sont dès lors mal fondés, sans qu'il faille examiner à cet égard la recevabilité de la conclusion subsidiaire (cf. art. 99 al. 2 LTF).
En d'autres termes, le tribunal cantonal pouvait statuer sur la légalité de la décision du 11 mars 2008 à la lumière des avis médicaux versés au dossier, sans procéder à un complément d'instruction.
3.4 Quant à l'évaluation de l'invalidité proprement dite, elle n'est pas sujette à discussion. Au demeurant, le recourant n'indique pas en quoi elle serait erronée. Le recours est mal fondé.
4. Le recourant, qui succombe, supportera les frais de la procédure (art. 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
2. Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge du recourant.
3. Le présent arrêt est communiqué aux parties, à la Cour des assurances sociales du Tribunal cantonal du canton de Vaud et à l'Office fédéral des assurances sociales.
Lucerne, le 4 novembre 2010
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
Le Président: Le Greffier:
Meyer Berthoud