Skip to content
This repository has been archived by the owner on Sep 21, 2021. It is now read-only.

Commit

Permalink
mk: reformat object and header lists to be alphabetically sorted, one…
Browse files Browse the repository at this point in the history
… on each line, and don't rebuild C files when a C++ header changes
  • Loading branch information
misson20000 committed Aug 22, 2018
1 parent e1070eb commit 14df0dc
Show file tree
Hide file tree
Showing 3 changed files with 196 additions and 8 deletions.
17 changes: 12 additions & 5 deletions mk/transistor.mk
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
# LIBTRANSISTOR

libtransistor_OBJECT_NAMES := crt0_common.o svc.o ipc.o tls.o util.o ipc/sm.o ipc/bsd.o ipc/fs.o ipc/fs/ifilesystem.o ipc/fs/ifile.o ipc/fs/idirectory.o ipc/nv.o ipc/hid.o ipc/ro.o ipc/nifm.o hid.o ipc/vi.o display/binder.o display/parcel.o display/surface.o gpu/gpu.o ipc/am.o display/graphic_buffer_queue.o display/display.o gfx/blit.o ipc/time.o syscalls/syscalls.o syscalls/fd.o syscalls/sched.o syscalls/socket.o lz4.o squashfs/cache.o squashfs/decompress.o squashfs/dir.o squashfs/file.o squashfs/fs.o squashfs/hash.o squashfs/nonstd-pread.o squashfs/nonstd-stat.o squashfs/stack.o squashfs/swap.o squashfs/table.o squashfs/traverse.o squashfs/util.o squashfs/xattr.o fs/blobfd.o fs/squashfs.o fs/mountfs.o fs/fspfs.o fs/fs.o ipc/audio.o ipc/bpc.o ipcserver.o strtold.o ipc/pm.o alloc_pages.o address_space.o loader_config.o ipc/usb.o ipc/usb/ds/interface.o ipc/usb/ds/endpoint.o usb_serial.o mutex.o tls_support.o thread.o ld/ld.o ld/elf.o ld/relocate.o ld/resolve.o ld/discover.o ld/loader/nro_via_ldr_ro.o ld/loader/nro_via_svc.o sha256.o ipc/fatal.o cpp/types.o cpp/ipc/hid.o cpp/svc.o cpp/ipcserver.o cpp/ipc/sm.o ipc/twili.o waiter.o cpp/waiter.o cpp/ipc/usb_ds.o cpp/ipcclient.o ld/dlfcn.o syscalls/phal.o ld/loader/elf.o environment.o cpp/address_space.o
include mk/transistor_objects.mk
libtransistor_OBJECT_FILES := $(addprefix $(BUILD_DIR)/transistor/,$(libtransistor_OBJECT_NAMES))
libtransistor_CPP_OBJECT_FILES := $(addprefix $(BUILD_DIR)/transistor/cpp/,$(libtransistor_CPP_OBJECT_NAMES))

libtransistor_WARNINGS := -Wall -Wextra -Werror-implicit-function-declaration -Wno-unused-parameter -Wno-unused-command-line-argument -Werror-thread-safety -Werror-return-type -Werror-overloaded-virtual

libtransistor_BUILD_DEPS := $(DIST_TRANSISTOR_HEADERS)
libtransistor_CPP_BUILD_DEPS := $(DIST_TRANSISTOR_CPP_HEADERS)

# ARCHIVE RULES

libtransistor_TARGET_NRO := $(BUILD_DIR)/transistor/libtransistor.nro.a
libtransistor_TARGET_LIB_NRO := $(BUILD_DIR)/transistor/libtransistor.lib.nro.a
libtransistor_TARGET_NSO := $(BUILD_DIR)/transistor/libtransistor.nso.a

$(libtransistor_TARGET_NRO): $(BUILD_DIR)/transistor/crt0.nro.o $(libtransistor_OBJECT_FILES)
$(libtransistor_TARGET_NRO): $(BUILD_DIR)/transistor/crt0.nro.o $(libtransistor_OBJECT_FILES) $(libtransistor_CPP_OBJECT_FILES)
mkdir -p $(@D)
rm -f $@
$(AR) $(AR_FLAGS) $@ $+
Expand All @@ -23,7 +25,7 @@ $(libtransistor_TARGET_LIB_NRO): $(BUILD_DIR)/transistor/crt0.lib.nro.o
rm -f $@
$(AR) $(AR_FLAGS) $@ $+

$(libtransistor_TARGET_NSO): $(BUILD_DIR)/transistor/crt0.nso.o $(libtransistor_OBJECT_FILES)
$(libtransistor_TARGET_NSO): $(BUILD_DIR)/transistor/crt0.nso.o $(libtransistor_OBJECT_FILES) $(libtransistor_CPP_OBJECT_FILES)
mkdir -p $(@D)
rm -f $@
$(AR) $(AR_FLAGS) $@ $+
Expand All @@ -40,24 +42,29 @@ $(BUILD_DIR)/transistor/ld/%.o $(BUILD_DIR)/transistor/ld/%.d: $(SOURCE_ROOT)/li
mkdir -p $(@D)
$(CC) $(CC_FLAGS) -I$(SOURCE_ROOT)/include/ $(libtransistor_WARNINGS) -MMD -MP -fno-stack-protector -c -o $(BUILD_DIR)/transistor/ld/$*.o $<

