Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
Benny Prijono | d962784 | 2007-04-18 09:24:31 +0000 | [diff] [blame] | 3 | PJDIR=`pwd` |
| 4 | |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 5 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 6 | # Detect machine, unless the choice has been made already. |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 7 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 8 | if [ "$MACHINE" = "" ]; then |
| 9 | MACHINE=`uname -m` |
| 10 | fi |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 11 | |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 12 | if echo $MACHINE | grep sun4u > /dev/null; then |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 13 | MACHINE_NAME=sparc |
| 14 | elif echo $MACHINE | grep i.86 > /dev/null; then |
| 15 | MACHINE_NAME=i386 |
Benny Prijono | 7db431e | 2006-07-23 14:38:49 +0000 | [diff] [blame] | 16 | elif echo $MACHINE | grep x86_64 > /dev/null; then |
| 17 | MACHINE_NAME=x86_64 |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 18 | elif echo $MACHINE | grep alpha > /dev/null; then |
| 19 | MACHINE_NAME=alpha |
Benny Prijono | 1ae7945 | 2006-05-21 23:20:54 +0000 | [diff] [blame] | 20 | elif echo $MACHINE | grep Mac > /dev/null; then |
Benny Prijono | e67d99a | 2006-03-20 12:39:24 +0000 | [diff] [blame] | 21 | MACHINE_NAME=powerpc |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 22 | else |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 23 | echo "Unable to detect processor type ('uname -m' == '$MACHINE')" |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 24 | exit 1 |
| 25 | fi |
| 26 | |
| 27 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 28 | # Detect OS and host, unless the choice has been made already |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 29 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 30 | if [ "$SYSTEM" = "" ]; then |
| 31 | SYSTEM=`uname -s` |
| 32 | fi |
| 33 | |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 34 | |
| 35 | if echo $SYSTEM | grep -i sunos > /dev/null; then |
| 36 | OS_NAME=sunos |
| 37 | HOST_NAME=unix |
| 38 | elif echo $SYSTEM | grep -i linux > /dev/null; then |
| 39 | OS_NAME=linux |
| 40 | HOST_NAME=unix |
Benny Prijono | 1a73a05 | 2005-11-07 21:58:51 +0000 | [diff] [blame] | 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 |
Benny Prijono | 080a2c4 | 2006-03-30 20:55:20 +0000 | [diff] [blame] | 50 | # LINUX_POLL=epoll |
| 51 | LINUX_POLL=select |
Benny Prijono | 1a73a05 | 2005-11-07 21:58:51 +0000 | [diff] [blame] | 52 | fi |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 53 | elif echo $SYSTEM | grep -i mingw > /dev/null; then |
| 54 | OS_NAME=win32 |
| 55 | HOST_NAME=mingw |
| 56 | elif echo $SYSTEM | grep -i cygwin > /dev/null; then |
| 57 | OS_NAME=win32 |
| 58 | HOST_NAME=mingw |
Benny Prijono | e67d99a | 2006-03-20 12:39:24 +0000 | [diff] [blame] | 59 | elif echo $SYSTEM | grep -i darwin > /dev/null; then |
| 60 | OS_NAME=darwinos |
| 61 | HOST_NAME=unix |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 62 | elif echo $SYSTEM | grep -i rtems > /dev/null; then |
| 63 | OS_NAME=rtems |
| 64 | HOST_NAME=unix |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 65 | else |
| 66 | echo "Unable to detect system type ('uname -s' == '$SYSTEM')" |
| 67 | exit 1 |
| 68 | fi |
| 69 | |
| 70 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 71 | # Detect gcc, unless it has been chosen already |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 72 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 73 | if [ "$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 |
| 80 | fi |
| 81 | |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 82 | |
Benny Prijono | 0382cd8 | 2006-05-04 08:43:02 +0000 | [diff] [blame] | 83 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 84 | # Specify TARGET_NAME, if not already choosen. |
Benny Prijono | 0382cd8 | 2006-05-04 08:43:02 +0000 | [diff] [blame] | 85 | # |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 86 | if [ "$TARGET_NAME" = "" ]; then |
| 87 | TARGET_NAME=$MACHINE_NAME-$OS_NAME-$CC_NAME |
| 88 | fi |
Benny Prijono | 0382cd8 | 2006-05-04 08:43:02 +0000 | [diff] [blame] | 89 | |
| 90 | |
Benny Prijono | 81fd5c3 | 2005-11-07 20:04:34 +0000 | [diff] [blame] | 91 | if test -f build.mak; then |
| 92 | echo 'Saving build.mak --> build.mak.old' |
| 93 | cp -f build.mak build.mak.old |
| 94 | fi |
| 95 | |
Benny Prijono | d962784 | 2007-04-18 09:24:31 +0000 | [diff] [blame] | 96 | echo 'build.mak configurations are set as follows:' |
| 97 | echo " PJDIR = $PJDIR" |
| 98 | echo " MACHINE_NAME = $MACHINE_NAME" |
| 99 | echo " OS_NAME = $OS_NAME" |
| 100 | echo " HOST_NAME = $HOST_NAME" |
| 101 | echo " CC_NAME = $CC_NAME" |
| 102 | echo " TARGET_NAME = $TARGET_NAME" |
| 103 | echo " CROSS_COMPILE = $CROSS_COMPILE" |
| 104 | echo " LINUX_POLL = $LINUX_POLL" |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 105 | |
| 106 | echo "# Auto-generated build.mak" > build.mak |
Benny Prijono | d962784 | 2007-04-18 09:24:31 +0000 | [diff] [blame] | 107 | echo "export PJDIR := $PJDIR" >> build.mak |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 108 | echo "export MACHINE_NAME := $MACHINE_NAME" >> build.mak |
| 109 | echo "export OS_NAME := $OS_NAME" >> build.mak |
| 110 | echo "export HOST_NAME := $HOST_NAME" >> build.mak |
| 111 | echo "export CC_NAME := $CC_NAME" >> build.mak |
Benny Prijono | 0382cd8 | 2006-05-04 08:43:02 +0000 | [diff] [blame] | 112 | echo "export TARGET_NAME := $TARGET_NAME" >> build.mak |
Benny Prijono | 42c5b9e | 2006-05-10 19:24:40 +0000 | [diff] [blame] | 113 | echo "export CROSS_COMPILE := $CROSS_COMPILE" >> build.mak |
Benny Prijono | 1a73a05 | 2005-11-07 21:58:51 +0000 | [diff] [blame] | 114 | echo "export LINUX_POLL := $LINUX_POLL" >> build.mak |
| 115 | |
Benny Prijono | d962784 | 2007-04-18 09:24:31 +0000 | [diff] [blame] | 116 | echo >> build.mak |
| 117 | |
| 118 | cat << EOF >> build.mak |
| 119 | export APP_CC = \$(CROSS_COMPILE)\$(CC_NAME) |
| 120 | |
| 121 | export 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 | |
| 123 | export APP_CXXFLAGS = \$(APP_CFLAGS) |
| 124 | |
| 125 | export 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 | |
| 127 | export 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 | |
| 129 | export PJ_DIR = \$(PJDIR) |
| 130 | export PJ_CC = \$(APP_CC) |
| 131 | export PJ_CFLAGS = \$(APP_CFLAGS) |
| 132 | export PJ_CXXFLAGS = \$(APP_CXXFLAGS) |
| 133 | export PJ_LDFLAGS = \$(APP_LDFLAGS) |
| 134 | export PJ_LDLIBS = \$(APP_LDLIBS) |
| 135 | |
| 136 | EOF |
| 137 | |
Benny Prijono | 808f0ce | 2006-03-10 13:23:12 +0000 | [diff] [blame] | 138 | touch user.mak |
| 139 | |
Benny Prijono | d962784 | 2007-04-18 09:24:31 +0000 | [diff] [blame] | 140 | |
Benny Prijono | 1a73a05 | 2005-11-07 21:58:51 +0000 | [diff] [blame] | 141 | echo |
Benny Prijono | 808f0ce | 2006-03-10 13:23:12 +0000 | [diff] [blame] | 142 | echo "The configuration for current host has been written to 'build.mak'." |
| 143 | echo "Customizations can be put in:" |
| 144 | echo " - 'user.mak'" |
| 145 | echo " - 'pjlib/include/pj/config_site.h'" |
| 146 | echo |
| 147 | echo "Next, run 'make dep && make clean && make'" |
Benny Prijono | ca39168 | 2005-11-07 19:57:09 +0000 | [diff] [blame] | 148 | |