summarylogtreecommitdiffstats
path: root/config.linux
blob: fe33112301cf6dcae82f379153cfacad644a2941 (plain)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/bin/sh --
# config.linux - linux specific configuration for sparforte

# enables opengl sdl1 postgresql readline

# NOTE
#   Essentially by creating this I can limit the amount of dependencies needed
#   and other damage sparforte's configure script can do such as calling sudo.

readonly startdir=$PWD
SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH:-$(date +%s)}

CC=gcc
CPU_FLAG=-march
PREFIX=/usr
MANPREFIX=/usr/share/man
GMAKETYPE=make

case $(uname -m) in
    i686)   CPU=i686 ;;
    x86_64) CPU=x86-64
esac

prepare() {
    local ext=${1##*.}
    printf -- '%s: updating...\n' "$1"
    cp -- "$1".orig temp."$ext"
    if gnatprep -DconfigbuildDate="\"$(date -d @"$SOURCE_DATE_EPOCH" +%y%m%d)\"" \
                -Dconfigreleased=false \
                -DPOSTGRES=true \
                -DMYSQL=false \
                -DOPENGL=true \
                -DREADLINE=true \
                -DSOUND=false \
                -DGCGI=false \
                -DBDB=false \
                -DAPQ=true temp."$ext" "$1" 2> /dev/null; then
        chmod 0444 "$1"
        rm -- temp."$ext" 2> /dev/null
    fi
}

cd "$startdir"
cp -v src/os_bindings/spar_linux.ads src/spar_os.ads
cp -v src/scanner-calendar-latest.ads src/scanner-calendar.ads
cp -v src/scanner-calendar-latest.adb src/scanner-calendar.adb

# sdl1
SDLLIBS=$(pkg-config --libs sdl)
SDLINCL=$(pkg-config --cflags sdl)

SDLLIBSTYPE="$SDLLIBS -lSDL_image"
SDLINCLTYPE=$SDLINCL

case $CPU in
    i686)   cp -v src/spar_os-sdl-32bit.ads src/spar_os-sdl.ads ;;
    x86-64) cp -v src/spar_os-sdl-64bit.ads src/spar_os-sdl.ads
esac

# opengl
MESALIBSTYPE=$(pkg-config --libs gl glu)
MESAINCLTYPE=$(pkg-config --cflags gl glu)

# gstreamer
# Disabling gstreamer for now:
#   ./parser_sound.o: In function `parser_sound__parseplay':
#   parser_sound.adb:(.text+0xe08): undefined reference to `play_uri'
#   parser_sound.adb:(.text+0xf27): undefined reference to `gst_error'
#   ./parser_sound.o: In function `parser_sound__startupsound':
#   parser_sound.adb:(.text+0x2528): undefined reference to `startup_gstreamer'
#   collect2: error: ld returned 1 exit status
#   gnatlink: error when calling /usr/bin/gcc
# GSTREAMERFLAG=-DGSTREAMER
# GSTREAMERLIBS=$(pkg-config --cflags --libs gstreamer-1.0)
GSTREAMERFLAG=
GSTREAMERLIBS=

# postgresql
PGLIBSSUB=$(pkg-config --cflags --libs libpq)

APQMAKESUB='$(MAKE) -C apq-2.1'
APQLIBSSUB='-L./apq-2.1'
APQINCLSSUB='-I./apq-2.1'

# readline
RLINCL='-I./areadline'
RLLIBS='-lreadline -lhistory'

# disable mysql support since it seems to include nonsense code:
#   apq-mysql.ads:38:24: identifier expected
#   apq-mysql.ads:40:23: aggregate may not have single positional component
#   apq-mysql.ads:40:24: missing operand
cd "$startdir"/src/apq-2.1
HAVE_MY=0 ./configure

touch c_gstreamer.c

cd "$startdir"/src
prepare world.ads
prepare user_io-getline.adb
prepare scanner_res.adb
prepare scanner_res.ads
prepare builtins.adb
prepare parser_db.adb
prepare parser_dbm.adb
prepare parser_mysql.adb
prepare parser_mysqlm.adb
prepare parser_sound.adb
prepare parser_pen.adb
prepare parser_gnat_cgi.adb
prepare parser_bdb.adb
prepare parser_btree_io.adb
prepare parser_hash_io.adb

sed "s!CPUFLAG!$CPU_FLAG!g
     s!CCTYPE!$CC!g
     s!^CPU=!&$CPU!g
     s!CPUTYPE!$ARCH!g
     s!MANPREFIXSUB!$MANPREFIX!g
     s!PREFIXSUB!$PREFIX!g
     s!GMAKETYPE!$GMAKETYPE!g
     s!SDLLIBSTYPE!$SDLLIBSTYPE!g
     s!SDLINCLTYPE!$SDLINCLTYPE!g
     s!CFLAGSTYPE!$CFLAGSTYPE!g
     s!PGLIBSSUB!$PGLIBSSUB!g
     s!MYSQLLIBSSUB!$MYSQLLIBSSUB!g
     s!APQLIBSSUB!$APQLIBSSUB!g
     s!APQINCLSSUB!$APQINCLSSUB!g
     s!SDLINCLSSUB!$SDLINCLSSUB!g
     s!APQMAKESUB!$APQMAKESUB!g
     s!FASTCGISUB!$FASTCGISUB!g
     s!GSTREAMERLIBSSUB!$GSTREAMERLIBS!g
     s!GSTREAMERFLAGSUB!$GSTREAMERFLAG!g
     s!GSTREAMEROUTSUB!$GSTREAMEROUT!g
     s!MESAINCLSUB!$MESAINCLTYPE!g
     s!MESALIBSSUB!$MESALIBSTYPE!g
     s!BDBSUB!$BDBLIBS!g
     s!BDBINCLSUB!$BDBINCL!g
     s!RLINCLSUB!$RLINCL!g
     s!RLLIBSSUB!$RLLIBS!g" < GNUmakefile.orig > GNUmakefile

cd "$startdir"/src/areadline
sed "s!RLINCLSUB!$RLINCL!g
     s!RLLIBSSUB!$RLLIBS!g" < GNUmakefile.orig > GNUmakefile

cd "$startdir"
sed "s!CPUFLAG!$CPU_FLAG!g
     s!CCTYPE!$CC!g
     s!CPUTYPE!$ARCH!g
     s!GMAKETYPE!$GMAKETYPE!g
     s!CFLAGSTYPE!$CFLAGSTYPE!g
     s!MANPREFIXSUB!$MANPREFIX!g
     s!PREFIXSUB!$PREFIX!g" < GNUmakefile.orig > GNUmakefile