| # This Makefile will allow you to build the static library, a DLL, the | |
| # DLL-import library, and the test executables using the "mingw" gcc | |
| # compiler environment. This Makefile is based on Alfred Reibenschuh's | |
| # version for 2.1.1, and was modified by Wayne Davison. | |
| # Modified 2001/10/10 Tobias Peters for libxml2-2.4.5 | |
| # Set "PREFIX" to the root of the mingw installed files. | |
| PREFIX = /mingw | |
| CC = gcc | |
| CFLAGS = -Iinclude -fnative-struct -D_WINSOCKAPI_ \ | |
| -Dsnprintf=_snprintf -Dvsnprintf=_vsnprintf | |
| LDFLAGS = -L. -L$(PREFIX)/lib | |
| LIBS = -lwsock32 -lz | |
| AR=ar rc | |
| DLLTOOL=dlltool | |
| DLLWRAP=dllwrap | |
| LIBSRCS=SAX.c entities.c encoding.c error.c parserInternals.c \ | |
| parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ | |
| valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \ | |
| xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \ | |
| catalog.c strio.c | |
| LIBOBJS=$(LIBSRCS:.c=.o) | |
| OBJS=$(LIBOBJS) | |
| LIBBASE=xml | |
| LIB=lib$(LIBBASE).a | |
| DLL=$(LIB:.a=.dll) | |
| OBJ1=testHTML.o | |
| OBJ2=testSAX.o | |
| OBJ3=testURI.o | |
| EXE1=$(OBJ1:.o=.exe) | |
| EXE2=$(OBJ2:.o=.exe) | |
| EXE3=$(OBJ3:.o=.exe) | |
| IMPBASE=$(LIBBASE)_dll | |
| IMP=lib$(IMPBASE).a | |
| DLLFLAGS = --shared -o $(DLL) -Wl,--out-implib,$(IMP) | |
| DEF=$(DLL:.dll=.def) | |
| all: $(LIB) $(DLL) $(DEF) $(IMP) $(EXE1) $(EXE2) $(EXE3) | |
| dll: $(DLL) | |
| lib: $(LIB) | |
| $(DLL) $(IMP): $(LIBOBJS) | |
| $(CC) $(DLLFLAGS) $(LIBOBJS) $(LDFLAGS) $(LIBS) | |
| # -mwindows | |
| $(LIB): $(LIBOBJS) | |
| $(AR) $@ $^ | |
| $(DEF): $(LIBOBJS) | |
| $(DLLTOOL) --kill-at --export-all -D $(DLL) --output-def $@ $^ | |
| $(EXE1): $(OBJ1) $(DLL) | |
| $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS) | |
| strip $@ | |
| $(EXE2): $(OBJ2) $(DLL) | |
| $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(IMPBASE) $(LIBS) | |
| strip $@ | |
| $(EXE3): $(OBJ3) $(LIB) | |
| $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) -l$(LIBBASE) $(LIBS) | |
| strip $@ | |
| $(OBJ1): $(OBJ1:.o=.c) | |
| $(CC) $(CFLAGS) -DLIBXML_DLL_IMPORT=__declspec'(dllimport)' -c $< -o $@ | |
| $(OBJ2): $(OBJ2:.o=.c) | |
| $(CC) $(CFLAGS) -DLIBXML_DLL_IMPORT=__declspec'(dllimport)' -c $< -o $@ | |
| $(OBJ3): $(OBJ3:.o=.c) | |
| $(CC) $(CFLAGS) -c $< -o $@ | |
| .c.o: | |
| $(CC) $(CFLAGS) -DIN_LIBXML -c $< -o $@ | |
| clean: | |
| rm *.o *.a *.dll *.def | |
| test: all | |
| ./$(EXE1) -c $(OBJS) | xxd | head -3 |