aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/mkarch
blob: ca7a24edeaaf47fffc2fb08519883f076fabd2b5 (plain) (blame)
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#! /bin/csh -f
#
# MKARCH.CSH -- Install the indicated version of the binaries, i.e.,
# archive the current objects and libraries, set BIN to point to bin.FFF,
# and set mkpkg to produce FFF binaries (FFF = ssun, sparc, etc.).
# Based on the IRAF hlib$mkfloat.csh script.

set DIRS 	= "cdl obm obmsh vximtool xaw3d xgterm ximtool xpm xtapemon"
set new_arch 	= "$1"
set clean	= 1

unalias	ls rm cat grep tar cmp diff echo ln mv zcat
unset noclobber


# Get the current platform architecture.
set UNAME=""
if (-e /usr/bin/uname) then
    set uname_cmd = /usr/bin/uname
    set UNAME=`/usr/bin/uname | tr '[A-Z]' '[a-z]'`
endif
if (-e /bin/uname) then
    set uname_cmd = /bin/uname
    set UNAME=`/bin/uname | tr '[A-Z]' '[a-z]'`
endif

switch ($UNAME) 
    case sunos:
        if (`$uname_cmd -m | cut -c2-` == "86pc") then
            set mach = "sunos"
        else
            setenv OSVERSION `uname -r | cut -c1`
            if ($OSVERSION == 5) then
                set mach = "ssun"
            else
                set mach = "sparc"
            endif
        endif
	breaksw
    case linux:
        if (`$uname_cmd -m` == "ppc") then
	     set mach = "linuxppc"
	else
            if (-f /etc/redhat-release) then
                set mach = "redhat"
            else
                set mach = "linux"
            endif
        endif
	breaksw
    case darwin: 
    case macosx:
    case macintel:
        if (`$uname_cmd -m` == "i386") then
            set mach            = "macintel"
        else
            set mach            = "macosx"
        endif
	breaksw
    case freebsd: 
	set mach = "freebsd"
	breaksw
    case cygwin:    
	set mach = "cygwin"
	breaksw
    case sunos:    
	set mach = "sunos"
	breaksw

    case generic:    
	set mach = "generic"
	breaksw
    default:	  
	set mach = "unknown"
	breaksw
endsw


# Process command line options.
set cur_arch = `ls -l bin | sed -e 's+^.*bin\.++'`
if ("$1" == "-show") then
    echo "System is currently configured for $cur_arch."
    exit 0

else if ("$1" == "-arch") then
    echo $cur_arch
    exit 0

else if ("$1" == "-current") then
    set new_arch = $mach
    echo "Configuring X11IRAF for $new_arch..."

else if ("$1" == "-noclean") then
    set new_arch = $mach
    set clean = 0
    echo "Configuring X11IRAF for $new_arch..."

else if ($#argv > 1) then
    # Get the list of directories to be changed.
    shift
    if ("$1" == "-d") then
        set DIRS = ""
        shift
        while ("$1" != "")
            set DIRS = "$DIRS $1"
            shift
        end
    endif
endif


# See if we're already there...
if ($cur_arch == $new_arch) then
    echo "System is already configured for '$new_arch'."
    exit 0
#else if ($new_arch != $mach) then
#    echo "Cannot configure for '$new_arch' on a '$mach' system."
#    exit 1
endif


# Create the bin/lib directories if needed.
if ($new_arch != "generic") then
    if (! -e bin.$new_arch) then
        mkdir bin.$new_arch
    endif
    if (! -e lib.$new_arch) then
        mkdir lib.$new_arch
    endif
endif


# Archive the current architecture files for later use.
if ($cur_arch != "generic") then
    echo "Archive and delete $cur_arch objects..."
    if (-e bin.$cur_arch) then
        rm -f _files
        foreach i (. $DIRS)
            find $i \( -name Makefile -o -name '*.[ao]' \) -print >> _files
        end
        tar -cf - `cat _files` | compress > bin.$cur_arch/OBJS.arc.Z
        rm -f _files

        if ($clean == 1) then
            echo "Cleaning Makefiles..."
            rm -f Makefile */Makefile */*/Makefile
            echo "Rebuilding Makefiles..."
            xmkmf
	    make Makefiles

            echo "Cleaning..."
            make clean >& /dev/null
        endif
    else
        echo "Old objects won't be archived, no bin.$cur_arch directory found."
    endif
endif


# Restore the old files if they exist.
if ($new_arch != "generic") then
    echo "Restore archived $new_arch objects..."
    if (-e bin.$new_arch/OBJS.arc.Z) then
	if ({ (zcat bin.$new_arch/OBJS.arc.Z | tar -xpf -) }) then
	    #rm -f bin.$new_arch/OBJS.arc.Z
	    echo rm -f bin.$new_arch/OBJS.arc.Z
	endif
    else if (-e bin.$new_arch/OBJS.arc) then
	if ({ (cat bin.$new_arch/OBJS.arc | tar -xpf -) }) then
	    #rm -f bin.$new_arch/OBJS.arc
	    echo rm -f bin.$new_arch/OBJS.arc
	endif
    else
	echo "No object archive found; full sysgen will be needed."
    endif
endif


# Set BIN to point to new directory.
rm -f bin; ln -s bin.$new_arch bin
rm -f lib; ln -s lib.$new_arch lib