1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-12-24 13:45:47 +00:00

fixes for win32/MSVC build. This removes SDLmain as dependency, and fixes newer gcc versions refusing to compile FmodOpenALBridge.cpp. Allow enabling/disabling console window in win32 build.

This commit is contained in:
fgenesis 2011-08-11 01:42:10 +02:00
parent f23b69ffc3
commit 120272512c
10 changed files with 116 additions and 84 deletions

View file

@ -0,0 +1,41 @@
#ifndef __AQUARIA_COMPILE_CONFIG_H__
#define __AQUARIA_COMPILE_CONFIG_H__
// The settings below are also configurable with CMake.
// Define BBGE_SKIP_CONFIG_HEADERS to use CMake-only configuration.
#ifndef BBGE_SKIP_CONFIG_HEADERS
#define AQUARIA_FULL 1
//#define AQUARIA_DEMO 1
#define AQUARIA_BUILD_CONSOLE 1
#define AQUARIA_BUILD_SCENEEDITOR 1
#define AQUARIA_CUSTOM_BUILD_ID ""
// no console window in release mode (note for MSVC: use together with linker SubSystem setting)
#ifdef NDEBUG
# define AQUARIA_WIN32_NOCONSOLE
#endif
#endif
// Not CMake-configurable defines, change at your own risk
// Should stay always defined; this tracks visited map areas
#define AQUARIA_BUILD_MAPVIS
// Define this to save map visited data in a base64-encoded raw format.
// This can take much less space than the standard text format (as little
// as 10%), but WILL BE INCOMPATIBLE with previous builds of Aquaria --
// the visited data will be lost if the file is loaded into such a build.
// (Current builds will load either format regardless of whether or not
// this is defined.)
//#define AQUARIA_SAVE_MAPVIS_RAW
// Interesting, old test stuff
//#define AQ_TEST_QUADTRAIL
#endif //__AQUARIA_COMPILE_CONFIG_H__

View file

