Switched the build system from a hand-made makefile to Autotools.

That actually took quite some time, but it's finally finished now.
It's missing only a couple minor things from the old Makefile.
This commit is contained in:
onpon4 2017-01-26 17:27:55 -05:00
parent 9cc2fe8253
commit e3c2e2fddc
11 changed files with 393 additions and 18 deletions

13
.gitignore vendored
View File

@ -3,6 +3,7 @@ dist
*.o
*.pak
starfighter
src/starfighter
# Autoconf / Automake
aclocal.m4
@ -23,18 +24,6 @@ config.h.in~
src/Makefile
src/Makefile.in
src/.deps
data/Makefile
data/Makefile.in
data/.deps
gfx/Makefile
gfx/Makefile.in
gfx/.deps
music/Makefile
music/Makefile.in
music/.deps
sound/Makefile
sound/Makefile.in
sound/.deps
# Mac OS X
*.DS_Store

11
Makefile.am Normal file
View File

@ -0,0 +1,11 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
SUBDIRS = src
dist_doc_DATA = README.txt COPYING LICENSES
nobase_dist_doc_DATA = docs/*
nobase_pkgdata_DATA = data/* gfx/* music/* sound/*

View File

@ -55,14 +55,15 @@ Project: Starfighter depends on the following libraries to build:
* SDL2_image <http://www.libsdl.org/projects/SDL_image/>
* SDL2_mixer <http://www.libsdl.org/projects/SDL_mixer/>
Once you have all dependencies installed, simply run:
Once you have all dependencies installed, you can do the following:
./configure
make
And optionally (as root):
make install
If this doesn't work, you may need to tweak the makefile.
Run "./configure --help" to see more options.
The third step ("make install") is technically optional, but highly
recommended.
To play, simply run the starfighter binary.

48
configure.ac Normal file
View File

@ -0,0 +1,48 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
#
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
AC_PREREQ([2.69])
AC_INIT([Project: Starfighter], [1.7-dev], [onpon4@riseup.net], [starfighter])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
AC_CONFIG_SRCDIR([src/Starfighter.cpp])
AC_CONFIG_HEADERS([config.h])
PKG_PROG_PKG_CONFIG
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_INSTALL
STARFIGHTER_CFLAGS="-DVERSION=\\\"$PACKAGE_VERSION\\\""
# Checks for libraries.
PKG_CHECK_EXISTS([SDL2_mixer], [
PKG_CHECK_MODULES([SDL], [sdl2 SDL2_image SDL2_mixer])
], [
PKG_CHECK_MODULES([SDL], [sdl2 SDL2_image])
STARFIGHTER_CFLAGS="$STARFIGHTER_CFLAGS -DNOSOUND"
echo "Note: SDL_mixer not found; audio will not be supported."
])
AC_SUBST([STARFIGHTER_CFLAGS])
# Checks for header files.
AC_CHECK_HEADERS([ctype.h errno.h stdio.h stdlib.h string.h time.h math.h pwd.h sys/stat.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
# Checks for library functions.
AC_FUNC_MALLOC
AC_CHECK_FUNCS([atexit mkdir])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT

7
data/Makefile.am Normal file
View File

@ -0,0 +1,7 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
nobase_pkgdata_DATA = \
credits.txt

18
docs/Makefile.am Normal file
View File

@ -0,0 +1,18 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
nobase_dist_doc_DATA = \
arrowNorthEast.png \
COPYING \
dollar.png \
heart.png \
index.html \
plasmaAmmo.png \
plasmaDamage.png \
plasmaRate.png \
rocket.png \
rocketAmmo.png \
sflogo.png \
superCharge.png

195
gfx/Makefile.am Normal file
View File

@ -0,0 +1,195 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
nobase_pkgdata_DATA = \
aimFighter1.png \
aimFighter2.png \
alienDevice.png \
arrowEast.png \
arrowNorth.png \
arrowNorthEast.png \
arrowNorthWest.png \
arrowSouth.png \
arrowSouthEast.png \
arrowSouthWest.png \
arrowWest.png \
asteroid1.png \
asteroid2.png \
asteroid3.png \
barrier.png \
buyIcon.png \
cargo1.png \
chainLink.png \
cloakShip1.png \
cloakShip2.png \
credits.jpg \
cursor.png \
dollar.png \
drone1.png \
drone2.png \
dualFighter1.png \
dualFighter2.png \
elec1.png \
elec2.png \
elec3.png \
elec4.png \
eliteFighter1.png \
eliteFighter2.png \
escort1.png \
escort2.png \
evilUrsula1.png \
evilUrsula2.png \
execTrans1.png \
execTrans2.png \
explode1.png \
explode2.png \
explode3.png \
explode4.png \
explode05.png \
explode06.png \
explode07.png \
explode08.png \
explode9.png \
explode10.png \
explode11.png \
explode12.png \
explode13.png \
explode14.png \
explode15.png \
explode16.png \
eyananth.jpg \
face_chris.png \
face_crew.png \
face_kline.png \
face_krass.png \
face_phoebe.png \
face_sid.png \
face_ursula.png \
firefly1.png \
firefly2.png \
firefly-big.png \
friendArrowEast.png \
friendArrowNorth.png \
friendArrowNorthEast.png \
friendArrowNorthWest.png \
friendArrowSouth.png \
friendArrowSouthEast.png \
friendArrowSouthWest.png \
friendArrowWest.png \
frigateBody1.png \
frigateBody2.png \
frigateGun11.png \
frigateGun12.png \
frigateGun21.png \
frigateGun22.png \
gameover.png \
goodTrans1.png \
goodTrans2.png \
greenDir.png \
heart.png \
icon1.png \
icon2.png \
icon3.png \
icon4.png \
icon5.png \
icon6.png \
icon7.png \
icon8.png \
icon9.png \
icon10.png \
icon11.png \
icon12.png \
icon13.png \
icon14.png \
icon15.png \
icon16.png \
icon17.png \
icon18.png \
icon19.png \
icon20.png \
icon21.png \
icon22.png \
icon23.png \
icon24.png \
icon25.png \
icon26.png \
iconBase.png \
kline11.png \
kline12.png \
klineText.png \
merc1.png \
merc2.png \
mine.png \
mineBoss1.png \
mineBoss2.png \
mineBossWing11.png \
mineBossWing12.png \
mineBossWing21.png \
mineBossWing22.png \
mineBossWing31.png \
mineBossWing32.png \
mineBossWing41.png \
mineBossWing42.png \
miner1.png \
miner2.png \
missileBoat1.png \
missileBoat2.png \
mobileCannon1.png \
mobileCannon2.png \
mobileShield1.png \
mobileShield2.png \
mordor.jpg \
ore1.png \
ore2.png \
ore3.png \
phoebeText.png \
planet_blue.png \
planet_green.png \
planet_orange.png \
planet_red.png \
planet_sun.png \
plasmaAmmo.png \
plasmaDamage.png \
plasmaGreen.png \
plasmaRate.png \
plasmaRed.png \
plutoBoss1.png \
plutoBoss2.png \
pod.png \
prlogo.png \
rebelCarrier1.png \
rebelCarrier2.png \
redDir.png \
rocket.png \
rocket1.png \
rocket2.png \
rocketAmmo.png \
sellIcon.png \
sflogo.png \
sid1.png \
sid2.png \
sidText.png \
slaveTrans1.png \
slaveTrans2.png \
smallFont.png \
sol.jpg \
spirit.jpg \
splitBoss11.png \
splitBoss12.png \
splitBoss21.png \
splitBoss22.png \
splitBoss31.png \
splitBoss32.png \
startUp.jpg \
stunBolt.png \
superCharge.png \
targetText.png \
transport1.png \
transport2.png \
tug1.png \
tug2.png \
ursulaText.png \
wingmate1.png \
wingmate2.png

17
music/Makefile.am Normal file
View File

@ -0,0 +1,17 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
nobase_pkgdata_DATA = \
death.ogg \
frozen_jam.ogg \
last_cyber_dance.ogg \
orbital_colossus.ogg \
railjet_short.ogg \
RE.ogg \
rise_of_spirit.ogg \
sound_and_silence.ogg \
space_dimensions.ogg \
through_space.ogg \
walking_among_androids.ogg

24
sound/Makefile.am Normal file
View File

@ -0,0 +1,24 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
nobase_pkgdata_DATA = \
beamLaser.ogg \
cloak.ogg \
clock.ogg \
explode.ogg \
explode2.ogg \
explode3.ogg \
explode4.ogg \
flyby.ogg \
hyperSpace.ogg \
item.ogg \
laser.ogg \
maledeath.ogg \
missile.ogg \
missile2.ogg \
plasma.ogg \
plasma2.ogg \
plasma3.ogg \
shield.ogg

65
src/Makefile.am Normal file
View File

@ -0,0 +1,65 @@
# This file has been dedicated to the public domain, to the extent
# possible under applicable law, via CC0. See
# http://creativecommons.org/publicdomain/zero/1.0/ for more
# information. This file is offered as-is, without any warranty.
bin_PROGRAMS = starfighter
starfighter_CPPFLAGS = $(STARFIGHTER_CFLAGS) -Wall -O2 -DDATADIR=\"$(pkgdatadir)\"
starfighter_CXXFLAGS = $(SDL_CFLAGS)
starfighter_LDADD = $(SDL_LIBS)
starfighter_SOURCES = \
Starfighter.cpp \
alien.cpp \
alien.h \
audio.cpp \
audio.h \
bullet.cpp \
bullet.h \
cargo.cpp \
cargo.h \
collectable.cpp \
collectable.h \
colors.cpp \
colors.h \
cutscene.cpp \
cutscene.h \
defs.h \
engine.cpp \
engine.h \
event.cpp \
event.h \
explosion.cpp \
explosion.h \
game.cpp \
game.h \
gfx.cpp \
gfx.h \
info.cpp \
info.h \
intermission.cpp \
intermission.h \
mission.cpp \
mission.h \
player.cpp \
player.h \
radio.cpp \
radio.h \
renderer.cpp \
renderer.h \
save.cpp \
save.h \
screen.cpp \
screen.h \
ship.cpp \
ship.h \
shop.cpp \
shop.h \
structs.h \
title.cpp \
title.h \
weapons.cpp \
weapons.h \
window.cpp \
window.h