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

Migrate some platforms to cmake. #345

Merged
merged 47 commits into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
7412938
Add Initial Makefile.platform
Wolf3s May 22, 2024
c2d556c
Port switch and 3ds to CMake.
Wolf3s May 23, 2024
6e8d7e4
Lowercase some cmake commands.
Wolf3s May 23, 2024
c05e874
Remove deprecated configuration files for 3ds and switch.
Wolf3s May 25, 2024
c700030
Porting PS4 for CMake.
Wolf3s May 26, 2024
9bcc01e
Cleanups on portable-endian.h
Wolf3s May 26, 2024
8ef98cb
Merge branch 'cmake' into nintendo-cmake
Wolf3s May 26, 2024
87c96e6
[W.I.P on IOP] Add cmake for ps2.
Wolf3s May 27, 2024
a0a853d
Merge branch 'cmake' into nintendo-cmake
Wolf3s May 27, 2024
95d83bc
Update ps2dev_iop.cmake
Wolf3s May 28, 2024
5e87aeb
Update ccpp.yml
Wolf3s May 28, 2024
2fe1f26
Update socket.c
Wolf3s May 28, 2024
2af7071
Add support for building dreamcast on cmake.
Wolf3s May 28, 2024
7647e9d
Update ccpp.yml
Wolf3s May 28, 2024
8e4ad54
Update Makefile.platform
Wolf3s May 28, 2024
7a27407
Update ccpp.yml
Wolf3s May 29, 2024
d87dd36
Update Makefile.platform
Wolf3s May 29, 2024
0275185
...
Wolf3s May 29, 2024
67d9c3a
Merge branch 'cmake' into nintendo-cmake
Wolf3s May 29, 2024
d582725
Fix build for ee.
Wolf3s May 29, 2024
24fad18
Migrate all nintendo platforms to CMake.
Wolf3s May 29, 2024
3275b61
Merge branch 'nintendo' into nintendo-cmake
Wolf3s May 29, 2024
f9831cc
Remove config files.
Wolf3s May 29, 2024
d09dc1e
Merge branch 'master' into cmake
Wolf3s May 29, 2024
e254c80
Merge branch 'nintendo-cmake' into cmake
Wolf3s May 29, 2024
d8b8847
Merge branch 'sahlberg:master' into cmake
Wolf3s May 29, 2024
c25d60f
[GC] Cleanup socklen code
Wolf3s May 30, 2024
b0dde2a
Delete old ps2 makefiles(Except iop one) and adapt config.h to IOP st…
Wolf3s May 30, 2024
2487c8f
Add copyright notice and update README.
Wolf3s May 30, 2024
72d0284
Update Makefile.platform
Wolf3s May 30, 2024
d4c7772
Add PS2SDK Support.
Wolf3s Jun 1, 2024
00cd398
Fix compilation with all platforms
Wolf3s Jun 1, 2024
60b5657
Change _arch_dreamcast to __DREAMCAST__
Wolf3s Jun 3, 2024
46dadda
Fix amiga os build and add ci.
Wolf3s Jun 4, 2024
fa1cd31
Update README
Wolf3s Jun 4, 2024
b905e18
Merge branch 'sahlberg:master' into cmake
Wolf3s Jun 5, 2024
facb1d9
Add HAVE_ADDRINFO.
Wolf3s Jun 5, 2024
0677c39
Change PS2 Installation dir.
Wolf3s Jun 6, 2024
6a0c8c0
Bump actions to v4
Wolf3s Jun 6, 2024
cf998cd
Fix AMIGA_OS Warnings
Wolf3s Jun 6, 2024
67eea94
Remove useless place for PS2IPS.
Wolf3s Jun 9, 2024
b8c7371
Add OpenBSD port.
Wolf3s Jun 10, 2024
ca4851a
PS4 is BSD based.
Wolf3s Jun 12, 2024
9d1cc17
Add bsd implementations over from ps4.
Wolf3s Jun 12, 2024
9f44d0d
Conversion fixes.
Wolf3s Jun 13, 2024
33ba2fb
Fix installation order.
Wolf3s Jun 14, 2024
fdbf936
Merge branch 'sahlberg:master' into cmake
Wolf3s Jun 18, 2024
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
149 changes: 96 additions & 53 deletions .github/workflows/ccpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt update
Expand Down Expand Up @@ -45,28 +45,69 @@ jobs:
steps:
- name: Install dependencies
run: |
apk add build-base git zip gawk python3 py3-pip bash
apk add cmake build-base git zip gawk python3 py3-pip bash

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile PS2 EE Side
run: |
cd lib
make -f Makefile.PS2_EE clean
make -f Makefile.PS2_EE

make -f Makefile.platform ps2_ee_all clean

- name: Compile PS2 EE IPS Side
run: |
cd lib
make -f Makefile.PS2_EE_IPS clean
make -f Makefile.PS2_EE_IPS

make -f Makefile.platform ps2_ips_all clean

- name: Compile PS2 IOP Side
run: |
make -f Makefile.platform ps2_iop_all clean

build-ps3-ppu:
name: PS3 PPU build

runs-on: ubuntu-20.04
steps:

- name: Checkout
uses: actions/checkout@v4

- name: Set env vars
id: slug
run: |
echo "sha_name=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_ENV
# using pre-compiled sdk
- name: Download PSL1GHT Toolchain
run: |
curl -sL https://github.com/bucanero/ps3toolchain/releases/download/ubuntu-latest-fad3b5fb/ps3dev-ubuntu-latest-2020-08-31.tar.gz | tar xvz -C ./
echo "PS3DEV=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
echo "PSL1GHT=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
- name: build libsmb2
run: |
cd lib
make -f Makefile.PS2_IOP clean
make -f Makefile.PS2_IOP
make -f Makefile.PS3_PPU clean
make -f Makefile.PS3_PPU

build-ps4:
name: PS4

runs-on: ubuntu-22.04
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y wget cmake git gettext smpq &&
wget https://github.com/PacBrew/pacbrew-pacman/releases/download/v1.1/pacbrew-pacman-1.1.deb &&
sudo dpkg -i pacbrew-pacman-1.1.deb && sudo pacbrew-pacman -Sy &&
sudo pacbrew-pacman --noconfirm -S ps4-openorbis ps4-openorbis-portlibs

- name: build libsmb2
run: |
make -f Makefile.platform ps4_all clean

build-switch:
name: SWITCH build
Expand All @@ -79,13 +120,11 @@ jobs:
apt-get update -y && apt-get install -y gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile Nintendo Switch
run: |
cd lib
make -f Makefile.SWITCH clean
make -f Makefile.SWITCH
make -f Makefile.platform switch_all clean

build-3ds:
name: 3DS build
Expand All @@ -98,13 +137,11 @@ jobs:
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile Nintendo 3DS
run: |
cd lib
make -f Makefile.3DS clean
make -f Makefile.3DS
make -f Makefile.platform 3ds_all clean

build-wii:
name: WII build
Expand All @@ -117,13 +154,11 @@ jobs:
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile Nintendo WII
run: |
cd lib
make -f Makefile.WII clean
make -f Makefile.WII
make -f Makefile.platform wii_all clean

build-gc:
name: GameCube build
Expand All @@ -136,13 +171,11 @@ jobs:
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile Nintendo Gamecube
run: |
cd lib
make -f Makefile.GC clean
make -f Makefile.GC
make -f Makefile.platform gc_all clean

build-wiiu:
name: WII-U Build
Expand All @@ -155,13 +188,11 @@ jobs:
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile WII-U
run: |
cd lib
make -f Makefile.WIIU clean
make -f Makefile.WIIU
make -f Makefile.platform wiiu_all clean

build-ds:
name: DS build
Expand All @@ -174,35 +205,47 @@ jobs:
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compile NDS ARM9
run: |
cd lib
make -f Makefile.DS_ARM9 clean
make -f Makefile.DS_ARM9
make -f Makefile.platform nds_all clean

build-ps3-ppu:
name: PS3 PPU build
build-Amiga-OS3:
name: Amiga OS3 build

runs-on: ubuntu-20.04
runs-on: ubuntu-latest
container: amigadev/crosstools:m68k-amigaos
steps:
- name: Install dependencies
run: |
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: Checkout
uses: actions/checkout@v3
- name: git checkout
uses: actions/checkout@v4

- name: Set env vars
id: slug
- name: Compile AMIGA OS3
run: |
echo "sha_name=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_ENV
# using pre-compiled sdk
- name: Download PSL1GHT Toolchain
cd lib
make -f Makefile.AMIGA_OS3 clean
make -f Makefile.AMIGA_OS3

build-Amiga-Os:
name: Amiga OS Build

runs-on: ubuntu-latest
container: amigadev/crosstools:ppc-amigaos
steps:
- name: Install dependencies
run: |
curl -sL https://github.com/bucanero/ps3toolchain/releases/download/ubuntu-latest-fad3b5fb/ps3dev-ubuntu-latest-2020-08-31.tar.gz | tar xvz -C ./
echo "PS3DEV=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
echo "PSL1GHT=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
- name: build libsmb2
apt-get update -y && apt-get install -y ffmpeg gettext smpq

- name: git checkout
uses: actions/checkout@v4

- name: Compile AMIGA OS
run: |
cd lib
make -f Makefile.PS3_PPU clean
make -f Makefile.PS3_PPU
make -f Makefile.AMIGA clean
make -f Makefile.AMIGA

81 changes: 69 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -137,35 +137,41 @@ elseif(ESP_PLATFORM)

register_component()
else()
if(CMAKE_SYSTEM_NAME MATCHES NintendoSwitch OR CMAKE_SYSTEM_NAME MATCHES Nintendo3DS OR CMAKE_SYSTEM_NAME MATCHES Dreamcast OR CMAKE_SYSTEM_NAME MATCHES NintendoGameCube OR CMAKE_SYSTEM_NAME MATCHES NintendoDS OR CMAKE_SYSTEM_NAME MATCHES NintendoWii OR CMAKE_SYSTEM_NAME MATCHES CafeOS)
cmake_minimum_required(VERSION 3.13)
else()
cmake_minimum_required(VERSION 3.5)
endif()

project(libsmb2
LANGUAGES C
VERSION 4.0.0
)

set(SOVERSION 1 CACHE STRING "" FORCE)

set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "Installation directory for libraries")
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/cmake/libsmb2" CACHE PATH "Installation directory for cmake (.cmake) files")

if(CMAKE_SYSTEM_NAME MATCHES NintendoSwitch OR CMAKE_SYSTEM_NAME MATCHES Nintendo3DS OR PS4 OR PLATFORM_PS2 OR CMAKE_SYSTEM_NAME MATCHES Dreamcast OR CMAKE_SYSTEM_NAME MATCHES NintendoGameCube OR CMAKE_SYSTEM_NAME MATCHES NintendoDS OR CMAKE_SYSTEM_NAME MATCHES NintendoWii OR CMAKE_SYSTEM_NAME MATCHES CafeOS)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
else()
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
endif()
option(ENABLE_EXAMPLES "Build example programs" OFF)

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)

if(IOS)
if(IOS)
find_package(GSSAPI)

if(GSSAPI_FOUND)
add_definitions(-DHAVE_LIBKRB5)
endif()
endif()

if(GSSAPI_FOUND)
add_definitions(-DHAVE_LIBKRB5)
endif()
endif()
if(NOT PS2_IOP)
include(cmake/ConfigureChecks.cmake)

endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR}
include
include/smb2
Expand All @@ -177,8 +183,8 @@ else()

if(MSVC AND BUILD_SHARED_LIBS)
# If we are building dll with msvc, then generate a def file according to the syms file
SET(SYMS_FILE_PATH "${PROJECT_SOURCE_DIR}/lib/libsmb2.syms")
SET(DEF_FILE_PATH "${PROJECT_BINARY_DIR}/lib/libsmb2.def")
set(SYMS_FILE_PATH "${PROJECT_SOURCE_DIR}/lib/libsmb2.syms")
set(DEF_FILE_PATH "${PROJECT_BINARY_DIR}/lib/libsmb2.def")
file(READ ${SYMS_FILE_PATH} EXPORT_SYMBOLS)
file(WRITE ${DEF_FILE_PATH} "LIBRARY smb2\nEXPORTS\n\n${EXPORT_SYMBOLS}")
# Pass def file to the linker
Expand All @@ -188,6 +194,57 @@ else()
if(CMAKE_SYSTEM_NAME MATCHES Windows)
list(APPEND CORE_LIBRARIES ws2_32.lib)
add_definitions(-DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -DHAVE_LINGER -DNEED_GETLOGIN_R -DNEED_GETPID -DNEED_RANDOM -DNEED_SRANDOM)
elseif(CMAKE_SYSTEM_NAME MATCHES NintendoSwitch)
add_definitions(-DARM11 -DSWITCH -D__SWITCH__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R)
set(ARCH "-march=armv8-a -mtp=soft -fPIE")
set(CMAKE_C_FLAGS "-g -Wall -O2 -ffast-math ${ARCH}")
set(CMAKE_C_FLAGS "-Wno-unused-variable")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -fno-rtti -std=gnu++11")
set(CMAKE_C_LDFLAGS "${CMAKE_C_FLAGS} -specs=switch.specs -g ${ARCH} -Wl,-Map,$(notdir $*.map)")
add_compile_options("${CMAKE_C_FLAGS} ${CMAKE_LDFLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES Nintendo3DS)
add_definitions(-DARM11 -D_3DS -D__3DS__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R)
set(ARCH "-march=armv6k -mfloat-abi=hard -mtune=mpcore -mtp=soft -fPIE")
set(CMAKE_C_FLAGS "-Wno-unused-variable -g -Wall -O2 -mword-relocations -fomit-frame-pointer -ffast-math ${ARCH}")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -fno-rtti -fno-exceptions -std=gnu++11")
set(CMAKE_C_LDFLAGS "${CMAKE_C_FLAGS} -specs=3dsx.specs -g ${ARCH} -Wl,-Map,$(notdir $*.map)")
add_compile_options("${CMAKE_C_FLAGS} ${CMAKE_LDFLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES NintendoDS)
add_definitions(-DARM9 -D__NDS__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R -DNEED_GETADDRINFO -DNEED_FREEADDRINFO -DNEED_POLL)
set(CMAKE_C_FLAGS "-Wno-format -Wpointer-arith")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -fno-rtti -fno-exceptions -std=gnu++11")
set(CMAKE_C_LDFLAGS "${CMAKE_C_FLAGS} -specs=ds_arm9.specs -g")
add_compile_options("${CMAKE_C_FLAGS} ${CMAKE_LDFLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES NintendoGameCube)
add_definitions(-DGEKKO -D__GC__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R -DNEED_GETADDRINFO -DNEED_FREEADDRINFO -DNEED_POLL)
set(CMAKE_C_FLAGS "-g")
#-O3 -Wall
add_compile_options("${CMAKE_C_FLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES NintendoWii)
add_definitions(-DGEKKO -D__WII__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R -DNEED_GETADDRINFO -DNEED_FREEADDRINFO -DNEED_POLL)
set(CMAKE_C_FLAGS "-g")
#-O3 -Wall
add_compile_options("${CMAKE_C_FLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES CafeOS)
add_definitions(-D__WIIU__ -DNEED_READV -DNEED_WRITEV -DNEED_GETLOGIN_R)
set(CMAKE_C_FLAGS "-g")
#-O3 -Wall
add_compile_options("${CMAKE_C_FLAGS}")
elseif(PS4)
add_definitions(-DPS4_PLATFORM)
set(CMAKE_C_FLAGS "-funwind-tables")
#-fuse-init-array -emit-llvm broken...
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
add_compile_options("${CMAKE_C_FLAGS}")
elseif(PS2)
add_definitions(-DNEED_BE64TOH -DNEED_POLL -DNEED_WRITEV -DNEED_READV -DNEED_GETLOGIN_R)
elseif(PS2_IOP)
add_definitions(-DHAVE_CONFIG_H -DNEED_BE64TOH -DNEED_STRDUP -DNEED_READV -DNEED_WRITEV -DNEED_POLL -DNEED_GETPID -DNEED_RANDOM -DNEED_SRANDOM -DNEED_GETLOGIN_R)
set(CMAKE_C_FLAGS "-Wall")
include_directories(${CMAKE_CURRENT_BINARY_DIR} include/ps2)
add_compile_options("${CMAKE_C_FLAGS}")
elseif(CMAKE_SYSTEM_NAME MATCHES Dreamcast)
add_definitions(-DNEED_WRITEV -DNEED_READV -DHAVE_CONFIG_H -DNEED_GETLOGIN_R)
elseif(CMAKE_SYSTEM_NAME STREQUAL Solaris)
find_library(SOCKET_LIBRARY socket)
find_library(NSL_LIBRARY nsl)
Expand Down
Loading
Loading