Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 33 additions & 11 deletions src/makei/cli/makei_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
from makei import init_project
from makei.build import BuildEnv
from makei.cvtsrcpf import CvtSrcPf
from makei.utils import Colors, colored, get_compile_targets_from_filenames
from makei.utils import Colors, colored, get_compile_targets_from_filenames,decompose_filename
from pathlib import Path
from makei.const import FILE_TARGET_MAPPING


def cli():
Expand Down Expand Up @@ -219,6 +221,26 @@ def handle_info(args):
print("Not implemented!")


def read_and_filter_rules_mk(source_names):
"""
Read the Rules.mk file and return targets that match allowed extensions.
"""
build_targets = []
name, _, ext, _ = decompose_filename(source_names[0])
rules_mk_paths = list(Path(".").rglob("Rules.mk"))
for rules_mk_path in rules_mk_paths:
with rules_mk_path.open("r") as f:
for raw_line in f:
line = raw_line.strip()
if not line or line.startswith("#") or ":" not in line:
continue # skip blank lines, comments, or malformed lines
target = line.split(":", 1)[0].strip()
if target and "." in target and target.rsplit(".", 1)[1] in FILE_TARGET_MAPPING[ext]:
build_targets.append(target)
else:
raise ValueError(f"No target mapping extension for '{target}'")
return build_targets

