I've sworn to never ever use CMake, nor to allow it to exist on my machines, nor even to be used in my presence. However I really like ctwm, and in fact I use every day on my main desktop machine which is a macOS box, and since I'm now also using pkgsrc to build everything on macOS just like I do on NetBSD, and since the "minibuild" stuff that comes with the new ctwm release is garbage (and because I also really like BSD Makefiles), I've written the following. In case anyone is interested. First the following Makefile replaces wm/ctwm/Makefile, then below is a new Makefile to be put into wm/ctwm/files/Makefile: Probably the second file could also mostly be used to allow an update of the version of CTWM in /usr/src/etxternal/mit/ctwm/bin/ctwm/Makefile too. ================ # $NetBSD: Makefile,v 1.39 2019/11/04 21:50:15 rillig Exp $ # DISTNAME= ctwm-4.0.3 CATEGORIES= x11 wm MASTER_SITES= http://ctwm.org/dist/ EXTRACT_SUFX= .tar.xz MAINTAINER= rhialto%NetBSD.org@localhost HOMEPAGE= http://ctwm.org/ COMMENT= Window manager with support for multiple virtual screens and EWMH LICENSE= mit USE_LANGUAGES= c USE_BSD_MAKEFILE= yes BSD_MAKE_BUILD_DIR= ${WRKDIR}/pkgbuild MAKE_ENV+= MAKEOBJDIRPREFIX=${BSD_MAKE_BUILD_DIR} DEPENDS+= asciidoc-[0-9]*:../../textproc/asciidoc DEPENDS+= xmlto-[0-9]*:../../textproc/xmlto .include "../../mk/bsd.prefs.mk" # We need an m4 that understands the -s option. .if !empty(TOOLS_PLATFORM.m4) . if !empty(:!${ECHO} yes | ${TOOLS_PLATFORM.m4} -s 2>/dev/null||${ECHO}!) TOOLS_PLATFORM.gm4?= ${TOOLS_PLATFORM.m4} . endif .endif USE_TOOLS+= gm4:run MAKE_FLAGS+= M4=${TOOLS_PLATFORM.gm4} CFLAGS.SunOS+= -D__EXTENSIONS__ AUTO_MKDIRS= yes # totally automatic PLIST generation -- probably preferable? # #GENERATE_PLIST= cd ${DESTDIR}${PREFIX}; \ # ${FIND} * \( -type f -or -type l \) | ${SORT}; # GENERATE_PLIST+= cd ${DESTDIR}${PREFIX} && \ ${FIND} share/ctwm/images \( -type f -or -type l \) | ${SORT}; post-extract: ${CP} ${FILESDIR}/Makefile ${WRKSRC}/ do-configure: ${MKDIR} ${BSD_MAKE_BUILD_DIR} # xxx this should be automatic in do-build if USE_BSD_MAKEFILE! # # xxx otherwise this would be nice, but .WAIT doesn't work on the command line # #BUILD_TARGET= obj .WAIT all # pre-build: cd ${WRKSRC} && ${BUILD_MAKE_CMD} obj post-install: .for f in CHANGES.md README.md ${INSTALL_DATA} ${WRKSRC}/${f} ${DESTDIR}${PREFIX}/share/doc/ctwm/ .endfor .for f in system.ctwmrc ${INSTALL_DATA} ${WRKSRC}/${f} ${DESTDIR}${PREFIX}/share/examples/ctwm/ .endfor .for f in example.ctwmrc levitte.ctwmrc peterc.ctwmrc ${INSTALL_DATA} ${WRKSRC}/examples/${f} \ ${DESTDIR}${PREFIX}/share/examples/ctwm/ .endfor ${INSTALL_DATA} ${FILESDIR}/ctwm.desktop \ ${DESTDIR}${PREFIX}/share/xsessions/ctwm.desktop .include "../../mk/jpeg.buildlink3.mk" .include "../../x11/libXext/buildlink3.mk" .include "../../x11/libXmu/buildlink3.mk" .include "../../x11/libXpm/buildlink3.mk" .include "../../mk/bsd.pkg.mk" ================ ================ # $NetBSD$ .include <bsd.own.mk> PROG= ctwm SRCS+= add_window.c SRCS+= animate.c SRCS+= captive.c SRCS+= clargs.c SRCS+= clicktofocus.c SRCS+= colormaps.c SRCS+= ctopts.c SRCS+= ctwm_main.c #SRCS+= ctwm_shutdown.c # xxx next release? #SRCS+= ctwm_takeover.c # xxx next release? SRCS+= ctwm_wrap.c SRCS+= cursor.c SRCS+= drawing.c SRCS+= event_core.c SRCS+= event_handlers.c SRCS+= event_names.c SRCS+= event_utils.c SRCS+= ewmh.c SRCS+= ewmh_atoms.c SRCS+= functions.c SRCS+= functions_captive.c SRCS+= functions_icmgr_wsmgr.c SRCS+= functions_identify.c SRCS+= functions_misc.c SRCS+= functions_warp.c SRCS+= functions_win.c SRCS+= functions_win_moveresize.c SRCS+= functions_workspaces.c SRCS+= gc.c SRCS+= iconmgr.c SRCS+= icons.c SRCS+= icons_builtin.c SRCS+= image.c SRCS+= image_bitmap.c SRCS+= image_bitmap_builtin.c SRCS+= image_jpeg.c SRCS+= image_xpm.c SRCS+= image_xwd.c SRCS+= list.c SRCS+= mask_screen.c SRCS+= menus.c SRCS+= mwmhints.c SRCS+= occupation.c SRCS+= otp.c SRCS+= parse.c SRCS+= parse_be.c SRCS+= parse_m4.c SRCS+= parse_yacc.c #SRCS+= r_area.c # xxx next release? #SRCS+= r_area_list.c # xxx next release? #SRCS+= r_layout.c # xxx next release? SRCS+= session.c #SRCS+= signals.c # xxx next release? SRCS+= util.c SRCS+= vscreen.c SRCS+= win_decorations.c SRCS+= win_decorations_init.c SRCS+= win_iconify.c SRCS+= win_ops.c SRCS+= win_regions.c SRCS+= win_resize.c #SRCS+= win_ring.c # xxx next release? SRCS+= win_utils.c SRCS+= windowbox.c SRCS+= workspace_config.c SRCS+= workspace_manager.c SRCS+= workspace_utils.c #SRCS+= xparsegeometry.c # xxx next release? #SRCS+= xrandr.c # xxx next release? # special sources SRCS+= gram.y SRCS+= lex.l # External libs (note these are in ext/$>.c) # SRCS+= repl_str.c # Generated files # SRCS+= ctwm_atoms.c SRCS+= deftwmrc.c SRCS+= version.c PREFIX?= /usr XPMDIR= ${PREFIX}/share/ctwm/images # xxx mimic pkgsrc to support systems without <bsd.x11.mk> (which currently # include non-NetBSD pkgsrc platforms using bootstrap-mk-files!) # PKG_SYSCONFSUBDIR?= X11/ctwm PKG_SYSCONFBASEDIR?= /etc PKG_SYSCONFDIR?= ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR} X11ETCDIR?= ${PKG_SYSCONFBASEDIR}/X11 CTWMCONFIGDIR= ${X11ETCDIR}/ctwm # xxx CONFIGFILES is not (yet) supported by pkgsrc bootstrap-mk-files # (note CONFIGFILES still uses ${FILESDIR_${F}:U${FILESDIR}} for dest) # FILES+= system.ctwmrc FILESDIR_system.ctwmrc= ${CTWMCONFIGDIR} .if empty(CPPFLAGS:M*-I.*) CPPFLAGS+= -I. .endif CPPFLAGS+= -I${.CURDIR} -I${.CURDIR}/ext CPPFLAGS+= -DPIXMAP_DIRECTORY=\"${XPMDIR}\" CPPFLAGS+= -DSYSTEM_INIT_FILE=\"${CTWMCONFIGDIR}/system.ctwmrc\" CPPFLAGS+= -DEWMH CPPFLAGS+= -DJPEG CPPFLAGS+= -DUSE_SYS_REGEX CPPFLAGS+= -DXPM #CPPFLAGS+= -DXRANDR # xxx next release? CPPFLAGS+= -DUSEM4 CPPFLAGS+= -DM4CMD=\"${M4:Um4}\" # NetBSD make has a wee hack which allows one to include a sub-directory # pathname part in the source file given in SRCS and have the object file be # created in that same subdir. However this is not portable and so to avoid # complication we'll just copy the source from its subdir and build from that. # repl_str.c: ${.CURDIR}/ext/repl_str.c cp ${.CURDIR}/ext/repl_str.c $@ YHEADER=1 # xxx this is stupid, but avoids patching a bunch of files with: # # s/gram.tab.h/gram.h/ # gram.tab.h: Makefile ln -fs gram.h $@ ydeps+= add_window.o ydeps+= ctwm_main.o ydeps+= drawing.o ydeps+= event_handlers.o ydeps+= gc.o ydeps+= iconmgr.o ydeps+= mask_screen.o ydeps+= menus.o ydeps+= parse_be.o ydeps+= parse_yacc.o ydeps+= util.o ydeps+= win_decorations.o ydeps+= workspace_manager.o ${ydeps}: gram.tab.h # xxx this is also stupid, but avoids patching a bunch of files to remove it # ctwm_config.h: Makefile rm -f ctwm_config.h touch ctwm_config.h ${SRCS:R:S/$/.o/g}: ctwm_config.h ctwm_atoms.c: ctwm_atoms.in # tools/mk_atoms.sh ${SHELL} ${.CURDIR}/tools/mk_atoms.sh ${.CURDIR}/ctwm_atoms.in ctwm_atoms CTWM ctwm_atoms.h: ctwm_atoms.c add_window.o: ctwm_atoms.h animate.o: ctwm_atoms.h captive.o: ctwm_atoms.h ctwm_main.o: ctwm_atoms.h event_handlers.o: ctwm_atoms.h ewmh.o: ctwm_atoms.h functions_win.o: ctwm_atoms.h mwmhints.o: ctwm_atoms.h occupation.o: ctwm_atoms.h otp.o: ctwm_atoms.h parse.o: ctwm_atoms.h parse_be.o: ctwm_atoms.h session.o: ctwm_atoms.h vscreen.o: ctwm_atoms.h win_utils.o: ctwm_atoms.h workspace_manager.o: ctwm_atoms.h workspace_utils.o: ctwm_atoms.h ewmh_atoms.c: ewmh_atoms.in # tools/mk_atoms.sh ${SHELL} ${.CURDIR}/tools/mk_atoms.sh ${.CURDIR}/ewmh_atoms.in ewmh_atoms EWMH ewmh_atoms.h: ewmh_atoms.c add_window.o: ewmh_atoms.h ewmh.o: ewmh_atoms.h win_utils.o: ewmh_atoms.h workspace_utils.o: ewmh_atoms.h deftwmrc.c: system.ctwmrc # tools/mk_deftwmrc.sh ${SHELL} ${.CURDIR}/tools/mk_deftwmrc.sh ${.CURDIR}/system.ctwmrc > deftwmrc.c event_names_table.h: event_names.list # tools/mk_event_names.sh ${SHELL} ${.CURDIR}/tools/mk_event_names.sh ${.CURDIR}/event_names.list > $@ event_names.o: event_names_table.h functions_defs.h: functions_defs.list # tools/mk_function_bits.sh ${SHELL} ${.CURDIR}/tools/mk_function_bits.sh ${.CURDIR}/functions_defs.list ${.OBJDIR} functions_deferral.h functions_parse_table.h functions_dispatch_execution.h: functions_defs.h event_handlers.o: functions_defs.h ewmh.o: functions_defs.h functions.o: functions_defs.h functions.o: functions_deferral.h functions_misc.o: functions_defs.h functions_win.o: functions_defs.h functions_win_moveresize.o: functions_defs.h gram.o: functions_defs.h iconmgr.o: functions_defs.h lex.o: functions_defs.h menus.o: functions_defs.h parse_be.o: functions_defs.h parse_yacc.o: functions_defs.h win_decorations_init.o: functions_defs.h win_resize.o: functions_defs.h functions.o: functions_deferral.h functions.o: functions_dispatch_execution.h functions.o: functions_internal.h functions_captive.o: functions_internal.h functions_icmgr_wsmgr.o: functions_internal.h functions_identify.o: functions_internal.h functions_misc.o: functions_internal.h functions_warp.o: functions_internal.h functions_win.o: functions_internal.h functions_win_moveresize.o: functions_internal.h functions_workspaces.o: functions_internal.h parse_be.o: functions_parse_table.h # assume this is building a release with a pre-generated version.c.in # version.c: version.c.in VERSION # tools/mk_version_in.sh ${SHELL} ${.CURDIR}/tools/mk_version_in.sh ${.CURDIR}/version.c.in | \ sed -e 's/%%VCSTYPE%%/NULL/' \ -e 's/%%REVISION%%/NULL/' > $@ LDADD+= -ljpeg DPADD+= ${LIBJPEG} LDADD+= -lXpm -lXmu -lXt -lSM -lICE -lXext -lX11 -lxcb -lXau -lXdmcp DPADD+= ${LIBXPM} ${LIBXMU} ${LIBXT} ${LIBSM} ${LIBICE} ${LIBXEXT} ${LIBX11} ${LIBXCB} ${LIBXAU} ${LIBXDMCP} FILESDIR= ${XPMDIR} #xxx# FILES!= cd ${.CURDIR}/xpm && echo *.xpm FILES+= 3D_Expand15.xpm FILES+= 3D_Iconify15.xpm FILES+= 3D_Lightning15.xpm FILES+= 3D_Menu15.xpm FILES+= 3D_Resize15.xpm FILES+= 3D_Zoom15.xpm FILES+= 3dcircle.xpm FILES+= 3ddimple.xpm FILES+= 3ddot.xpm FILES+= 3dfeet.xpm FILES+= 3dleopard.xpm FILES+= 3dpie.xpm FILES+= 3dpyramid.xpm FILES+= 3dslant.xpm FILES+= IslandD.xpm FILES+= IslandW.xpm FILES+= LRom.xpm FILES+= LRom1.xpm FILES+= arthur.xpm FILES+= audio_editor.xpm FILES+= background1.xpm FILES+= background2.xpm FILES+= background3.xpm FILES+= background4.xpm FILES+= background5.xpm FILES+= background6.xpm FILES+= background7.xpm FILES+= background8.xpm FILES+= background9.xpm FILES+= ball1.xpm FILES+= ball10.xpm FILES+= ball11.xpm FILES+= ball12.xpm FILES+= ball2.xpm FILES+= ball3.xpm FILES+= ball4.xpm FILES+= ball5.xpm FILES+= ball6.xpm FILES+= ball7.xpm FILES+= ball8.xpm FILES+= ball9.xpm FILES+= cdrom1.xpm FILES+= claude.xpm FILES+= clipboard.xpm FILES+= datebook.xpm FILES+= emacs.xpm FILES+= ghostview.xpm FILES+= hpterm.xpm FILES+= mail0.xpm FILES+= mail1.xpm FILES+= nothing.xpm FILES+= nt1.xpm FILES+= nt2.xpm FILES+= pixmap.xpm FILES+= postit.xpm FILES+= skull.xpm FILES+= spider.xpm FILES+= supman1.xbm FILES+= supman2.xbm FILES+= supman3.xbm FILES+= supman4.xbm FILES+= supman5.xbm FILES+= supman6.xbm FILES+= supman7.xbm FILES+= supman8.xbm FILES+= supman9.xbm FILES+= term.xpm FILES+= unknown.xpm FILES+= unknown1.xpm FILES+= unread.xpm FILES+= welcome.xpm FILES+= welcome.xwd FILES+= xarchie.xpm FILES+= xcalc.xpm FILES+= xcalc2.xpm FILES+= xedit.xpm FILES+= xftp.xpm FILES+= xgopher.xpm FILES+= xgrab.xpm FILES+= xhpcalc.xpm FILES+= xirc.xpm FILES+= xmail.xpm FILES+= xman.xpm FILES+= xmosaic.xpm FILES+= xnomail.xpm FILES+= xrn-compose.xpm FILES+= xrn.goodnews.xpm FILES+= xrn.nonews.xpm FILES+= xrn.xpm FILES+= xterm.xpm .PATH: ${.CURDIR}/xpm ctwm.1: ctwm.1.docbook xmlto --skip-validation man ctwm.1.docbook CTWM_VERSION!= cat ${.CURDIR}/VERSION ctwm.1.docbook: doc/manual/ctwm.1.adoc VERSION # tools/mk_version_in.sh sed -e 's|@ETCDIR@|${CTWMCONFIGDIR}|' \ -e 's|@ctwm_version_str@|${CTWM_VERSION}|' \ < ${.CURDIR}/doc/manual/ctwm.1.adoc | \ asciidoc -d manpage -b docbook -o $@ - .include <bsd.files.mk> .-include <bsd.x11.mk> .include <bsd.prog.mk> ================ -- Greg A. Woods <gwoods%acm.org@localhost> Kelowna, BC +1 250 762-7675 RoboHack <woods%robohack.ca@localhost> Planix, Inc. <woods%planix.com@localhost> Avoncote Farms <woods%avoncote.ca@localhost>
Attachment:
pgp0RcunFEGpN.pgp
Description: OpenPGP Digital Signature