cross compilation of Win32 version (using win32 API)
This commit is contained in:
parent
184a4ba414
commit
4b28894bb8
18
src/Makefile
18
src/Makefile
@ -388,9 +388,13 @@ endif
|
||||
CC = $(CROSS_CC)
|
||||
CROSS_STRIP ?= $(shell which i686-w64-mingw32-strip || which mingw32-strip)
|
||||
STRIP = $(CROSS_STRIP)
|
||||
BIN = ../bin/grafx2.exe
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb -Dmain=SDL_main $(shell $(CROSS_SDLCONFIG) --cflags) $(TTFCOPT)
|
||||
LOPT = -mwindows -lmingw32 -lSDLmain -lSDL -lshlwapi $(shell $(CROSS_SDLCONFIG) --libs) -lSDL_image $(TTFLOPT)
|
||||
BIN = ../bin/grafx2-$(API).exe
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb $(TTFCOPT)
|
||||
LOPT = -mwindows -lmingw32 -lshlwapi $(TTFLOPT)
|
||||
ifeq ($(API),sdl)
|
||||
COPT += -Dmain=SDL_main $(shell $(CROSS_SDLCONFIG) --cflags)
|
||||
LOPT += -lSDLmain -lSDL $(shell $(CROSS_SDLCONFIG) --libs) -lSDL_image
|
||||
endif
|
||||
ifeq (,$(CROSS_PKGCONFIG))
|
||||
COPT += -D__no_pnglib__
|
||||
else
|
||||
@ -404,7 +408,10 @@ endif
|
||||
WINDRES ?= $(shell which i686-w64-mingw32-windres || which mingw32-windres)
|
||||
PLATFORM = win32
|
||||
PLATFORMOBJ = winres.o
|
||||
PLATFORMFILES = bin/SDL.dll bin/SDL_image.dll $(wildcard ../bin/libpng*.dll) $(wildcard ../bin/libjpeg*.dll) bin/zlib1.dll $(TTFLIBS)
|
||||
PLATFORMFILES = $(wildcard ../bin/libpng*.dll) $(wildcard ../bin/libjpeg*.dll) bin/zlib1.dll $(TTFLIBS)
|
||||
ifeq ($(API),sdl)
|
||||
PLATFORMFILES += bin/SDL.dll bin/SDL_image.dll
|
||||
endif
|
||||
else
|
||||
ifdef GP2XCROSS
|
||||
#cross compile an exec for the gp2x
|
||||
@ -571,6 +578,9 @@ ifeq ($(API),sdl2)
|
||||
APIOBJ = sdlscreen.o
|
||||
COPT += -DUSE_SDL2
|
||||
endif
|
||||
ifeq ($(API),win32)
|
||||
APIOBJ = win32screen.o
|
||||
endif
|
||||
|
||||
#To enable Joystick emulation of cursor, make USE_JOYSTICK=1 (for input.o)
|
||||
#This can be necessary to test cursor code on a PC, but by default for all
|
||||
|
||||
@ -56,7 +56,7 @@ $(OBJDIR)/loadsave.o: loadsave.c buttons.h struct.h const.h loadsave.h \
|
||||
$(OBJDIR)/main.o: main.c const.h struct.h global.h graph.h misc.h init.h buttons.h \
|
||||
loadsave.h gfx2surface.h engine.h pages.h screen.h errors.h readini.h \
|
||||
saveini.h io.h text.h setup.h windows.h brush.h palette.h realpath.h \
|
||||
input.h keycodes.h help.h filesel.h
|
||||
input.h keycodes.h help.h filesel.h win32screen.h
|
||||
$(OBJDIR)/misc.o: misc.c struct.h const.h global.h errors.h buttons.h loadsave.h \
|
||||
gfx2surface.h engine.h misc.h keyboard.h screen.h windows.h palette.h \
|
||||
input.h keycodes.h graph.h pages.h
|
||||
@ -119,7 +119,8 @@ $(OBJDIR)/transform.o: transform.c global.h struct.h const.h transform.h engine.
|
||||
loadsave.h gfx2surface.h pages.h tiles.h
|
||||
$(OBJDIR)/unicode.o: unicode.c unicode.h struct.h const.h
|
||||
$(OBJDIR)/version.o: version.c
|
||||
$(OBJDIR)/win32screen.o: win32screen.c screen.h struct.h const.h global.h
|
||||
$(OBJDIR)/win32screen.o: win32screen.c screen.h struct.h const.h global.h errors.h \
|
||||
windows.h input.h keycodes.h keyboard.h
|
||||
$(OBJDIR)/windows.o: windows.c windows.h struct.h const.h engine.h errors.h \
|
||||
global.h graph.h input.h keycodes.h misc.h op_c.h colorred.h readline.h \
|
||||
screen.h palette.h unicode.h keyboard.h
|
||||
|
||||
42
src/main.c
42
src/main.c
@ -72,8 +72,11 @@
|
||||
#include "input.h"
|
||||
#include "help.h"
|
||||
#include "filesel.h"
|
||||
#if defined(WIN32) && !(defined(USE_SDL) || defined(USE_SDL2))
|
||||
#include "win32screen.h"
|
||||
#endif
|
||||
|
||||
#if defined(__WIN32__)
|
||||
#if defined(WIN32)
|
||||
#include <windows.h>
|
||||
#include <shlwapi.h>
|
||||
#elif defined (__MINT__)
|
||||
@ -86,7 +89,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#if defined (__WIN32__)
|
||||
#if defined (WIN32) && (defined(USE_SDL) || defined(USE_SDL2))
|
||||
// On Windows, SDL_putenv is not present in any compilable header.
|
||||
// It can be linked anyway, this declaration only avoids
|
||||
// a compilation warning.
|
||||
@ -830,17 +833,19 @@ int Init_program(int argc,char * argv[])
|
||||
Pixel_ratio);
|
||||
|
||||
// Windows only: move back the window to its original position.
|
||||
#if defined(__WIN32__)
|
||||
#if defined(WIN32)
|
||||
if (!Video_mode[starting_videomode].Fullscreen)
|
||||
{
|
||||
if (Config.Window_pos_x != 9999 && Config.Window_pos_y != 9999)
|
||||
{
|
||||
//RECT r;
|
||||
#if defined(USE_SDL) || defined(USE_SDL2)
|
||||
static SDL_SysWMinfo pInfo;
|
||||
SDL_VERSION(&pInfo.version);
|
||||
SDL_GetWMInfo(&pInfo);
|
||||
//GetWindowRect(pInfo.window, &r);
|
||||
SetWindowPos(pInfo.window, 0, Config.Window_pos_x, Config.Window_pos_y, 0, 0, SWP_NOSIZE);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -1043,7 +1048,7 @@ void Program_shutdown(void)
|
||||
int return_code;
|
||||
|
||||
// Windows only: Recover the window position.
|
||||
#if defined(__WIN32__)
|
||||
#if defined(WIN32) && (defined(USE_SDL) || defined(USE_SDL2))
|
||||
{
|
||||
RECT r;
|
||||
static SDL_SysWMinfo pInfo;
|
||||
@ -1171,7 +1176,7 @@ int main(int argc,char * argv[])
|
||||
GetModuleFileName(NULL, ModuleFileName, MAX_PATH);
|
||||
GetShortPathName(ModuleFileName, ModuleShortFileName, MAX_PATH);
|
||||
argv[argc++] = arg_buffer;
|
||||
for (i = 0; i < sizeof(arg_buffer); i++) {
|
||||
for (i = 0; i < (int)sizeof(arg_buffer); i++) {
|
||||
arg_buffer[i] = (char)ModuleShortFileName[i];
|
||||
if (arg_buffer[i] == 0) break;
|
||||
}
|
||||
@ -1188,3 +1193,30 @@ int main(int argc,char * argv[])
|
||||
Program_shutdown();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2) && !defined(_MSC_VER)
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR _lpCmdLine, int nCmdShow)
|
||||
{
|
||||
WCHAR *lpCmdLine = GetCommandLineW();
|
||||
if (__argc == 1)
|
||||
{ // avoids GetCommandLineW bug that does not always quote the program name if no arguments
|
||||
do { ++lpCmdLine; } while (*lpCmdLine);
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOL quoted = lpCmdLine[0] == L'"';
|
||||
++lpCmdLine; // skips the " or the first letter (all paths are at least 1 letter)
|
||||
while (*lpCmdLine)
|
||||
{
|
||||
if (quoted && lpCmdLine[0] == L'"') quoted = FALSE; // found end quote
|
||||
else if (!quoted && lpCmdLine[0] == L' ')
|
||||
{ // found an unquoted space, now skip all spaces
|
||||
do { ++lpCmdLine; } while (lpCmdLine[0] == L' ');
|
||||
break;
|
||||
}
|
||||
++lpCmdLine;
|
||||
}
|
||||
}
|
||||
return wWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -32,10 +32,6 @@
|
||||
#include "struct.h"
|
||||
#include "global.h"
|
||||
|
||||
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2)
|
||||
int Init_Win32(HINSTANCE hInstance, HINSTANCE hPrevInstance);
|
||||
#endif
|
||||
|
||||
void GFX2_Set_mode(int *width, int *height, int fullscreen);
|
||||
|
||||
byte Get_Screen_pixel(int x, int y);
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Grafx2; if not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
#include <Windows.h>
|
||||
#include <windows.h>
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||
@ -30,6 +30,7 @@
|
||||
#include "errors.h"
|
||||
#include "windows.h"
|
||||
#include "input.h"
|
||||
#include "keyboard.h"
|
||||
|
||||
extern int user_feedback_required;
|
||||
extern word Input_new_mouse_X;
|
||||
@ -301,4 +302,4 @@ volatile int Allow_colorcycling = 0;
|
||||
/// Activates or desactivates file drag-dropping in program window.
|
||||
void Allow_drag_and_drop(int flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
34
src/win32screen.h
Normal file
34
src/win32screen.h
Normal file
@ -0,0 +1,34 @@
|
||||
/* vim:expandtab:ts=2 sw=2:
|
||||
*/
|
||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||
|
||||
Copyright 2018 Thomas Bernard
|
||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||
|
||||
Grafx2 is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; version 2
|
||||
of the License.
|
||||
|
||||
Grafx2 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Grafx2; if not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
///@file win32screen.h
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef WIN32SCREEN_H_INCLUDED
|
||||
#define WIN32SCREEN_H_INCLUDED
|
||||
|
||||
#if defined(WIN32) && !defined(USE_SDL) && !defined(USE_SDL2)
|
||||
#include <windows.h>
|
||||
|
||||
int Init_Win32(HINSTANCE hInstance, HINSTANCE hPrevInstance);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Loading…
x
Reference in New Issue
Block a user