[project @ 1999-07-28 14:57:21 by simonmar]
[ghc-hetmet.git] / mk / target.mk
index 3011f21..93469dc 100644 (file)
@@ -346,6 +346,26 @@ $(LIBRARY) :: $(LIBOBJS)
 endif
 
 #----------------------------------------
+#      Building Win32 DLLs
+#
+ifeq "$(way)" "dll"
+
+ifeq "$(DLL_NAME)" ""
+DLL_NAME = $(patsubst %.a, %.dll, $(subst lib,,$(LIBRARY)))
+endif
+
+all :: $(DLL_NAME)
+
+ifeq "$(DLL_IMPLIB_NAME)" ""
+DLL_IMPLIB_NAME = $(patsubst %.a, %_imp.a, $(LIBRARY))
+endif
+
+$(DLL_NAME) :: $(LIBRARY)
+       $(BLD_DLL) --output-lib $(DLL_IMPLIB_NAME) -o $(DLL_NAME) $(LIBRARY) $(BLD_DLL_OPTS) 
+       touch dLL_ifs.hi
+endif
+
+#----------------------------------------
 #      Script programs
 
 ifneq "$(SCRIPT_PROG)" ""
@@ -459,11 +479,12 @@ endif
 # For each of these variables that is defined, you
 # get one install rule
 #
-#      INSTALL_PROGS     executable programs in $(bindir)
-#      INSTALL_SCRIPTS   executable scripts in $(bindir)
-#      INSTALL_LIBS      platform-dependent libraries in $(libdir) (ranlib'ed)
-#      INSTALL_LIBEXECS  platform-dependent execs in $(libdir)
-#      INSTALL_DATAS     platform-independent files in $(datadir)
+#      INSTALL_PROGS        executable programs in $(bindir)
+#      INSTALL_SCRIPTS      executable scripts in $(bindir)
+#      INSTALL_LIBS         platform-dependent libraries in $(libdir) (ranlib'ed)
+#      INSTALL_LIB_SCRIPTS  platform-dependent scripts   in $(libdir)
+#      INSTALL_LIBEXECS     platform-dependent execs in $(libdir)
+#      INSTALL_DATAS        platform-independent files in $(datadir)
 #
 # If the installation directory variable is undefined, the install rule simply
 # emits a suitable error message.
@@ -499,8 +520,14 @@ ifneq "$(INSTALL_PROGS)" ""
 install:: $(INSTALL_PROGS)
        @$(INSTALL_DIR) $(bindir)
        @for i in $(INSTALL_PROGS); do \
-               echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i$(exeext) $(bindir); \
-               $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i$(exeext) $(bindir);      \
+               case $$i in \
+                 *.dll) \
+                   echo $(INSTALL_DATA) $(INSTALL_BIN_OPTS) $$i $(bindir); \
+                   $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir) ;; \
+                 *) \
+                   echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i$(exeext) $(bindir); \
+                   $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i$(exeext) $(bindir) ;;  \
+               esac; \
        done
 endif
 
@@ -521,18 +548,18 @@ ifneq "$(BIN_DIST)" "1"
           echo '$$'"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
           echo '$$'"datadir='$(datadir)';"                          >> $$i.tmp ; \
           cat  $$i                                                >> $$i.tmp ; \
-          echo $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_BIN_OPTS)) $$i.tmp $(bindir)/$$i ;    \
-          $(INSTALL_PROGRAM) $(filter-out -s,$(INSTALL_BIN_OPTS)) $$i.tmp $(bindir)/$$i ; \
+          echo $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i.tmp $(bindir)/$$i ;    \
+          $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i.tmp $(bindir)/$$i ; \
           $(RM) $$i.tmp; \
        done
 else
        for i in $(INSTALL_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(bindir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(bindir)/$$i; \
        done
 endif
 else
        for i in $(INSTALL_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(bindir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(bindir); \
        done
 endif
 endif
@@ -550,18 +577,18 @@ ifneq "$(BIN_DIST)" "1"
           echo '$$'"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
           echo '$$'"datadir='$(datadir)';"                          >> $$i.tmp ; \
           cat  $$i                                                >> $$i.tmp ; \
-          echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir) ;    \
-          $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libdir)/$$i ; \
+          echo $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libdir)/$$i ;    \
+          $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i.tmp $(libdir)/$$i ; \
           $(RM) $$i.tmp; \
        done
 else
        for i in $(INSTALL_LIB_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libdir)/$$i ; \
        done
 endif
 else
        for i in $(INSTALL_LIB_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libdir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libdir); \
        done
 endif
 endif
@@ -579,18 +606,18 @@ ifneq "$(BIN_DIST)" "1"
           echo '$$'"libexecdir='$(libexecdir)';"                    >> $$i.tmp ; \
           echo '$$'"datadir='$(datadir)';"                          >> $$i.tmp ; \
           cat  $$i                                                >> $$i.tmp ; \
-          echo $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir) ;    \
-          $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i.tmp $(libexecdir)/$$i ; \
+          echo $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libexecdir) ;    \
+          $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i.tmp $(libexecdir)/$$i ; \
           $(RM) $$i.tmp; \
        done
 else
        for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libexecdir); \
        done
 endif
 else
        for i in $(INSTALL_LIBEXEC_SCRIPTS); do \
-               $(INSTALL_PROGRAM) $(INSTALL_OPTS) $$i $(libexecdir); \
+               $(INSTALL_SCRIPT) $(INSTALL_OPTS) $$i $(libexecdir); \
        done
 endif
 endif
@@ -603,6 +630,8 @@ install:: $(INSTALL_LIBS)
                  *.a) \
                    $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
                    $(RANLIB) $(libdir)/`basename $$i` ;; \
+                 *.dll) \
+                   $(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(libdir) ;; \
                  *) \
                    $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
                esac; \