44
44
ARTIFACT_NAME = $($(ARTIFACT_ID ) _NAME)
45
45
ARTIFACT_VERSION = $($(ARTIFACT_ID ) _VERSION)
46
46
ARTIFACT_DEPENDENCIES = $(addprefix $(HOST ) ,$(DEPENDENCIES ) )
47
- ARTIFACT_DEP_LIST = $(addprefix $(HOST ) ,$(call uniq, $(DEPENDENCIES ) $(TEST_DEPENDENCIES ) $(HOST )$(ARTIFACT_ID ) ) )
48
47
49
48
ARTIFACT_BIN = $($(HOST )$(ARTIFACT_ID ) _BIN)
50
49
ARTIFACT_INC = $($(HOST )$(ARTIFACT_ID ) _INC)
@@ -60,7 +59,6 @@ ARTIFACT_SLIBLINK = $(LIBRARY_PREFIX)$(ARTIFACT_NAME)$(STATICLIB_EXT)
60
59
ARTIFACT_PC = $(ARTIFACT_BIN ) /$(ARTIFACT_NAME )$(PKGCONFIG_EXT )
61
60
ARTIFACT_DEPS = $(call dquery, OBJ, $(ARTIFACT_DEPENDENCIES ) )
62
61
ARTIFACT_CFLAGS = $(call query, CFLAGS, $(ARTIFACT_DEPENDENCIES ) $(HOST )$(ARTIFACT_ID ) )
63
- ARTIFACT_DEPFLAGS = $(call query, CFLAGS, $(ARTIFACT_DEP_LIST ) )
64
62
ARTIFACT_LDFLAGS = $(call query, LDFLAGS, $(ARTIFACT_DEPENDENCIES ) $(HOST )$(ARTIFACT_ID ) )
65
63
ARTIFACT_OBJFILES = $(call query, OBJ, $(ARTIFACT_DEPENDENCIES ) $(HOST )$(ARTIFACT_ID ) )
66
64
@@ -80,12 +78,19 @@ CXX_OBJ_TEST = $(patsubst %.cpp, $(ARTIFACT_BIN)/%.o, $(CXX_SRC_TEST)
80
78
CXX_OBJ_NOTEST = $(patsubst % .cpp, $(ARTIFACT_BIN ) /% .o, $(CXX_SRC_NOTEST ) )
81
79
CXX_OBJ_EXT = $(patsubst % .cpp, $(ARTIFACT_BIN ) /% .o, $(CXX_SRC_EXT ) )
82
80
CXX_OBJ = $(CXX_OBJ_MAIN ) $(CXX_OBJ_EXT )
81
+ CXX_OBJ_ALL = \
82
+ $(CXX_OBJ_MAIN ) \
83
+ $(CXX_OBJ_EXPORT ) \
84
+ $(CXX_OBJ_EXT ) \
85
+ $(CXX_OBJ_TEST ) \
86
+ $(CXX_OBJ_NOTEST )
83
87
84
88
ALL_HEADERS = $(call rwildcard, $(ARTIFACT_INC ) , * .h)
85
89
CXX_FILE = $(patsubst $(ARTIFACT_BIN ) /% .o,% .cpp, $(@ ) )
86
90
CXX_HDR_PATHS = $(foreach hdr,$(ARTIFACT_HEADERS ) ,$(ARTIFACT_INC ) /$(hdr ) )
87
91
CXX_HEADERS = $(foreach path,$(CXX_HDR_PATHS ) ,$(call rwildcard, $(path ) , * .h) )
88
92
CXX_INSTHEADERS = $(patsubst $(ARTIFACT_INC ) /% ,$(DESTDIR )$(INCDIR ) /% ,$(CXX_HEADERS ) )
93
+ DEP_FILE = $(patsubst % .o,% .d, $(@ ) )
89
94
90
95
BUILD_ALL = $(ARTIFACT_LIB ) $(ARTIFACT_SLIB ) $(ARTIFACT_PC )
91
96
@@ -98,41 +103,21 @@ DEP_CXX_FILE = $(patsubst $(ARTIFACT_BIN)/%.d,%.cpp,$(@))
98
103
DEP_DEP_FILE = $(patsubst $(ARTIFACT_BIN ) /% .d,% .o,$(@ ) )
99
104
100
105
.DEFAULT_GOAL = all
101
- .PHONY : compile depend dep_clean all install uninstall
106
+ .PHONY : compile all install uninstall
102
107
.PHONY : $(ARTIFACT_DEPS )
103
108
104
- # Dependencies
105
- dep_clean :
106
-
107
- $(DEP_CXX ) : dep_clean
108
- echo " dep [$( ARTIFACT_NAME) ] $( DEP_CXX_FILE) "
109
- mkdir -p $(dir $(@ ) )
110
- $(CXX ) -MM -MT " \$ $( $( ARTIFACT_ID) _BIN) /$( DEP_DEP_FILE) " -MF $(@ ) $(DEP_CXX_FILE ) $(CXXFLAGS ) $(INCLUDE ) $(ARTIFACT_DEPFLAGS )
111
-
112
- depend : $(DEP_CXX )
113
- $(foreach dep,$(ARTIFACT_DEP_LIST ) ,\
114
- $(if $($(dep ) _INC) , \
115
- $(eval REPLACEMENT = $(shell echo "$($(dep ) _INC) " | sed -E "s/\//\\\\\\\\\//g") ) \
116
- $(eval SED_RULES += s/$(REPLACEMENT ) /\$$$$\\($(dep ) _INC\\) /g; )\
117
- )\
118
- $(if $($(dep ) _BIN) , \
119
- $(eval REPLACEMENT = $(shell echo "$($(dep ) _BIN) " | sed -E "s/\//\\\\\\\\\//g") ) \
120
- $(eval SED_RULES += s/$(REPLACEMENT ) /\\$$$$\\($(dep ) _BIN\\) /g; )\
121
- )\
122
- )
123
- cat $(DEP_CXX ) | sed -E " $( SED_RULES) " > Makefile.d
124
-
109
+ # Compile dependencies
125
110
$(ARTIFACT_DEPS ) :
126
111
echo " make $( notdir $( $( @) _OBJ) ) "
127
112
$(MAKE ) -C " $( $( @) _PATH) " compile VERBOSE=" $( VERBOSE) " CONFIG=" $( CONFIG) " DEMO_TEST=" 0" BUILD_HOST=" $( BUILD_HOST) "
128
113
129
114
# Compilation
130
115
compile : $(ARTIFACT_OBJ )
131
116
132
- $(CXX_OBJ_MAIN ) $( CXX_OBJ_EXPORT ) $( CXX_OBJ_EXT ) $( CXX_OBJ_TEST ) $( CXX_OBJ_NOTEST ) :
117
+ $(CXX_OBJ_ALL ) :
133
118
echo " $( $( HOST) CXX) [$( ARTIFACT_NAME) ] $( CXX_FILE) "
134
119
mkdir -p $(dir $@ )
135
- $($(HOST ) CXX) -o $(@ ) -c $(CXX_FILE ) -fPIC $($(HOST ) CXXFLAGS) $(ARTIFACT_MFLAGS ) $($(HOST ) EXT_FLAGS) $(INCLUDE ) $(ARTIFACT_CFLAGS )
120
+ $($(HOST ) CXX) -o $(@ ) -c $(CXX_FILE ) -fPIC $($(HOST ) CXXFLAGS) $(ARTIFACT_MFLAGS ) $($(HOST ) EXT_FLAGS) $(INCLUDE ) $(ARTIFACT_CFLAGS ) -MMD -MP -MF $( DEP_FILE ) -MT $( @ )
136
121
137
122
# Producing large object files
138
123
$(ARTIFACT_OBJ ) : $(CXX_OBJ )
@@ -195,4 +180,4 @@ uninstall:
195
180
echo " Uninstall OK"
196
181
197
182
# Dependencies
198
- -include $(CURDIR ) /Makefile.d
183
+ -include $(foreach objfile, $( CXX_OBJ_ALL ) , $( patsubst % .o, % .d, $( objfile ) ) )
0 commit comments