blob: fd0dd948f90c07edeb95aaea3c370e4d08b6a1e8 [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001#!/bin/sh
2
3PJDIR=`pwd`
4
5#
6# Detect machine, unless the choice has been made already.
7#
8if [ "$MACHINE" = "" ]; then
9 MACHINE=`uname -m`
10fi
11
12if echo $MACHINE | grep sun4u > /dev/null; then
13 MACHINE_NAME=sparc
14elif echo $MACHINE | grep i.86 > /dev/null; then
15 MACHINE_NAME=i386
16elif echo $MACHINE | grep x86_64 > /dev/null; then
17 MACHINE_NAME=x86_64
18elif echo $MACHINE | grep alpha > /dev/null; then
19 MACHINE_NAME=alpha
20elif echo $MACHINE | grep Mac > /dev/null; then
21 MACHINE_NAME=powerpc
22else
23 echo "Unable to detect processor type ('uname -m' == '$MACHINE')"
24 exit 1
25fi
26
27#
28# Detect OS and host, unless the choice has been made already
29#
30if [ "$SYSTEM" = "" ]; then
31 SYSTEM=`uname -s`
32fi
33
34
35if echo $SYSTEM | grep -i sunos > /dev/null; then
36 OS_NAME=sunos
37 HOST_NAME=unix
38elif echo $SYSTEM | grep -i linux > /dev/null; then
39 OS_NAME=linux
40 HOST_NAME=unix
41 # More on linux version
42 KERNEL_VER=`uname -r`
43 if echo $KERNEL_VER | grep '^2\.4' > /dev/null; then
44 LINUX_POLL=select
45 elif echo $KERNEL_VER | grep '^2\.2' > /dev/null; then
46 LINUX_POLL=select
47 elif echo $KERNEL_VER | grep '^2\.0' > /dev/null; then
48 LINUX_EPOLL=select
49 else
50# LINUX_POLL=epoll
51 LINUX_POLL=select
52 fi
53elif echo $SYSTEM | grep -i mingw > /dev/null; then
54 OS_NAME=win32
55 HOST_NAME=mingw
56elif echo $SYSTEM | grep -i cygwin > /dev/null; then
57 OS_NAME=win32
58 HOST_NAME=mingw
59elif echo $SYSTEM | grep -i darwin > /dev/null; then
60 OS_NAME=darwinos
61 HOST_NAME=unix
62elif echo $SYSTEM | grep -i rtems > /dev/null; then
63 OS_NAME=rtems
64 HOST_NAME=unix
65else
66 echo "Unable to detect system type ('uname -s' == '$SYSTEM')"
67 exit 1
68fi
69
70#
71# Detect gcc, unless it has been chosen already
72#
73if [ "$CC_NAME" = "" ]; then
74 if gcc --version 2>&1 > /dev/null; then
75 CC_NAME=gcc
76 else
77 echo "Unable to find gcc"
78 exit 1
79 fi
80fi
81
82
83#
84# Specify TARGET_NAME, if not already choosen.
85#
86if [ "$TARGET_NAME" = "" ]; then
87 TARGET_NAME=$MACHINE_NAME-$OS_NAME-$CC_NAME
88fi
89
90
91if test -f build.mak; then
92 echo 'Saving build.mak --> build.mak.old'
93 cp -f build.mak build.mak.old
94fi
95
96echo 'build.mak configurations are set as follows:'
97echo " PJDIR = $PJDIR"
98echo " MACHINE_NAME = $MACHINE_NAME"
99echo " OS_NAME = $OS_NAME"
100echo " HOST_NAME = $HOST_NAME"
101echo " CC_NAME = $CC_NAME"
102echo " TARGET_NAME = $TARGET_NAME"
103echo " CROSS_COMPILE = $CROSS_COMPILE"
104echo " LINUX_POLL = $LINUX_POLL"
105
106echo "# Auto-generated build.mak" > build.mak
107echo "export PJDIR := $PJDIR" >> build.mak
108echo "export MACHINE_NAME := $MACHINE_NAME" >> build.mak
109echo "export OS_NAME := $OS_NAME" >> build.mak
110echo "export HOST_NAME := $HOST_NAME" >> build.mak
111echo "export CC_NAME := $CC_NAME" >> build.mak
112echo "export TARGET_NAME := $TARGET_NAME" >> build.mak
113echo "export CROSS_COMPILE := $CROSS_COMPILE" >> build.mak
114echo "export LINUX_POLL := $LINUX_POLL" >> build.mak
115
116echo >> build.mak
117
118cat << EOF >> build.mak
119export APP_CC = \$(CROSS_COMPILE)\$(CC_NAME)
120
121export APP_CFLAGS = \$(CC_CFLAGS) \$(OS_CFLAGS) \$(HOST_CFLAGS) \$(M_CFLAGS) \$(CFLAGS) -I\$(PJDIR)/pjlib/include -I\$(PJDIR)/pjlib-util/include -I\$(PJDIR)/pjnath/include -I\$(PJDIR)/pjmedia/include -I\$(PJDIR)/pjsip/include
122
123export APP_CXXFLAGS = \$(APP_CFLAGS)
124
125export APP_LDFLAGS = -L\$(PJDIR)/pjlib/lib -L\$(PJDIR)/pjlib-util/lib -L\$(PJDIR)/pjnath/lib -L\$(PJDIR)/pjmedia/lib -L\$(PJDIR)/pjsip/lib -L\$(PJDIR)/third_party/lib
126
127export APP_LDLIBS = -lpjsua-\$(TARGET_NAME) -lpjsip-ua-\$(TARGET_NAME) -lpjsip-simple-\$(TARGET_NAME) -lpjsip-\$(TARGET_NAME) -lpjmedia-codec-\$(TARGET_NAME) -lpjmedia-\$(TARGET_NAME) -lpjnath-\$(TARGET_NAME) -lpjlib-util-\$(TARGET_NAME) \$(APP_THIRD_PARTY_LIBS) \$(APP_THIRD_PARTY_EXT) -lpj-\$(TARGET_NAME) \$(CC_LDFLAGS) \$(OS_LDFLAGS) \$(M_LDFLAGS) \$(HOST_LDFLAGS) \$(LDFLAGS)
128
129export PJ_DIR = \$(PJDIR)
130export PJ_CC = \$(APP_CC)
131export PJ_CFLAGS = \$(APP_CFLAGS)
132export PJ_CXXFLAGS = \$(APP_CXXFLAGS)
133export PJ_LDFLAGS = \$(APP_LDFLAGS)
134export PJ_LDLIBS = \$(APP_LDLIBS)
135
136EOF
137
138touch user.mak
139
140
141echo
142echo "The configuration for current host has been written to 'build.mak'."
143echo "Customizations can be put in:"
144echo " - 'user.mak'"
145echo " - 'pjlib/include/pj/config_site.h'"
146echo
147echo "Next, run 'make dep && make clean && make'"
148