# openurl.library - universal URL display and browser launcher library
# Written by Troels Walsted Hansen <troels@thule.no>
# Placed in the public domain.
#
# SAS/C smake makefile

# options

SC = sc
SL = slink

OPT_DEB_COPTS = OPTIMIZE OPTCOMP=9 OPTDEP=9 OPTSCHED IGN 306,315
#OPT_DEB_COPTS = DEBUG=LINE

LIB_COPTS = IDIR include NOCHECKABORT NOSTACKCHECK NOSTDIO NOICONS ERRORREXX \
            LIBCODE MEMORYSIZE=HUGE PARAMETERS=REGISTERS STRINGMERGE $(OPT_DEB_COPTS)
LIB_LOPTS = NOICONS SMALLCODE SMALLDATA LIBFD fd/openurl_lib.fd LIBPREFIX _LIB_ \
            LIBVERSION 3 LIBREVISION 0 LIBID "openurl.library 3.0 (26.9.99)"

APP_COPTS = IDIR include NOCHECKABORT NOSTACKCHECK NOSTDIO NOICONS ERRORREXX \
            MEMORYSIZE=HUGE PARAMETERS=REGISTERS STRINGMERGE $(OPT_DEB_COPTS)
APP_LOPTS = NOICONS SMALLCODE SMALLDATA

LIBS = LIB:sc.lib LIB:amiga.lib LIB:debug.lib
ALL_DEP = include/libraries/openurl.h include/clib/openurl_protos.h \
          include/pragmas/openurl_pragmas.h

LIB_DEP = handler.h library_common.h library_api.h library_prefs.h library_util.h
LIB_OBJ = library_api.o library_prefs.o library_util.o

PREFS_APP = Prefs/OpenURL
PREFS_DEP = prefs_common.h prefs_main.h prefs_app.h prefs_prefswin.h \
            prefs_applist.h prefs_browsereditwin.h prefs_mailereditwin.h
PREFS_OBJ = prefs_common.o prefs_main.o prefs_app.o prefs_prefswin.o \
            prefs_applist.o prefs_browsereditwin.o prefs_mailereditwin.o

# default rule

all: openurl.library OpenURL-Handler $(PREFS_APP) OpenURL Example

# rules for the library 

openurl.library: $(LIB_OBJ)
	$(SL) $(LIB_LOPTS) FROM LIB:libent.o LIB:libinit.o $(LIB_OBJ) LIB $(LIBS) TO openurl.library

library_api.o: library_api.c $(LIB_DEP) $(ALL_DEP)
	$(SC) library_api.c $(LIB_COPTS)

library_prefs.o: library_prefs.c $(LIB_DEP) $(ALL_DEP)
	$(SC) library_prefs.c $(LIB_COPTS)

library_util.o: library_util.c $(LIB_DEP) $(ALL_DEP)
	$(SC) library_util.c $(LIB_COPTS)

# rules for the handler 

OpenURL-Handler: handler.o
	$(SL) $(APP_LOPTS) FROM handler.o LIB $(LIBS) TO OpenURL-Handler

handler.o: handler.c handler.h $(ALL_DEP)
	$(SC) handler.c $(APP_COPTS)

# rules for prefs app

$(PREFS_APP): $(PREFS_OBJ)
	$(SL) $(APP_LOPTS) FROM LIB:c.o $(PREFS_OBJ) LIB $(LIBS) TO $(PREFS_APP)

prefs_main.o: prefs_main.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_main.c $(APP_COPTS)

prefs_common.o: prefs_common.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_common.c $(APP_COPTS)

prefs_app.o: prefs_app.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_app.c $(APP_COPTS)

prefs_prefswin.o: prefs_prefswin.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_prefswin.c $(APP_COPTS)

prefs_applist.o: prefs_applist.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_applist.c $(APP_COPTS)

prefs_browsereditwin.o: prefs_browsereditwin.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_browsereditwin.c $(APP_COPTS)

prefs_mailereditwin.o: prefs_mailereditwin.c $(PREFS_DEP) $(ALL_DEP)
	$(SC) prefs_mailereditwin.c $(APP_COPTS)

# rules for the OpenURL app

OpenURL: OpenURL.o SmartReadArgs.o
	$(SL) $(APP_LOPTS) FROM LIB:c.o OpenURL.o SmartReadArgs.o LIB $(LIBS) TO OpenURL

OpenURL.o: OpenURL.c SmartReadArgs.h $(ALL_DEP)
	$(SC) OpenURL.c $(APP_COPTS)

SmartReadArgs.o: SmartReadArgs.c SmartReadArgs.h
	$(SC) SmartReadArgs.c $(APP_COPTS)

# rules for the test app

Example: Example.o
	$(SL) $(APP_LOPTS) FROM LIB:c.o Example.o LIB $(LIBS) TO Example

Example.o: Example.c $(ALL_DEP)
	$(SC) Example.c $(APP_COPTS)

# misc rules

install: all
	Copy openurl.library LIBS:
	Copy OpenURL-Handler L:
	Copy Prefs/OpenURL SYS:Prefs

clean:
	Delete openurl.library OpenURL-Handler $(PREFS_APP) OpenURL Example \#?.o
