bei-ekke
/ HTML Tidy in Deutsch
/ Einführung zu TidyLib
/ Makefile.vc6 mit deutschen Kommentaren
# Makefile.vc6 - für tidy - HTML Syntaxanalyser und gut Formatierer
# Für die Verwendung mit dem Microsoft's Visual C++ 6 nmake Werkzeug
#
# $Date: 2002/11/08 18:36:13 $
# $Revision: 1.2.2.8 $
#
# Verwendung:
# nmake /f Makefile.vc6 all
# nmake /f Makefile.vc6 clean
# nmake /D /f Makefile.vc6 all > nmake_d_all.txt
# nmake /D /f Makefile.vc6 clean > nmake_d_clean.txt
# oder
# nmake /f Makefile.vc6 all DEBUG=1
# nmake /f Makefile.vc6 clean DEBUG=1
# nmake /D /f Makefile.vc6 all DEBUG=1 > nmake_d_all_debug.txt
# nmake /D /f Makefile.vc6 clean DEBUG=1 > nmake_d_clean_debug.txt
CC=cl
RC=rc
LD=link
BINDIR= .\bin
INCLDIR= ./include/
SRCDIR= ./src/
TIDYEXT= /D SUPPORT_ACCESSIBILITY_CHECKS=1 /D SUPPORT_UTF16_ENCODINGS=1 /D SUPPORT_ASIAN_ENCODINGS=1
## Allgemeine Compilierungs-Einstellungen siehe Index "Compiler-Optionen" == Compiler-Referenz
# /nologo == Unterdrückt die Anzeige von Startinformationen
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Anpassen / [X] Startinfo und Informationsnachrichten unterdrücken
# /TC == Quellen sind C-Quellen (keine CPP-Quelle oder dergleichen)
# /W4 == Warnstufe 4 (die Maximale)
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Allgemein / Wartstufe: Stufe 4
# /Za == ANSI C-Kompatibilität. Sprachkonstrukte, die mit ANSI C nicht kompatibel sind, werden als Fehler gekennzeichnet.
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Anpassen / [X] Spracherweiterungen deaktivieren
# /FD == Erzeugt die Dateiabhängigkeiten
# /c == Kompiliert ohne Binden
# /D == selbiges als waere #define in der Quell-Datei geschrieben wurden
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Allgemein oder =Praeprozezzor / Praeprozessor-Definitionen:=WIN32,_CONSOLE,_MBCS,SUPPORT_ACCESSIBILITY_CHECKS=1,SUPPORT_UTF16_ENCODINGS=1,SUPPORT_ASIAN_ENCODINGS=1
# /I == Sucht in einem Verzeichnis nach Include-Dateien
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Praeprozezzor / Zusätzliche Include-Verzeichnisse:=./include/
# In der folgenden Zeile /D "_CONSOLE" durch /D "_WINDOWS" für Windows-Programme ersetzen.
CFLAGS=/nologo /TC /W4 /Za /FD /c /D "WIN32" /D "_CONSOLE" /D "_MBCS" $(TIDYEXT) /I $(INCLDIR)
## Ergaenzende Debug-Compilierungs-Einstellungen siehe Index "Compiler-Optionen" == Compiler-Referenz
# /Gm == Aktiviert minimale Neuerstellung
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Anpassen / [X] Minimales Neuerstellen aktivieren
# /GZ == Fängt Release-Erstellungsfehler im Debug-Erstellungsvorgang ab
# /Zi == Erzeugt vollständige Debug-Informationen
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Allgemein / Debug-Info:=Programmdatenbank
# /Od == Deaktiviert Optimierung
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Optimierungen / Optimierungen:=Deaktivieren (Debug)
# /MTd == Erstellt eine ausführbare Multithreading-Datei mit LIBCMTD.LIB für den Debugger
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Code Generation / Laufzeit-Bibliothek:=Multithreaded debuggen
# /MDd == Erstellt eine Multithreading-DLL mit MSVCRTD.LIB für den Debugger
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Code Generation / Laufzeit-Bibliothek:=Multithreaded DLL debuggen
# /MD == Erstellt eine Multithreading-DLL mit MSVCRT.LIB
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Code Generation / Laufzeit-Bibliothek:=Multithreaded DLL
# /D == selbiges als waere #define in der Quell-Datei geschrieben wurden
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Allgemein oder =Praeprozezzor / Praeprozessor-Definitionen:=WIN32,_CONSOLE,_MBCS,SUPPORT_ACCESSIBILITY_CHECKS=1,SUPPORT_UTF16_ENCODINGS=1,SUPPORT_ASIAN_ENCODINGS=1,DEBUG,_DEBUG
CDEBUG=/Gm /GZ /Zi /Od /MD /D "DEBUG" /D "_DEBUG"
## Ergaenzende Release-Compilierungs-Einstellungen siehe Index "Compiler-Optionen" == Compiler-Referenz
# /O1 == Erstellt kompakten Code
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Optimierungen / Optimierungen:=Groesse minimieren
# /O2 == Erstellt schnellen Code
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Optimierungen / Optimierungen:=Geschwindigkeit erhoehen
# /Ox == Verwendet maximale Optimierung
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Optimierungen / Optimierungen:=Anpassen
# /O1 /O2 /Ox nur in Professional und Enterprise Editionen verfügbar, sonst muessen alle folgenden angegeben werden:
# /O1 == /Ob1 /Og /Oy /Gs /Gf /Gy /Os
# /O2 == /Ob1 /Og /Oy /Gs /Oi /Ot /Gf /Gy
# /Ox == /Ob1 /Og /Oy /Gs /Oi /Ot
# /Ob1 == In-line-Funktionserweiterung
# /Og == Globale Optimierungen
# /Oy == Keine Rahmenzeiger
# /Gs == Stack-Überprüfungen steuern
# /Oi == Intrinsic-Funktionen generieren
# /Ot == Schnellen Code bevorzugen
# /Gf == Aktiviert Zeichenfolgenzusammenfassung
# /Gy == Aktiviert Binden auf Funktionsebene
# /Os == Optimiert für kompakten Code (/Ot wird durch /Os ausser Kraft gesetzt)
# /MT == Erstellt eine ausführbare Multithreading-Datei mit LIBCMT.LIB
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Code Generation / Laufzeit-Bibliothek:=Multithreaded
# /MD == Erstellt eine Multithreading-DLL mit MSVCRT.LIB
# Menues: Projekt / Einstellungen... / "C/C++" / Kategorie=Code Generation / Laufzeit-Bibliothek:=Multithreaded DLL
# CNDEBUG=/Ox /MD /D "NDEBUG"
CNDEBUG=/Ob1 /Og /Oy /Gs /Oi /Ot /Gf /Gy /MD /D "NDEBUG"
# /FoDateinamen == benennt oder erstellt .OBJ-Datei(en) in einem anderen Verzeichnis; Leerzeichen nach /Fo nicht zulaessig
NAMEFLAG=/Fo
## Allgemeine Linker-Einstellungen siehe Index "Linker" -> "Referenz" == Linker-Referenz
# /nologo == Unterdrückt die Anzeige von Startinformationen
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Anpassen / [X] Startinfo unterdrücken
# /subsystem: == Teilt dem Betriebssystem mit, wie die .EXE-Datei auszuführen ist
# /subsystem:console == Subsystem CONSOLE wird für eine zeichenorientierte Win32-Anwendung verwendet.
# Konsolen-Anwendungen erhalten vom Betriebssystem eine Konsole, wenn main oder wmain definiert wurde.
# /subsystem:windows == Subsystem WINDOWS bezieht sich auf eine Anwendung, die keine Konsole benötigt.
# Win32-Betriebssysteme können nur WINDOWS-Anwendungen ausführen, wenn WinMain oder wWinMain definiert wurde
# /machine:I386 == Legt die Zielplattform fest
# /libpath:"." == Bibliothekspfad hinzufügen
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Eingabe / Zusätzlicher Bibliothekpfad:="."
# /incremental:no == Steuert inkrementelles Binden
# sonst erscheint "...oder nicht durch den letzten inkrementellen Bindevorgang erstellt;..."
# In der folgenden Zeile /subsystem:console durch /subsystem:windows für Windows-Programme ersetzen.
# "/subsystem:windows" verursacht "error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16"
# ==> nach Q125750 = http://support.microsoft.com/default.aspx?scid=kb;en-us;125750
# "PRB: Error LNK2001: '_WinMain@16': Unresolved External Symbol"
# muesste ergaenzt werden ==> /entry:wWinMainCRTStartup ==> hilft aber auch nicht
# ==> nach Q100639 = http://support.microsoft.com/default.aspx?scid=kb;en-us;100639
# "INFO: Unicode Support in the Microsoft Foundation Class Library"
# ist irgendwas mit den "MFC*U.LIB MFC*UD.LIB" und /D "_USRDLL" soll man in der
# Compiler-Zeile (CFLAGS=...) ergaenzen. Hilft aber auch nicht, also bleibe bei CONSOLE!
LDFLAGS= /nologo /subsystem:console /machine:I386 /libpath:"." /incremental:no
# "LIB.EXE ist eine Hülle für link -lib" --> also der "Schalter", um libtidy.lib zu erstellen
LIBFLAGS= -lib
## Ergaenzende Debug-Linker-Einstellungen siehe Index "Linker" -> "Referenz" == Linker-Referenz
# /debug == Erstellt Testinformationen
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Debug / [X] Debug-Info
# /pdbtype:sept == Typinformationen für den Testlauf in den .PDB-Quell-(Compiler)-Dateien verteilt belassen
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Debug / [X] Typen Trennen
# /nodefaultlib:LIBC == Bibliothek LIBC wird beim Auflösen von externen Verweisen nicht durchsucht.
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Eingabe / Bibliotheken ignorieren:= LIBC
LDDEBUG=/debug /pdbtype:sept /nodefaultlib:LIBC
## Ergaenzende Release-Linker-Einstellungen siehe Index "Linker" -> "Referenz" == Linker-Referenz
# /opt:nowin98 == ???
# /opt:ref == Funktionen und/oder Daten eliminieren, auf die kein Verweis existiert.
# /pdb:none == keine Programmdatenbank verwenden
# Menues: Projekt / Einstellungen... / Linker / Kategorie:=Anpassen / [ ] Programmdatenbank verwenden
LDNDEBUG=/opt:nowin98 /opt:ref /pdb:none
#LIBS=KERNEL32.lib USER32.lib GDI32.lib COMDLG32.lib COMCTL32.lib ADVAPI32.lib IMM32.lib SHELL32.LIB OLE32.LIB
LIBS=
DEBUGLIBS=
!IFDEF DEBUG
CFLAGS=$(CFLAGS) $(CDEBUG)
LDFLAGS=$(LDFLAGS) $(LDDEBUG)
OBJDIR= .\debug
!ELSE
CFLAGS=$(CFLAGS) $(CNDEBUG)
LDFLAGS=$(LDFLAGS) $(LDNDEBUG)
OBJDIR= .\release
!ENDIF
OBJFILES=$(OBJDIR)\access.obj $(OBJDIR)\attrs.obj $(OBJDIR)\istack.obj\
$(OBJDIR)\parser.obj $(OBJDIR)\tags.obj $(OBJDIR)\entities.obj\
$(OBJDIR)\lexer.obj $(OBJDIR)\pprint.obj $(OBJDIR)\clean.obj\
$(OBJDIR)\localize.obj $(OBJDIR)\config.obj $(OBJDIR)\alloc.obj\
$(OBJDIR)\attrask.obj $(OBJDIR)\attrget.obj $(OBJDIR)\buffio.obj\
$(OBJDIR)\tagask.obj $(OBJDIR)\fileio.obj $(OBJDIR)\streamio.obj\
$(OBJDIR)\tmbstr.obj $(OBJDIR)\utf8.obj $(OBJDIR)\tidylib.obj
CFILES= $(SRCDIR)access.c $(SRCDIR)attrs.c $(SRCDIR)istack.c \
$(SRCDIR)parser.c $(SRCDIR)tags.c $(SRCDIR)entities.c \
$(SRCDIR)lexer.c $(SRCDIR)pprint.c $(SRCDIR)clean.c \
$(SRCDIR)localize.c $(SRCDIR)config.c $(SRCDIR)alloc.c \
$(SRCDIR)attrask.c $(SRCDIR)attrget.c $(SRCDIR)buffio.c \
$(SRCDIR)tagask.c $(SRCDIR)fileio.c $(SRCDIR)streamio.c\
$(SRCDIR)tmbstr.c $(SRCDIR)utf8.c $(SRCDIR)tidylib.c
HFILES= $(INCLDIR)platform.h $(INCLDIR)buffio.h \
$(INCLDIR)fileio.h $(INCLDIR)tidy.h $(INCLDIR)tidyenum.h
LIBHFILES= \
$(SRCDIR)access.h \
$(SRCDIR)attrs.h $(SRCDIR)clean.h \
$(SRCDIR)config.h $(SRCDIR)entities.h \
$(SRCDIR)forward.h $(SRCDIR)lexer.h $(SRCDIR)message.h \
$(SRCDIR)parser.h $(SRCDIR)pprint.h $(SRCDIR)streamio.h \
$(SRCDIR)tags.h \
$(SRCDIR)tmbstr.h $(SRCDIR)utf8.h $(SRCDIR)tidy-int.h
$(OBJDIR) :
if not exist $(OBJDIR) mkdir $(OBJDIR)
$(BINDIR) :
if not exist $(BINDIR) mkdir $(BINDIR)
$(OBJDIR)/libtidy.lib: $(OBJFILES)
$(LD) $(LIBFLAGS) $(OBJFILES) /OUT:$(OBJDIR)/libtidy.lib
$(BINDIR)/tidy.exe: ./console/tidy.c $(HFILES) $(OBJDIR)/libtidy.lib $(BINDIR)
$(CC) $(CFLAGS) ./console/tidy.c $(NAMEFLAG)$(OBJDIR)/
$(LD) $(LDFLAGS) $(OBJDIR)/tidy.obj $(LIBS) $(OBJDIR)/libtidy.lib /OUT:$(BINDIR)/tidy.exe
$(OBJFILES): $(HFILES) $(LIBHFILES) $(CFILES) Makefile.vc6 $(OBJDIR)
$(CC) $(CFLAGS) $(CFILES) $(NAMEFLAG)$(OBJDIR)/
$(BINDIR)/tab2space.exe: ./console/tab2space.c $(BINDIR)
$(CC) $(CFLAGS) ./console/tab2space.c $(NAMEFLAG)$(OBJDIR)/
$(LD) $(LDFLAGS) $(OBJDIR)/tab2space.obj $(LIBS) /OUT:$(BINDIR)/tab2space.exe
clean:
# Folgendes lieferte "Zu viele Parameter - ..." also wurde es gesplittet
# -del $(OBJFILES) $(OBJDIR)\tab2space.obj $(OBJDIR)\tidy.obj $(OBJDIR)\libtidy.lib $(BINDIR)\tidy.exe $(BINDIR)\tab2space.exe
-del $(OBJDIR)\access.obj
-del $(OBJDIR)\attrs.obj
-del $(OBJDIR)\istack.obj
-del $(OBJDIR)\parser.obj
-del $(OBJDIR)\tags.obj
-del $(OBJDIR)\entities.obj
-del $(OBJDIR)\lexer.obj
-del $(OBJDIR)\pprint.obj
-del $(OBJDIR)\clean.obj
-del $(OBJDIR)\localize.obj
-del $(OBJDIR)\config.obj
-del $(OBJDIR)\alloc.obj
-del $(OBJDIR)\attrask.obj
-del $(OBJDIR)\attrget.obj
-del $(OBJDIR)\buffio.obj
-del $(OBJDIR)\tagask.obj
-del $(OBJDIR)\fileio.obj
-del $(OBJDIR)\streamio.obj
-del $(OBJDIR)\tmbstr.obj
-del $(OBJDIR)\utf8.obj
-del $(OBJDIR)\tidylib.obj
-del $(OBJDIR)\tab2space.obj
-del $(OBJDIR)\tidy.obj
-del $(OBJDIR)\libtidy.lib
-del $(BINDIR)\tidy.exe
-del $(BINDIR)\tab2space.exe
!IFDEF DEBUG
# -del $(BINDIR)\tab2space.ilk # NUR wenn /incremental:yes
-del $(BINDIR)\tab2space.pdb
# -del $(BINDIR)\tidy.ilk # NUR wenn /incremental:yes
-del $(BINDIR)\tidy.pdb
!ENDIF
-rd $(OBJDIR)
-rd $(BINDIR)
all: $(OBJDIR)/libtidy.lib $(BINDIR)/tidy.exe $(BINDIR)/tab2space.exe