@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __dsq__ #ifndef __dsq__
#define __dsq__ #define __dsq__
#include "AquariaCompileConfig.h"
#include "../BBGE/Core.h" #include "../BBGE/Core.h"
#include "../BBGE/Quad.h" #include "../BBGE/Quad.h"
#include "Element.h" #include "Element.h"
@ -364,6 +365,10 @@ enum FormUpgradeType
FORMUPGRADE_MAX FORMUPGRADE_MAX
}; };
// defined by windows includes
#undef INPUT_MOUSE
#undef INPUT_KEYBOARD
enum InputMode enum InputMode
{ {
INPUT_MOUSE = 0, INPUT_MOUSE = 0,

View file

@ -7812,7 +7812,7 @@ void Game::setControlHint(const std::string &h, bool left, bool right, bool midd
Vector p = controlHint_mouseLeft->position + Vector(-100,0); Vector p = controlHint_mouseLeft->position + Vector(-100,0);
os.seekp(0); os.seekp(0);
os << "song/songslot-" << dsq->continuity.getSongSlotByType(songType); os << "song/songslot-" << dsq->continuity.getSongSlotByType(songType) << '\0'; // ensure correct string termination across compilers
Quad *q = new Quad(os.str(), p); Quad *q = new Quad(os.str(), p);
q->followCamera = 1; q->followCamera = 1;
q->scale = Vector(0.7, 0.7); q->scale = Vector(0.7, 0.7);
@ -7827,7 +7827,7 @@ void Game::setControlHint(const std::string &h, bool left, bool right, bool midd
int note = song->notes[i]; int note = song->notes[i];
os.seekp(0); os.seekp(0);
os << "song/notebutton-" << note; os << "song/notebutton-" << note << '\0';
Quad *q = new Quad(os.str(), p); Quad *q = new Quad(os.str(), p);
q->color = dsq->getNoteColor(note)*0.5f + Vector(1, 1, 1)*0.5f; q->color = dsq->getNoteColor(note)*0.5f + Vector(1, 1, 1)*0.5f;
q->followCamera = 1; q->followCamera = 1;

View file

@ -130,7 +130,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
} }
#if defined(BBGE_BUILD_WINDOWS) && !defined(BBGE_BUILD_SDL) #if defined(BBGE_BUILD_WINDOWS) && defined(AQUARIA_WIN32_NOCONSOLE)
int WINAPI WinMain( HINSTANCE hInstance, // Instance int WINAPI WinMain( HINSTANCE hInstance, // Instance
HINSTANCE hPrevInstance, // Previous Instance HINSTANCE hPrevInstance, // Previous Instance
LPSTR lpCmdLine, // Command Line Parameters LPSTR lpCmdLine, // Command Line Parameters
@ -141,54 +141,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
_CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_DEBUG); _CrtSetReportMode ( _CRT_ERROR, _CRTDBG_MODE_DEBUG);
#endif #endif
DSQ core(GetCommandLine()); std::string dsqParam = GetCommandLine();
#elif defined(BBGE_BUILD_SDL) #elif defined(BBGE_BUILD_SDL)
static inline void check_beta(void)
{
#if defined(BBGE_BUILD_UNIX) && defined(BETAEXPIRE)
bool bail = false;
fprintf(stderr, "\n\n\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
if ( time(NULL) > (BETAEXPIRE + 14 * 24 * 60 * 60) ) {
fprintf(stderr,
"Sorry, but this beta of the game has expired, and will no\n"
" longer run. This is to prevent tech support on out-of-date\n"
" and prerelease versions of the game. Please go to\n"
" http://www.bit-blot.com/ for information on getting a release\n"
" version that does not expire.\n");
bail = true;
} else {
fprintf(stderr, " Warning: This is a beta version of AQUARIA.\n");
}
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "*********************************************************\n");
fprintf(stderr, "\n\n\n");
fflush(stderr);
if (bail) {
while (true) {
_exit(0);
}
}
#endif
}
extern "C" int main(int argc,char *argv[]) extern "C" int main(int argc,char *argv[])
{ {
check_beta();
#ifdef BBGE_BUILD_WINDOWS #ifdef BBGE_BUILD_WINDOWS
#if defined(AQUARIA_DEMO) || defined(AQUARIA_FULL) #if defined(AQUARIA_DEMO) || defined(AQUARIA_FULL)
@ -208,17 +166,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
remove("ran"); remove("ran");
#endif #endif
std::string fileSystem = ""; std::string dsqParam = "";
#ifdef BBGE_BUILD_UNIX #ifdef BBGE_BUILD_UNIX
const char *envPath = getenv("AQUARIA_DATA_PATH"); const char *envPath = getenv("AQUARIA_DATA_PATH");
if (envPath != NULL) if (envPath != NULL)
fileSystem = envPath; dsqParam = envPath;
#endif #endif
DSQ core(fileSystem); #endif
#endif
DSQ core(dsqParam);
{ {
core.init(); core.init();
//enumerateTest(); //enumerateTest();

View file

@ -23,10 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "Avatar.h" #include "Avatar.h"
#include "StatsAndAchievements.h" #include "StatsAndAchievements.h"
#ifdef _MSC_VER
#define snprintf _snprintf
#endif
#ifndef ARRAYSIZE #ifndef ARRAYSIZE
#define ARRAYSIZE(x) (sizeof (x) / sizeof ((x)[0])) #define ARRAYSIZE(x) (sizeof (x) / sizeof ((x)[0]))
#endif #endif

17
BBGE/BBGECompileConfig.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef __BBGE_COMPILE_CONFIG_H__
#define __BBGE_COMPILE_CONFIG_H__
#ifndef BBGE_SKIP_CONFIG_HEADERS
#define BBGE_BUILD_SDL 1
#define BBGE_BUILD_FRAMEBUFFER 1
#define BBGE_BUILD_SHADERS 1
#define BBGE_BUILD_OPENGL 1
#define BBGE_BUILD_OPENGL_DYNAMIC 1
#define BBGE_BUILD_WIDESCREEN 1
#define BBGE_BUILD_FMOD_OPENAL_BRIDGE 1
#define BBGE_BUILD_ACHIEVEMENTS_INTERNAL 1
#endif
#endif

View file

@ -25,6 +25,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#ifdef _MSC_VER
#define strtof (float)strtod
#define snprintf _snprintf
#endif
#endif
#include "BBGECompileConfig.h"
#ifdef BBGE_BUILD_WINDOWS
//#include "iprof/prof.h" //#include "iprof/prof.h"
//#define BBGE_PROF(x) Prof(x) //#define BBGE_PROF(x) Prof(x)
@ -78,6 +88,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifdef BBGE_BUILD_SDL #ifdef BBGE_BUILD_SDL
#include "SDL.h" #include "SDL.h"
#undef main // SDL defines main to SDL_main. This is the only place where SDL.h is included, so this is ok.
#endif #endif

View file

@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#pragma once #pragma once
#include <math.h> #include <math.h>
#include <float.h>
#include <vector> #include <vector>
#include "Event.h" #include "Event.h"

View file

@ -12,16 +12,15 @@ IF(APPLE)
SET(MACOSX TRUE) SET(MACOSX TRUE)
ENDIF(APPLE) ENDIF(APPLE)
OPTION(AQUARIA_BETAEXPIRE "This build should expire in 30 days." FALSE) # HACK: in case mingw is not correctly detected, fix this.
IF(AQUARIA_BETAEXPIRE) IF(${CMAKE_GENERATOR} MATCHES ".*[mM][iI][nN][gG][wW].*") # really ugly hack to match "mingw" case-insensitive
EXECUTE_PROCESS( set(MINGW 1)
COMMAND date +%s message(STATUS "!! Using MinGW hack !!")
OUTPUT_VARIABLE BUILD_TIMESTAMP ENDIF()
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE IF(WIN32)
) OPTION(AQUARIA_NO_CONSOLE "No console window?" FALSE)
ADD_DEFINITIONS(-DBETAEXPIRE=${BUILD_TIMESTAMP}) ENDIF(WIN32)
ENDIF(AQUARIA_BETAEXPIRE)
# No Steamworks SDK for Linux at the moment. Roll our own achievements. # No Steamworks SDK for Linux at the moment. Roll our own achievements.
ADD_DEFINITIONS(-DBBGE_BUILD_ACHIEVEMENTS_INTERNAL=1) ADD_DEFINITIONS(-DBBGE_BUILD_ACHIEVEMENTS_INTERNAL=1)
@ -134,17 +133,15 @@ if (NOT SDL_FOUND)
set(SDLDIR "${EXTLIBDIR}/SDL12") set(SDLDIR "${EXTLIBDIR}/SDL12")
set(SDL_INCLUDE_DIR "${SDLDIR}/include") set(SDL_INCLUDE_DIR "${SDLDIR}/include")
message(STATUS "Using internal copy of SDL") message(STATUS "Using internal copy of SDL")
set(SDL_LIBRARY "${SDLDIR}/lib/macosx/libSDL-1.2.0.dylib;${SDLDIR}/lib/macosx/libSDLmain.a") set(SDL_LIBRARY "${SDLDIR}/lib/macosx/libSDL-1.2.0.dylib")
elseif(WIN32) elseif(WIN32)
set(SDLDIR "${EXTLIBDIR}/SDL12")
set(SDL_INCLUDE_DIR "${SDLDIR}/include" CACHE PATH "SDL include directory" FORCE)
message(STATUS "Using internal copy of SDL")
if(MSVC) if(MSVC)
set(SDLDIR "${EXTLIBDIR}/SDL12") set(SDL_LIBRARY "${SDLDIR}/lib/win32/SDL.lib" CACHE PATH "Where the SDL library can be found")
set(SDL_INCLUDE_DIR "${SDLDIR}/include" CACHE PATH "SDL include directory" FORCE)
message(STATUS "Using internal copy of SDL")
set(SDLMAIN_LIBRARY "${SDLDIR}/lib/win32/SDLmain.lib" CACHE INTERNAL "")
set(SDL_LIBRARY_TEMP "${SDLDIR}/lib/win32/SDL.lib" CACHE INTERNAL "")
set(SDL_LIBRARY ${SDLMAIN_LIBRARY} ${SDL_LIBRARY_TEMP} CACHE STRING "Where the SDL library can be found")
else(MSVC) else(MSVC)
message(SEND_ERROR "We don't have a prebuilt SDL for this environment.") set(SDL_LIBRARY "${SDLDIR}/lib/win32/libSDL.dll.a" CACHE PATH "Where the SDL library can be found")
endif(MSVC) endif(MSVC)
else(MACOSX) else(MACOSX)
message(SEND_ERROR "We don't have a prebuilt SDL for this platform.") message(SEND_ERROR "We don't have a prebuilt SDL for this platform.")
@ -159,14 +156,10 @@ if(NOT AQUARIA_INTERNAL_OPENAL)
endif(NOT AQUARIA_INTERNAL_OPENAL) endif(NOT AQUARIA_INTERNAL_OPENAL)
if (NOT OPENAL_FOUND) if (NOT OPENAL_FOUND)
if(WIN32) if(WIN32)
if(MSVC) set(OPENALDIR "${EXTLIBDIR}/AL")
set(OPENALDIR "${EXTLIBDIR}/AL") set(OPENAL_INCLUDE_DIR "${OPENALDIR}/include" CACHE PATH "OpenAL include directory" FORCE)
set(OPENAL_INCLUDE_DIR "${OPENALDIR}/include" CACHE PATH "OpenAL include directory" FORCE) message(STATUS "Using internal copy of OpenAL")
message(STATUS "Using internal copy of OpenAL") set(OPENAL_LIBRARY "${OPENALDIR}/lib/win32/OpenAL32.lib" CACHE FILEPATH "Where the OpenAL library can be found" FORCE)
set(OPENAL_LIBRARY "${OPENALDIR}/lib/win32/OpenAL32.lib" CACHE FILEPATH "Where the OpenAL library can be found" FORCE)
else(MSVC)
message(SEND_ERROR "We don't have a prebuilt OpenAL for this environment.")
endif(MSVC)
else(WIN32) else(WIN32)
message(SEND_ERROR "We don't have a prebuilt OpenAL for this platform.") message(SEND_ERROR "We don't have a prebuilt OpenAL for this platform.")
endif(WIN32) endif(WIN32)
@ -185,8 +178,6 @@ INCLUDE_DIRECTORIES(${OGGVORBIS_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
# !!! FIXME: don't use fmod!
#INCLUDE_DIRECTORIES("${BBGEDIR}/fmodapi42604linux64/api/inc")
# Custom build ID: e.g. "-custom", " (my very own build)" # Custom build ID: e.g. "-custom", " (my very own build)"
SET(AQUARIA_CUSTOM_BUILD_ID "" CACHE STRING SET(AQUARIA_CUSTOM_BUILD_ID "" CACHE STRING
@ -196,9 +187,11 @@ if (NOT(AQUARIA_CUSTOM_BUILD_ID STREQUAL ""))
endif (NOT(AQUARIA_CUSTOM_BUILD_ID STREQUAL "")) endif (NOT(AQUARIA_CUSTOM_BUILD_ID STREQUAL ""))
# Aquaria/BBGE specific defines... # Aquaria/BBGE specific defines...
ADD_DEFINITIONS(-DGL_GLEXT_LEGACY=1) ADD_DEFINITIONS(-DGL_GLEXT_LEGACY=1)
ADD_DEFINITIONS(-DHAVE_PUTENV=1) ADD_DEFINITIONS(-DHAVE_PUTENV=1)
ADD_DEFINITIONS(-DTIXML_USE_STL=1) ADD_DEFINITIONS(-DTIXML_USE_STL=1)
ADD_DEFINITIONS(-DBBGE_SKIP_CONFIG_HEADERS=1) # if this is not defined, it will use .h files to set the necessary defines
ADD_DEFINITIONS(-DBBGE_BUILD_SDL=1) ADD_DEFINITIONS(-DBBGE_BUILD_SDL=1)
ADD_DEFINITIONS(-DBBGE_BUILD_FRAMEBUFFER=1) ADD_DEFINITIONS(-DBBGE_BUILD_FRAMEBUFFER=1)
#ADD_DEFINITIONS(-DBBGE_BUILD_SHADERS=1) #ADD_DEFINITIONS(-DBBGE_BUILD_SHADERS=1)
@ -221,7 +214,10 @@ ENDIF(MACOSX)
IF(WIN32) IF(WIN32)
ADD_DEFINITIONS(-DBBGE_BUILD_WINDOWS=1) ADD_DEFINITIONS(-DBBGE_BUILD_WINDOWS=1)
SET(EXETYPE WIN32) IF(AQUARIA_NO_CONSOLE)
SET(EXETYPE WIN32)
ADD_DEFINITIONS(-DAQUARIA_WIN32_NOCONSOLE=1)
ENDIF(AQUARIA_NO_CONSOLE)
ENDIF(WIN32) ENDIF(WIN32)
@ -424,6 +420,13 @@ SET(BBGE_SRCS_UNUSED
${BBGEDIR}/PointSprites.cpp ${BBGEDIR}/PointSprites.cpp
) )
IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR MINGW)
SET_SOURCE_FILES_PROPERTIES(
${BBGEDIR}/FmodOpenALBridge.cpp
PROPERTIES COMPILE_FLAGS "-fpermissive"
)
ENDIF()
SET(FTGL_SRCS SET(FTGL_SRCS
${FTGLSRCDIR}/FTCharmap.cpp ${FTGLSRCDIR}/FTCharmap.cpp
${FTGLSRCDIR}/FTContour.cpp ${FTGLSRCDIR}/FTContour.cpp

View file

@ -63,7 +63,7 @@ typedef size_t uintptr_t;
/* Enable the dummy video driver (src/video/dummy/\*.c) */ /* Enable the dummy video driver (src/video/dummy/\*.c) */
#define SDL_VIDEO_DRIVER_DUMMY 1 #define SDL_VIDEO_DRIVER_DUMMY 1
#ifdef _WINDOWS #if defined(_WINDOWS) || defined(_WIN32)
#define SDL_VIDEO_DRIVER_WINDIB 1 #define SDL_VIDEO_DRIVER_WINDIB 1
#endif #endif