import("ldb-template")

template("ldbc")

if {"LINUX", "LINUXELF"} contains TARGET
  LCC_OPTIONS += "-D__signed__=signed"
end

if equal(TARGET, "SPARC")
  LCC_OPTIONS += "-Wp-L"    % Lax preprocessing -- avoid warning of bad #endif
end
  

readonly LDB_INCLUDES = archmap( {
  "default" : ["-I/usr/include", "-I." ] ,
  "X86"     : ["-I/usr/include/bsd", "-I." ],
  "Mips"    : ["-I/bsd43/usr/include", "-I/usr/include", "-I." ]
})

readonly LDB_LIBS = archmap( {
  "default" : [ ] ,
  "X86"     : ["-lbsd" ]
})

readonly extranub = archmap(	% require nub & "NubS.o"
  {  "default"  : ""
  ,  "Vax"      : "T"
  ,  "MC68"     : "T"
%%%%%  ,  "Sparc"    : "T"
  })

readonly fake_asm = archmap(  
  { "default" : "T"
  })

readonly ARCH = LDB_ARCHITECTURE

if extranub
  notangle([path_of(ARCH & "Nub.nw")], CLINE, "assembly code", ARCH & "NubS.s")
  derived_ldb_s(ARCH & "NubS")
end

proc ldbh(u) is
  notangle([path_of(u & ".nw")], CLINE, "header", u & ".h")
end

ldbh("Nub")
ldbh(ARCH & "Nub")

ldbc("Nub", "mini nub", "MiniNub", ["Nub.h"], "T")
ldbc("Nub", "C code",   "Nub", ["Nub.h", ARCH & "Nub.h"], "")
if fake_asm
  ldb_faked_asm(ARCH & "Nub", "C code", ARCH & "Nub", ["Nub.h"], "T")
else
  ldbc         (ARCH & "Nub", "C code", ARCH & "Nub", ["Nub.h"], "T")
end

%% replaced with extra arg to ldbc %% unlazy_stabfile("MiniNub")
%% replaced with extra arg to ldbc %% unlazy_stabfile(ARCH & "Nub")

proc shipped_derived_dir() is
  return format ("%s%s%s%s%s", PKG_INSTALL, SL, BUILD_PACKAGE,
                                                  SL, BUILD_DIR)
end

  % using -lbsd for signals is a killer, but...
exec("ldb-ld -nopkl -r -destdir", shipped_derived_dir(), 
        "-o", "Cnub.o", LDB_OBJECTS, LDB_LIBS)
  
install_derived("Cnub.o")
install_derived("Cnub.o.st")

include_dir("crt0")



