EdBx-Fasm.c

Aller à la documentation de ce fichier.
00001 // gcc -Wall -s `pkg-config --cflags --libs gtk+-2.0` -I/usr/include/gtksourceview-1.0 -lgtksourceview-1.0 -o EdBx-Fasm EdBx-Fasm.c
00002 
00003 #include <gtk/gtk.h>
00004 
00005  gchar  *AppCAPTION     = "Fasm Bx Editor";
00006  gchar  *AppConf        = "EdBx-Fasm.conf";
00007  gchar  *AppEXTproj     = "*.bxfp";
00008  gchar  *AppCOMPILER    = "fasm";
00009  gchar  *AppLINKER      = "ld";
00010  gchar  *AppICON        = "img/ico.png";
00011 
00012  #define nbEXT 4
00013  gchar  *EXTs[nbEXT]    = { NULL ,    "asm"  ,    "inc"    ,    "ash"    };
00014  gchar  *IMGs[nbEXT]    = { NULL ,"img/a.png","img/inc.png","img/inc.png"};
00015 
00016  gchar  *AppNEWfile     = "new.asm";
00017  gchar  *AppMIME        = "text/x-asm";
00018  gchar  *AppTEMPLATE    = "Templates/hello.asm";
00019  gchar  *AppABOUTstr    = "Fasm Bx Editor\nEcrit en C avec GTK+ 2.0\n\n"
00020                           "Par Bertrand-Xavier Massot (C) 2006\n";
00021 
00022 #include "Globals.h"
00023 
00024 /* =============================================================================
00025  * Projet: Compiler ************************************************************
00026 ==============================================================================*/
00027 void Projet_Compiler()
00028 {
00029   gshort n, c=0;
00030   gchar *S, *d=NULL;
00031 
00032   gchar  *noms[100];
00033   gchar *chems[100];
00034 
00035   // S'il faut utiliser un makefile, recherche son chemin,
00036   // chdir, make, et chdir dossier d'origine.
00037   if (ProjetUseMAKEFILE)
00038   {
00039     gtk_list_store_clear(GTK_LIST_STORE(model));
00040     for (n=0; n<NB; n++)
00041     {
00042       if (g_strcasecmp(nom[n],"makefile")==0)
00043       {
00044         d = g_get_current_dir();
00045         break;
00046       }
00047     }
00048     if (d)
00049     {
00050       S = g_path_get_dirname(chemin[n]);
00051       chdir(S);
00052       S = g_strdup("make");
00053       Liste_Add_Msg(S);
00054       Creer_Pipe(S);
00055       chdir(d);
00056       g_free(d);
00057     }
00058     else Liste_Add_Msg("Ajoutez le makefile au projet.");
00059   }
00060 
00061   // Pas de makefile
00062   else
00063   {
00064     gtk_list_store_clear(GTK_LIST_STORE (model));
00065 
00066     // Détermine le nombre d' objets à compiler
00067     for (n=0; n<NB; n++)
00068     {
00069       if (ext[n]==1)
00070       {                                                 //      hworld.asm
00071          noms[c] = getNomSansExtension(nom[n]);         //      hworld
00072         chems[c] = g_path_get_dirname (chemin[n]);      //      /src
00073         c++;
00074       }
00075     }
00076 
00077     // 1 seul objet
00078     if (c==1)
00079     {
00080       for (n=0; n<NB; n++)
00081       {
00082         if (ext[n]==1)
00083         {
00084           S = g_strdup_printf("%s %s %s 2>&1", AppCOMPILER, chemin[n], ProjetEXEname);
00085           Liste_Add_Msg(S);
00086           Creer_Pipe(S);
00087         }
00088       }
00089     }
00090 
00091     // Plusieurs objets; les compile puis les linke
00092     else if (c>1)
00093     {
00094       for (n=0; n<c; n++) // compile les objets
00095       {
00096         S = g_strdup_printf("%s %s/%s.asm %s/%s.o", AppCOMPILER,
00097                                                         chems[n],noms[n],
00098                                                         chems[n],noms[n]);
00099         Liste_Add_Msg(S);
00100         Creer_Pipe(S);
00101       }
00102       // Linke les objets
00103       S = g_strdup("ld");
00104       for (n=0; n<c; n++)
00105           S = g_strdup_printf("%s %s/%s.o", S, chems[n], noms[n]);
00106       S = g_strdup_printf("%s -o %s", S, ProjetEXEname);
00107       Liste_Add_Msg(S);
00108       Creer_Pipe(S);
00109     }
00110   }
00111 }
00112 
00113 /* =============================================================================
00114  * Point d' entrée *************************************************************
00115 ==============================================================================*/
00116 int main(int argc, char **argv)
00117 {
00118   gtk_init(&argc, &argv);
00119 
00120   Show_Editor();
00121   if (argv[1]) Projet_Ouvrir(argv[1]);
00122 
00123   gtk_main();
00124   return 0;
00125 }

Généré le Sat Jan 13 02:54:13 2007 pour EdBX:IDELangageC,Python,FASMécritavecGTK+ par  doxygen 1.4.2