Skip to content

Commit c5b1ca2

Browse files
authored
Merge pull request #1879 from nicolasnoble/make-refactor
Refactoring top Makefile.
2 parents 2b66690 + 0df90d8 commit c5b1ca2

File tree

2 files changed

+71
-42
lines changed

2 files changed

+71
-42
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ vsprojects/packages
3535
.Trash-1000/
3636

3737
# Linux files
38-
*.o
39-
*.dep
38+
deps/
39+
objs/
40+
bins/
4041
/pcsx-redux
4142
/exe2elf
4243
/exe2iso

Makefile

Lines changed: 68 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ SUPPORT_SRCS += src/supportpsx/adpcm.cc src/supportpsx/binloader.cc src/supportp
170170
SUPPORT_SRCS += third_party/fmt/src/os.cc third_party/fmt/src/format.cc
171171
SUPPORT_SRCS += third_party/ucl/src/n2e_99.c third_party/ucl/src/alloc.c
172172
SUPPORT_SRCS += $(wildcard third_party/iec-60908b/*.c)
173-
OBJECTS := third_party/luajit/src/libluajit.a
173+
LIBS := third_party/luajit/src/libluajit.a
174174

175175
TOOLS = exe2elf exe2iso modconv ps1-packer psyq-obj-parser
176176

@@ -189,7 +189,7 @@ endif
189189
endef
190190

191191
define CHECK_LIB
192-
ifeq ($(shell echo "int main(){}" | gcc -x c - -l$(1) -Wl,--no-as-needed -Wl,--unresolved-symbols=ignore-all -Wl,--no-undefined -o /dev/null >& /dev/null && echo true || echo false),true)
192+
ifeq ($(shell echo "int main(){}" | gcc -x c - -l$(1) -Wl,--no-as-needed -Wl,--unresolved-symbols=ignore-all -Wl,--no-undefined -o /dev/null 1> /dev/null 2> /dev/null && echo true || echo false),true)
193193
LDFLAGS += -l$(1)
194194
else
195195
CPPFLAGS += $(CPPFLAGS_lib_$(1))
@@ -207,27 +207,32 @@ LDFLAGS_PKGCONFIG := $(shell pkg-config --libs $(PACKAGES))
207207
CPPFLAGS += $(CPPFLAGS_PKGCONFIG)
208208
LDFLAGS += $(LDFLAGS_PKGCONFIG)
209209

210-
OBJECTS += $(patsubst %.c,%.o,$(filter %.c,$(SRCS)))
211-
OBJECTS += $(patsubst %.cc,%.o,$(filter %.cc,$(SRCS)))
212-
OBJECTS += $(patsubst %.cpp,%.o,$(filter %.cpp,$(SRCS)))
213-
OBJECTS += $(patsubst %.mm,%.o,$(filter %.mm,$(SRCS)))
214-
SUPPORT_OBJECTS := $(patsubst %.c,%.o,$(filter %.c,$(SUPPORT_SRCS)))
215-
SUPPORT_OBJECTS += $(patsubst %.cc,%.o,$(filter %.cc,$(SUPPORT_SRCS)))
216-
NONMAIN_OBJECTS := $(filter-out src/main/mainthunk.o,$(OBJECTS))
217-
IMGUI_OBJECTS := $(patsubst %.cpp,%.o,$(filter %.cpp,$(IMGUI_SRCS)))
218-
VIXL_OBJECTS := $(patsubst %.cc,%.o,$(filter %.cc,$(VIXL_SRCS)))
210+
OBJECTS += $(addprefix objs/$(BUILD)/,$(patsubst %.c,%.o,$(filter %.c,$(SRCS))))
211+
OBJECTS += $(addprefix objs/$(BUILD)/,$(patsubst %.cc,%.o,$(filter %.cc,$(SRCS))))
212+
OBJECTS += $(addprefix objs/$(BUILD)/,$(patsubst %.cpp,%.o,$(filter %.cpp,$(SRCS))))
213+
OBJECTS += $(addprefix objs/$(BUILD)/,$(patsubst %.mm,%.o,$(filter %.mm,$(SRCS))))
214+
SUPPORT_OBJECTS := $(addprefix objs/$(BUILD)/,$(patsubst %.c,%.o,$(filter %.c,$(SUPPORT_SRCS))))
215+
SUPPORT_OBJECTS += $(addprefix objs/$(BUILD)/,$(patsubst %.cc,%.o,$(filter %.cc,$(SUPPORT_SRCS))))
216+
NONMAIN_OBJECTS := $(filter-out objs/$(BUILD)/src/main/mainthunk.o,$(OBJECTS))
217+
IMGUI_OBJECTS := $(addprefix objs/$(BUILD)/,$(patsubst %.cpp,%.o,$(filter %.cpp,$(IMGUI_SRCS))))
218+
VIXL_OBJECTS := $(addprefix objs/$(BUILD)/,$(patsubst %.cc,%.o,$(filter %.cc,$(VIXL_SRCS))))
219219
$(IMGUI_OBJECTS): EXTRA_CPPFLAGS := $(IMGUI_CPPFLAGS)
220220

221221
TESTS_SRC := $(call rwildcard,tests/,*.cc)
222222
TESTS := $(patsubst %.cc,%,$(TESTS_SRC))
223223

224+
DEPS += $(addprefix deps/$(BUILD)/,$(patsubst %.c,%.dep,$(filter %.c,$(SRCS))))
225+
DEPS += $(addprefix deps/$(BUILD)/,$(patsubst %.cc,%.dep,$(filter %.cc,$(SRCS))))
226+
DEPS += $(addprefix deps/$(BUILD)/,$(patsubst %.cpp,%.dep,$(filter %.cpp,$(SRCS))))
227+
224228
CP ?= cp
225229
MKDIRP ?= mkdir -p
226230

227231
all: check_submodules dep $(TARGET)
228232

229233
ifeq ($(HAS_SUBMODULES),true)
230234
check_submodules:
235+
@true
231236

232237
else
233238
check_submodules:
@@ -275,39 +280,56 @@ third_party/luajit/src/libluajit.a:
275280
$(MAKE) $(MAKEOPTS) -C third_party/luajit/src amalg CC=$(CC) BUILDMODE=static CFLAGS=$(LUAJIT_CFLAGS) LDFLAGS=$(LUAJIT_LDFLAGS) XCFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT" MACOSX_DEPLOYMENT_TARGET=10.15
276281
endif
277282

278-
$(TARGET): $(OBJECTS)
279-
$(LD) -o $@ $(OBJECTS) $(LDFLAGS)
283+
bins/$(BUILD)/$(TARGET): $(OBJECTS) $(LIBS)
284+
@$(MKDIRP) $(dir $@)
285+
$(LD) -o $@ $(OBJECTS) $(LIBS) $(LDFLAGS)
286+
287+
$(TARGET): bins/$(BUILD)/$(TARGET)
288+
$(CP) $< $@
280289

281-
%.o: %.c
290+
objs/$(BUILD)/%.o: %.c
291+
@$(MKDIRP) $(dir $@)
282292
$(CC) -c -o $@ $< $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CFLAGS)
283293

284-
%.o: %.cc
294+
objs/$(BUILD)/%.o: %.cc
295+
@$(MKDIRP) $(dir $@)
285296
$(CXX) -c -o $@ $< $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS)
286297

287-
%.o: %.cpp
298+
objs/$(BUILD)/%.o: %.cpp
299+
@$(MKDIRP) $(dir $@)
288300
$(CXX) -c -o $@ $< $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS)
289301

290-
%.o: %.mm
302+
objs/$(BUILD)/%.o: %.mm
303+
@$(MKDIRP) $(dir $@)
291304
$(CC) -c -o $@ $< $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CFLAGS)
292305

293-
%.dep: third_party/luajit/src/luajit.h %.c
294-
$(CC) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CFLAGS) -M -MT $(addsuffix .o, $(basename $@)) -MF $@ $<
306+
deps/$(BUILD)/%.dep: third_party/luajit/src/luajit.h %.c
307+
@$(MKDIRP) $(dir $@)
308+
$(CC) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CFLAGS) -M -MT $(addprefix objs/$(BUILD)/,$(addsuffix .o,$(basename $@))) -MF $@ $<
309+
310+
deps/$(BUILD)/%.dep: third_party/luajit/src/luajit.h %.cc
311+
@$(MKDIRP) $(dir $@)
312+
$(CXX) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS) -M -MT $(addprefix objs/$(BUILD)/,$(addsuffix .o,$(basename $@))) -MF $@ $<
295313

296-
%.dep: third_party/luajit/src/luajit.h %.cc
297-
$(CXX) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS) -M -MT $(addsuffix .o, $(basename $@)) -MF $@ $<
314+
deps/$(BUILD)/%.dep: third_party/luajit/src/luajit.h %.cpp
315+
@$(MKDIRP) $(dir $@)
316+
$(CXX) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS) -M -MT $(addprefix objs/$(BUILD)/,$(addsuffix .o,$(basename $@))) -MF $@ $<
298317

299-
%.dep: third_party/luajit/src/luajit.h %.cpp
300-
$(CXX) $(CPPFLAGS) $(EXTRA_CPPFLAGS) $(CXXFLAGS) -M -MT $(addsuffix .o, $(basename $@)) -MF $@ $<
318+
objs/$(BUILD)/gtest-all.o: $(wildcard third_party/googletest/googletest/src/*.cc)
319+
@$(MKDIRP) $(dir $@)
320+
$(CXX) -O3 -g $(CXXFLAGS) -Ithird_party/googletest/googletest -Ithird_party/googletest/googletest/include -c third_party/googletest/googletest/src/gtest-all.cc -o objs/$(BUILD)/gtest-all.o
321+
322+
objs/$(BUILD)/gtest_main.o: third_party/googletest/googletest/src/gtest_main.cc
323+
@$(MKDIRP) $(dir $@)
324+
$(CXX) -O3 -g $(CXXFLAGS) -Ithird_party/googletest/googletest -Ithird_party/googletest/googletest/include -c third_party/googletest/googletest/src/gtest_main.cc -o objs/$(BUILD)/gtest_main.o
301325

302326
clean:
303-
rm -f $(OBJECTS) $(TARGET) $(DEPS) gtest-all.o gtest_main.o
327+
rm -f $(OBJECTS) $(TOOLS) $(TARGET) bins/$(BUILD)/$(TARGET) $(addprefix bins/$(BUILD)/,$(TOOLS)) $(DEPS) objs/$(BUILD)/gtest-all.o objs/$(BUILD)/gtest_main.o
304328
$(MAKE) -C third_party/luajit clean MACOSX_DEPLOYMENT_TARGET=10.15
305329

306-
gtest-all.o: $(wildcard third_party/googletest/googletest/src/*.cc)
307-
$(CXX) -O3 -g $(CXXFLAGS) -Ithird_party/googletest/googletest -Ithird_party/googletest/googletest/include -c third_party/googletest/googletest/src/gtest-all.cc
308-
309-
gtest_main.o: third_party/googletest/googletest/src/gtest_main.cc
310-
$(CXX) -O3 -g $(CXXFLAGS) -Ithird_party/googletest/googletest -Ithird_party/googletest/googletest/include -c third_party/googletest/googletest/src/gtest_main.cc
330+
cleanall:
331+
rm -rf bins objs deps $(TOOLS) $(TARGET)
332+
$(MAKE) -C third_party/luajit clean MACOSX_DEPLOYMENT_TARGET=10.15
311333

312334
gitclean:
313335
git clean -f -d -x
@@ -327,39 +349,45 @@ regen-i18n:
327349
rm pcsx-src-list.txt
328350
$(foreach l,$(LOCALES),$(call msgmerge,$(l)))
329351

330-
pcsx-redux-tests: $(foreach t,$(TESTS),$(t).o) $(NONMAIN_OBJECTS) gtest-all.o gtest_main.o
331-
$(LD) -o pcsx-redux-tests $(NONMAIN_OBJECTS) gtest-all.o gtest_main.o $(foreach t,$(TESTS),$(t).o) -Ithird_party/googletest/googletest/include $(LDFLAGS)
352+
bins/$(BUILD)/pcsx-redux-tests: $(foreach t,$(TESTS),$(t).o) $(NONMAIN_OBJECTS) $(LIBS) objs/$(BUILD)/gtest-all.o objs/$(BUILD)/gtest_main.o
353+
@$(MKDIRP) $(dir $@)
354+
$(LD) -o bins/$(BUILD)/pcsx-redux-tests $(NONMAIN_OBJECTS) $(LIBS) objs/$(BUILD)/gtest-all.o objs/$(BUILD)/gtest_main.o $(foreach t,$(TESTS),$(t).o) -Ithird_party/googletest/googletest/include $(LDFLAGS)
355+
356+
pcsx-redux-tests: check_submodules bins/$(BUILD)/pcsx-redux-tests
357+
$(CP) bins/$(BUILD)/pcsx-redux-tests pcsx-redux-tests
332358

333359
runtests: pcsx-redux-tests
334360
./pcsx-redux-tests
335361

336362
define TOOLDEF
337-
$(1): $(SUPPORT_OBJECTS) tools/$(1)/$(1).o
338-
$(LD) -o $(1) $(CPPFLAGS) $(CXXFLAGS) $(SUPPORT_OBJECTS) tools/$(1)/$(1).o -static -lz
363+
bins/$(BUILD)/$(1): $(SUPPORT_OBJECTS) objs/$(BUILD)/tools/$(1)/$(1).o
364+
@$(MKDIRP) $(dir bins/$(BUILD)/$(1))
365+
$(LD) -o bins/$(BUILD)/$(1) $(CPPFLAGS) $(CXXFLAGS) $(SUPPORT_OBJECTS) objs/$(BUILD)/tools/$(1)/$(1).o -static -lz
366+
367+
$(1): check_submodules bins/$(BUILD)/$(1)
368+
$(CP) bins/$(BUILD)/$(1) $(1)
339369

340370
endef
341371

342372
$(foreach tool,$(TOOLS),$(eval $(call TOOLDEF,$(tool))))
343373

344-
tools: $(TOOLS)
374+
tools: check_submodules dep $(TOOLS)
345375

346-
.PHONY: all dep clean gitclean regen-i18n runtests openbios install strip appimage tools
376+
dep: check_submodules $(DEPS)
347377

348-
DEPS += $(patsubst %.c,%.dep,$(filter %.c,$(SRCS)))
349-
DEPS += $(patsubst %.cc,%.dep,$(filter %.cc,$(SRCS)))
350-
DEPS += $(patsubst %.cpp,%.dep,$(filter %.cpp,$(SRCS)))
351-
352-
dep: $(DEPS)
378+
.PHONY: all dep clean gitclean regen-i18n runtests openbios install strip appimage tools $(TOOLS) $(TARGET)
353379

354380
ifneq ($(MAKECMDGOALS), regen-i18n)
355381
ifneq ($(MAKECMDGOALS), clean)
382+
ifneq ($(MAKECMDGOALS), cleanall)
356383
ifneq ($(MAKECMDGOALS), gitclean)
357384
ifeq ($(HAS_SUBMODULES), true)
358385
-include $(DEPS)
359386
endif
360387
endif
361388
endif
362389
endif
390+
endif
363391

364392
third_party/luajit/src/lua.hpp: third_party/luajit/src/luajit.h
365393

0 commit comments

Comments
 (0)