diff --git a/games-rpg/kqlives/kqlives-0.99.recipe b/games-rpg/kqlives/kqlives-0.99.recipe index ff51b9b85..764b0d226 100644 --- a/games-rpg/kqlives/kqlives-0.99.recipe +++ b/games-rpg/kqlives/kqlives-0.99.recipe @@ -7,24 +7,33 @@ CHECKSUM_SHA256="a8742d0a8781bd3626aef17ae382525b0abb4ab194004c9acf9f136b7be2b6f REVISION="1" ARCHITECTURES="x86_gcc2" +PATCHES="kqlives-$portVersion.patchset" + PROVIDES=" kqlives = $portVersion + cmd:kq + cmd:mapdiff + cmd:mapdraw + cmd:mapdump " REQUIRES=" + haiku lib:liballeg - lib:libdumb - lib:liblua == 5.1 + lib:libaldmb_0.9.3 + lib:libdumb_0.9.3 + lib:liblua >= 5.1 " BUILD_REQUIRES=" haiku_devel devel:liballeg devel:libdumb - devel:liblua == 5.1 + devel:liblua >= 5.1 " BUILD_PREREQUIRES=" + cmd:autoconf cmd:awk cmd:gcc cmd:make @@ -34,7 +43,7 @@ BUILD_PREREQUIRES=" BUILD() { # libtoolize --force --copy --install # aclocal -# autoconf + autoconf # automake runConfigure ./configure make $jobArgs diff --git a/games-rpg/kqlives/patches/kqlives-0.99.patchset b/games-rpg/kqlives/patches/kqlives-0.99.patchset new file mode 100644 index 000000000..d1e039e0d --- /dev/null +++ b/games-rpg/kqlives/patches/kqlives-0.99.patchset @@ -0,0 +1,491 @@ +From b97889300384a0b21d43f499ca5398185ce775b6 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Thu, 12 Nov 2015 14:00:33 +0100 +Subject: Tell the buildsystem that Haiku is BeOS-like. + + +diff --git a/configure.ac b/configure.ac +index 679d74f..3a00c0f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -101,6 +101,12 @@ AC_ARG_ENABLE(cheats, AS_HELP_STRING([--enable-cheats], [Enable cheats]), AC_DEF + + # host stuff + case ${host} in ++ *-*-haiku*) ++ kq_extra_files='beos.$(OBJEXT)' ++ AC_SUBST([kq_extra_files]) ++ AC_SUBST(kq_target_dir,beos) ++ bundle=no ++ ;; + *-*-linux*) + kq_extra_files='unix.$(OBJEXT)' + AC_SUBST([kq_extra_files]) +-- +2.2.2 + + +From e87805b729ddc5fb32f1b55c15bdb16f59fc0ff4 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Thu, 12 Nov 2015 14:00:50 +0100 +Subject: gcc2 fixes. + + +diff --git a/maps/mapdiff.c b/maps/mapdiff.c +index 3416961..7a007f9 100644 +--- a/maps/mapdiff.c ++++ b/maps/mapdiff.c +@@ -677,8 +677,8 @@ void cleanup (void) + */ + void error_load (const char *problem_file) + { +- ASSERT (problem_file); + char err_msg[80]; ++ ASSERT (problem_file); + + sprintf (strbuf, "Could not load \"%s\"\n", problem_file); + strcat (strncpy (err_msg, strbuf, sizeof (err_msg) - 1), "\n"); +@@ -816,13 +816,13 @@ void usage (const char *argv) + + int main (int argc, char *argv[]) + { ++ int i, number_of_files = 0; ++ char *filenames[PATH_MAX]; ++ + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, KQ_LOCALE); + textdomain (PACKAGE); + +- int i, number_of_files = 0; +- char *filenames[PATH_MAX]; +- + startup (); + + /* Check whether we should show program usage. If we do, exit program +diff --git a/maps/mapdump.c b/maps/mapdump.c +index ee80743..6ad399c 100644 +--- a/maps/mapdump.c ++++ b/maps/mapdump.c +@@ -91,8 +91,8 @@ void cleanup (void) + */ + void error_load (const char *problem_file) + { +- ASSERT (problem_file); + char err_msg[80]; ++ ASSERT (problem_file); + + strcat (strncpy (err_msg, problem_file, sizeof (err_msg) - 1), "\n"); + TRACE ("%s: could not load %s\n", allegro_error, problem_file); +@@ -136,10 +136,6 @@ void usage (const char *argv) + + int main (int argc, char *argv[]) + { +- setlocale (LC_ALL, ""); +- bindtextdomain (PACKAGE, KQ_LOCALE); +- textdomain (PACKAGE); +- + char fn[PATH_MAX], *filenames[PATH_MAX]; + int i, number_of_files = 0, verbose = 0; + int force_overwrite = 0; +@@ -148,6 +144,10 @@ int main (int argc, char *argv[]) + /* Regular and default values (incase an option is not specified) */ + s_show showing, d_showing; + ++ setlocale (LC_ALL, ""); ++ bindtextdomain (PACKAGE, KQ_LOCALE); ++ textdomain (PACKAGE); ++ + /* Make sure that we have some sort of input; exit with error if not */ + if (argc == 1) { + usage (argv[0]); +diff --git a/maps/mapedit.c b/maps/mapedit.c +index 987b9a8..325ad73 100644 +--- a/maps/mapedit.c ++++ b/maps/mapedit.c +@@ -2144,12 +2144,12 @@ void kq_yield (void) + /* Welcome to Mapdraw, folks! */ + int main (int argc, char *argv[]) + { ++ int main_stop = 0, oldmouse_x = 0, oldmouse_y = 0; ++ int i; ++ + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, KQ_LOCALE); + textdomain (PACKAGE); +- +- int main_stop = 0, oldmouse_x = 0, oldmouse_y = 0; +- int i; + + row[0] = vtiles * 16 + 6; + for (i = 1; i < 8; i++) { +@@ -4194,72 +4194,8 @@ int startup (void) + int kx, ky, a; + COLOR_MAP cmap; + +- if (allegro_init () != 0) +- return 0; +- +- /* Buffer for all strings */ +- strbuf = (char *) malloc (256); +- +- install_keyboard (); +- install_timer (); +- +- /* Determine if user wants to use Windowed or Regular Mode */ +- if (WBUILD == 1) { +- if (set_gfx_mode (GFX_AUTODETECT_WINDOWED, SW, SH, 0, 0) != 0) { +- if (set_gfx_mode (GFX_SAFE, SW, SH, 0, 0) != 0) { +- set_gfx_mode (GFX_TEXT, 0, 0, 0, 0); +- allegro_message ("Unable to set any graphic mode\n%s\n", +- allegro_error); +- return 0; +- } +- } +- } else { +- if (set_gfx_mode (GFX_AUTODETECT, SW, SH, 0, 0) != 0) { +- if (set_gfx_mode (GFX_SAFE, SW, SH, 0, 0) != 0) { +- set_gfx_mode (GFX_TEXT, 0, 0, 0, 0); +- allegro_message ("Unable to set any graphic mode\n%s\n", +- allegro_error); +- return 0; +- } +- } // if (WBUILD) +- } +- +- /* Check for the presence of a mouse */ +- a = install_mouse (); +- if (a == -1) { +- nomouse = 1; +- klog ("Mouse not found!\n"); +- rest (1000); +- } +- +- shared_startup (); +- +- /* Create the picture used for the mouse */ +- mouse_pic = create_bitmap (4, 6); +- for (ky = 0; ky < 6; ky++) +- for (kx = 0; kx < 4; kx++) +- mouse_pic->line[ky][kx] = mousepic[ky * 4 + kx]; +- set_mouse_speed (4, 4); +- +- /* Screen buffer */ +- double_buffer = create_bitmap (SW, SH); +- clear (double_buffer); +- +- gmap.map_no = -1; +- gmap.tileset = 0; +- gmap.xsize = htiles; +- gmap.ysize = vtiles; +- +- bufferize (); +- +- create_trans_table (&cmap, pal, 128, 128, 128, NULL); +- color_map = &cmap; +- +- font6 = create_bitmap (6, 546); +- getfont (); +- + /* Used for highlighting */ +- unsigned char hilite[] = { ++ static const unsigned char hilite[] = { + 00, 00, 00, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 00, 00, 00, + 00, 00, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 00, 00, + 00, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, 45, 25, 25, 25, 00, +@@ -4278,14 +4214,8 @@ int startup (void) + 00, 00, 00, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 00, 00, 00, + }; + +- mesh2 = create_bitmap (16, 16); +- clear (mesh2); +- for (ky = 0; ky < 16; ky++) +- for (kx = 0; kx < 16; kx++) +- mesh2->line[ky][kx] = hilite[ky * 16 + kx]; +- + /* Used to show map boundaries */ +- static unsigned char diag_bars[] = { ++ static const unsigned char diag_bars[] = { + 25, 25, 00, 00, 00, 00, 00, 00, 25, 25, 00, 00, 00, 00, 00, 00, + 25, 00, 00, 00, 00, 00, 00, 25, 25, 00, 00, 00, 00, 00, 00, 25, + 00, 00, 00, 00, 00, 00, 25, 25, 00, 00, 00, 00, 00, 00, 25, 25, +@@ -4304,31 +4234,10 @@ int startup (void) + 00, 25, 25, 00, 00, 00, 00, 00, 00, 25, 25, 00, 00, 00, 00, 00, + }; + +- mesh3 = create_bitmap (16, 16); +- clear (mesh3); +- for (ky = 0; ky < 16; ky++) +- for (kx = 0; kx < 16; kx++) +- mesh3->line[ky][kx] = diag_bars[ky * 16 + kx]; +- +- /* Entity images */ +- init_entities (); +- showing.entities = 0; +- showing.obstacles = 0; +- showing.shadows = 0; +- showing.zones = 0; +- showing.markers = 0; +- showing.boundaries = 0; +- showing.last_layer = draw_mode; +- showing.layer[0] = 1; +- showing.layer[1] = 1; +- showing.layer[2] = 1; +- +- icon_set = 0; +- + // This turns the other/indent.pro settings off: + // *INDENT-OFF* + +- unsigned char arrow_up[] = { ++ static const unsigned char arrow_up[] = { + 00, 00, 00, 00, 00, 00, 00, 60, 00, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 60, 58, 60, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 60, 58, 56, 58, 60, 00, 00, 00, 00, 00, 00, +@@ -4347,7 +4256,7 @@ int startup (void) + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + }; + +- unsigned char arrow_left[] = { ++ static const unsigned char arrow_left[] = { + 00, 00, 00, 00, 00, 00, 00, 60, 00, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 60, 60, 50, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 60, 58, 60, 50, 00, 00, 00, 00, 00, 00, 00, +@@ -4366,7 +4275,7 @@ int startup (void) + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + }; + +- unsigned char arrow_center[] = { ++ static const unsigned char arrow_center[] = { + 00, 00, 00, 60, 60, 60, 60, 60, 60, 60, 60, 60, 00, 00, 00, 00, + 00, 00, 60, 00, 00, 00, 00, 60, 00, 00, 00, 00, 60, 00, 00, 00, + 00, 60, 00, 00, 58, 58, 58, 60, 58, 58, 58, 58, 00, 60, 00, 00, +@@ -4385,7 +4294,7 @@ int startup (void) + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + }; + +- unsigned char arrow_right[] = { ++ static const unsigned char arrow_right[] = { + 00, 00, 00, 00, 00, 00, 00, 60, 00, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 00, 60, 60, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 00, 60, 58, 60, 00, 00, 00, 00, 00, 00, +@@ -4404,7 +4313,7 @@ int startup (void) + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, + }; + +- unsigned char arrow_down[] = { ++ static const unsigned char arrow_down[] = { + 00, 00, 00, 00, 00, 00, 60, 60, 60, 00, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 60, 60, 60, 50, 00, 00, 00, 00, 00, 00, + 00, 00, 00, 00, 00, 00, 60, 60, 60, 50, 00, 00, 00, 00, 00, 00, +@@ -4426,6 +4335,118 @@ int startup (void) + // This turns the other/indent.pro settings back on: + // *INDENT-ON* + ++ /* Used for highlighting */ ++ static const unsigned char hilite_attrib[] = { ++ 24, 24, 00, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 00, 24, 24, ++ 24, 24, 24, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 24, 24, 24, ++ 00, 24, 24, 24, 00, 00, 00, 24, 24, 00, 00, 00, 24, 24, 24, 00, ++ 00, 00, 24, 24, 24, 00, 00, 24, 24, 00, 00, 24, 24, 24, 00, 00, ++ 00, 00, 00, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 00, 00, 00, ++ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, ++ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, ++ 24, 24, 24, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 24, 24, 24, ++ 24, 24, 24, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 24, 24, 24, ++ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, ++ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, ++ 00, 00, 00, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 00, 00, 00, ++ 00, 00, 24, 24, 24, 00, 00, 24, 24, 00, 00, 24, 24, 24, 00, 00, ++ 00, 24, 24, 24, 00, 00, 00, 24, 24, 00, 00, 00, 24, 24, 24, 00, ++ 24, 24, 24, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 24, 24, 24, ++ 24, 24, 00, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 00, 24, 24, ++ }; ++ ++ ++ if (allegro_init () != 0) ++ return 0; ++ ++ /* Buffer for all strings */ ++ strbuf = (char *) malloc (256); ++ ++ install_keyboard (); ++ install_timer (); ++ ++ /* Determine if user wants to use Windowed or Regular Mode */ ++ if (WBUILD == 1) { ++ if (set_gfx_mode (GFX_AUTODETECT_WINDOWED, SW, SH, 0, 0) != 0) { ++ if (set_gfx_mode (GFX_SAFE, SW, SH, 0, 0) != 0) { ++ set_gfx_mode (GFX_TEXT, 0, 0, 0, 0); ++ allegro_message ("Unable to set any graphic mode\n%s\n", ++ allegro_error); ++ return 0; ++ } ++ } ++ } else { ++ if (set_gfx_mode (GFX_AUTODETECT, SW, SH, 0, 0) != 0) { ++ if (set_gfx_mode (GFX_SAFE, SW, SH, 0, 0) != 0) { ++ set_gfx_mode (GFX_TEXT, 0, 0, 0, 0); ++ allegro_message ("Unable to set any graphic mode\n%s\n", ++ allegro_error); ++ return 0; ++ } ++ } // if (WBUILD) ++ } ++ ++ /* Check for the presence of a mouse */ ++ a = install_mouse (); ++ if (a == -1) { ++ nomouse = 1; ++ klog ("Mouse not found!\n"); ++ rest (1000); ++ } ++ ++ shared_startup (); ++ ++ /* Create the picture used for the mouse */ ++ mouse_pic = create_bitmap (4, 6); ++ for (ky = 0; ky < 6; ky++) ++ for (kx = 0; kx < 4; kx++) ++ mouse_pic->line[ky][kx] = mousepic[ky * 4 + kx]; ++ set_mouse_speed (4, 4); ++ ++ /* Screen buffer */ ++ double_buffer = create_bitmap (SW, SH); ++ clear (double_buffer); ++ ++ gmap.map_no = -1; ++ gmap.tileset = 0; ++ gmap.xsize = htiles; ++ gmap.ysize = vtiles; ++ ++ bufferize (); ++ ++ create_trans_table (&cmap, pal, 128, 128, 128, NULL); ++ color_map = &cmap; ++ ++ font6 = create_bitmap (6, 546); ++ getfont (); ++ ++ mesh2 = create_bitmap (16, 16); ++ clear (mesh2); ++ for (ky = 0; ky < 16; ky++) ++ for (kx = 0; kx < 16; kx++) ++ mesh2->line[ky][kx] = hilite[ky * 16 + kx]; ++ ++ mesh3 = create_bitmap (16, 16); ++ clear (mesh3); ++ for (ky = 0; ky < 16; ky++) ++ for (kx = 0; kx < 16; kx++) ++ mesh3->line[ky][kx] = diag_bars[ky * 16 + kx]; ++ ++ /* Entity images */ ++ init_entities (); ++ showing.entities = 0; ++ showing.obstacles = 0; ++ showing.shadows = 0; ++ showing.zones = 0; ++ showing.markers = 0; ++ showing.boundaries = 0; ++ showing.last_layer = draw_mode; ++ showing.layer[0] = 1; ++ showing.layer[1] = 1; ++ showing.layer[2] = 1; ++ ++ icon_set = 0; ++ + /* Create the arrow bitmaps + * + * arrow_pics[0] = up arrow +@@ -4448,26 +4469,6 @@ int startup (void) + } + } + +- /* Used for highlighting */ +- static unsigned char hilite_attrib[] = { +- 24, 24, 00, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 00, 24, 24, +- 24, 24, 24, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 24, 24, 24, +- 00, 24, 24, 24, 00, 00, 00, 24, 24, 00, 00, 00, 24, 24, 24, 00, +- 00, 00, 24, 24, 24, 00, 00, 24, 24, 00, 00, 24, 24, 24, 00, 00, +- 00, 00, 00, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 00, 00, 00, +- 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, +- 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, +- 24, 24, 24, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 24, 24, 24, +- 24, 24, 24, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 24, 24, 24, +- 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, +- 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, +- 00, 00, 00, 24, 00, 00, 00, 00, 00, 00, 00, 00, 24, 00, 00, 00, +- 00, 00, 24, 24, 24, 00, 00, 24, 24, 00, 00, 24, 24, 24, 00, 00, +- 00, 24, 24, 24, 00, 00, 00, 24, 24, 00, 00, 00, 24, 24, 24, 00, +- 24, 24, 24, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 24, 24, 24, +- 24, 24, 00, 00, 00, 00, 00, 24, 24, 00, 00, 00, 00, 00, 24, 24, +- }; +- + mesh_h = create_bitmap (16, 16); + clear (mesh_h); + for (ky = 0; ky < 16; ky++) +@@ -4481,9 +4482,9 @@ int startup (void) + if (num_joysticks == 0) { + use_joy = 0; + } else { ++ int i; + use_joy = 0; + +- int i; + if (poll_joystick () == 0) { + for (i = num_joysticks - 1; i >= 0; i--) { + if (joy[i].num_buttons >= 4) { +diff --git a/maps/mapstructs.c b/maps/mapstructs.c +index 310034b..5200350 100644 +--- a/maps/mapstructs.c ++++ b/maps/mapstructs.c +@@ -79,6 +79,8 @@ void add_change_bounding (int x, int y, int mouse_b, int *current) + b->y1 = y; + active_bound = 1; + } else { ++ s_bound temp; ++ + /* We have started tracking a boundary already, meaning we + * already have the top-left coords. Now we just need the + * bottom-right ones. +@@ -91,7 +93,6 @@ void add_change_bounding (int x, int y, int mouse_b, int *current) + } + + /* Used only to check if boundaries are okay */ +- s_bound temp; + set_bounds (&temp, b->x1, b->y1, x, y); + /* Don't allow the user to begin (or end) any portion of a bounding + * area if it has any points contained in another bounding area's +diff --git a/src/intrface.c b/src/intrface.c +index 7287753..269b0c4 100644 +--- a/src/intrface.c ++++ b/src/intrface.c +@@ -278,7 +278,7 @@ static int KQ_get_tile_all (lua_State *); + #endif + + +-static const struct luaL_reg lrs[] = { ++static const struct luaL_Reg lrs[] = { + {"add_chr", KQ_add_chr}, + {"add_quest_item", KQ_add_quest_item}, + {"add_special_item", KQ_add_special_item}, +@@ -4074,7 +4074,7 @@ int lua_dofile (lua_State * L, const char * fname) + } + } + +- if ((lua_load (L, (lua_Chunkreader) filereader, f, filename)) != 0) { ++ if ((lua_load (L, (lua_Reader) filereader, f, filename)) != 0) { + allegro_message (_("Could not parse script %s!"), filename); + pack_fclose (f); + return 1; +@@ -4101,7 +4101,7 @@ static int kq_dostring (lua_State * L, const char *cmd) + { + int retval, nrets, i; + nrets = lua_gettop(L); +- retval = lua_load (L, (lua_Chunkreader) stringreader, &cmd, ""); ++ retval = lua_load (L, (lua_Reader) stringreader, &cmd, ""); + if (retval != 0) { + scroll_console("Parse error"); + return retval; +-- +2.2.2 +