X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Ftarget.mk;h=93469dc6f95c416f85dbb8a3866633bf6177ae15;hb=ecdc4ca6c18d7ec2160ec104b9c94dbcb866ef9d;hp=3011f21eb032b0ca96e4b503b41e8f072c8dc321;hpb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;p=ghc-hetmet.git diff --git a/mk/target.mk b/mk/target.mk index 3011f21..93469dc 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -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; \