From 0230fa34271747478a75173e9bf9d70d8dbb16e0 Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Wed, 22 Oct 2025 13:51:10 +0000 Subject: [PATCH] . --- developer/make/environment_RT_1.mk | 13 ++-- developer/make/target_kmod.mk | 2 + ...t_library_cli.mk => target_library_CLI.mk} | 66 +++++++++---------- developer/make/temp.sh | 10 +++ 4 files changed, 52 insertions(+), 39 deletions(-) rename developer/make/{target_library_cli.mk => target_library_CLI.mk} (64%) create mode 100644 developer/make/temp.sh diff --git a/developer/make/environment_RT_1.mk b/developer/make/environment_RT_1.mk index af850d4..151eeff 100644 --- a/developer/make/environment_RT_1.mk +++ b/developer/make/environment_RT_1.mk @@ -1,3 +1,4 @@ +# enviroment_RT_1.mk # makefile environment variable defaults. # cc is the name of the C compiler, a file called .c is C source code. # RT uses header integrated C source files, i.e. the source and the header are the same file @@ -18,13 +19,13 @@ CFLAGS += -I $(C_SOURCE_DIR) KMOD_CCFLAGS := -I $(KMOD_SOURCE_DIR) -LIBNAME := $(PROJECT) -LIBNAME := $(subst -,_,$(LIBNAME)) +LIBRARY_NAME := $(PROJECT) +LIBRARY_NAME := $(subst -,_,$(LIBRARY_NAME)) -LIBDIR := scratchpad -LIBFILE := $(LIBDIR)/lib$(LIBNAME).a +LIBRARY_DIR := scratchpad +LIBRARY_FILE := $(LIBRARY_DIR)/lib$(LIBRARY_NAME).a -LINKFLAGS := -L$(LIBDIR) -L/lib64 -L/lib +LN_FLAGS := -L$(LIBRARY_DIR) -L/lib64 -L/lib -EXECDIR := scratchpad +MACHINE_DIR := scratchpad diff --git a/developer/make/target_kmod.mk b/developer/make/target_kmod.mk index 6fc30e3..7ca2fc8 100644 --- a/developer/make/target_kmod.mk +++ b/developer/make/target_kmod.mk @@ -62,9 +62,11 @@ endif $(OUTPUT_DIR): @mkdir -p "$(OUTPUT_DIR)" +# generate the Kbuild control Makefile # generate the Kbuild control Makefile $(OUTPUT_DIR)/Makefile: | $(OUTPUT_DIR) @{ \ + printf "ccflags-y += %s\n" "$(KMOD_CCFLAGS)"; \ printf "obj-m := %s\n" "$(foreach m,$(BASE_LIST),$(m).o)"; \ for m in $(BASE_LIST); do \ printf "%s-objs := %s.kmod.o" "$$m" "$$m"; \ diff --git a/developer/make/target_library_cli.mk b/developer/make/target_library_CLI.mk similarity index 64% rename from developer/make/target_library_cli.mk rename to developer/make/target_library_CLI.mk index 5ef8770..0b52842 100644 --- a/developer/make/target_library_cli.mk +++ b/developer/make/target_library_CLI.mk @@ -1,46 +1,47 @@ -# make/target_lib_cli.mk — build *.lib.c and *.cli.c +# make/target_lib_CLI.mk — build *.lib.c and *.CLI.c # written for the Harmony skeleton, always invoked from cwd $REPO_HOME/ +# files have two suffixes by convention, e.g.: X.lib.c or Y.CLI.c .SUFFIXES: .EXPORT_ALL_VARIABLES: .DELETE_ON_ERROR: #-------------------------------------------------------------------------------- -# files have two suffixes by convention, e.g.: X.lib.c or Y.cli.c -# +# defaults for environment variables -ifeq ($(strip $(C)),) - $(error target_lib_cli.mk: no C compiler specified) -endif - -# single source directory -C_SOURCE_DIR ?= cc -C_SOURCE_DIR_OK := $(wildcard $(C_SOURCE_DIR)) +C ?= gcc +CFLAGS ?= +C_SOURCE_DIR ?= cc +LIBRARY_FILE ?= +MACHINE_DIR ?= scratchpad +LN_FLAGS ?= -ifeq ($(strip $(C_SOURCE_DIR_OK)),) - $(warning target_lib_cli.mk: C_SOURCE_DIR '$(C_SOURCE_DIR)' not found or empty) +ifeq ($(strip $(C)),) + $(error target_lib_CLI.mk: no C compiler specified) endif -# RT uses header integrated C source files -CFLAGS ?= -I $(C_SOURCE_DIR) +#-------------------------------------------------------------------------------- +# derived variables # source discovery (single dir) C_SOURCE_LIB := $(wildcard $(C_SOURCE_DIR)/*.lib.c) -C_SOURCE_EXEC := $(wildcard $(C_SOURCE_DIR)/*.cli.c) +C_SOURCE_EXEC := $(wildcard $(C_SOURCE_DIR)/*.CLI.c) # remove suffix to get base name C_BASE_LIB := $(sort $(patsubst %.lib.c,%, $(notdir $(C_SOURCE_LIB)))) -C_BASE_EXEC := $(sort $(patsubst %.cli.c,%, $(notdir $(C_SOURCE_EXEC)))) - +C_BASE_EXEC := $(sort $(patsubst %.CLI.c,%, $(notdir $(C_SOURCE_EXEC)))) # two sets of object files, one for the lib, and one for the CLI programs OBJECT_LIB := $(patsubst %, scratchpad/%.lib.o, $(C_BASE_LIB)) -OBJECT_EXEC := $(patsubst %, scratchpad/%.cli.o, $(C_BASE_EXEC)) - --include $(OBJECT_LIB:.o=.d) $(OBJECT_EXEC:.o=.d) +OBJECT_EXEC := $(patsubst %, scratchpad/%.CLI.o, $(C_BASE_EXEC)) # executables are made from EXEC sources -EXEC := $(patsubst %, $(EXECDIR)/%, $(C_BASE_EXEC)) +EXEC := $(patsubst %, $(MACHINE_DIR)/%, $(C_BASE_EXEC)) + +#-------------------------------------------------------------------------------- +# pull in dependencies + +-include $(OBJECT_LIB:.o=.d) $(OBJECT_EXEC:.o=.d) #-------------------------------------------------------------------------------- @@ -51,8 +52,8 @@ EXEC := $(patsubst %, $(EXECDIR)/%, $(C_BASE_EXEC)) usage: @echo example usage: make clean @echo example usage: make library - @echo example usage: make cli - @echo example usage: make library cli + @echo example usage: make CLI + @echo example usage: make library CLI .PHONY: version version: @@ -71,12 +72,11 @@ information: @echo "OBJECT_LIB: " $(OBJECT_LIB) @echo "OBJECT_EXEC: " $(OBJECT_EXEC) @echo "EXEC: " $(EXEC) - @echo "INCFLAG_List: " $(INCFLAG_List) .PHONY: library -library: $(LIBFILE) +library: $(LIBRARY_FILE) -$(LIBFILE): $(OBJECT_LIB) +$(LIBRARY_FILE): $(OBJECT_LIB) @if [ -s "$@" ] || [ -n "$(OBJECT_LIB)" ]; then \ echo "ar rcs $@ $^"; \ ar rcs $@ $^; \ @@ -84,18 +84,18 @@ $(LIBFILE): $(OBJECT_LIB) rm -f "$@"; \ fi -#.PHONY: cli -#cli: $(LIBFILE) $(EXEC) +#.PHONY: CLI +#CLI: $(LIBRARY_FILE) $(EXEC) -.PHONY: cli -cli: library $(EXEC) +.PHONY: CLI +CLI: library $(EXEC) # generally better to use the project local clean scripts, but this will make it so that the make targets can be run again .PHONY: clean clean: - rm -f $(LIBFILE) + rm -f $(LIBRARY_FILE) for obj in $(OBJECT_LIB) $(OBJECT_EXEC); do rm -f $$obj $${obj%.o}.d || true; done for i in $(EXEC); do [ -e $$i ] && rm $$i || true; done @@ -104,6 +104,6 @@ clean: scratchpad/%.o: $(C_SOURCE_DIR)/%.c $(C) $(CFLAGS) -o $@ -c $< -$(EXECDIR)/%: scratchpad/%.cli.o - $(C) -o $@ $< $(LIB_ARG) $(LINKFLAGS) +$(MACHINE_DIR)/%: scratchpad/%.CLI.o + $(C) -o $@ $< $(LN_FLAGS) diff --git a/developer/make/temp.sh b/developer/make/temp.sh new file mode 100644 index 0000000..4e0e27b --- /dev/null +++ b/developer/make/temp.sh @@ -0,0 +1,10 @@ +sed -E ' +s/\bC_SOURCE_DIR_OK\b/c_source_dir_ok/g; +s/\bC_SOURCE_LIB\b/c_source_lib/g; +s/\bC_SOURCE_EXEC\b/c_source_exec/g; +s/\bC_BASE_LIB\b/c_base_lib/g; +s/\bC_BASE_EXEC\b/c_base_exec/g; +s/\bOBJECT_LIB\b/object_lib/g; +s/\bOBJECT_EXEC\b/object_exec/g; +s/\bEXEC\b/exec_/g +' target_library_CLI.mk > target_library_CLI.new.mk -- 2.20.1