diff --git a/nw/GNUmakefile b/nw/GNUmakefile index 3ef14c2..0279229 100644 --- a/nw/GNUmakefile +++ b/nw/GNUmakefile @@ -76,10 +76,7 @@ ifdef METROWERKS else CC = $(CROSSPREFIX)gcc endif -CP = cp -afv -MD = mkdir -RD = rm -fr -# RM = rm -f + # Here you can find a native Win32 binary of the original awk: # http://www.gknw.net/development/prgtools/awk-20100523.zip AWK = awk @@ -89,6 +86,34 @@ AWK = awk MPKXDC = mkxdc ZIP = zip -qzr9 +# Platform-dependent helper tool macros +ifeq ($(findstring /sh,$(SHELL)),/sh) +DEL = rm -f $1 +RMDIR = rm -fr $1 +MKDIR = mkdir -p $1 +COPY = -cp -afv $1 $2 +#COPYR = -cp -afr $1/* $2 +COPYR = -rsync -aC $1/* $2 +TOUCH = touch $1 +CAT = cat +ECHONL = echo "" +DL = ' +else +ifeq "$(OS)" "Windows_NT" +DEL = -del 2>NUL /q /f $(subst /,\,$1) +RMDIR = -rd 2>NUL /q /s $(subst /,\,$1) +else +DEL = -del 2>NUL $(subst /,\,$1) +RMDIR = -deltree 2>NUL /y $(subst /,\,$1) +endif +MKDIR = -md 2>NUL $(subst /,\,$1) +COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2) +COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2) +TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,, +CAT = type +ECHONL = $(ComSpec) /c echo. +endif + # LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH)) LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH)) @@ -120,13 +145,14 @@ else endif else LD = $(CROSSPREFIX)nlmconv -LDFLAGS = -T +LDFLAGS = -UT AR = $(CROSSPREFIX)ar ARFLAGS = -cq LIBEXT = a RANLIB = $(CROSSPREFIX)ranlib CFLAGS += -m32 -CFLAGS += -fno-builtin -fpcc-struct-return -fno-strict-aliasing +CFLAGS += -fno-builtin -fpcc-struct-return +CFLAGS += -fno-strict-aliasing CFLAGS += -Wall # -pedantic #CFLAGS += -Wno-pointer-sign ifeq ($(LIBARCH),LIBC) @@ -185,13 +211,6 @@ ifdef XDCOPT XDCDATA = $(OBJDIR)/$(TARGET).xdc endif -ifeq ($(findstring /sh,$(SHELL)),/sh) -DL = ' -DS = / -else -DS = \\ -endif - vpath %.c . ../src # include Makefile.inc to get CSOURCES define @@ -223,67 +242,68 @@ $(OBJDIR)/%.o: %.c # @echo Compiling $< $(CC) $(CFLAGS) -c $< -o $@ -$(OBJDIR)/version.inc: ../include/libssh2.h $(OBJDIR) +$(OBJDIR)/version.inc: ../get_ver.awk ../include/libssh2.h $(OBJDIR) @echo Creating $@ - @$(AWK) -f ../get_ver.awk $< > $@ + @$(AWK) -f $^ > $@ dist: all $(DISTDIR) $(DISTDIR)/readme.txt - @-$(MD) $(DISTDIR)$(DS)bin - @-$(CP) ../AUTHORS $(DISTDIR) - @-$(CP) ../COPYING $(DISTDIR) - @-$(CP) ../INSTALL $(DISTDIR) - @-$(CP) ../README $(DISTDIR) - @-$(CP) ../RELEASE-NOTES $(DEVLDIR) - @$(CP) $(TARGET).nlm $(DISTDIR)/bin + @$(call MD, $(DISTDIR)/bin) + @$(call CP, ../AUTHORS, $(DISTDIR)) + @$(call CP, ../COPYING, $(DISTDIR)) + @$(call CP, ../INSTALL, $(DISTDIR)) + @$(call CP, ../README, $(DISTDIR)) + @$(call CP, ../RELEASE-NOTES, $(DISTDIR)) + @$(call CP, $(TARGET).nlm, $(DISTDIR)/bin) @echo Creating $(DISTARC) @$(ZIP) $(DISTARC) $(DISTDIR)/* < $(DISTDIR)/readme.txt dev: all $(DEVLDIR) $(DEVLDIR)/readme.txt - @-$(MD) $(DEVLDIR)$(DS)bin - @-$(MD) $(DEVLDIR)$(DS)include - @-$(MD) $(DEVLDIR)$(DS)nw - @-$(CP) ../AUTHORS $(DISTDIR) - @-$(CP) ../COPYING $(DISTDIR) - @-$(CP) ../INSTALL $(DEVLDIR) - @-$(CP) ../README $(DEVLDIR) - @-$(CP) ../RELEASE-NOTES $(DEVLDIR) - @$(CP) $(TARGET).nlm $(DEVLDIR)/bin - @$(CP) ../include/*.h $(DEVLDIR)/include - @$(CP) libssh2_config.h $(DEVLDIR)/include - @$(CP) $(TARGET).$(LIBEXT) $(DEVLDIR)/nw + @$(call MD, $(DEVLDIR)/bin) + @$(call MD, $(DEVLDIR)/include) + @$(call MD, $(DEVLDIR)/nw) + @$(call CP, ../AUTHORS, $(DEVLDIR)) + @$(call CP, ../COPYING, $(DEVLDIR)) + @$(call CP, ../INSTALL, $(DEVLDIR)) + @$(call CP, ../README, $(DEVLDIR)) + @$(call CP, ../RELEASE-NOTES, $(DEVLDIR)) + @$(call CP, ../include/*.h, $(DEVLDIR)/include) + @$(call CP, libssh2_config.h, $(DEVLDIR)/include) + @$(call CP, $(TARGET).nlm, $(DEVLDIR)/bin) + @$(call CP, $(TARGET).imp, $(DEVLDIR)/nw) + @$(call CP, $(TARGET).$(LIBEXT), $(DEVLDIR)/nw) @echo Creating $(DEVLARC) @$(ZIP) $(DEVLARC) $(DEVLDIR)/* < $(DEVLDIR)/readme.txt distclean: clean - -$(RD) $(DISTDIR) - -$(RM) $(DISTARC) + $(call RMDIR, $(DISTDIR)) + $(call DEL, $(DISTARC)) devclean: clean - -$(RD) $(DEVLDIR) - -$(RM) $(DEVLARC) + $(call RMDIR, $(DEVLDIR)) + $(call DEL, $(DEVLARC)) objclean: - -$(RD) $(OBJDIR) + $(call RMDIR, $(OBJDIR)) testclean: clean $(MAKE) -C test clean clean: objclean - -$(RM) libssh2_config.h - -$(RM) $(TARGET).nlm $(TARGET).$(LIBEXT) $(TARGET).imp + $(call DEL, libssh2_config.h) + $(call DEL, $(TARGET).*) $(OBJDIR): - @$(MD) $@ + @$(call MKDIR, $@) $(DISTDIR): - @$(MD) $@ + @$(call MKDIR, $@) $(DEVLDIR): - @$(MD) $@ + @$(call MKDIR, $@) $(TARGET).$(LIBEXT): $(OBJS) @echo Creating $@ - @-$(RM) $@ + @$(call DEL, $@) @$(AR) $(ARFLAGS) $@ $^ ifdef RANLIB @$(RANLIB) $@ @@ -291,7 +311,7 @@ endif $(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(TARGET).imp $(OBJL) $(XDCDATA) @echo Linking $@ - @-$(RM) $@ + @$(call DEL, $@) @$(LD) $(LDFLAGS) $< $(OBJDIR)/%.xdc: GNUmakefile diff --git a/nw/test/GNUmakefile b/nw/test/GNUmakefile index a398272..6abc689 100644 --- a/nw/test/GNUmakefile +++ b/nw/test/GNUmakefile @@ -69,10 +69,7 @@ ifdef METROWERKS else CC = $(CROSSPREFIX)gcc endif -CP = cp -afv -MD = mkdir -RD = rm -fr -# RM = rm -f + # Here you can find a native Win32 binary of the original awk: # http://www.gknw.net/development/prgtools/awk-20100523.zip AWK = awk @@ -81,6 +78,34 @@ AWK = awk # http://www.gknw.net/development/prgtools/mkxdc.zip MPKXDC = mkxdc +# Platform-dependent helper tool macros +ifeq ($(findstring /sh,$(SHELL)),/sh) +DEL = rm -f $1 +RMDIR = rm -fr $1 +MKDIR = mkdir -p $1 +COPY = -cp -afv $1 $2 +#COPYR = -cp -afr $1/* $2 +COPYR = -rsync -aC $1/* $2 +TOUCH = touch $1 +CAT = cat +ECHONL = echo "" +DL = ' +else +ifeq "$(OS)" "Windows_NT" +DEL = -del 2>NUL /q /f $(subst /,\,$1) +RMDIR = -rd 2>NUL /q /s $(subst /,\,$1) +else +DEL = -del 2>NUL $(subst /,\,$1) +RMDIR = -deltree 2>NUL /y $(subst /,\,$1) +endif +MKDIR = -md 2>NUL $(subst /,\,$1) +COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2) +COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2) +TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,, +CAT = type +ECHONL = $(ComSpec) /c echo. +endif + # LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH)) LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH)) @@ -111,12 +136,13 @@ else endif else LD = nlmconv -LDFLAGS = -T +LDFLAGS = -UT AR = ar ARFLAGS = -cq LIBEXT = a CFLAGS += -m32 -CFLAGS += -fno-builtin -fpcc-struct-return -fno-strict-aliasing +CFLAGS += -fno-builtin -fpcc-struct-return +CFLAGS += -fno-strict-aliasing CFLAGS += -Wall # -pedantic ifeq ($(LIBARCH),LIBC) PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o @@ -180,13 +206,6 @@ ifeq ($(MTSAFE),NO) XDCOPT = -u endif -ifeq ($(findstring /sh,$(SHELL)),/sh) -DL = ' -DS = / -else -DS = \\ -endif - vpath %.c $(SAMPLES) .PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc @@ -200,22 +219,22 @@ $(OBJDIR)/%.o: %.c # @echo Compiling $< $(CC) $(CFLAGS) -c $< -o $@ -$(OBJDIR)/version.inc: ../../include/libssh2.h $(OBJDIR) +$(OBJDIR)/version.inc: ../../get_ver.awk ../../include/libssh2.h $(OBJDIR) @echo Creating $@ - @$(AWK) -f ../../get_ver.awk $< > $@ + @$(AWK) -f $^ > $@ objclean: - -$(RD) $(OBJDIR) + $(call RMDIR, $(OBJDIR)) clean: objclean - -$(RM) $(TARGETS) + $(foreach f, $(TARGETS), $(call DEL, $(f))) $(OBJDIR): - @$(MD) $@ + @$(call MKDIR, $@) %.nlm: $(OBJDIR)/%.def $(OBJDIR)/%.o $(OBJDIR)/%.xdc @echo Linking $@ - @-$(RM) $@ + @$(call DEL, $@) @$(LD) $(LDFLAGS) $< $(OBJDIR)/%.xdc: GNUmakefile