X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=win%2Fmakefile;h=8f45dd3aedab7b3437a3492395a69386be9ad563;hp=727a593a3661cecf8612fac047019c71e2e3f758;hb=f0128dd11d08d79384a97a13e44476769b061f4f;hpb=8b4a08403ae705e22b604bffa4577ac403b7de8d diff --git a/win/makefile b/win/makefile index 727a593..8f45dd3 100644 --- a/win/makefile +++ b/win/makefile @@ -1,6 +1,5 @@ -# Copyright (C) 1995-2007, Index Data ApS -# All rights reserved. -# $Id: makefile,v 1.138 2007-11-09 16:46:43 adam Exp $ +# This file is part of the YAZ toolkit. +# Copyright (C) 1995-2009 Index Data # # Programmed by # Heikki Levanto & Adam Dickmeiss @@ -11,7 +10,7 @@ DEBUG=0 # 0 for release, 1 for debug USE_MANIFEST = 0 # TCL -TCL="C:\Tcl\bin\tclsh84.exe" +TCL="C:\Tcl\bin\tclsh85.exe" #TCL="C:\Program Files\Tcl\bin\tclsh83.exe" HAVE_TCL=1 @@ -19,13 +18,18 @@ HAVE_TCL=1 HAVE_ICONV=1 ICONV_DIR = c:\iconv-1.9.2.win32 +# icu charcter conversion utility +# get icu libraries from http://www.icu-project.org +HAVE_ICU=1 +ICU_DIR = c:\icu + # libxslt HAVE_LIBXSLT=1 -LIBXSLT_DIR=c:\libxslt-1.1.19.win32 +LIBXSLT_DIR=c:\libxslt-1.1.24.win32 # libxml2 HAVE_LIBXML2=1 -LIBXML2_DIR=c:\libxml2-2.6.28.win32 +LIBXML2_DIR=c:\libxml2-2.7.1.win32 # zlib compression (used by libxml2) ZLIB_DIR = c:\zlib-1.2.3.win32 @@ -39,7 +43,7 @@ BISON=bison default: all -all: dirs generate dll client ztest zoomsh utilprog testprog iconv libxml2 libxslt +all: dirs generate dll sc_test client ztest yazicu zoomsh utilprog testprog iconv icu libxml2 libxslt NSIS="c:\program files\nsis\makensis.exe" HHC="c:\program files\html help workshop\hhc.exe" @@ -56,8 +60,6 @@ nsis: nsishelp: $(NSIS) -generate: generated_files - # Directories # The current directory is supposed to be something like # ..../yaz/win, everything is relative to that @@ -89,16 +91,22 @@ TMP=$(TMPDIR) # Targets - what to make !if $(DEBUG) -DLL=$(BINDIR)\yaz3d.dll +YAZ_DLL=$(BINDIR)\yaz3d.dll YAZ_IMPLIB=$(LIBDIR)\yaz3d.lib +YAZ_ICU_DLL=$(BINDIR)\yaz_icu3d.dll +YAZ_ICU_IMPLIB=$(LIBDIR)\yaz_icu3d.lib !else -DLL=$(BINDIR)\yaz3.dll +YAZ_DLL=$(BINDIR)\yaz3.dll YAZ_IMPLIB=$(LIBDIR)\yaz3.lib +YAZ_ICU_DLL=$(BINDIR)\yaz_icu3.dll +YAZ_ICU_IMPLIB=$(LIBDIR)\yaz_icu3.lib !endif CLIENT=$(BINDIR)\yaz-client.exe +YAZ_ICU=$(BINDIR)\yaz-icu.exe ZOOMSH=$(BINDIR)\zoomsh.exe ZTEST=$(BINDIR)\yaz-ztest.exe +SC_TEST=$(BINDIR)\sc_test.exe ZOOMTST1=$(BINDIR)\zoomtst1.exe ZOOMTST2=$(BINDIR)\zoomtst2.exe @@ -119,16 +127,17 @@ TSTLOG=$(BINDIR)\tstlog.exe TST_TIMING=$(BINDIR)\tst_timing.exe # shortcut names defined here -dll: dirs generate $(DLL) +dll: dirs generate $(YAZ_DLL) client: dirs generate $(CLIENT) ztest: dirs generate $(ZTEST) +sc_test: $(SC_TEST) + zoomsh: $(ZOOMSH) $(ZOOMTST1) $(ZOOMTST2) $(ZOOMTST3) \ $(ZOOMTST4) $(ZOOMTST5) $(ZOOMTST6) $(ZOOMTST7) $(ZOOMTST8) $(ZOOMTST9) \ $(ZOOMTST10) -utilprog: $(CQL2PQF) $(CQL2XCQL) $(YAZ_MARCDUMP) - +utilprog: $(CQL2PQF) $(CQL2XCQL) $(YAZ_MARCDUMP) testprog: $(TSTLOG) $(TST_TIMING) htmlhelp: $(DOCDIR)\htmlhelp.chm @@ -153,6 +162,35 @@ iconv: !endif +###TRYING ICU FLAGS HERE WORKS #### +## ADAM ARE THESE FLAGS OK and the DLL sufficient ## +##IT COMPILES AND SEEMS TO WORK + +!if $(HAVE_ICU) +ICU_DEF= \ + /D YAZ_HAVE_ICU=1 /D HAVE_ICU_H=1 \ + /I"$(ICU_DIR)\include" +ICU_LIB= \ + $(ICU_DIR)\lib\icudt.lib $(ICU_DIR)\lib\icuin.lib $(ICU_DIR)\lib\icuuc.lib +icu: $(BINDIR)\icudt40.dll $(BINDIR)\icuin40.dll $(BINDIR)\icuuc40.dll +yazicu: dirs generate $(YAZ_ICU) + +$(BINDIR)\icudt40.dll: + copy "$(ICU_DIR)\bin\icudt40.dll" $(BINDIR) +$(BINDIR)\icuin40.dll: + copy "$(ICU_DIR)\bin\icuin40.dll" $(BINDIR) +$(BINDIR)\icuuc40.dll: + copy "$(ICU_DIR)\bin\icuuc40.dll" $(BINDIR) +!else +ICU_DEF= \ + /D YAZ_HAVE_ICU=0 +ICU_LIB= +icu: +yazicu: +!endif + +### + !if $(HAVE_LIBXML2) LIBXML2_LIB="$(LIBXML2_DIR)\lib\libxml2.lib" LIBXML2_DEF=/D YAZ_HAVE_XML2=1 /I"$(LIBXML2_DIR)\include" @@ -196,6 +234,7 @@ libxslt: COMMON_C_OPTIONS= \ /nologo /W3 /EHsc /FD /c \ $(ICONV_DEF) \ + $(ICU_DEF) \ $(LIBXML2_DEF) \ $(LIBXSLT_DEF) \ /D "_CRT_SECURE_NO_DEPRECATE" \ @@ -242,7 +281,7 @@ MT=mt.exe /nologo MT=echo !endif -LINK_LIBS= kernel32.lib wsock32.lib advapi32.lib \ +LINK_LIBS= kernel32.lib ws2_32.lib advapi32.lib \ $(ICONV_LIB) $(LIBXML2_LIB) $(LIBXSLT_LIB) COMMON_LNK_OPTIONS= /nologo /subsystem:windows /machine:i386 /incremental:no @@ -259,15 +298,11 @@ COMMON_TCL_OPTIONS= ..\util\yaz-asncomp -I$(INCLDIR) -i yaz # Final opt variables !if $(DEBUG) COPT= $(COMMON_C_OPTIONS) $(DEBUG_C_OPTIONS) $(COMMON_C_INCLUDES) -MTLOPT= $(COMMON_MTL_OPTIONS) $(DEBUG_MTL_OPTIONS) -RCOPT= $(COMMON_RC_OPTIONS) $(DEBUG_RC_OPTIONS) LNKOPT= $(COMMON_LNK_OPTIONS) $(DEBUG_LNK_OPTIONS) $(LNK_LIBS) TCLOPT= $(COMMON_TCL_OPTIONS) !else COPT= $(COMMON_C_OPTIONS) $(RELEASE_C_OPTIONS) $(COMMON_C_INCLUDES) -MTLOPT= $(COMMON_MTL_OPTIONS) $(RELEASE_MTL_OPTIONS) -RCOPT= $(COMMON_RC_OPTIONS) $(RELEASE_RC_OPTIONS) LNKOPT= $(COMMON_LNK_OPTIONS) $(RELEASE_LNK_OPTIONS) $(LNK_LIBS) TCLOPT= $(COMMON_TCL_OPTIONS) !endif @@ -290,11 +325,17 @@ YAZ_CLIENT_OBJS= \ $(OBJDIR)\admin.obj \ $(OBJDIR)\fhistory.obj +YAZ_ICU_OBJS= $(OBJDIR)\yaz-icu.obj + ZTEST_OBJS= \ + $(OBJDIR)\dummy-opac.obj \ $(OBJDIR)\read-marc.obj \ $(OBJDIR)\read-grs.obj \ $(OBJDIR)\ztest.obj +SC_TEST_OBJS = \ + $(OBJDIR)\sc_test.obj + YAZ_ZOOMSH_OBJS = \ $(OBJDIR)\zoomsh.obj @@ -326,6 +367,7 @@ YAZ_CQL2XCQL_OBJS = \ YAZ_MARCDUMP_OBJS = \ $(OBJDIR)\marcdump.obj + TSTLOG_OBJS = \ $(OBJDIR)\tstlog.obj @@ -337,7 +379,6 @@ MISC_OBJS= \ $(OBJDIR)\oid_std.obj \ $(OBJDIR)\eventl.obj \ $(OBJDIR)\requestq.obj \ - $(OBJDIR)\service.obj \ $(OBJDIR)\seshigh.obj \ $(OBJDIR)\statserv.obj \ $(OBJDIR)\tcpdchk.obj \ @@ -362,6 +403,7 @@ MISC_OBJS= \ $(OBJDIR)\ber_oid.obj \ $(OBJDIR)\ber_tag.obj \ $(OBJDIR)\dumpber.obj \ + $(OBJDIR)\errno.obj \ $(OBJDIR)\odr.obj \ $(OBJDIR)\odr_any.obj \ $(OBJDIR)\odr_bit.obj \ @@ -395,9 +437,14 @@ MISC_OBJS= \ $(OBJDIR)\xmalloc.obj \ $(OBJDIR)\matchstr.obj \ $(OBJDIR)\siconv.obj \ + $(OBJDIR)\iso5428.obj \ + $(OBJDIR)\utf8.obj \ + $(OBJDIR)\ucs4.obj \ + $(OBJDIR)\advancegreek.obj \ $(OBJDIR)\snprintf.obj \ $(OBJDIR)\marc8.obj \ $(OBJDIR)\marc8r.obj \ + $(OBJDIR)\iso5426.obj \ $(OBJDIR)\record_conv.obj \ $(OBJDIR)\retrieval.obj \ $(OBJDIR)\libxml2_error.obj \ @@ -425,6 +472,7 @@ MISC_OBJS= \ $(OBJDIR)\zoom-socket.obj \ $(OBJDIR)\initopt.obj \ $(OBJDIR)\xmlquery.obj \ + $(OBJDIR)\xmlerror.obj \ $(OBJDIR)\mime.obj \ $(OBJDIR)\cql.obj \ $(OBJDIR)\cqlstdio.obj \ @@ -432,6 +480,7 @@ MISC_OBJS= \ $(OBJDIR)\cqltransform.obj \ $(OBJDIR)\cqlutil.obj \ $(OBJDIR)\cqlstrer.obj \ + $(OBJDIR)\rpn2cql.obj \ $(OBJDIR)\xcqlutil.obj \ $(OBJDIR)\elementset.obj \ $(OBJDIR)\timing.obj \ @@ -440,7 +489,16 @@ MISC_OBJS= \ $(OBJDIR)\copy_types.obj \ $(OBJDIR)\http.obj \ $(OBJDIR)\match_glob.obj \ - $(OBJDIR)\poll.obj + $(OBJDIR)\poll.obj \ + $(OBJDIR)\daemon.obj \ + $(OBJDIR)\iconv_encode_iso_8859_1.obj \ + $(OBJDIR)\iconv_encode_marc8.obj \ + $(OBJDIR)\iconv_decode_marc8.obj \ + $(OBJDIR)\iconv_encode_wchar.obj \ + $(OBJDIR)\iconv_decode_iso5426.obj \ + $(OBJDIR)\iconv_decode_danmarc.obj \ + $(OBJDIR)\mutex.obj \ + $(OBJDIR)\sc.obj Z3950_OBJS= \ $(OBJDIR)\z-date.obj\ @@ -483,6 +541,9 @@ DLL_OBJS =\ $(MISC_OBJS) \ $(Z3950_OBJS) \ $(ILL_OBJS) \ + +ICU_DLL_OBJS =\ + $(OBJDIR)\icu_I18N.obj # Generated C and H files @@ -597,12 +658,13 @@ GENERATED_H_FILES= \ $(ILL_CORE_H_FILES) \ $(ITEM_REQ_H_FILES) -generated_files: \ +generate: \ $(GENERATED_H_FILES) \ $(GENERATED_C_FILES) \ $(SRCDIR)\diagsrw.c \ $(SRCDIR)\diagbib1.c \ - $(SRCDIR)\diagsru_update.c + $(SRCDIR)\diagsru_update.c \ + $(INCLDIR)\yaz\yaz-version.h # Compiling @@ -696,6 +758,10 @@ $(SRCDIR)\marc8r.c: $(SRCDIR)\codetables.xml $(SRCDIR)\charconv.tcl @cd $(SRCDIR) $(TCL) charconv.tcl -r -p marc8r codetables.xml -o marc8r.c +$(SRCDIR)\iso5426.c: $(SRCDIR)\codetables-iso5426.xml $(SRCDIR)\charconv.tcl + @cd $(SRCDIR) + $(TCL) charconv.tcl -r -p iso5426 codetables-iso5426.xml -o iso5426.c + $(SRCDIR)\oid_std.c: $(SRCDIR)\oid.csv $(SRCDIR)\charconv.tcl @cd $(SRCDIR) $(TCL) oidtoc.tcl $(SRCDIR) oid.csv oid_std.c oid_std.h @@ -712,6 +778,11 @@ $(SRCDIR)\diagsru_update.c: $(SRCDIR)\sru_update.csv @cd $(SRCDIR) $(TCL) csvtosru_update.tcl $(SRCDIR) +$(INCLDIR)\yaz\yaz-version.h: + @cd $(SRCDIR) + $(TCL) mk_version.tcl $(ROOTDIR)/configure.ac $(INCLDIR)\yaz\yaz-version.h + + !endif !if $(HAVE_BISON) @@ -724,12 +795,10 @@ $(SRCDIR)\cql.c: $(SRCDIR)\cql.y # Resources # The RC compiler (resource files) RSC=rc.exe -COMMON_RC_OPTIONS= /l 0x406 /i"$(ROOTDIR)" -DEBUG_RC_OPTIONS=/d "_DEBUG" -RELEASE_RC_OPTIONS=/d "NDEBUG" -YAZ_RES=$(OBJDIR)\yaz.res YAZ_RC=$(WINDIR)\yaz.rc +YAZ_RES=$(OBJDIR)\yaz.res +YAZ_ICU_RES=$(OBJDIR)\yaz_icu.res !if $(DEBUG) RSOPT=/d_DEBUG @@ -738,11 +807,14 @@ RSOPT=/d_NDEBUG !endif $(YAZ_RES): $(YAZ_RC) - $(RSC) $(RSOPT) /fo"$(YAZ_RES)" $(YAZ_RC) + $(RSC) $(RSOPT) /I"../include" /fo"$(YAZ_RES)" $(YAZ_RC) + +$(YAZ_ICU_RES): $(YAZ_RC) + $(RSC) $(RSOPT) /DICU=1 /I"../include" /fo"$(YAZ_ICU_RES)" $(YAZ_RC) # Linking -$(DLL) $(YAZ_IMPLIB): "$(BINDIR)" $(DLL_OBJS) $(YAZ_RES) +$(YAZ_DLL) $(YAZ_IMPLIB): "$(BINDIR)" $(DLL_OBJS) $(YAZ_RES) $(LINK_DLL) \ $(DLL_OBJS) \ $(YAZ_RES) \ @@ -750,75 +822,93 @@ $(DLL) $(YAZ_IMPLIB): "$(BINDIR)" $(DLL_OBJS) $(YAZ_RES) /implib:"$(YAZ_IMPLIB)" $(MT) -manifest $@.manifest -outputresource:$@;2 -$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) $(DLL) +$(YAZ_ICU_DLL) $(YAZ_ICU_IMPLIB): "$(BINDIR)" $(ICU_DLL_OBJS) $(YAZ_ICU_RES) + $(LINK_DLL) $(ICU_LIB) $(YAZ_IMPLIB)\ + $(ICU_DLL_OBJS) \ + $(YAZ_ICU_RES) \ + /out:$@ \ + /implib:"$(YAZ_ICU_IMPLIB)" + $(MT) -manifest $@.manifest -outputresource:$@;2 + +$(CLIENT) : "$(BINDIR)" $(YAZ_CLIENT_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_CLIENT_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMSH) : "$(BINDIR)" $(YAZ_ZOOMSH_OBJS) $(DLL) +$(YAZ_ICU) : "$(BINDIR)" $(YAZ_ICU_OBJS) $(YAZ_ICU_DLL) + $(LINK_PROGRAM) $(ICU_LIB) $(YAZ_ICU_IMPLIB) $(YAZ_ICU_OBJS) /out:$@ + $(MT) -manifest $@.manifest -outputresource:$@;1 + + +$(SC_TEST) : "$(BINDIR)" $(SC_TEST_OBJS) $(YAZ_DLL) + $(LINK_PROGRAM) $(SC_TEST_OBJS) /out:$@ + $(MT) -manifest $@.manifest -outputresource:$@;1 + +$(ZOOMSH) : "$(BINDIR)" $(YAZ_ZOOMSH_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMSH_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST1) : "$(BINDIR)" $(YAZ_ZOOMTST1_OBJS) $(DLL) +$(ZOOMTST1) : "$(BINDIR)" $(YAZ_ZOOMTST1_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST1_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST2) : "$(BINDIR)" $(YAZ_ZOOMTST2_OBJS) $(DLL) +$(ZOOMTST2) : "$(BINDIR)" $(YAZ_ZOOMTST2_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST2_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST3) : "$(BINDIR)" $(YAZ_ZOOMTST3_OBJS) $(DLL) +$(ZOOMTST3) : "$(BINDIR)" $(YAZ_ZOOMTST3_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST3_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST4) : "$(BINDIR)" $(YAZ_ZOOMTST4_OBJS) $(DLL) +$(ZOOMTST4) : "$(BINDIR)" $(YAZ_ZOOMTST4_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST4_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST5) : "$(BINDIR)" $(YAZ_ZOOMTST5_OBJS) $(DLL) +$(ZOOMTST5) : "$(BINDIR)" $(YAZ_ZOOMTST5_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST5_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST6) : "$(BINDIR)" $(YAZ_ZOOMTST6_OBJS) $(DLL) +$(ZOOMTST6) : "$(BINDIR)" $(YAZ_ZOOMTST6_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST6_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST7) : "$(BINDIR)" $(YAZ_ZOOMTST7_OBJS) $(DLL) +$(ZOOMTST7) : "$(BINDIR)" $(YAZ_ZOOMTST7_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST7_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST8) : "$(BINDIR)" $(YAZ_ZOOMTST8_OBJS) $(DLL) +$(ZOOMTST8) : "$(BINDIR)" $(YAZ_ZOOMTST8_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST8_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST9) : "$(BINDIR)" $(YAZ_ZOOMTST9_OBJS) $(DLL) +$(ZOOMTST9) : "$(BINDIR)" $(YAZ_ZOOMTST9_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST9_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZOOMTST10) : "$(BINDIR)" $(YAZ_ZOOMTST10_OBJS) $(DLL) +$(ZOOMTST10) : "$(BINDIR)" $(YAZ_ZOOMTST10_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_ZOOMTST10_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(CQL2PQF) : "$(BINDIR)" $(YAZ_CQL2PQF_OBJS) $(DLL) +$(CQL2PQF) : "$(BINDIR)" $(YAZ_CQL2PQF_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_CQL2PQF_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(CQL2XCQL) : "$(BINDIR)" $(YAZ_CQL2XCQL_OBJS) $(DLL) +$(CQL2XCQL) : "$(BINDIR)" $(YAZ_CQL2XCQL_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_CQL2XCQL_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(DLL) +$(ZTEST) : "$(BINDIR)" $(ZTEST_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(ZTEST_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(YAZ_MARCDUMP) : "$(BINDIR)" $(YAZ_MARCDUMP_OBJS) $(DLL) +$(YAZ_MARCDUMP) : "$(BINDIR)" $(YAZ_MARCDUMP_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(YAZ_MARCDUMP_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(TSTLOG) : "$(BINDIR)" $(TSTLOG_OBJS) $(DLL) + +$(TSTLOG) : "$(BINDIR)" $(TSTLOG_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(TSTLOG_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1 -$(TST_TIMING) : "$(BINDIR)" $(TST_TIMING_OBJS) $(DLL) +$(TST_TIMING) : "$(BINDIR)" $(TST_TIMING_OBJS) $(YAZ_DLL) $(LINK_PROGRAM) $(TST_TIMING_OBJS) /out:$@ $(MT) -manifest $@.manifest -outputresource:$@;1