def handle_compile(args):
"""
Processing the compile command
Expand All @@ -239,17 +261,17 @@ def handle_compile(args):
source_names.append(name)
# print("source:"+' '.join(source_names))
# print("compile targets:"+' '.join(get_compile_targets_from_filenames(source_names)))
targets.extend(get_compile_targets_from_filenames(source_names))
print(colored("targets: " + ' '.join(targets), Colors.OKBLUE))
build_env = BuildEnv(targets, args.make_options, get_override_vars(args), trace=args.trace)

if args.trace:
build_env.dump_resolved_makefile()
else:
if build_env.make():
sys.exit(0)
build_targets = read_and_filter_rules_mk(source_names)
if build_targets:
print(colored("targets: " + ', '.join(build_targets), Colors.OKBLUE))
build_env = BuildEnv(build_targets, args.make_options, get_override_vars(args),trace=args.trace)
if args.trace:
build_env.dump_resolved_makefile()
else:
sys.exit(1)
if build_env.make():
sys.exit(0)
else:
sys.exit(1)


def handle_build(args):
Expand Down
96 changes: 48 additions & 48 deletions src/makei/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,54 +101,54 @@
}

FILE_TARGET_MAPPING = {
"PGM.SQLRPGLE": "PGM",
"PGM.RPGLE": "PGM",
"PGM.CLLE": "PGM",
"PGM.C": "PGM",
"PGM.CBLLE": "PGM",
"PGM.SQLCBLLE": "PGM",
"CMDSRC": "CMD",
"CMD": "CMD",
"DSPF": "FILE",
"LF": "FILE",
"PF": "FILE",
"PRTF": "FILE",
"MENUSRC": "MENU",
"MENU": "MENU",
"C": "MODULE",
"CPP": "MODULE",
"RPGLE": "MODULE",
"CLLE": "MODULE",
"CBLLE": "MODULE",
"SQLC": "MODULE",
"SQLCPP": "MODULE",
"SQLRPGLE": "MODULE",
"SQLCBLLE": "MODULE",
"MODULE": "PGM",
"CLP": "PGM",
"CBL": "PGM",
"RPG": "PGM",
"ILEPGM": "PGM",
"PNLGRPSRC": "PNLGRP",
"PNLGRP": "PNLGRP",
"SQL": "QMQRY",
"BND": "SRVPGM",
"ILESRVPGM": "SRVPGM",
"BNDDIR": "BNDDIR",
"DTAARA": "DTAARA",
"DTAQ": "DTAQ",
"SYSTRG": "PGM",
"SQLPRC": "PGM",
"TABLE": "FILE",
"PFSQL": "FILE",
"VIEW": "FILE",
"INDEX": "FILE",
"SQLALIAS": "FILE",
"SQLSEQ": "DTAARA",
"SQLUDF": "SRVPGM",
"SQLTRG": "PGM",
"MSGF": "MSGF",
"WSCSTSRC": "WSCST",
"PGM.SQLRPGLE": {"PGM"},
"PGM.RPGLE": {"PGM"},
"PGM.CLLE": {"PGM"},
"PGM.C": {"PGM"},
"PGM.CBLLE": {"PGM"},
"PGM.SQLCBLLE": {"PGM"},
"CMDSRC": {"CMD"},
"CMD": {"CMD"},
"DSPF": {"FILE"},
"LF": {"FILE"},
"PF": {"FILE"},
"PRTF": {"FILE"},
"MENUSRC": {"MENU"},
"MENU": {"MENU"},
"C": {"MODULE"},
"CPP": {"MODULE"},
"RPGLE": {"MODULE"},
"CLLE": {"MODULE"},
"CBLLE": {"MODULE"},
"SQLC": {"MODULE"},
"SQLCPP": {"MODULE"},
"SQLRPGLE": {"MODULE"},
"SQLCBLLE": {"MODULE"},
"MODULE": {"PGM"},
"CLP": {"PGM"},
"CBL": {"PGM"},
"RPG": {"PGM"},
"ILEPGM": {"PGM"},
"PNLGRPSRC": {"PNLGRP"},
"PNLGRP": {"PNLGRP"},
"SQL": {"QMQRY","SRVPGM"},
"BND": {"SRVPGM"},
"ILESRVPGM": {"SRVPGM"},
"BNDDIR": {"BNDDIR"},
"DTAARA": {"DTAARA"},
"DTAQ": {"DTAQ"},
"SYSTRG": {"PGM"},
"SQLPRC": {"PGM"},
"TABLE": {"FILE"},
"PFSQL": {"FILE"},
"VIEW": {"FILE"},
"INDEX": {"FILE"},
"SQLALIAS": {"FILE"},
"SQLSEQ": {"DTAARA"},
"SQLUDF": {"SRVPGM"},
"SQLTRG": {"PGM"},
"MSGF": {"MSGF"},
"WSCSTSRC": {"WSCST"},
}
# This is the maximum number of dot seperated parts in the file extensions defined above.
FILE_MAX_EXT_LENGTH = max(
Expand Down
14 changes: 12 additions & 2 deletions src/mk/def_rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -949,7 +949,8 @@ srvpgmTGTRLS = $(strip \
$(if $(filter %.ilesrvpgm,$<),$(SRVPGM_TGTRLS), \
$(if $(filter %.SQLUDF,$<),$(SQL_TGTRLS), \
$(if $(filter %.sqludf,$<),$(SQL_TGTRLS), \
UNKNOWN_FILE_TYPE)))))))
$(if $(filter %.SQL,$<),$(SQL_TGTRLS), \
UNKNOWN_FILE_TYPE))))))))

# ____ __ __ ____ ____ _
# / ___| \/ | _ \ | _ \ ___ ___(_)_ __ ___ ___
Expand Down Expand Up @@ -1492,6 +1493,15 @@ define ILESRVPGM_TO_SRVPGM_RECIPE =
$(SCRIPTSPATH)/extractAndLaunch "$(JOBLOGFILE)" "$<" $(OBJLIB) $(basename $(@F)) "$(PRECMD)" "$(POSTCMD)" "$(notdir $@)" "$<" "$(logFile)" > $(logFile) 2>&1 && $(call logSuccess,$@) || $(call logFail,$@)
endef

define SQL_TO_SRVPGM_RECIPE =
$(SRVPGM_VARIABLES)
$(eval d = $($@_d))
@$(call echo_cmd,"=== Creating Service program $(OBJLIB)/$(basename $(notdir $@)) from SQL statement [$(notdir $<)]")
$(eval crtcmd := RUNSQLSTM srcstmf('$<') $(RUNSQLFLAGS))
@$(PRESETUP) \
$(SCRIPTSPATH)/launch "$(JOBLOGFILE)" "$(crtcmd)" "$(PRECMD)" "$(POSTCMD)" "$(notdir $@)" "$<" "$(logFile)" "" "$(mbrtextcmd)"> $(logFile) 2>&1 && $(call logSuccess,$@) || $(call logFail,$@)
endef

# ___ _____ _ _ _____ ____ ____ _
# / _ \_ _| | | | ____| _ \ | _ \ ___ ___(_)_ __ ___ ___
# | | | || | | |_| | _| | |_) | | |_) / _ \/ __| | '_ \ / _ \/ __|
Expand Down Expand Up @@ -1571,7 +1581,7 @@ define SQL_TO_QMQRY_RECIPE =
$(eval d = $($@_d))
@$(call echo_cmd,"=== Creating QM query [$(basename $@)]")
$(eval crtcmd := $(SCRIPTSPATH)/crtfrmstmf --ccsid $(TGTCCSID) -f $< -o $(basename $(@F)) -l $(OBJLIB) -c "CRTQMQRY" -p $(CRTQMQRYFLAGS))
$(PRESETUP) \
@$(PRESETUP) \
$(SCRIPTSPATH)/crtfrmstmf --ccsid $(TGTCCSID) -f $< -o $(basename $(@F)) -l $(OBJLIB) -c "CRTQMQRY" -p "$(CRTQMQRYFLAGS)" --save-joblog "$(JOBLOGFILE)" --precmd="$(PRECMD)" --postcmd="$(POSTCMD)" --output="$(logFile)" > $(logFile) 2>&1 && $(call logSuccess,$@) || $(call logFail,$@)
endef

Expand Down