diff --git a/mk/transistor.mk b/mk/transistor.mk index d6457e4c..ee49d01a 100644 --- a/mk/transistor.mk +++ b/mk/transistor.mk @@ -1,11 +1,13 @@ # 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 @@ -13,7 +15,7 @@ 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) $@ $+ @@ -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) $@ $+ @@ -40,16 +42,19 @@ $(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 @@ -57,7 +62,9 @@ $(BUILD_DIR)/transistor/%.o $(BUILD_DIR)/transistor/%.d: $(SOURCE_ROOT)/lib/%.S # 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 \ diff --git a/mk/transistor_headers.mk b/mk/transistor_headers.mk index 7b478864..70ee31b0 100644 --- a/mk/transistor_headers.mk +++ b/mk/transistor_headers.mk @@ -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) diff --git a/mk/transistor_objects.mk b/mk/transistor_objects.mk new file mode 100644 index 00000000..d1309374 --- /dev/null +++ b/mk/transistor_objects.mk @@ -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