blob: a84cc5e47392af02fe542c04d8d7365b288964f1 [file] [log] [blame]
Benny Prijonoca391682005-11-07 19:57:09 +00001#!/bin/sh
2
Benny Prijonod9627842007-04-18 09:24:31 +00003PJDIR=`pwd`
4
Benny Prijonoca391682005-11-07 19:57:09 +00005#
Benny Prijono42c5b9e2006-05-10 19:24:40 +00006# Detect machine, unless the choice has been made already.
Benny Prijonoca391682005-11-07 19:57:09 +00007#
Benny Prijono42c5b9e2006-05-10 19:24:40 +00008if [ "$MACHINE" = "" ]; then
9 MACHINE=`uname -m`
10fi
Benny Prijonoca391682005-11-07 19:57:09 +000011
Benny Prijono42c5b9e2006-05-10 19:24:40 +000012if echo $MACHINE | grep sun4u > /dev/null; then
Benny Prijonoca391682005-11-07 19:57:09 +000013 MACHINE_NAME=sparc
14elif echo $MACHINE | grep i.86 > /dev/null; then
15 MACHINE_NAME=i386
Benny Prijono7db431e2006-07-23 14:38:49 +000016elif echo $MACHINE | grep x86_64 > /dev/null; then
17 MACHINE_NAME=x86_64
Benny Prijonoca391682005-11-07 19:57:09 +000018elif echo $MACHINE | grep alpha > /dev/null; then
19 MACHINE_NAME=alpha
Benny Prijono1ae79452006-05-21 23:20:54 +000020elif echo $MACHINE | grep Mac > /dev/null; then
Benny Prijonoe67d99a2006-03-20 12:39:24 +000021 MACHINE_NAME=powerpc
Benny Prijonoca391682005-11-07 19:57:09 +000022else
Benny Prijono42c5b9e2006-05-10 19:24:40 +000023 echo "Unable to detect processor type ('uname -m' == '$MACHINE')"
Benny Prijonoca391682005-11-07 19:57:09 +000024 exit 1
25fi
26
27#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000028# Detect OS and host, unless the choice has been made already
Benny Prijonoca391682005-11-07 19:57:09 +000029#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000030if [ "$SYSTEM" = "" ]; then
31 SYSTEM=`uname -s`
32fi
33
Benny Prijonoca391682005-11-07 19:57:09 +000034
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
Benny Prijono1a73a052005-11-07 21:58:51 +000041 # 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
Benny Prijono080a2c42006-03-30 20:55:20 +000050# LINUX_POLL=epoll
51 LINUX_POLL=select
Benny Prijono1a73a052005-11-07 21:58:51 +000052 fi
Benny Prijonoca391682005-11-07 19:57:09 +000053elif 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
Benny Prijonoe67d99a2006-03-20 12:39:24 +000059elif echo $SYSTEM | grep -i darwin > /dev/null; then
60 OS_NAME=darwinos
61 HOST_NAME=unix
Benny Prijono42c5b9e2006-05-10 19:24:40 +000062elif echo $SYSTEM | grep -i rtems > /dev/null; then
63 OS_NAME=rtems
64 HOST_NAME=unix
Benny Prijonoca391682005-11-07 19:57:09 +000065else
66 echo "Unable to detect system type ('uname -s' == '$SYSTEM')"
67 exit 1
68fi
69
70#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000071# Detect gcc, unless it has been chosen already
Benny Prijonoca391682005-11-07 19:57:09 +000072#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000073if [ "$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
Benny Prijonoca391682005-11-07 19:57:09 +000082
Benny Prijono0382cd82006-05-04 08:43:02 +000083#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000084# Specify TARGET_NAME, if not already choosen.
Benny Prijono0382cd82006-05-04 08:43:02 +000085#
Benny Prijono42c5b9e2006-05-10 19:24:40 +000086if [ "$TARGET_NAME" = "" ]; then
87 TARGET_NAME=$MACHINE_NAME-$OS_NAME-$CC_NAME
88fi
Benny Prijono0382cd82006-05-04 08:43:02 +000089
90
Benny Prijono81fd5c32005-11-07 20:04:34 +000091if test -f build.mak; then
92 echo 'Saving build.mak --> build.mak.old'
93 cp -f build.mak build.mak.old
94fi
95
Benny Prijonod9627842007-04-18 09:24:31 +000096echo '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"
Benny Prijonoca391682005-11-07 19:57:09 +0000105
106echo "# Auto-generated build.mak" > build.mak
Benny Prijonod9627842007-04-18 09:24:31 +0000107echo "export PJDIR := $PJDIR" >> build.mak
Benny Prijonoca391682005-11-07 19:57:09 +0000108echo "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
Benny Prijono0382cd82006-05-04 08:43:02 +0000112echo "export TARGET_NAME := $TARGET_NAME" >> build.mak
Benny Prijono42c5b9e2006-05-10 19:24:40 +0000113echo "export CROSS_COMPILE := $CROSS_COMPILE" >> build.mak
Benny Prijono1a73a052005-11-07 21:58:51 +0000114echo "export LINUX_POLL := $LINUX_POLL" >> build.mak
115
Benny Prijonod9627842007-04-18 09:24:31 +0000116echo >> 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) -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
Benny Prijono808f0ce2006-03-10 13:23:12 +0000138touch user.mak
139
Benny Prijonod9627842007-04-18 09:24:31 +0000140
Benny Prijono1a73a052005-11-07 21:58:51 +0000141echo
Benny Prijono808f0ce2006-03-10 13:23:12 +0000142echo "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'"
Benny Prijonoca391682005-11-07 19:57:09 +0000148