#!/bin/bash love_suffix="$1" love_amsuffix="$(echo "$love_suffix" | sed 's/\-/_/g' | sed 's/\./_/g')" flags=() upper() { echo "$@" | tr '[:lower:]' '[:upper:]' } sourcefind() { find "$1" $2 -type f \( -iname "*.c" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" -o -iname "*.lch" -o -iname "*.lua" \) | awk "{print \"./$prefix\"\$0\" \\\\\"}" | grep -v -f"$LOVEROOT/platform/unix/exclude" | sort } handlemodule() { module="$1" DEFINENAME="LOVE_MODULE_$(upper "$module")" printf "$DEFINENAME" } genmodules() { LOVEROOT="$(pwd)" cd ./src printf "liblove${love_amsuffix}_la_SOURCES = \\\\\n" sourcefind "common" | sed "s/^/ /" FILES="$(sourcefind "scripts" | sed "s/^/ /")" printf "${FILES:0:${#FILES}-2}\n\n" local -a modulelist=() local -a liblist=() cd ./modules prefix="modules/" for module in *; do flags+=("module-$module") FILES="$(sourcefind "$module" | sed "s/^/ /")" if [[ "x$FILES" != "x" ]]; then printf "liblove_module_$module = \\\\\n" printf "${FILES:0:${#FILES}-2}\n\n" modulelist+=("$module") fi if [[ "$module" = "sound" ]]; then printf "if !LOVE_NOMPG123\n" printf "liblove_module_$module += \\\\\n" printf "\t./modules/sound/lullaby/Mpg123Decoder.cpp \\\\\n" printf "\t./modules/sound/lullaby/Mpg123Decoder.h\n" printf "endif\n\n" fi done cd ../libraries prefix="libraries/" for library in *; do flags+=("library-$library") FILES="$(sourcefind "$library" | sed "s/^/ /")" if [[ ${#FILES} -gt 2 ]]; then printf "liblove_library_$library = \\\\\n" printf "${FILES:0:${#FILES}-2}\n\n" liblist+=("$library") fi done for module in "${modulelist[@]}"; do NAME=$(handlemodule "$module") printf "if $NAME\n" printf "liblove${love_amsuffix}_la_SOURCES += \$(liblove_module_$module)\n" printf "endif\n\n" done for library in "${liblist[@]}"; do NAME="LOVE_LIBRARY_$(upper "$library")" printf "if $NAME\n" printf "liblove${love_amsuffix}_la_SOURCES += \$(liblove_library_$library)\n" printf "endif\n\n" done cd ../.. } genflags() { printf > configure-modules-pre.ac printf > configure-modules-post.ac for flag in "${flags[@]}"; do prettyflag="$(echo "$flag" | sed -e 's/-/ love./' -e 's/-/./g')" varflag="enable_$(echo "$flag" | sed -e 's/[^a-zA-Z0-9]/_/')" defineflag="LOVE_ENABLE_$(upper $(echo $flag | sed -e 's/^[^-]*-//' -e 's/-/_/g'))" amflag="$(upper $(echo love-$flag | sed 's/-/_/g'))" # Don't generate an --enable rule for libraries if [[ "$(echo $flag | sed -e '/^library-/d')" != "" ]]; then printf "AC_ARG_ENABLE([$flag], [ --disable-$flag Turn off $prettyflag], [], [$varflag=yes])\n" >> configure-modules-pre.ac fi printf "AH_TEMPLATE([$defineflag], [])\n" >> configure-modules-post.ac printf "if test x\"\$$varflag\" = xyes; then\n" >> configure-modules-post.ac printf " AC_DEFINE([$defineflag], [])\n" >> configure-modules-post.ac printf "fi\n" >> configure-modules-post.ac printf "AM_CONDITIONAL([$amflag], [test x\$$varflag = xyes])\n\n" >> configure-modules-post.ac done } echo Generating src/Makefile.am ... inc_current='$(srcdir)' inc_modules="$inc_current/modules" inc_libraries="$inc_current/libraries" cat > src/Makefile.am << EOF AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)\ \$(SDL_CFLAGS) \$(lua_CFLAGS) \$(freetype2_CFLAGS)\ \$(openal_CFLAGS) \$(zlib_CFLAGS) \$(libmodplug_CFLAGS)\ \$(vorbisfile_CFLAGS) \$(theora_CFLAGS) AUTOMAKE_OPTIONS = subdir-objects SUBDIRS = SUFFIXES = .lua .lua.h if LOVE_BUILD_EXE # LÖVE executable bin_PROGRAMS = love${love_suffix} #love_LDFLAGS = love${love_amsuffix}_LDADD = liblove${love_suffix}.la \$(lua_LIBS) love${love_amsuffix}_SOURCES = love.cpp if LOVE_TARGET_OSX love${love_amsuffix}_LIBTOOLFLAGS = --tag=OBJCXX love${love_amsuffix}_SOURCES += \\ ./common/macosx.mm else love${love_amsuffix}_LIBTOOLFLAGS = --tag=CXX endif endif # Compile scripts .lua.lua.h: cd ./scripts; \ \$(LUA_EXECUTABLE) auto.lua \$< # libLÖVE lib_LTLIBRARIES = liblove${love_suffix}.la liblove${love_amsuffix}_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) -release \$(PACKAGE_VERSION) liblove${love_amsuffix}_la_LIBADD = \ \$(SDL_LIBS) \$(freetype2_LIBS) \$(lua_LIBS)\ \$(openal_LIBS) \$(zlib_LIBS) \$(libmodplug_LIBS)\ \$(vorbisfile_LIBS) \$(theora_LIBS) EOF genmodules >> src/Makefile.am echo "src/Makefile.am is updated! ^.^" echo "Generating configure-modules.ac" genflags cat >> configure-modules-post.ac << EOF AC_SUBST([LOVE_SUFFIX], [${love_suffix}]) EOF echo "configure-modules.ac is updated! ^.^"