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 ...