From f86c857a9181af3a9140a50e08acadeb66840cbd Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Thu, 30 Aug 2007 19:54:42 +0400 Subject: [PATCH] Eye-candy bits related to subdirs --- clock+wow32/Winemake.include | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/clock+wow32/Winemake.include b/clock+wow32/Winemake.include index d483b52..545a68c 100644 --- a/clock+wow32/Winemake.include +++ b/clock+wow32/Winemake.include @@ -40,7 +40,7 @@ CLEAN_FILES = y.tab.c y.tab.h lex.yy.c core *.orig *.rej \ \\\#*\\\# *~ *% .\\\#* clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) - $(call qpretty,CLEAN $(CURDIR)) + $(call qpretty,CLEAN $(if $(curdir),$(curdir),.)) $(Q)$(RM) $(CLEAN_FILES) $(SUBDIRS:%=%/__clean__): FORCE @@ -49,6 +49,10 @@ $(SUBDIRS:%=%/__clean__): FORCE .PHONY : FORCE +ifeq ($(MAKELEVEL),0) +export TOP := $(CURDIR) +endif + # ============================================================================= # canonicalize a name @@ -60,6 +64,7 @@ canonicalize = $(subst -,_,$(subst .,_,$1)) *C = $(call canonicalize,$*) @C = $(call canonicalize,$@) +# handy variables 1C_SRC = $($(1C)_SRC) @C_LDFLAGS=$($(@C)_LDFLAGS) @C_DLLS = $($(@C)_DLLS) @@ -67,6 +72,13 @@ canonicalize = $(subst -,_,$(subst .,_,$1)) @C_LINK = $($(@C)_LINK) +# $! == eye-candy $@ +curdir := $(patsubst $(TOP)%,%,$(CURDIR)) +curdir := $(patsubst /%,%,$(curdir)) +curdir := $(curdir)$(if $(curdir),/) +! = $(curdir)$@ +1! = $(curdir)$1 + # extract X-sources from sources list # UC: $(call __c-src, hello.c hi.cpp ...) -> hello.o __src-c = $(filter %.c,$1) @@ -124,7 +136,7 @@ $1 : $$($(1C)_OBJS) $(1C)_SRC_UNKNOWN:=$$(call src-unknown,$1) __SRC_UNKNOWN += $$($(1C)_SRC_UNKNOWN) clean:: - $$(call qpretty,CLEAN $1) + $$(call qpretty,CLEAN $(1!)) $(Q)$(RM) $$($(1C)_OBJS) $1.so $1 endef @@ -164,13 +176,13 @@ cmd = @$(echo-cmd) $(cmd_$(1)) # ============================================================================= # Rules -quiet_cmd_c_c = CC $@ +quiet_cmd_c_c = CC $! cmd_c_c = $(CC) -c $(CFLAGS) $(CEXTRA) $(DEFINCL) -o $@ $< -quiet_cmd_cxx_c = C++ $@ +quiet_cmd_cxx_c = C++ $! cmd_cxx_c = $(CXX) -c $(CXXFLAGS) $(CXXEXTRA) $(DEFINCL) -o $@ $< -quiet_cmd_rc_x = RC $@ +quiet_cmd_rc_x = RC $! cmd_rc_x = $(RC) $(RCFLAGS) $(RCEXTRA) $(DEFINCL) -fo$@ $< @@ -189,13 +201,13 @@ $(foreach ext,cpp cxx cc C c++,$(eval $(call rule_cxx_ext,$(ext)))) DEFLIB := $(LIBRARY_PATH) $(LIBRARIES) $(DLL_PATH) -quiet_cmd_link_exe = EXE $@ +quiet_cmd_link_exe = EXE $! define cmd_link_exe $(@C_LINK) $(@C_LDFLAGS) -o $@.so $+ $(DEFLIB) $(@C_DLLS:%=-l%) $(@C_LIBS:%=-l%) && \ echo -e '#!/bin/sh\n\nexec wine `dirname $$0`/`basename $$0`.so\n' > $@ && chmod a+x $@ endef -quiet_cmd_link_dll = DLL $@ +quiet_cmd_link_dll = DLL $! define cmd_link_dll $(@C_LINK) $(@C_LDFLAGS) -shared -o $@.so $+ $(DEFLIB) $(@C_DLLS:%=-l%) $(@C_LIBS:%=-l%) && \ $(LN_S) $(@F).so $(@D)/$(@F:.so=) -- 2.11.4.GIT