Mercurial > SDL_sound_CoreAudio
diff Makefile @ 4:341cea3e13c6
Initial add.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Mon, 17 Sep 2001 18:12:03 +0000 |
parents | |
children | 3f214fe4a82f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Mon Sep 17 18:12:03 2001 +0000 @@ -0,0 +1,374 @@ +#-----------------------------------------------------------------------------# +# SDL_sound -- An abstract sound format decoding API. +# Copyright (C) 2001 Ryan C. Gordon. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (Please see the file LICENSE in the source's root directory.) +# +# This file written by Ryan C. Gordon. +#-----------------------------------------------------------------------------# + + +#-----------------------------------------------------------------------------# +# Makefile for building SDL_sound on Unix-like systems. Follow the +# instructions for editing this file, then run "make" on the command line. +#-----------------------------------------------------------------------------# + + +#-----------------------------------------------------------------------------# +# Set to your liking. +#-----------------------------------------------------------------------------# +CC = gcc +LINKER = gcc + + +#-----------------------------------------------------------------------------# +# If this makefile fails to detect Cygwin correctly, or you want to force +# the build process's behaviour, set it to "true" or "false" (w/o quotes). +#-----------------------------------------------------------------------------# +#cygwin := true +#cygwin := false +cygwin := autodetect + +#-----------------------------------------------------------------------------# +# You only need to set SDL_INC_DIR and SDL_LIB_DIR if you are using cygwin. +# SDL_INC_DIR is where SDL.h and associated headers can be found, and +# SDL_LIB_DIR is where SDL.lib and SDL.dll are located. These may be set as +# environment variables, if you'd prefer to not hack the Makefile. +# +# examples: +# SDL_INC_DIR := C:/2/SDL-1.1.8/include +# SDL_LIB_DIR := C:/2/SDL-1.1.8/lib +#-----------------------------------------------------------------------------# +ifeq ($(strip $(SDL_INC_DIR)),) + SDL_INC_DIR := please_set_me_cygwin_users +endif + +ifeq ($(strip $(SDL_LIB_DIR)),) + SDL_LIB_DIR := please_set_me_cygwin_users +endif + +#-----------------------------------------------------------------------------# +# Set this to true if you want to create a debug build. +#-----------------------------------------------------------------------------# +#debugging := false +debugging := true + +#-----------------------------------------------------------------------------# +# Set the decoder types you'd like to support. +# Note that various decoders may need external libraries. +#-----------------------------------------------------------------------------# +use_decoder_raw := true +use_decoder_voc := false + +#-----------------------------------------------------------------------------# +# Set to "true" if you'd like to build a DLL. Set to "false" otherwise. +#-----------------------------------------------------------------------------# +#build_dll := false +build_dll := true + +#-----------------------------------------------------------------------------# +# Set one of the below. Currently, none of these are used. +#-----------------------------------------------------------------------------# +#use_asm = -DUSE_I386_ASM +use_asm = -DUSE_PORTABLE_C + + +#-----------------------------------------------------------------------------# +# Set this to where you want SDL_sound installed. It will put the +# files in $(install_prefix)/bin, $(install_prefix)/lib, and +# $(install_prefix)/include ... +#-----------------------------------------------------------------------------# +install_prefix := /usr/local + + +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# +# Everything below this line is probably okay. +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# +#-----------------------------------------------------------------------------# + +#-----------------------------------------------------------------------------# +# CygWin autodetect. +#-----------------------------------------------------------------------------# + +ifeq ($(strip $(cygwin)),autodetect) + ifneq ($(strip $(shell gcc -v 2>&1 |grep "cygwin")),) + cygwin := true + else + cygwin := false + endif +endif + + +#-----------------------------------------------------------------------------# +# Platform-specific binary stuff. +#-----------------------------------------------------------------------------# + +ifeq ($(strip $(cygwin)),true) + ifeq ($(strip $(SDL_INC_DIR)),please_set_me_cygwin_users) + $(error Cygwin users need to set the SDL_INC_DIR envr var.) + else + SDL_CFLAGS := -I$(SDL_INC_DIR) + endif + + ifeq ($(strip $(SDL_LIB_DIR)),please_set_me_cygwin_users) + $(error Cygwin users need to set the SDL_LIB_DIR envr var.) + else + SDL_LDFLAGS := -L$(SDL_LIB_DIR) -lSDL + endif + + # !!! FIXME + build_dll := false + # !!! FIXME + + ASM = nasmw + EXE_EXT = .exe + DLL_EXT = .dll + STATICLIB_EXT = .a + ASMOBJFMT = win32 + ASMDEFS = -dC_IDENTIFIERS_UNDERSCORED + CFLAGS += -DC_IDENTIFIERS_UNDERSCORED +else + ASM = nasm + EXE_EXT = + DLL_EXT = .so + STATICLIB_EXT = .a + ASMOBJFMT = elf + SDL_CFLAGS := $(shell sdl-config --cflags) + SDL_LDFLAGS := $(shell sdl-config --libs) +endif + +CFLAGS += $(SDL_CFLAGS) +LDFLAGS += $(SDL_LDFLAGS) + +ifeq ($(strip $(build_dll)),true) +LIB_EXT := $(DLL_EXT) +SHAREDFLAGS += -shared +else +LIB_EXT := $(STATICLIB_EXT) +endif + +#-----------------------------------------------------------------------------# +# Version crapola. +#-----------------------------------------------------------------------------# +VERMAJOR := $(shell grep "define SOUND_VER_MAJOR" SDL_sound.h | sed "s/\#define SOUND_VER_MAJOR //") +VERMINOR := $(shell grep "define SOUND_VER_MINOR" SDL_sound.h | sed "s/\#define SOUND_VER_MINOR //") +VERPATCH := $(shell grep "define SOUND_VER_PATCH" SDL_sound.h | sed "s/\#define SOUND_VER_PATCH //") + +VERMAJOR := $(strip $(VERMAJOR)) +VERMINOR := $(strip $(VERMINOR)) +VERPATCH := $(strip $(VERPATCH)) + +VERFULL := $(VERMAJOR).$(VERMINOR).$(VERPATCH) + +#-----------------------------------------------------------------------------# +# General compiler, assembler, and linker flags. +#-----------------------------------------------------------------------------# + +BINDIR := bin +SRCDIR := . + +CFLAGS += $(use_asm) -I$(SRCDIR) -D_REENTRANT -fsigned-char -DPLATFORM_UNIX +CFLAGS += -Wall -Werror -fno-exceptions -fno-rtti -ansi -pedantic + +LDFLAGS += -lm + +ifeq ($(strip $(debugging)),true) + CFLAGS += -DDEBUG -g -fno-omit-frame-pointer + LDFLAGS += -g -fno-omit-frame-pointer +else + CFLAGS += -DNDEBUG -O2 -fomit-frame-pointer + LDFLAGS += -O2 -fomit-frame-pointer +endif + +ASMFLAGS := -f $(ASMOBJFMT) $(ASMDEFS) + +#-----------------------------------------------------------------------------# +# Source and target names. +#-----------------------------------------------------------------------------# + +PUREBASELIBNAME := SDL_sound +ifeq ($(strip $(cygwin)),true) +BASELIBNAME := $(strip $(PUREBASELIBNAME)) +else +BASELIBNAME := lib$(strip $(PUREBASELIBNAME)) +endif + +MAINLIB := $(BINDIR)/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)) + +TESTSRCS := test/test_sdlsound.c + +MAINSRCS := SDL_sound.c + +ifeq ($(strip $(use_decoder_raw)),true) + MAINSRCS += decoders/raw.c + CFLAGS += -DSOUND_SUPPORTS_RAW +endif + +ifeq ($(strip $(use_decoder_voc)),true) + MAINSRCS += archivers/voc.c + CFLAGS += -DSOUND_SUPPORTS_VOC +endif + +#ifeq ($(strip $(cygwin)),true) +# MAINSRCS += platform/win32.c +# CFLAGS += -DWIN32 +#else +# MAINSRCS += platform/unix.c +#endif + +TESTEXE := $(BINDIR)/test_sdlsound$(EXE_EXT) + +# Rule for getting list of objects from source +MAINOBJS1 := $(MAINSRCS:.c=.o) +MAINOBJS2 := $(MAINOBJS1:.cpp=.o) +MAINOBJS3 := $(MAINOBJS2:.asm=.o) +MAINOBJS := $(foreach f,$(MAINOBJS3),$(BINDIR)/$(f)) +MAINSRCS := $(foreach f,$(MAINSRCS),$(SRCDIR)/$(f)) + +TESTOBJS1 := $(TESTSRCS:.c=.o) +TESTOBJS2 := $(TESTOBJS1:.cpp=.o) +TESTOBJS3 := $(TESTOBJS2:.asm=.o) +TESTOBJS := $(foreach f,$(TESTOBJS3),$(BINDIR)/$(f)) +TESTSRCS := $(foreach f,$(TESTSRCS),$(SRCDIR)/$(f)) + +CLEANUP = $(wildcard *.exe) $(wildcard *.obj) \ + $(wildcard $(BINDIR)/*.exe) $(wildcard $(BINDIR)/*.obj) \ + $(wildcard *~) $(wildcard *.err) \ + $(wildcard .\#*) core + + +#-----------------------------------------------------------------------------# +# Rules. +#-----------------------------------------------------------------------------# + +# Rules for turning source files into .o files +$(BINDIR)/%.o: $(SRCDIR)/%.cpp + $(CC) -c -o $@ $< $(CFLAGS) + +$(BINDIR)/%.o: $(SRCDIR)/%.c + $(CC) -c -o $@ $< $(CFLAGS) + +$(BINDIR)/%.o: $(SRCDIR)/%.asm + $(ASM) $(ASMFLAGS) -o $@ $< + +.PHONY: all clean distclean listobjs install showcfg showflags + +all: $(BINDIR) $(EXTRABUILD) $(MAINLIB) $(TESTEXE) + +$(MAINLIB) : $(BINDIR) $(MAINOBJS) + $(LINKER) -o $(MAINLIB) $(SHAREDFLAGS) $(MAINOBJS) $(LDFLAGS) + +$(TESTEXE) : $(MAINLIB) $(TESTOBJS) + $(LINKER) -o $(TESTEXE) $(TESTLDFLAGS) $(TESTOBJS) -L$(BINDIR) -l$(strip $(PUREBASELIBNAME)) $(LDFLAGS) + + +install: all + rm -f $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERMAJOR)).$(strip $(VERMINOR)).* + mkdir -p $(install_prefix)/bin + mkdir -p $(install_prefix)/lib + mkdir -p $(install_prefix)/include + cp $(SRCDIR)/SDL_sound.h $(install_prefix)/include + cp $(TESTEXE) $(install_prefix)/bin +ifeq ($(strip $(cygwin)),true) + cp $(MAINLIB) $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)) +else + cp $(MAINLIB) $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERFULL)) + ln -sf $(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERFULL)) $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)) + ln -sf $(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERFULL)) $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERMAJOR)) + chmod 0755 $(install_prefix)/lib/$(strip $(BASELIBNAME))$(strip $(LIB_EXT)).$(strip $(VERFULL)) + chmod 0644 $(install_prefix)/include/SDL_sound.h +endif + +$(BINDIR): + mkdir -p $(BINDIR) + mkdir -p $(BINDIR)/decoders + mkdir -p $(BINDIR)/platform + mkdir -p $(BINDIR)/test + +distclean: clean + +clean: + rm -f $(CLEANUP) + rm -rf $(BINDIR) + +listobjs: + @echo SOURCES: + @echo $(MAINSRCS) + @echo + @echo OBJECTS: + @echo $(MAINOBJS) + @echo + @echo BINARIES: + @echo $(MAINLIB) + +showcfg: + @echo "Compiler : $(CC)" + @echo "Using CygWin : $(cygwin)" + @echo "Debugging : $(debugging)" + @echo "ASM flag : $(use_asm)" + @echo "SDL_sound version : $(VERFULL)" + @echo "Building DLLs : $(build_dll)" + @echo "Install prefix : $(install_prefix)" + @echo "Supports .RAW : $(use_decoder_raw)" + @echo "Supports .VOC : $(use_decoder_voc)" + +showflags: + @echo 'CFLAGS : $(CFLAGS)' + @echo 'LDFLAGS : $(LDFLAGS)' + + +#-----------------------------------------------------------------------------# +# This section is pretty much just for Ryan's use to make distributions. +# You Probably Should Not Touch. +#-----------------------------------------------------------------------------# + +# These are the files needed in a binary distribution, regardless of what +# platform is being used. +BINSCOMMON := LICENSE CHANGELOG SDL_sound.h + +.PHONY: package msbins win32bins nocygwin +package: clean + cd .. ; mv SDL_sound SDL_sound-$(VERFULL) ; tar -cyvvf ./SDL_sound-$(VERFULL).tar.bz2 --exclude="*CVS*" SDL_sound-$(VERFULL) ; mv SDL_sound-$(VERFULL) SDL_sound + + +ifeq ($(strip $(cygwin)),true) +msbins: win32bins + +win32bins: clean all + cp $(SDL_LIB_DIR)/SDL.dll . + echo -e "\r\n\r\n\r\nHEY YOU.\r\n\r\n\r\nTake a look at README-win32bins.txt FIRST.\r\n\r\n\r\n--ryan. (icculus@clutteredmind.org)\r\n\r\n" |zip -9rz ../SDL_sound-win32bins-$(shell date +%m%d%Y).zip $(MAINLIB) SDL.dll $(EXTRAPACKAGELIBS) README-win32bins.txt + +else + +msbins: nocygwin +win32bins: nocygwin + +nocygwin: + @echo This must be done on a Windows box in the Cygwin environment. + +endif + +#-----------------------------------------------------------------------------# +# That's all, folks. +#-----------------------------------------------------------------------------# + +# end of Makefile ...