1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
--- /dev/null
+++ b/SConstruct
@@ -0,0 +1,105 @@
+import os
+import glob
+from SCons.Script import *
+
+vars = Variables()
+vars.Add('BINDIR', 'Binary install dir', '/usr/games')
+vars.Add('DATADIR', 'Data install dir', '/usr/share/games/atom4')
+vars.Add('MANDIR', 'Manpage dir', '/usr/share/man')
+vars.Add('REALDATADIR', 'Runtime data dir', None)
+
+env = Environment(
+ variables=vars,
+ CXX=os.environ.get('CXX', 'g++'),
+)
+
+Help(vars.GenerateHelpText(env))
+
+def split_flags(name):
+ return os.environ.get(name, '').split()
+
+env.Append(
+ CCFLAGS = split_flags('CFLAGS'),
+ CPPFLAGS = split_flags('CPPFLAGS'),
+ LINKFLAGS = split_flags('LDFLAGS'),
+)
+
+env.Append(CCFLAGS=['-O2'])
+
+if env.get('REALDATADIR') is None:
+ env['REALDATADIR'] = env['DATADIR']
+
+env.Append(
+ CPPDEFINES = {
+ 'REALDATADIR': f"\"{env['REALDATADIR']}\"",
+ },
+)
+
+env.Append(
+ CPPPATH = [
+ '#',
+ '#engine',
+ '#general',
+ '#ncurses',
+ '#proglib/c++',
+ '#x',
+ ]
+)
+
+env['LINK'] = env['CXX']
+
+env.Append(
+ LIBPATH = [
+ '#proglib',
+ '/usr/X11R6/lib',
+ ],
+ LIBS = ['X11', 'Xpm', 'panel', 'ncurses'],
+)
+
+VariantDir('obj', '.', duplicate=0)
+
+sources = [
+ # top-level
+ 'atom4.cc',
+ 'interface.cc',
+
+ # engine
+ 'engine/ai.cc',
+ 'engine/board4.cc',
+ 'engine/color4.cc',
+ 'engine/game.cc',
+ 'engine/triboard.cc',
+
+ # general utilities (NOT testtimer.cc!)
+ 'general/event.cc',
+ 'general/resource.cc',
+
+ # ncurses UI
+ 'ncurses/textui.cc',
+
+ # X11 UI implementation
+ 'x/xatom4.cc',
+ 'x/xcursor.cc',
+ 'x/xscoreboard.cc',
+ 'x/xsprite.cc',
+ 'x/xtriboard.cc',
+ 'x/xutil.cc',
+
+ # prog/lib
+ 'proglib/c++/dlist.cc',
+ 'proglib/c++/exception.cc',
+ 'proglib/c++/list.cc',
+ 'proglib/c++/stack.cc',
+ 'proglib/c++/txtutil.cc',
+]
+
+program = env.Program(
+ target='atom4',
+ source=sources,
+)
+
+env.Install(env['BINDIR'], program)
+env.Install(os.path.join(env['MANDIR'], 'man6'), 'atom4.6')
+
+Default(program)
+
|