mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 02:56:43 +01:00
fixed MinGW support
This commit is contained in:
parent
90b00710fd
commit
f02caf73a2
6 changed files with 56 additions and 35 deletions
11
cmake/i686-w64-mingw32.toolchain
Normal file
11
cmake/i686-w64-mingw32.toolchain
Normal file
|
@ -0,0 +1,11 @@
|
|||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(CMAKE_C_COMPILER /usr/bin/i686-w64-mingw32-gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/i686-w64-mingw32-g++)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
set(MINGDIR /usr/i686-w64-mingw32)
|
|
@ -1,3 +1,5 @@
|
|||
if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
|
||||
|
||||
add_definitions(-D_XOPEN_SOURCE=600)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c11")
|
||||
|
@ -10,10 +12,11 @@ endif(APPLE)
|
|||
|
||||
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/libsuperderpy/cmake ${PROJECT_SOURCE_DIR}/cmake)
|
||||
|
||||
include_directories("." "libsuperderpy/src")
|
||||
include_directories("libsuperderpy/src")
|
||||
|
||||
if(MINGW)
|
||||
# Guess MINGDIR from the value of CMAKE_C_COMPILER if it's not set.
|
||||
if(NOT MINGDIR)
|
||||
if("$ENV{MINGDIR}" STREQUAL "")
|
||||
string(REGEX REPLACE "/bin/[^/]*$" "" MINGDIR "${CMAKE_C_COMPILER}")
|
||||
message(STATUS "Guessed MinGW directory: ${MINGDIR}")
|
||||
|
@ -21,20 +24,30 @@ if(MINGW)
|
|||
file(TO_CMAKE_PATH "$ENV{MINGDIR}" MINGDIR)
|
||||
message(STATUS "Using MINGDIR: ${MINGDIR}")
|
||||
endif("$ENV{MINGDIR}" STREQUAL "")
|
||||
endif(NOT MINGDIR)
|
||||
|
||||
# Search in MINGDIR for headers and libraries.
|
||||
set(CMAKE_PREFIX_PATH "${MINGDIR}")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mwindows")
|
||||
|
||||
endif(MINGW)
|
||||
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib/${LIBSUPERDERPY_GAMENAME}:\$ORIGIN/gamestates:\$ORIGIN:\$ORIGIN/../lib:\$ORIGIN/lib:\$ORIGIN/bin")
|
||||
|
||||
find_package(Allegro5 REQUIRED)
|
||||
find_package(Allegro5Font REQUIRED)
|
||||
find_package(Allegro5TTF REQUIRED)
|
||||
find_package(Allegro5Primitives REQUIRED)
|
||||
find_package(Allegro5Audio REQUIRED)
|
||||
find_package(Allegro5ACodec REQUIRED)
|
||||
find_package(Allegro5Image REQUIRED)
|
||||
find_package(Allegro5Color REQUIRED)
|
||||
if(APPLE)
|
||||
find_package(Allegro5Main)
|
||||
endif(APPLE)
|
||||
|
||||
MACRO(register_gamestate name)
|
||||
|
||||
add_library("libsuperderpy-${LIBSUPERDERPY_GAMENAME}-${name}" SHARED "${name}.c")
|
||||
add_library("libsuperderpy-${LIBSUPERDERPY_GAMENAME}-${name}" MODULE "${name}.c")
|
||||
|
||||
set_target_properties("libsuperderpy-${LIBSUPERDERPY_GAMENAME}-${name}" PROPERTIES PREFIX "")
|
||||
|
||||
|
@ -50,8 +63,12 @@ ENDMACRO()
|
|||
|
||||
MACRO(libsuperderpy_copy EXECUTABLE)
|
||||
|
||||
add_custom_command(TARGET "${EXECUTABLE}" PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "../libsuperderpy/src/libsuperderpy.so" $<TARGET_FILE_DIR:${EXECUTABLE}>)
|
||||
add_custom_command(TARGET "${EXECUTABLE}" PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "../libsuperderpy/src/libsuperderpy${CMAKE_SHARED_LIBRARY_SUFFIX}" $<TARGET_FILE_DIR:${EXECUTABLE}>)
|
||||
|
||||
ENDMACRO()
|
||||
|
||||
include(InstallRequiredSystemLibraries)
|
||||
|
||||
set(LIBSUPERDERPY_CONFIG_INCLUDED 1)
|
||||
|
||||
endif (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
|
||||
|
|
11
cmake/x86_64-w64-mingw32.toolchain
Normal file
11
cmake/x86_64-w64-mingw32.toolchain
Normal file
|
@ -0,0 +1,11 @@
|
|||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-gcc)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-g++)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
set(MINGDIR /usr/x86_64-w64-mingw32)
|
|
@ -10,25 +10,12 @@ add_definitions(-DLIBSUPERDERPY_GAMENAME_PRETTY="${LIBSUPERDERPY_GAMENAME_PRETTY
|
|||
add_definitions(-DLIBSUPERDERPY_GAMENAME="${LIBSUPERDERPY_GAMENAME}")
|
||||
add_definitions(-DLIBSUPERDERPY_INITIAL_GAMESTATE="${LIBSUPERDERPY_INITIAL_GAMESTATE}")
|
||||
|
||||
find_package(Allegro5 REQUIRED)
|
||||
find_package(Allegro5Font REQUIRED)
|
||||
find_package(Allegro5TTF REQUIRED)
|
||||
find_package(Allegro5Primitives REQUIRED)
|
||||
find_package(Allegro5Audio REQUIRED)
|
||||
find_package(Allegro5ACodec REQUIRED)
|
||||
find_package(Allegro5Image REQUIRED)
|
||||
find_package(Allegro5Color REQUIRED)
|
||||
if(APPLE)
|
||||
find_package(Allegro5Main)
|
||||
endif(APPLE)
|
||||
|
||||
|
||||
add_library("libsuperderpy" SHARED ${SRC_LIST})
|
||||
|
||||
SET_TARGET_PROPERTIES("libsuperderpy" PROPERTIES PREFIX "")
|
||||
|
||||
include_directories(${ALLEGRO5_INCLUDE_DIR} ${ALLEGRO5_FONT_INCLUDE_DIR} ${ALLEGRO5_TTF_INCLUDE_DIR} ${ALLEGRO5_PRIMITIVES_INCLUDE_DIR} ${ALLEGRO5_AUDIO_INCLUDE_DIR} ${ALLEGRO5_ACODEC_INCLUDE_DIR} ${ALLEGRO5_IMAGE_INCLUDE_DIR})
|
||||
|
||||
target_link_libraries("libsuperderpy" ${ALLEGRO5_LIBRARIES} ${ALLEGRO5_FONT_LIBRARIES} ${ALLEGRO5_TTF_LIBRARIES} ${ALLEGRO5_PRIMITIVES_LIBRARIES} ${ALLEGRO5_AUDIO_LIBRARIES} ${ALLEGRO5_ACODEC_LIBRARIES} ${ALLEGRO5_IMAGE_LIBRARIES} ${ALLEGRO5_MAIN_LIBRARIES} m dl)
|
||||
target_link_libraries("libsuperderpy" ${ALLEGRO5_LIBRARIES} ${ALLEGRO5_FONT_LIBRARIES} ${ALLEGRO5_TTF_LIBRARIES} ${ALLEGRO5_PRIMITIVES_LIBRARIES} ${ALLEGRO5_AUDIO_LIBRARIES} ${ALLEGRO5_ACODEC_LIBRARIES} ${ALLEGRO5_IMAGE_LIBRARIES} m dl)
|
||||
|
||||
install(TARGETS "libsuperderpy" DESTINATION ${LIB_INSTALL_DIR})
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <locale.h>
|
||||
#include <signal.h>
|
||||
#include <dlfcn.h>
|
||||
#include <unistd.h>
|
||||
#include <allegro5/allegro_primitives.h>
|
||||
#include <allegro5/allegro_acodec.h>
|
||||
#include <allegro5/allegro_ttf.h>
|
||||
|
@ -39,8 +40,6 @@
|
|||
#include "config.h"
|
||||
#include "libsuperderpy.h"
|
||||
|
||||
extern int main(int, char**);
|
||||
|
||||
void DrawGamestates(struct Game *game) {
|
||||
al_set_target_backbuffer(game->display);
|
||||
al_clear_to_color(al_map_rgb(0,0,0));
|
||||
|
@ -96,7 +95,7 @@ void ResumeGamestates(struct Game *game) {
|
|||
|
||||
|
||||
void derp(int sig) {
|
||||
int __attribute__((unused)) n = write(STDERR_FILENO, "Segmentation fault\nI just don't know what went wrong!\n", 54);
|
||||
ssize_t __attribute__((unused)) n = write(STDERR_FILENO, "Segmentation fault\nI just don't know what went wrong!\n", 54);
|
||||
abort();
|
||||
}
|
||||
|
||||
|
@ -528,11 +527,7 @@ int libsuperderpy(int argc, char **argv){
|
|||
al_shutdown_ttf_addon();
|
||||
al_shutdown_font_addon();
|
||||
if (game.restart) {
|
||||
#ifdef ALLEGRO_MACOSX
|
||||
return _al_mangled_main(argc, argv);
|
||||
#else
|
||||
return main(argc, argv);
|
||||
#endif
|
||||
return execv(argv[0], argv); // FIXME: on OSX there's chdir called which might break it
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#ifdef ALLEGRO_WINDOWS
|
||||
#define LIBRARY_EXTENSION ".dll"
|
||||
#elseif ALLEGRO_MACOSX
|
||||
#elif ALLEGRO_MACOSX
|
||||
#define LIBRARY_EXTENTION ".dylib"
|
||||
#else
|
||||
#define LIBRARY_EXTENSION ".so"
|
||||
|
|
Loading…
Reference in a new issue