# Rule for building library C files
$(BUILD_DIR)/transistor/%.o $(BUILD_DIR)/transistor/%.d: $(SOURCE_ROOT)/lib/%.c $(libtransistor_BUILD_DEPS)
mkdir -p $(@D)
$(CC) $(CC_FLAGS) -I$(SOURCE_ROOT)/include/ $(libtransistor_WARNINGS) -MMD -MP -c -o $(BUILD_DIR)/transistor/$*.o $<

$(BUILD_DIR)/transistor/%.o $(BUILD_DIR)/transistor/%.d: $(SOURCE_ROOT)/lib/%.cpp $(libtransistor_BUILD_DEPS)
# Rule for building library C++ files
$(BUILD_DIR)/transistor/%.o $(BUILD_DIR)/transistor/%.d: $(SOURCE_ROOT)/lib/%.cpp $(libtransistor_CPP_BUILD_DEPS)
mkdir -p $(@D)
$(CXX) $(CXX_FLAGS) -I$(SOURCE_ROOT)/include/ $(libtransistor_WARNINGS) -MMD -MP -c -o $(BUILD_DIR)/transistor/$*.o $<

#include $(libtransistor_OBJECT_FILES:.o=.d)

# Rule for building library assembly files
$(BUILD_DIR)/transistor/%.o $(BUILD_DIR)/transistor/%.d: $(SOURCE_ROOT)/lib/%.S $(libtransistor_BUILD_DEPS)
mkdir -p $(@D)
$(AS) $(AS_FLAGS) $< -filetype=obj -o $(BUILD_DIR)/transistor/$*.o
touch $(BUILD_DIR)/transistor/$*.d

# DIST RULES

DIST_TRANSISTOR := $(DIST_TRANSISTOR_HEADERS) \
DIST_TRANSISTOR := \
$(DIST_TRANSISTOR_HEADERS) \
$(DIST_TRANSISTOR_CPP_HEADERS) \
$(LIBTRANSISTOR_HOME)/lib/libtransistor.nro.a \
$(LIBTRANSISTOR_HOME)/lib/libtransistor.lib.nro.a \
$(LIBTRANSISTOR_HOME)/lib/libtransistor.nso.a \
Expand Down
92 changes: 89 additions & 3 deletions mk/transistor_headers.mk
Original file line number Diff line number Diff line change
@@ -1,12 +1,98 @@
# LIBTRANSISTOR HEADERS

libtransistor_HEADER_NAMES := alloc_pages.h audio.h display/graphic_buffer.h display/display.h display/surface.h display/parcel.h display/rect.h display/binder.h display/fence.h display/graphic_buffer_queue.h err/modules.h err.h fs/squashfs.h fd.h fs/fs.h fs/inode.h fs/blobfd.h fs/mountfs.h fs/fspfs.h gfx/blit.h gfx/gfx.h gpu/gpu.h gpu/nv_ioc.h hid.h internal_util.h ipc/vi.h ipc/am.h ipc/nifm.h ipc/time.h ipc/nv.h ipc/ro.h ipc/fs/idirectory.h ipc/fs/ifilesystem.h ipc/fs/ifile.h ipc/fs/err.h ipc/bpc.h ipc/bsd.h ipc/fs.h ipc/audio.h ipc/sm.h ipc/pm.h ipc/hid.h ipc.h ipcserver.h loader_config.h nx.h stb_sprintf.h svc.h tls.h types.h util.h address_space.h ipc_helpers.h ipc/usb.h ipc/usb/ds/interface.h ipc/usb/ds/endpoint.h usb_serial.h mutex.h thread.h ld/ld.h ld/elf.h ld/module.h ld/internal.h ld/loaders.h collections/list.h ipc/fatal.h cpp/types.hpp cpp/ipc/hid.hpp cpp/svc.hpp cpp/ipcserver.hpp cpp/ipc.hpp cpp/ipc/sm.hpp ipc/twili.h waiter.h cpp/waiter.hpp cpp/ipc/usb_ds.hpp cpp/ipc/usb.hpp runtime_config.h cpp/ipcclient.hpp environment.h cpp/nx.hpp cpp/address_space.hpp
libtransistor_HEADER_NAMES := \
address_space.h \
alloc_pages.h \
audio.h \
collections/list.h \
display/binder.h \
display/display.h \
display/fence.h \
display/graphic_buffer.h \
display/graphic_buffer_queue.h \
display/parcel.h \
display/rect.h \
display/surface.h \
environment.h \
err.h \
err/modules.h \
fd.h \
fs/blobfd.h \
fs/fs.h \
fs/fspfs.h \
fs/inode.h \
fs/mountfs.h \
fs/squashfs.h \
gfx/blit.h \
gfx/gfx.h \
gpu/gpu.h \
gpu/nv_ioc.h \
hid.h \
internal_util.h \
ipc/am.h \
ipc/audio.h \
ipc/bpc.h \
ipc/bsd.h \
ipc/fatal.h \
ipc/fs/err.h \
ipc/fs.h \
ipc/fs/idirectory.h \
ipc/fs/ifile.h \
ipc/fs/ifilesystem.h \
ipc.h \
ipc_helpers.h \
ipc/hid.h \
ipc/nifm.h \
ipc/nv.h \
ipc/pm.h \
ipc/ro.h \
ipcserver.h \
ipc/sm.h \
ipc/time.h \
ipc/twili.h \
ipc/usb/ds/endpoint.h \
ipc/usb/ds/interface.h \
ipc/usb.h \
ipc/vi.h \
ld/elf.h \
ld/internal.h \
ld/ld.h \
ld/loaders.h \
ld/module.h \
loader_config.h \
mutex.h \
nx.h \
runtime_config.h \
stb_sprintf.h \
svc.h \
thread.h \
tls.h \
types.h \
usb_serial.h \
util.h \
waiter.h

