Solved Configuration

I didn't see any other threads dedicated to this so thought I'd post, plus scottro offered so here we go! I went through several web pages on the subject but the (custom) build is not working. here's what I did:

  1. Pulled the dwm source to my build directory using git.
  2. Copied config.def.h to config.h
  3. Edited config.h to reflect my terminal (xterm) since the standard ports install does not recognize the command xterm
  4. Read /usr/ports/x11-wm/dwm/Makefile
  5. Ran make DWM_CONF=/usr/home/paul/Projects/builds/dwm/config.h install clean
I get the following errors:
CC dwm.c
dwm.c:1583:50: error: use of undeclared identifier 'normbordercolor'
        scheme[SchemeNorm].border = drw_clr_create(drw, normbordercolor);
dwm.c:1584:46: error: use of undeclared identifier 'normbgcolor'
        scheme[SchemeNorm].bg = drw_clr_create(drw, normbgcolor);
dwm.c:1585:46: error: use of undeclared identifier 'normfgcolor'
        scheme[SchemeNorm].fg = drw_clr_create(drw, normfgcolor);
dwm.c:1586:49: error: use of undeclared identifier 'selbordercolor'
        scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor);
dwm.c:1587:45: error: use of undeclared identifier 'selbgcolor'
        scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor);
dwm.c:1588:45: error: use of undeclared identifier 'selfgcolor'
        scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor);
6 errors generated.
*** [dwm.o] Error code 1

make[2]: stopped in /usr/ports/x11-wm/dwm/work/dwm-6.1
1 error

make[2]: stopped in /usr/ports/x11-wm/dwm/work/dwm-6.1
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

make[1]: stopped in /usr/ports/x11-wm/dwm
*** Error code 1

Thanks in advance!
Pulled the dwm source to my build directory using git.
The development version of dwm is NOT the same as the release version in the ports tree. config.def.h has changed.

You can switch to the 6.1 tag with git checkout 6.1 and then copy config.def.h from there. But there is no need to use git for this. For example you can do this:
  1. cd /usr/ports/x11-wm/dwm
  2. make extract
  3. cp work/dwm-6.1/config.def.h ~/path/to/config.h
  4. make clean
  5. make DWM_CONF=~/path/to/config.h install clean
In the end it would've been nice of the maintainer to place a copy of config.def.h in the ports directory (or in files/) to make this easier...
Got it, that worked, thanks! Now if I could just get Firefox to run...funny, it runs fine under spectrwm and i3 but not under dwm. No worries, I'll eventually figure it out...
Well I'm an idiot. Apparently Firefox WAS running but on tag 9.
static Rule rules[] = {
   /* class      instance    title       tags mask     isfloating   monitor */
    { "Gimp",     NULL,       NULL,       0,            True,        -1 },
    { "Firefox",  NULL,       NULL,       1 << 8,       True,        -1 },

So the rule that is added for Firefox apparently makes it start on tag 9. I need to figure out the syntax so can have it start wherever I want and not just on tag 9. Thinking if I set it just like Gimp it should be fine.
The following indeed works so you can start Firefox on whatever tag you happen to be on. W00t! I also used xsetroot in a loop in my .xinitrc to set the date and time in place of the DWM version displayed in the top, right corner or the screen.

static Rule rules[] = {
  /* class      instance    title       tags mask     isfloating   monitor */
    { "Gimp",     NULL,       NULL,       0,            True,        -1 },
    { "Firefox",  NULL,       NULL,        0,            True,        -1 },
QCTM. (Quietly Chuckling To Myself). Yup, lots of folks get caught by Firefox on tag 9. Including me, when I forgot to change it in my config.h. Then, I notice that tag 9 is active and said something like, Oh gosh darn it.

For what it's worth, once I configured it once, I kept a copy of config.h in my home directory. Any other patches you want to make (I guess you could make a patch of your custom config.h too), but anyway, for example, I patch dwm.c. So, I made the patch, created patch-dwm.c and put it in /usr/ports/x11-wm/dwm/files.

One thing I like about dwm is that it seems to automatically work with multi monitors, whereas spectrwm had to have it all defined it its conf file.
I did just that: kept the custom copy of config.h in my home directory and then referred to it when building the port. Thanks for the tips!
I say skip everything after step #3 in your OP. Modify these two lines to match in
X11INC = ${PREFIX}/include
X11LIB = ${PREFIX}/lib

After that, running make install as root in your local Git pull of dwm will install the dwm binary in /usr/local/bin and the dwm man page in /usr/local/share/man/man1. This is one instance where using the port isn't really necessary. Mind you, this is just building vanilla dwm; running man clean in /usr/ports/x11-wm/dwm removes the source, so you'd need to apply all the previous patches every time you wanted to add a new one. You don't need to do that if you manage your own local build.
Not much movement here and I have resolved my "problem" so I am closing the thread. Thanks to all that helped!