Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Sun, 25 Aug 2002 16:55:10 +0200 From: "Gerrit P. Haase" Organization: Esse keine toten Tiere X-Priority: 3 (Normal) Message-ID: <1049560337.20020825165510@familiehaase.de> To: "Abraham Backus" CC: cygwin AT cygwin DOT com Subject: Re: Xerces C++ support in cygwin In-Reply-To: <005701c24bf2$8362e320$0200a8c0@TCS012593> References: <20020823154437 DOT 6154 DOT h011 DOT c000 DOT wm AT mail DOT backus DOT com DOT criticalpath DOT net> <11729030690 DOT 20020825033931 AT familiehaase DOT de> <005701c24bf2$8362e320$0200a8c0 AT TCS012593> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hallo Abraham, Am Sonntag, 25. August 2002 um 06:47 schriebst du: > Awesome! I'm kinda new about what's expected of cygwin software with regard > to what files are needed where. I discovered though that after everything > is built, if I put libxerces.dll into /usr/local/bin and then put a symlink > to it in /usr/local/lib that everything builds ok. That seems odd and it > "worked" for my one test app that I've been working on, but it just didn't > seem right because any other dll that my apps link to seemed to have a > .dll.a file in the lib directory. This part is wrong: ifeq (${PLATFORM}, CYGWIN) -mkdir -p ${PREFIX}/bin $(CP) ${FQ_LINK_NAME} ${PREFIX}/bin rm -rf ${PREFIX}/lib/${LINK_NAME} && \ ln -s ${PREFIX}/bin/${LINK_NAME} ${PREFIX}/lib/${LINK_NAME} else You cannot 'ln -s' a DLL on windows. Also the DLL's don't need to be renamed. Just put the created DLL (libxerces-c2_1_0.dll) into ${PREFIX}/bin. And then put the import library (libxerces-c2_1_0.dll.a) into ${PREFIX}/lib, you can 'ln -s' now the import library: ln -s ${PREFIX}/lib/libxerces-c2_1_0.dll.a ${PREFIX}/lib/libxerces-c.dll.a ln -s ${PREFIX}/lib/libxerces-c2_1_0.dll.a ${PREFIX}/lib/libxerces.dll.a The patch looks like this then: =============================== --- Xerces/c/obj/Makefile.in~ 2002-08-25 16:34:12.000000000 +0200 +++ Xerces/c/obj/Makefile.in 2002-08-25 16:52:11.000000000 +0200 @@ -92,6 +92,10 @@ else LIBNAME=libxercesc endif +ifeq (${PLATFORM}, CYGWIN) +LIBNAME=libxerces-c +IMPORTLIB=libxerces-c +endif ALL_OBJECTS=$(wildcard $(PLATFORM)/*.o) @@ -145,6 +149,7 @@ # link your application. # ######################################################## +ifneq (${PLATFORM}, CYGWIN) ${FQ_REAL_NAME}: $(ALL_OBJECTS) @echo Building ${FQ_REAL_NAME} ${MAKE_SHARED} ${LD_SONAME} -o ${@} ${^} $(TEMPLATESOBJS) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(ALLLIBS) @@ -152,6 +157,11 @@ rm -rf ${FQ_SO_NAME} && ln -s ${FQ_REAL_NAME} ${FQ_SO_NAME} @echo symlink ${FQ_LINK_NAME} rm -rf ${FQ_LINK_NAME} && ln -s ${FQ_SO_NAME} ${FQ_LINK_NAME} +else +${FQ_REAL_NAME}: $(ALL_OBJECTS) + @echo Building ${FQ_REAL_NAME} + ${MAKE_SHARED} ${LD_SONAME} -o ${@} ${^} $(TEMPLATESOBJS) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(ALLLIBS) +endif ## Start OS390 ## ifeq (${PLATFORM},OS390) @@ -194,9 +204,11 @@ -mkdir -p ${PREFIX}/lib ifeq (${PLATFORM}, CYGWIN) -mkdir -p ${PREFIX}/bin - $(CP) ${FQ_LINK_NAME} ${PREFIX}/bin - rm -rf ${PREFIX}/lib/${LINK_NAME} && \ - ln -s ${PREFIX}/bin/${LINK_NAME} ${PREFIX}/lib/${LINK_NAME} + $(CP) ${FQ_REAL_NAME} $(PREFIX)/bin + $(CP) ${XML_LIB_DIR}/${IMPORTLIB}${VER}.dll.a $(PREFIX)/lib + rm -rf ${PREFIX}/lib/${IMPORTLIB}.dll.a ${PREFIX}/lib/libxerces.dll.a + ln -s ${PREFIX}/lib/${IMPORTLIB}${VER}.dll.a ${PREFIX}/lib/${IMPORTLIB}.dll.a + ln -s ${PREFIX}/lib/${IMPORTLIB}${VER}.dll.a ${PREFIX}/lib/libxerces.dll.a else $(CP) ${FQ_REAL_NAME} $(PREFIX)/lib endif # END PATCH If you link your app with -lxerces, the linker will pick up ${PREFIX}/lib/libxerces.dll.a automatically then. Do you want to test it and commit it to the Xerces developers? Gerrit -- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);' -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/