forked from pyrite-dev/milsko
cmake
This commit is contained in:
parent
47fe57b31c
commit
f8a94b7380
31 changed files with 220 additions and 180 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -25,3 +25,4 @@ compile_flags.txt
|
|||
*.bin
|
||||
*.rsrc
|
||||
*.finf
|
||||
*.gdb
|
||||
|
|
|
|||
252
CMakeLists.txt
252
CMakeLists.txt
|
|
@ -9,24 +9,34 @@ include(GNUInstallDirs)
|
|||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
|
||||
option(MW_TRY_OPENGL "Try to compile OpenGL widget or not" ON)
|
||||
option(MW_TRY_VULKAN "Try to compile Vulkan widget or not" ON)
|
||||
|
||||
option(MW_CLASSIC_THEME "Use classic theme" OFF)
|
||||
option(MW_BUILD_EXAMPLES "Build examples" OFF)
|
||||
option(MW_USE_STB_IMAGE "Use stb_image" ON)
|
||||
option(MW_USE_STB_TRUETYPE "Use stb_truetype" OFF)
|
||||
option(MW_BUILD_SHARED "Build a shared library" ON)
|
||||
option(MW_BUILD_STATIC "Build a static library" OFF)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES Retro)
|
||||
option(MW_BUILD_SHARED "Build a shared library" OFF)
|
||||
option(MW_BUILD_STATIC "Build a static library" ON)
|
||||
option(MW_TRY_OPENGL "Try to compile OpenGL widget or not" OFF)
|
||||
option(MW_TRY_VULKAN "Try to compile Vulkan widget or not" OFF)
|
||||
else()
|
||||
option(MW_BUILD_SHARED "Build a shared library" ON)
|
||||
option(MW_BUILD_STATIC "Build a static library" OFF)
|
||||
option(MW_TRY_OPENGL "Try to compile OpenGL widget or not" ON)
|
||||
option(MW_TRY_VULKAN "Try to compile Vulkan widget or not" ON)
|
||||
endif()
|
||||
|
||||
option(MW_INSTALL_HEADERS "Install headers" ON)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
|
||||
option(MW_USE_FREETYPE2 "Use FreeType 2" OFF)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin OR ${CMAKE_SYSTEM_NAME} MATCHES Retro)
|
||||
option(MW_USE_FREETYPE2 "Use FreeType 2" OFF)
|
||||
else()
|
||||
option(MW_USE_FREETYPE2 "Use FreeType 2" ON)
|
||||
option(MW_USE_FREETYPE2 "Use FreeType 2" ON)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
|
||||
option(MW_USE_WAYLAND "Enable Wayland backend" ON)
|
||||
option(MW_USE_WAYLAND "Enable Wayland backend" ON)
|
||||
endif()
|
||||
|
||||
file(
|
||||
|
|
@ -39,83 +49,83 @@ list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/opengl.c")
|
|||
list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/vulkan.c")
|
||||
|
||||
if(NOT MW_USE_STB_IMAGE)
|
||||
list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/external/stb_image.c")
|
||||
list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/external/stb_image.c")
|
||||
endif()
|
||||
|
||||
if(NOT MW_USE_STB_TRUETYPE)
|
||||
list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/external/stb_truetype.c")
|
||||
list(REMOVE_ITEM SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/external/stb_truetype.c")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "/usr/X11R7/include")
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "/usr/pkg/include")
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "/usr/X11R7/include")
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES "/usr/pkg/include")
|
||||
endif()
|
||||
|
||||
if(MW_TRY_OPENGL)
|
||||
find_package(OpenGL)
|
||||
if(OpenGL_FOUND)
|
||||
set(MW_BUILD_OPENGL ON)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/opengl.c")
|
||||
if(APPLE)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/opengl_cocoa.m")
|
||||
endif()
|
||||
message(STATUS "OpenGL widget has been enabled")
|
||||
else()
|
||||
message(WARNING "OpenGL widget has been disabled")
|
||||
find_package(OpenGL)
|
||||
if(OpenGL_FOUND)
|
||||
set(MW_BUILD_OPENGL ON)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/opengl.c")
|
||||
if(APPLE)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/opengl_cocoa.m")
|
||||
endif()
|
||||
message(STATUS "OpenGL widget has been enabled")
|
||||
else()
|
||||
message(WARNING "OpenGL widget has been disabled")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MW_TRY_VULKAN)
|
||||
check_include_files(vulkan/vulkan.h HAVE_VULKAN_VULKAN_H)
|
||||
if(HAVE_VULKAN_VULKAN_H)
|
||||
set(MW_BUILD_VULKAN ON)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/vulkan.c")
|
||||
target_compile_definitions(
|
||||
check_include_files(vulkan/vulkan.h HAVE_VULKAN_VULKAN_H)
|
||||
if(HAVE_VULKAN_VULKAN_H)
|
||||
set(MW_BUILD_VULKAN ON)
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/widget/vulkan.c")
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
MW_VULKAN
|
||||
)
|
||||
message(STATUS "Vulkan widget has been enabled")
|
||||
else()
|
||||
message(WARNING "Vulkan widget has been disabled")
|
||||
endif()
|
||||
message(STATUS "Vulkan widget has been enabled")
|
||||
else()
|
||||
message(WARNING "Vulkan widget has been disabled")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MW_BUILD_STATIC)
|
||||
message(STATUS "Building Milsko as a static library")
|
||||
add_library(
|
||||
message(STATUS "Building Milsko as a static library")
|
||||
add_library(
|
||||
Mw
|
||||
${SOURCES}
|
||||
)
|
||||
elseif(MW_BUILD_SHARED)
|
||||
message(STATUS "Building Milsko as a shared library")
|
||||
add_library(
|
||||
message(STATUS "Building Milsko as a shared library")
|
||||
add_library(
|
||||
Mw
|
||||
SHARED
|
||||
${SOURCES}
|
||||
)
|
||||
else()
|
||||
message(ERROR "Must either build a shared library or a static library")
|
||||
message(ERROR "Must either build a shared library or a static library")
|
||||
endif()
|
||||
|
||||
if(MW_USE_STB_IMAGE)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_STB_IMAGE
|
||||
)
|
||||
else()
|
||||
file(
|
||||
file(
|
||||
GLOB
|
||||
IMAGE_SOURCES
|
||||
external/libjpeg/src/*.c external/libpng/src/*.c
|
||||
)
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
${MW_IMAGE_SOURCES}
|
||||
)
|
||||
target_include_directories(
|
||||
target_include_directories(
|
||||
Mw
|
||||
PRIVATE
|
||||
external/libjpeg/include external/libpng/include
|
||||
|
|
@ -123,7 +133,7 @@ else()
|
|||
endif()
|
||||
|
||||
if(MW_USE_STB_TRUETYPE)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_STB_TRUETYPE
|
||||
|
|
@ -131,22 +141,22 @@ if(MW_USE_STB_TRUETYPE)
|
|||
endif()
|
||||
|
||||
if(MW_USE_FREETYPE2)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_FREETYPE2
|
||||
)
|
||||
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(FT2 REQUIRED freetype2)
|
||||
list(APPEND INCLUDE_DIRS ${FT2_INCLUDE_DIRS})
|
||||
list(APPEND LIBRARY_DIRS ${FT2_LIBRARY_DIRS})
|
||||
list(APPEND LIBRARIES ${FT2_LIBRARIES})
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(FT2 REQUIRED freetype2)
|
||||
list(APPEND INCLUDE_DIRS ${FT2_INCLUDE_DIRS})
|
||||
list(APPEND LIBRARY_DIRS ${FT2_LIBRARY_DIRS})
|
||||
list(APPEND LIBRARIES ${FT2_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(MW_USE_WAYLAND)
|
||||
function(scan_wayland_protocol_core)
|
||||
execute_process(
|
||||
function(scan_wayland_protocol_core)
|
||||
execute_process(
|
||||
COMMAND wayland-scanner private-code /usr/share/wayland/wayland.xml ${CMAKE_CURRENT_SOURCE_DIR}/src/backend/wayland-core-protocol.c
|
||||
OUTPUT_VARIABLE WAYLAND_SCANNER_OUTPUT
|
||||
ERROR_VARIABLE WAYLAND_SCANNER_ERROR
|
||||
|
|
@ -154,12 +164,12 @@ if(MW_USE_WAYLAND)
|
|||
ECHO_ERROR_VARIABLE
|
||||
COMMAND_ECHO STDOUT
|
||||
)
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/backend/wayland-core-protocol.c
|
||||
)
|
||||
execute_process(
|
||||
execute_process(
|
||||
COMMAND wayland-scanner client-header /usr/share/wayland/wayland.xml ${CMAKE_CURRENT_SOURCE_DIR}/include/Mw/LowLevel/Wayland/wayland-core-protocol.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE WAYLAND_SCANNER_OUTPUT
|
||||
|
|
@ -168,11 +178,11 @@ if(MW_USE_WAYLAND)
|
|||
ECHO_ERROR_VARIABLE
|
||||
COMMAND_ECHO STDOUT
|
||||
)
|
||||
endfunction()
|
||||
endfunction()
|
||||
|
||||
function(scan_wayland_protocol tier proto ver)
|
||||
SET(proto_c ${CMAKE_CURRENT_SOURCE_DIR}/src/backend/wayland-${proto}-protocol.c)
|
||||
execute_process(
|
||||
function(scan_wayland_protocol tier proto ver)
|
||||
SET(proto_c ${CMAKE_CURRENT_SOURCE_DIR}/src/backend/wayland-${proto}-protocol.c)
|
||||
execute_process(
|
||||
COMMAND wayland-scanner private-code /usr/share/wayland-protocols/${tier}/${proto}/${proto}${ver}.xml ${proto_c}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE WAYLAND_SCANNER_OUTPUT
|
||||
|
|
@ -181,12 +191,12 @@ if(MW_USE_WAYLAND)
|
|||
ECHO_ERROR_VARIABLE
|
||||
COMMAND_ECHO STDOUT
|
||||
)
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
${proto_c}
|
||||
)
|
||||
execute_process(
|
||||
execute_process(
|
||||
COMMAND wayland-scanner client-header /usr/share/wayland-protocols/${tier}/${proto}/${proto}${ver}.xml ${CMAKE_CURRENT_SOURCE_DIR}/include/Mw/LowLevel/Wayland/${proto}-client-protocol.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE WAYLAND_SCANNER_OUTPUT
|
||||
|
|
@ -195,49 +205,49 @@ if(MW_USE_WAYLAND)
|
|||
ECHO_ERROR_VARIABLE
|
||||
COMMAND_ECHO STDOUT
|
||||
)
|
||||
endfunction()
|
||||
endfunction()
|
||||
|
||||
check_include_files(wayland-client.h HAVE_WL_H)
|
||||
check_include_files(xkbcommon/xkbcommon.h HAVE_XKBCOMMON_H)
|
||||
check_include_files(cairo/cairo.h HAVE_CAIRO_H)
|
||||
if(HAVE_WL_H)
|
||||
if(HAVE_XKBCOMMON_H)
|
||||
if(HAVE_CAIRO_H)
|
||||
scan_wayland_protocol_core()
|
||||
scan_wayland_protocol("stable" "xdg-shell" "")
|
||||
scan_wayland_protocol("stable" "viewporter" "")
|
||||
scan_wayland_protocol("stable" "tablet" "-v2")
|
||||
scan_wayland_protocol("staging" "xdg-toplevel-icon" "-v1")
|
||||
scan_wayland_protocol("staging" "cursor-shape" "-v1")
|
||||
scan_wayland_protocol("unstable" "xdg-decoration" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "primary-selection" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "pointer-constraints" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "relative-pointer" "-unstable-v1")
|
||||
check_include_files(wayland-client.h HAVE_WL_H)
|
||||
check_include_files(xkbcommon/xkbcommon.h HAVE_XKBCOMMON_H)
|
||||
check_include_files(cairo/cairo.h HAVE_CAIRO_H)
|
||||
if(HAVE_WL_H)
|
||||
if(HAVE_XKBCOMMON_H)
|
||||
if(HAVE_CAIRO_H)
|
||||
scan_wayland_protocol_core()
|
||||
scan_wayland_protocol("stable" "xdg-shell" "")
|
||||
scan_wayland_protocol("stable" "viewporter" "")
|
||||
scan_wayland_protocol("stable" "tablet" "-v2")
|
||||
scan_wayland_protocol("staging" "xdg-toplevel-icon" "-v1")
|
||||
scan_wayland_protocol("staging" "cursor-shape" "-v1")
|
||||
scan_wayland_protocol("unstable" "xdg-decoration" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "primary-selection" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "pointer-constraints" "-unstable-v1")
|
||||
scan_wayland_protocol("unstable" "relative-pointer" "-unstable-v1")
|
||||
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
src/backend/wayland.c
|
||||
)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_WAYLAND
|
||||
)
|
||||
message(STATUS "Wayland backend has been enabled")
|
||||
else()
|
||||
message(WARNING "Wayland backend has been disabled")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "Wayland backend has been disabled")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Wayland backend has been enabled")
|
||||
else()
|
||||
message(WARNING "Wayland backend has been disabled")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "Wayland backend has been disabled")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "Wayland backend has been disabled")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(APPLE AND MW_BUILD_OPENGL)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
GL_SILENCE_DEPRECATION
|
||||
|
|
@ -257,7 +267,7 @@ target_include_directories(
|
|||
)
|
||||
|
||||
if(MW_CLASSIC_THEME)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_CLASSIC_THEME
|
||||
|
|
@ -265,60 +275,78 @@ if(MW_CLASSIC_THEME)
|
|||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
src/backend/gdi.c
|
||||
)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_GDI
|
||||
)
|
||||
list(APPEND LIBRARIES gdi32)
|
||||
target_link_options(
|
||||
list(APPEND LIBRARIES gdi32)
|
||||
target_link_options(
|
||||
Mw
|
||||
PRIVATE
|
||||
-static-libgcc
|
||||
)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
target_sources(
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
src/backend/cocoa.m
|
||||
)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_COCOA
|
||||
)
|
||||
list(APPEND LIBRARIES objc)
|
||||
target_link_options(
|
||||
list(APPEND LIBRARIES objc)
|
||||
target_link_options(
|
||||
Mw
|
||||
PRIVATE
|
||||
-framework Cocoa
|
||||
)
|
||||
else()
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(X11 REQUIRED x11)
|
||||
pkg_check_modules(XRENDER REQUIRED xrender)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Retro")
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
src/backend/classicmacos.c
|
||||
)
|
||||
if(PLATFORM MATCHES retroppc)
|
||||
endif()
|
||||
if(PLATFORM MATCHES retroppc)
|
||||
set_target_properties(Mw PROPERTIES COMPILE_FLAGS "-ffunction-sections -mcpu=601 -Os -Wall -Wextra -Wno-unused-parameter")
|
||||
set_target_properties(Mw PROPERTIES LINK_FLAGS "-Wl,-gc-sections")
|
||||
endif()
|
||||
|
||||
target_sources(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
CLASSIC_MAC_OS
|
||||
)
|
||||
else()
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(X11 REQUIRED x11)
|
||||
pkg_check_modules(XRENDER REQUIRED xrender)
|
||||
|
||||
target_sources(
|
||||
Mw
|
||||
PRIVATE
|
||||
src/backend/x11.c
|
||||
)
|
||||
target_compile_definitions(
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
USE_X11
|
||||
)
|
||||
list(APPEND INCLUDE_DIRS ${X11_INCLUDE_DIRS} ${XRENDER_INCLUDE_DIRS})
|
||||
list(APPEND LIBRARY_DIRS ${X11_LIBRARY_DIRS} ${XRENDER_LIBRARY_DIRS})
|
||||
list(APPEND LIBRARIES ${X11_LIBRARIES} ${XRENDER_LIBRARIES} m)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
list(APPEND LIBRARIES dl)
|
||||
endif()
|
||||
list(APPEND INCLUDE_DIRS ${X11_INCLUDE_DIRS} ${XRENDER_INCLUDE_DIRS})
|
||||
list(APPEND LIBRARY_DIRS ${X11_LIBRARY_DIRS} ${XRENDER_LIBRARY_DIRS})
|
||||
list(APPEND LIBRARIES ${X11_LIBRARIES} ${XRENDER_LIBRARIES} m)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
list(APPEND LIBRARIES dl)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_include_directories(
|
||||
|
|
@ -338,14 +366,14 @@ target_link_libraries(
|
|||
)
|
||||
|
||||
if(MW_BUILD_VULKAN)
|
||||
check_include_files(vulkan/vk_enum_string_helper.h HAS_VK_ENUM_STRING_HELPER)
|
||||
if(HAS_VK_ENUM_STRING_HELPER)
|
||||
target_compile_definitions(
|
||||
check_include_files(vulkan/vk_enum_string_helper.h HAS_VK_ENUM_STRING_HELPER)
|
||||
if(HAS_VK_ENUM_STRING_HELPER)
|
||||
target_compile_definitions(
|
||||
Mw
|
||||
PRIVATE
|
||||
HAS_VK_ENUM_STRING_HELPER
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_compile_definitions(
|
||||
|
|
@ -362,7 +390,7 @@ install(
|
|||
)
|
||||
|
||||
if(MW_INSTALL_HEADERS)
|
||||
install(
|
||||
install(
|
||||
DIRECTORY include/
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
|
|
@ -370,5 +398,5 @@ if(MW_INSTALL_HEADERS)
|
|||
endif()
|
||||
|
||||
if(MW_BUILD_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
add_subdirectory(examples)
|
||||
endif()
|
||||
|
|
|
|||
19
configure
vendored
19
configure
vendored
|
|
@ -46,6 +46,7 @@ param_set("shared", 1);
|
|||
param_set("static", 1);
|
||||
param_set("examples", 1);
|
||||
|
||||
|
||||
my %features = (
|
||||
"classic-theme" => "use classic theme",
|
||||
"stb-image" => "use stb_image, instead use libjpeg/libpng",
|
||||
|
|
@ -131,16 +132,12 @@ foreach my $l (@ARGV) {
|
|||
}
|
||||
}
|
||||
|
||||
if($target ne "Darwin" and $target ne "ClassicMacOS68k" and $target ne "ClassicMacOSPPC") {
|
||||
if($target ne "Darwin" and $target ne "ClassicMacOS") {
|
||||
param_set("freetype2", 1);
|
||||
param_set("stb-truetype", 0);
|
||||
} else {
|
||||
if($target ne "ClassicMacOS68k" and $target ne "ClassicMacOSPPC"){
|
||||
param_set("freetype2", 0);
|
||||
param_set("stb-truetype", 1);
|
||||
} else {
|
||||
param_set("stb-truetype", 0);
|
||||
}
|
||||
param_set("freetype2", 0);
|
||||
param_set("stb-truetype", 0);
|
||||
}
|
||||
|
||||
if($target eq "Linux") {
|
||||
|
|
@ -289,7 +286,7 @@ if (param_get("examples")) {
|
|||
}
|
||||
if (grep(/^cocoa$/, @backends)) {
|
||||
print(OUT
|
||||
" \$(CC) -L./src -I\$\(INCDIR) \$\(LIBDIR) -o ${l} ${s}${object_suffix} -lMw ${math} ${libs}\n"
|
||||
" \$(CC) -L./src \$\(LIBDIR) -o ${l} ${s}${object_suffix} -lMw ${math} ${libs}\n"
|
||||
);
|
||||
}
|
||||
else {
|
||||
|
|
@ -304,16 +301,12 @@ if (param_get("examples")) {
|
|||
print(OUT
|
||||
" Rez -I ".$ENV{RETRO68_TOOLCHAIN_PATH}."/RIncludes ".$ENV{RETRO68_TOOLCHAIN_PATH}."/RIncludes/Retro68APPL.r -DCFRAG_NAME=\"example\" --data ${l}.pef --cc ${l}.dsk -t APPL\n"
|
||||
);
|
||||
}
|
||||
|
||||
print(OUT "${s}${object_suffix}: ${s}.c\n");
|
||||
print(OUT
|
||||
" \$(CC) -c \$\(INCDIR) -o ${s}${object_suffix} ${s}.c -lMw ${math}\n"
|
||||
);
|
||||
|
||||
|
||||
#print(OUT "Rez -I /path/to/Universal/RIncludes /path/to/libretro/RIncludes/Retro68APPL.r -DCFRAG_NAME="\"MyProgram\"" --data program.pef -o program.bin -t APPL");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
print(OUT "\n");
|
||||
|
|
|
|||
|
|
@ -1,22 +1,26 @@
|
|||
file(
|
||||
GLOB
|
||||
EXAMPLES_BASIC_SOURCES
|
||||
*.c
|
||||
GLOB
|
||||
EXAMPLES_BASIC_SOURCES
|
||||
*.c
|
||||
)
|
||||
|
||||
foreach(PATH IN LISTS EXAMPLES_BASIC_SOURCES)
|
||||
get_filename_component(TARGET ${PATH} NAME_WE)
|
||||
add_executable(${TARGET} MACOSX_BUNDLE ${PATH})
|
||||
target_link_libraries(
|
||||
${TARGET}
|
||||
PRIVATE
|
||||
Mw
|
||||
)
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
target_link_libraries(
|
||||
${TARGET}
|
||||
PRIVATE
|
||||
m
|
||||
)
|
||||
endif()
|
||||
get_filename_component(TARGET ${PATH} NAME_WE)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES Retro)
|
||||
add_application(${TARGET} ${PATH})
|
||||
else()
|
||||
add_executable(${TARGET} MACOSX_BUNDLE ${PATH})
|
||||
endif()
|
||||
target_link_libraries(
|
||||
${TARGET}
|
||||
PRIVATE
|
||||
Mw
|
||||
)
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
target_link_libraries(
|
||||
${TARGET}
|
||||
PRIVATE
|
||||
m
|
||||
)
|
||||
endif()
|
||||
endforeach()
|
||||
|
|
|
|||
|
|
@ -106,6 +106,9 @@ MWDECL void MwLLDBusFreeContext(MwLLDBusFuncTable* tbl, MwLLDBusContext* ctx);
|
|||
#ifdef USE_COCOA
|
||||
#include <Mw/LowLevel/Cocoa.h>
|
||||
#endif
|
||||
#ifdef CLASSIC_MAC_OS
|
||||
#include <Mw/LowLevel/ClassicMacOS.h>
|
||||
#endif
|
||||
|
||||
union _MwLL {
|
||||
struct _MwLLCommon common;
|
||||
|
|
@ -121,6 +124,9 @@ union _MwLL {
|
|||
#ifdef USE_COCOA
|
||||
struct _MwLLCocoa cocoa;
|
||||
#endif
|
||||
#ifdef CLASSIC_MAC_OS
|
||||
struct _MwLLClassicMacOS cmacos;
|
||||
#endif
|
||||
};
|
||||
|
||||
union _MwLLColor {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,10 @@
|
|||
|
||||
struct _MwLLClassicMacOS {
|
||||
struct _MwLLCommon common;
|
||||
|
||||
WindowRef window;
|
||||
EventRecord event;
|
||||
Rect winRect;
|
||||
};
|
||||
|
||||
struct _MwLLClassicMacOSColor {
|
||||
|
|
|
|||
10
pl/ostype/ClassicMacOS.pl
Normal file
10
pl/ostype/ClassicMacOS.pl
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
use_backend("classicmacos");
|
||||
|
||||
print("Compiling for Classic Mac OS via ./configure currently outputs a broken executable and it only supports PowerPC. Help is wanted. In the mean time, use CMake.")
|
||||
|
||||
$cc = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/powerpc-apple-macos-gcc";
|
||||
$ar = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/powerpc-apple-macos-ar";
|
||||
add_cflags("-DCLASSIC_MAC_OS");
|
||||
add_cflags("-DSTBI_NO_THREAD_LOCALS");
|
||||
|
||||
1;
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
use_backend("classicmacos");
|
||||
|
||||
$cc = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/m68k-apple-macos-gcc";
|
||||
$ar = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/m68k-apple-macos-ar";
|
||||
add_cflags("-DCLASSIC_MAC_OS");
|
||||
|
||||
1;
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
use_backend("classicmacos");
|
||||
|
||||
$cc = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/powerpc-apple-macos-gcc";
|
||||
$ar = $ENV{RETRO68_TOOLCHAIN_PATH}."/bin/powerpc-apple-macos-ar";
|
||||
add_cflags("-DCLASSIC_MAC_OS");
|
||||
|
||||
1;
|
||||
|
|
@ -5,6 +5,15 @@
|
|||
static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
||||
MwLL r;
|
||||
|
||||
MwLLCreateCommon(r);
|
||||
|
||||
SetRect(&r->cmacos.winRect, 100, 100, width, height);
|
||||
|
||||
r->cmacos.window = NewCWindow(nil, &r->cmacos.winRect, (ConstStr255Param) "\p", true,
|
||||
documentProc, (WindowPtr)(-1), true, 0);
|
||||
|
||||
SetPort(r->cmacos.window);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
@ -59,8 +68,7 @@ static void MwLLFreeColorImpl(MwLLColor color) {
|
|||
}
|
||||
|
||||
static int MwLLPendingImpl(MwLL handle) {
|
||||
|
||||
return 0;
|
||||
return GetNextEvent(everyEvent, &handle->cmacos.event);
|
||||
}
|
||||
|
||||
static void MwLLNextEventImpl(MwLL handle) {
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ static void layout(MwWidget handle) {
|
|||
MwNtext, "Cancel",
|
||||
NULL);
|
||||
|
||||
MwAddUserHandler(fc->cancel, MwNactivateHandler, cancel, NULL);
|
||||
MwAddUserHandler(fc->cancel, MwNactivateHandler, filecancel, NULL);
|
||||
} else {
|
||||
MwVaApply(fc->cancel,
|
||||
MwNx, wx,
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ static void children_update(MwWidget handle) {
|
|||
}
|
||||
|
||||
MwClassRec MwBoxClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwButtonClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwCheckBoxClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwComboBoxClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ static void clipboard(MwWidget handle, const char* data) {
|
|||
}
|
||||
|
||||
MwClassRec MwEntryClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwFrameClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwImageClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwLabelClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ static void tick(MwWidget handle) {
|
|||
}
|
||||
|
||||
MwClassRec MwListBoxClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwMenuClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ static void prop_change(MwWidget handle, const char* prop) {
|
|||
}
|
||||
|
||||
MwClassRec MwNumberEntryClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwProgressBarClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwRadioBoxClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwScrollBarClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
|||
}
|
||||
|
||||
MwClassRec MwSeparatorClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwSubMenuClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@ static void tick(MwWidget handle) {
|
|||
}
|
||||
|
||||
MwClassRec MwTreeViewClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ static void tick(MwWidget handle) {
|
|||
}
|
||||
|
||||
MwClassRec MwViewportClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -556,7 +556,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
|
||||
MwClassRec MwVulkanClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
destroy, /* destroy */
|
||||
NULL, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
|||
}
|
||||
}
|
||||
MwClassRec MwWindowClassRec = {
|
||||
create, /* create */
|
||||
wcreate, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue