$NetBSD$ * Defining _XOPEN_SOURCE means that some dirent.h definitions are omitted, but they are used by the engine. So omit the definition. * Use the pkgsrc libraries instead of compiling 3rd party sources. --- CMakeLists.txt.orig 2023-06-16 02:36:07.000000000 +0000 +++ CMakeLists.txt @@ -31,11 +31,12 @@ set(PLAT_WASM FALSE CACHE BOOL "Emscript set(PLAT_HOOKS FALSE CACHE BOOL "Hook DLL target") set(PLAT_MSVC FALSE CACHE BOOL "Windows 64-bit MSVC") set(PLAT_ANDROID_ARM64 FALSE CACHE BOOL "Android AArch64") +set(PLAT_PKGSRC FALSE CACHE BOOL "Target pkgsrc") set(PLAT_AUTO FALSE CACHE BOOL "Target the host OS") # Set PLAT_AUTO if a platform isn't specifically selected if(NOT PLAT_LINUX_32 AND NOT PLAT_LINUX_64 AND NOT PLAT_MACOS AND NOT PLAT_MACOS_X86_64 AND NOT PLAT_MINGW_X86_64 AND NOT PLAT_WASM AND NOT PLAT_HOOKS) - set(PLAT_AUTO TRUE) +# set(PLAT_AUTO TRUE) endif() # Internal targets: Stuff like OpenGL vs D3D, OpenAL vs null sound, etc @@ -105,7 +106,7 @@ if(PLAT_LINUX_32) message( STATUS "Targeting Linux 32-bit" ) set(BIN_NAME "openjkdf2") - add_definitions(-D_XOPEN_SOURCE=500) +# add_definitions(-D_XOPEN_SOURCE=500) add_definitions(-D_DEFAULT_SOURCE) set(TARGET_USE_PHYSFS TRUE) @@ -135,7 +136,7 @@ elseif(PLAT_LINUX_64) set(BIN_NAME "openjkdf2") add_definitions(-DARCH_64BIT) - add_definitions(-D_XOPEN_SOURCE=500) +# add_definitions(-D_XOPEN_SOURCE=500) add_definitions(-D_DEFAULT_SOURCE) set(TARGET_USE_PHYSFS TRUE) @@ -365,6 +366,37 @@ elseif(PLAT_MSVC) set(TARGET_COMPILE_FREEGLUT TRUE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /std:c11") +elseif(PLAT_PKGSRC) + message( STATUS "Targeting pkgsrc" ) + set(BIN_NAME "openjkdf2") + + add_compile_definitions(SDL2_RENDER) + add_compile_definitions(STDSOUND_OPENAL) + if(PLAT_PKGSRC64) + add_definitions(-DARCH_64BIT) + endif() +# add_definitions(-D_XOPEN_SOURCE=500) + add_definitions(-D_DEFAULT_SOURCE) + add_definitions(-DLINUX) + add_definitions(-DPLATFORM_LINUX) + add_definitions(-DPLATFORM_NO_CACERT_BLOB) + + set(TARGET_USE_PHYSFS TRUE) + set(TARGET_USE_LIBSMACKER TRUE) + set(TARGET_USE_LIBSMUSHER TRUE) + set(TARGET_USE_SDL2 TRUE) + set(TARGET_USE_OPENGL TRUE) + set(TARGET_USE_OPENAL TRUE) + set(TARGET_POSIX TRUE) + set(TARGET_PKGSRC TRUE) + set(TARGET_NO_BLOBS TRUE) + set(TARGET_CAN_JKGM TRUE) + set(OPENJKDF2_NO_ASAN TRUE) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -std=c11 -fshort-wchar -Wno-implicit-function-declaration -Wno-unused-variable -Wno-parentheses ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fshort-wchar -Wno-implicit-function-declaration -Wno-unused-variable -Wno-parentheses ") + add_link_options(-fshort-wchar) + endif() if(NOT CMAKE_BUILD_TYPE) @@ -373,7 +405,7 @@ endif() # CMake module paths list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules") -if(TARGET_LINUX OR TARGET_MACOS OR PLAT_MSVC OR TARGET_ANDROID) +if(TARGET_LINUX OR TARGET_MACOS OR PLAT_MSVC OR TARGET_ANDROID OR TARGET_PKGSRC) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules_linux") endif() @@ -478,7 +510,7 @@ if(TARGET_MACOS) endif() endif() -if(TARGET_LINUX) +if(TARGET_LINUX OR TARGET_PKGSRC) find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) include_directories(${GTK3_INCLUDE_DIRS}) @@ -727,6 +759,10 @@ elseif(TARGET_MACOS) # macOS post-build packaging # include(cmake_modules/postcompile_macos.cmake) +elseif(TARGET_PKGSRC) + target_link_libraries(${BIN_NAME} PRIVATE -lm -lpng -lz -lSDL2 -lSDL2_mixer -lGL -lGLEW -lopenal) + target_link_libraries(${BIN_NAME} PRIVATE nlohmann_json::nlohmann_json) + target_link_libraries(${BIN_NAME} PRIVATE ${GTK3_LIBRARIES}) else() message(FATAL_ERROR "Unknown target! Cannot continue.") endif()