jb (3593B) - raw
1 #!/bin/sh 2 # 3 # JB, the Jean-Yves Lefort's Build System 4 # Copyright (C) 2008 Jean-Yves Lefort <jylefort@brutele.be> 5 # 6 # This program is free software; you can redistribute it and/or modify 7 # it under the terms of the GNU General Public License as published by 8 # the Free Software Foundation; either version 3 of the License, or 9 # (at your option) any later version. 10 # 11 # This program is distributed in the hope that it will be useful, 12 # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 # GNU General Public License for more details. 15 # 16 # You should have received a copy of the GNU General Public License along 17 # with this program; if not, write to the Free Software Foundation, Inc., 18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 20 maintainer_cflags="-g -fstrict-aliasing -Wall -Werror \ 21 -Wformat-y2k \ 22 -Wformat-security \ 23 -Wno-format-zero-length \ 24 -Wno-unused-parameter \ 25 -Wfloat-equal \ 26 -Wdeclaration-after-statement \ 27 -Wendif-labels \ 28 -Wpointer-arith \ 29 -Wcast-align \ 30 -Waggregate-return \ 31 -Wmissing-noreturn \ 32 -Wmissing-format-attribute \ 33 -Wpacked \ 34 -Wredundant-decls \ 35 -Wnested-externs \ 36 -Winline \ 37 -Wno-pointer-sign \ 38 -Wshadow" 39 40 if test -z $jb_cc; then 41 jb_cc=cc 42 fi 43 44 if test -n $enable_maintainer_mode; then 45 jb_cflags="$jb_cflags $maintainer_cflags" 46 fi 47 48 if test -f jbsrc/jb.c; then 49 build=false 50 51 jb_c_sources= 52 for f in jb-action.c jb-compile-options.c jb-config.c jb-feature.c jb-group.c jb-install-options.c jb-main.c jb-resource.c jb-tests.c jb-util.c jb-variable.c; do 53 jb_c_sources="$jb_c_sources jbsrc/lib/src/core/$f" 54 done 55 56 jb_h_sources= 57 for f in jb-action.h jb-compile-options.h jb-config.h jb-decls.h jb-feature.h jb-group.h jb-install-options.h jb-main.h jb-resource.h jb-tests.h jb.h jb-util.h jb-variable.h; do 58 jb_h_sources="$jb_h_sources jbsrc/lib/src/core/$f" 59 done 60 61 jb_c_package_sources= 62 jb_h_package_sources= 63 64 # core includes 65 for f in `grep "^#jb_include <.*>" jbsrc/jb.c | sed -e 's|^#jb_include <\(.*\)>|\1|'`; do 66 jb_c_package_sources="$jb_c_package_sources jbsrc/lib/src/extras/$f.c" 67 jb_h_package_sources="$jb_h_package_sources jbsrc/lib/src/extras/$f.h" 68 done 69 70 # package includes 71 for f in `grep "^#jb_include \".*\"" jbsrc/jb.c | sed -e 's|^#jb_include "\(.*\)"|\1|'`; do 72 jb_c_package_sources="$jb_c_package_sources jbsrc/$f.c" 73 jb_h_package_sources="$jb_h_package_sources jbsrc/$f.h" 74 done 75 76 if test -f build/jbsrc/jb; then 77 for f in jbsrc/jb.c $jb_c_sources $jb_h_sources $jb_c_package_sources $jb_h_package_sources; do 78 if test $f -nt build/jbsrc/jb; then 79 build=true 80 break 81 fi 82 done 83 else 84 build=true 85 fi 86 87 if test $build = true; then 88 echo "building jb..." 89 90 mkdir -p build/jbsrc || exit 1 91 92 if ! gobject_cflags_libs=`pkg-config --cflags --libs 'gobject-2.0 >= 2.8.0' 2>/dev/null`; then 93 echo "ERROR: the GLib library was not found" >&2 94 exit 1 95 fi 96 97 sed -e 's|^#jb_include ["<]\(.*\)[">]|#include "\1.h"|' \ 98 jbsrc/jb.c > build/jbsrc/jb.c || exit 1 99 100 if ! $jb_cc \ 101 -o build/jbsrc/jb \ 102 -Ijbsrc/lib/src/core -Ijbsrc/lib/src/extras -Ijbsrc \ 103 -DG_LOG_DOMAIN="\"jb\"" \ 104 -DJB_SOURCES="\"$jb_c_sources $jb_h_sources\"" \ 105 -DJB_PACKAGE_SOURCES="\"$jb_c_package_sources $jb_h_package_sources\"" \ 106 $gobject_cflags_libs \ 107 $jb_cflags \ 108 $jb_cppflags \ 109 $jb_ldflags \ 110 build/jbsrc/jb.c \ 111 $jb_c_sources \ 112 $jb_c_package_sources \ 113 $jb_libs; then 114 echo "ERROR: cannot build jb" >&2 115 exit 1 116 fi 117 fi 118 119 exec build/jbsrc/jb "$@" 120 else 121 echo "ERROR: jb must be run from the toplevel directory" >&2 122 exit 1 123 fi