DIST_TRANSISTOR_HEADERS := $(addprefix $(LIBTRANSISTOR_HOME)/include/libtransistor/,$(libtransistor_HEADER_NAMES)) $(DIST_NEITHER_HEADERS)
libtransistor_CPP_HEADER_NAMES := \
address_space.hpp \
ipcclient.hpp \
ipc/hid.hpp \
ipc.hpp \
ipcserver.hpp \
ipc/sm.hpp \
ipc/usb_ds.hpp \
ipc/usb.hpp \
nx.hpp \
svc.hpp \
types.hpp \
waiter.hpp

DIST_TRANSISTOR_HEADERS := $(addprefix $(LIBTRANSISTOR_HOME)/include/libtransistor/,$(libtransistor_HEADER_NAMES))
DIST_TRANSISTOR_CPP_HEADERS := $(DIST_TRANSISTOR_HEADERS) $(addprefix $(LIBTRANSISTOR_HOME)/include/libtransistor/cpp/,$(libtransistor_CPP_HEADER_NAMES)) $(DIST_NEITHER_HEADERS)

$(LIBTRANSISTOR_HOME)/include/%: $(SOURCE_ROOT)/include/%
install -d $(@D)
install $< $@

.PHONY: dist_transistor_headers
.PHONY: dist_transistor_headers dist_transistor_cpp_headers
dist_transistor_headers: $(DIST_TRANSISTOR_HEADERS)
dist_transistor_cpp_headers: $(DIST_TRANSISTOR_CPP_HEADERS)
95 changes: 95 additions & 0 deletions mk/transistor_objects.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# LIBTRANSISTOR OBJECTS HELPER
# (included from transistor.mk)

libtransistor_OBJECT_NAMES := \
address_space.o \
alloc_pages.o \
crt0_common.o \
display/binder.o \
display/display.o \
display/graphic_buffer_queue.o \
display/parcel.o \
display/surface.o \
environment.o \
fs/blobfd.o \
fs/fs.o \
fs/fspfs.o \
fs/mountfs.o \
fs/squashfs.o \
gfx/blit.o \
gpu/gpu.o \
hid.o \
ipc/am.o \
ipc/audio.o \
ipc/bpc.o \
ipc/bsd.o \
ipc/fatal.o \
ipc/fs/idirectory.o \
ipc/fs/ifile.o \
ipc/fs/ifilesystem.o \
ipc/fs.o \
ipc/hid.o \
ipc/nifm.o \
ipc/nv.o \
ipc.o \
ipc/pm.o \
ipc/ro.o \
ipcserver.o \
ipc/sm.o \
ipc/time.o \
ipc/twili.o \
ipc/usb/ds/endpoint.o \
ipc/usb/ds/interface.o \
ipc/usb.o \
ipc/vi.o \
ld/discover.o \
ld/dlfcn.o \
ld/elf.o \
ld/ld.o \
ld/loader/elf.o \
ld/loader/nro_via_ldr_ro.o \
ld/loader/nro_via_svc.o \
ld/relocate.o \
ld/resolve.o \
loader_config.o \
lz4.o \
mutex.o \
sha256.o \
squashfs/cache.o \
squashfs/decompress.o \
squashfs/dir.o \
squashfs/file.o \
squashfs/fs.o \
squashfs/hash.o \
squashfs/nonstd-pread.o \
squashfs/nonstd-stat.o \
squashfs/stack.o \
squashfs/swap.o \
squashfs/table.o \
squashfs/traverse.o \
squashfs/util.o \
squashfs/xattr.o \
strtold.o \
svc.o \
syscalls/fd.o \
syscalls/phal.o \
syscalls/sched.o \
syscalls/socket.o \
syscalls/syscalls.o \
thread.o \
tls.o \
tls_support.o \
usb_serial.o \
util.o \
waiter.o

libtransistor_CPP_OBJECT_NAMES := \
address_space.o \
ipcclient.o \
ipc/hid.o \
ipcserver.o \
ipc/sm.o \
ipc/usb_ds.o \
svc.o \
types.o \
waiter.o

0 comments on commit 14df0dc

Please sign in to comment.