Newsgroup: it.comp.programmare.win32
Titolo: [porting da Linux] Ma come fanno?

Just curious... ho tre progetti di cui due sono
rispettivamente posix threads e la libreria xerces
per il parsing dell'XML. A parte che non esiste mai
uno straccio di file se non quelli che dicono di
guardare la documentazione la quale rimanda al file
quindi si dà per scontato che tutti siano geni,
perché mai nemmeno una volta l'invocazione di Make
come da istruzioni porta a qualcosa? C'è sempre
qualche errore e visto che sto cercando di usare
MinGW vedo poche scuse per
sostenere che l'ambiente di lavoro è diverso.
I makefile sono pazzeschi ed è impossibile metterci
le mani; conosco poco Make ma abbastanza per capire
che ci sono moltissime cose dipendenti dalla
macchina e dal SO, non vengono mai manco
parametrizzati i path in modo chiaro, stanno sempre
alla riga N del Makefile, per N >>1.
Ordunque: perché è sempre così? Voglio dire, i
porting vengono fatti su macchine linux chiedendo al
compilatore di generare il codice per WIN? Ho tante
di quelle grane che non so nemmeno cosa chiedere, ma
almeno questa curiosità vorrei soddisfarla. BTW, lo
fanno apposta? Capisco una libreria grafica e le
dipendenze da hardware e tante cose, ma che accada
SEMPRE è troppo. Solo semplice curiosità, la spugna
l'ho gettata.
sconsolatissimo
Apx.

 l'ho gettata.
E non hai ancora visto autoconf e automake :-)
Anni fa, ai tempi del Mozillone con tutto incluso, mi scaricai i
sorgenti con l'idea di metterci le mani per implementare qualche
funzioncina che avevo in mente. Ti premetto che conoscevo giï¿œ Linux, la
shell Bash e il GCC, e sapevo creare dei makefile non troppo complessi.
Credevo quindi di poterci mettere le mani dopo un tempo ragionevole di
studio. Pia illusione... oltre ai giï¿œ citati autoconf e automake, che
non conoscevo, una parte dei sorgenti era in PERL (che non conoscevo).
Mi aspettavo ci fosse una dir per ogni parte del progetto (mail client,
chat, editor HTML ecc.) e una per ogni sottoinsieme (es. una bella dir
"GECKO" per il motore di rendering HTML). Non c'era. Mi aspettavo ci
fosse una dir che raccoglieva lo strato di astrazione (le funzioni per
rendere le operazioni su file, socket ecc. indipendenti dal SO). Non
c'era. L'ordine delle dir e dei file era a dir poco misterioso.
Bisogna comunque dire che non ï¿œ del tutto "colpa loro": di Make ne
esistono tanti, troppi. Per dire, Visual Studio di Microsoft ha Nmake,
Borland C++Builder ha Bmake, e levati dalla testa di usare per uno un
makefile scritto per l'altro, o per unix. E anche per unix ci sono varie
implementazioni diverse, solo parzialmente compatibili. Per cui, alla
fine, DEVI per forza installare e usare il make di chi ha creato i
sorgenti; e DEVI installare e usare (per far girare make e i vari
programmini che usa) la stessa shell di chi ha scritto make... AH
dimenticavo: NTFS non ha gli stessi permessi di ext3 e di un FS Unix,
per cui anche lï¿œ potrebbe essere un problema. Per cui se ti dicono di
usare MinGW versione x.xx per compilare, e non, per dire, Cygwin, DEVI
farlo, se no son dolori infiniti... perchï¿œ ï¿œ materialmente impossibile
mettersi a spulciare TRECENTO MEGA di sorgenti sparsi in migliaia di
files e centinaia di dir.
Come terza cosa, devi purtroppo considerare che make e lo stesso C/C++
sono tecnologie degli anni '70. Una sintassi talmente criptica come
quella di make, C e Perl, tutto il sistema degli headerfile, si ï¿œ
evoluta quando i calcolatori ci mettevano ere geologiche a compilare
100K di sorgenti... ADESSO un programma come make, che pur con tutti i
suoi difetti ï¿œ l'unico modo "standard" di dare un comando e compilare
tutto un software in un colpo solo, adesso verrebbe scritto in modo
molto piï¿œ chiaro. E infatti ci sono varie utility che si candidano a
successori di make: per esempio Bake, che ï¿œ un passo avanti notevole.
Insomma siamo prigionieri del "legacy software". Lo siamo noi e loro:
non credo che i responsabili dello sviluppo di Mozilla facciano i salti
di gioia per come stanno le cose... credo che se uno dei programmatori
che hanno li pianta in asso di colpo, ci mettano un bel pï¿œ a infilare
dentro qualcun altro. E non dovrebbe essere cosï¿œ :-(

 :-(
Beh, mi consolo in parte... iniziavo a sentirmi un
demente. In ogni caso ho chiesto sul NG di linux se
posso emularlo in qualche modo, credo sia l'unica
soluzione a parte avere un PC dedicato, cosa che non
escludo un giorno di fare.
ciao e grazie delle considerazioni, mi hai fatto
sentire meno solo :D
Apx.

 escludo un giorno di fare.
Non serve essere tanto drastici, una buona macchina virtuale costa meno 
e funziona altrettanto bene: virtualbox, virtualPC, VMware... c'ï¿œ solo 
l'imbarazzo della scelta :-)