Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[sdl1]Support linux build. #8070

Merged
merged 5 commits into from
Sep 11, 2019
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ports/sdl1/CONTROL
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Source: sdl1
Version: 1.2.15-6
Version: 1.2.15-7
Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.
13 changes: 13 additions & 0 deletions ports/sdl1/fix-linux-build.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/src/video/x11/SDL_x11sym.h b/src/video/x11/SDL_x11sym.h
index 4875b98..10bf365 100644
--- a/src/video/x11/SDL_x11sym.h
+++ b/src/video/x11/SDL_x11sym.h
@@ -165,7 +165,7 @@ SDL_X11_SYM(Bool,XShmQueryExtension,(Display* a),(a),return)
*/
#ifdef LONG64
SDL_X11_MODULE(IO_32BIT)
-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
+SDL_X11_SYM(int,_XData32,(Display *dpy,_Xconst register long *data,unsigned len),(dpy,data,len),return)
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
#endif

133 changes: 98 additions & 35 deletions ports/sdl1/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,45 +6,108 @@ vcpkg_from_github(
REF release-1.2.15
SHA512 38b94a650ec205377ae1503d0ec8a5254ef6d50ed0acac8d985b57b64bc16ea042cfa41e19e5ef8317980c4afb83186829f5bc3da9433d0a649dfd10554801b5
HEAD_REF master
PATCHES export-symbols-only-in-shared-build.patch
PATCHES
export-symbols-only-in-shared-build.patch
fix-linux-build.patch
)

configure_file(${SOURCE_PATH}/include/SDL_config.h.default ${SOURCE_PATH}/include/SDL_config.h COPYONLY)

file(COPY ${CMAKE_CURRENT_LIST_DIR}/SDL1_2017.sln DESTINATION ${SOURCE_PATH}/VisualC/ )

if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDL_static.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDL RENAME SDL.vcxproj)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDLmain_static.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDLmain RENAME SDLmain.vcxproj)
if (VCPKG_TARGET_IS_WINDOWS)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/SDL1_2017.sln DESTINATION ${SOURCE_PATH}/VisualC/ )

if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDL_static.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDL RENAME SDL.vcxproj)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDLmain_static.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDLmain RENAME SDLmain.vcxproj)
else()
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDL_dynamic.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDL RENAME SDL.vcxproj)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDLmain_dynamic.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDLmain RENAME SDLmain.vcxproj)
endif()

# This text file gets copied as a library, and included as one in the package
file(REMOVE_RECURSE ${SOURCE_PATH}/src/hermes/COPYING.LIB)

vcpkg_install_msbuild(
SOURCE_PATH ${SOURCE_PATH}
PROJECT_SUBPATH VisualC/SDL1_2017.sln
INCLUDES_SUBPATH include
LICENSE_SUBPATH COPYING
ALLOW_ROOT_INCLUDES
)

#Take all the fils into include/SDL to sovle conflict with SDL2 port
file(GLOB files ${CURRENT_PACKAGES_DIR}/include/*)
foreach(file ${files})
file(COPY ${file} DESTINATION ${CURRENT_PACKAGES_DIR}/include/SDL)
file(REMOVE ${file})
endforeach()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/SDL/doxyfile)

if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/SDLmain.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/SDLmain.lib)
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/SDLmain.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/SDLmaind.lib)
endif()
else()
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDL_dynamic.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDL RENAME SDL.vcxproj)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/SDLmain_dynamic.vcxproj DESTINATION ${SOURCE_PATH}/VisualC/SDLmain RENAME SDLmain.vcxproj)
endif()
find_program(autoreconf autoreconf)
if (NOT autoreconf OR NOT EXISTS "/usr/share/doc/libgles2/copyright")
message(FATAL_ERROR "autoreconf and libgles2-mesa-dev must be installed before libepoxy can build. Install them with \"apt-get dh-autoreconf libgles2-mesa-dev\".")
JackBoosY marked this conversation as resolved.
Show resolved Hide resolved
endif()

find_program(MAKE make)
if (NOT MAKE)
message(FATAL_ERROR "MAKE not found")
endif()

# This text file gets copied as a library, and included as one in the package
file(REMOVE_RECURSE ${SOURCE_PATH}/src/hermes/COPYING.LIB)

vcpkg_install_msbuild(
SOURCE_PATH ${SOURCE_PATH}
PROJECT_SUBPATH VisualC/SDL1_2017.sln
INCLUDES_SUBPATH include
LICENSE_SUBPATH COPYING
ALLOW_ROOT_INCLUDES
)

#Take all the fils into include/SDL to sovle conflict with SDL2 port
file(GLOB files ${CURRENT_PACKAGES_DIR}/include/*)
foreach(file ${files})
file(COPY ${file} DESTINATION ${CURRENT_PACKAGES_DIR}/include/SDL)
file(REMOVE ${file})
endforeach()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/SDL/doxyfile)

if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/SDLmain.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/SDLmain.lib)
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/SDLmain.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/SDLmaind.lib)
endif()
file(REMOVE_RECURSE ${SOURCE_PATH}/m4)
file(MAKE_DIRECTORY ${SOURCE_PATH}/m4)

vcpkg_execute_required_process(
COMMAND "./autogen.sh"
WORKING_DIRECTORY ${SOURCE_PATH}
LOGNAME autoreconf-${TARGET_TRIPLET}
)

message(STATUS "Configuring ${TARGET_TRIPLET}")
set(OUT_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/make-build-${TARGET_TRIPLET}-release)

file(REMOVE_RECURSE ${OUT_PATH_RELEASE})
file(MAKE_DIRECTORY ${OUT_PATH_RELEASE})

vcpkg_execute_required_process(
COMMAND "./configure" --prefix=${OUT_PATH_RELEASE}
WORKING_DIRECTORY ${SOURCE_PATH}
LOGNAME config-${TARGET_TRIPLET}
)

message(STATUS "Building ${TARGET_TRIPLET}")
vcpkg_execute_build_process(
COMMAND "make -j ${VCPKG_CONCURRENCY}"
JackBoosY marked this conversation as resolved.
Show resolved Hide resolved
WORKING_DIRECTORY "${SOURCE_PATH}"
LOGNAME "build-${TARGET_TRIPLET}-release"
)

message(STATUS "Installing ${TARGET_TRIPLET}")
vcpkg_execute_required_process(
COMMAND "make install"
WORKING_DIRECTORY "${SOURCE_PATH}"
LOGNAME "install-${TARGET_TRIPLET}-release"
)

file(INSTALL ${OUT_PATH_RELEASE}/include DESTINATION ${CURRENT_PACKAGES_DIR})
file(INSTALL ${OUT_PATH_RELEASE}/lib DESTINATION ${CURRENT_PACKAGES_DIR})
file(INSTALL ${OUT_PATH_RELEASE}/share DESTINATION ${CURRENT_PACKAGES_DIR})

file(GLOB DYNAMIC_LIBS ${CURRENT_PACKAGES_DIR}/lib *.so*)

if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
file(COPY ${DYNAMIC_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
endif()
file(REMOVE ${DYNAMIC_LIBS})

file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
endif()