Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions .devcontainer
Submodule .devcontainer added at 9392da
30 changes: 30 additions & 0 deletions .github/workflows/xpbuild.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Build
on:
push:
branches: [ "dev" ]
pull_request:
branches: [ "dev" ]
workflow_dispatch:
jobs:
linux:
uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2
with:
cmake-workflow-preset: LinuxRelease
runon: ubuntu-latest
secrets: inherit
linux-arm64:
uses: externpro/externpro/.github/workflows/build-linux.yml@25.05.2
with:
cmake-workflow-preset: LinuxRelease
runon: ubuntu-24.04-arm
secrets: inherit
macos:
uses: externpro/externpro/.github/workflows/build-macos.yml@25.05.2
with:
cmake-workflow-preset: DarwinRelease
secrets: inherit
windows:
uses: externpro/externpro/.github/workflows/build-windows.yml@25.05.2
with:
cmake-workflow-preset: WindowsRelease
secrets: inherit
20 changes: 20 additions & 0 deletions .github/workflows/xprelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Release
on:
workflow_dispatch:
inputs:
workflow_run_url:
description: 'URL of the workflow run containing artifacts to upload (e.g., https://github.com/owner/repo/actions/runs/123456789)'
required: true
type: string
jobs:
# Upload build artifacts as release assets
release-from-build:
uses: externpro/externpro/.github/workflows/release-from-build.yml@25.05.2
with:
workflow_run_url: ${{ github.event.inputs.workflow_run_url }}
artifact_pattern: "*.tar.xz"
permissions:
contents: write
id-token: write
attestations: write
secrets: inherit
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,7 @@ x64
*.log
*.trs
.dirstamp
# externpro
.env
_bld*/
docker-compose.override.yml
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule ".devcontainer"]
path = .devcontainer
url = https://github.com/externpro/externpro
28 changes: 19 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.4...3.31)
set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake)
PROJECT(yasm)
if (COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif (COMMAND cmake_policy)

OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)

# Where to look first for cmake modules
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
# Where to look for cmake modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")

INCLUDE(GNUInstallDirs)
INCLUDE(YasmMacros)
INCLUDE(VersionGen)
INCLUDE(xpflags)

OPTION(ENABLE_NLS "Enable message translations" OFF)

Expand All @@ -37,22 +39,30 @@ INCLUDE_DIRECTORIES(AFTER ${CMAKE_BINARY_DIR} ${yasm_SOURCE_DIR})
INCLUDE(ConfigureChecks.cmake)

OPTION(XP_INSTALL_YASM_EXE_ONLY "Only install the yasm executable" OFF)
IF(XP_INSTALL_YASM_EXE_ONLY)
SET(OPT_INSTALL EXCLUDE_FROM_ALL)
ELSE()
SET(OPT_INSTALL)
ENDIF()
if(NOT DEFINED XP_INSTALL_CMAKEDIR)
set(XP_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/cmake)
endif()
SET(targetsFile ${PROJECT_NAME}-targets)
set(exe ${PROJECT_NAME})
if(DEFINED XP_NAMESPACE)
set(nameSpace NAMESPACE ${XP_NAMESPACE}::)
string(PREPEND exe "${XP_NAMESPACE}::")
endif()
xpPackageDevel(TARGETS_FILE ${targetsFile} EXE ${exe})

ADD_SUBDIRECTORY(tools)
ADD_SUBDIRECTORY(libyasm)
ADD_SUBDIRECTORY(modules)
ADD_SUBDIRECTORY(frontends)

INSTALL(EXPORT ${targetsFile} DESTINATION ${CMAKE_INSTALL_BINDIR}/cmake ${OPT_INSTALL})
if(XP_INSTALL_YASM_EXE_ONLY)
INSTALL(EXPORT ${targetsFile} DESTINATION ${XP_INSTALL_CMAKEDIR} ${nameSpace})
endif()

if(NOT XP_INSTALL_YASM_EXE_ONLY)
INSTALL(FILES
libyasm.h
${CMAKE_BINARY_DIR}/libyasm-stdint.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ${OPT_INSTALL}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endif()
8 changes: 8 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"version": 8,
"include": [
".devcontainer/cmake/presets/xpLinuxNinja.json",
".devcontainer/cmake/presets/xpDarwinNinja.json",
".devcontainer/cmake/presets/xpWindowsVs2022.json"
]
}
22 changes: 22 additions & 0 deletions CMakePresetsBase.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"version": 8,
"configurePresets": [
{
"name": "config-base",
"hidden": true,
"binaryDir": "${sourceDir}/_bld-${presetName}",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"XP_INSTALL_YASM_EXE_ONLY": "ON",
"XP_NAMESPACE": "xpro"
}
}
],
"buildPresets": [
{
"name": "build-base",
"hidden": true
}
]
}
1 change: 1 addition & 0 deletions docker-compose.sh
1 change: 1 addition & 0 deletions docker-compose.yml
4 changes: 3 additions & 1 deletion frontends/tasm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@ SET_SOURCE_FILES_PROPERTIES(tasm.c PROPERTIES
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/license.c
)

INSTALL(TARGETS ytasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ${OPT_INSTALL})
if(NOT XP_INSTALL_YASM_EXE_ONLY)
INSTALL(TARGETS ytasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
4 changes: 3 additions & 1 deletion frontends/vsyasm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@ SET_SOURCE_FILES_PROPERTIES(vsyasm.c PROPERTIES
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/license.c
)

INSTALL(TARGETS vsyasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ${OPT_INSTALL})
if(NOT XP_INSTALL_YASM_EXE_ONLY)
INSTALL(TARGETS vsyasm EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
6 changes: 4 additions & 2 deletions libyasm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ ELSE(BUILD_SHARED_LIBS)
)
ENDIF(BUILD_SHARED_LIBS)

if(NOT XP_INSTALL_YASM_EXE_ONLY)
INSTALL(TARGETS libyasm EXPORT ${targetsFile}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
${OPT_INSTALL}
)
endif()

if(NOT XP_INSTALL_YASM_EXE_ONLY)
INSTALL(FILES
arch.h
assocdat.h
Expand Down Expand Up @@ -78,5 +80,5 @@ INSTALL(FILES
valparam.h
value.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyasm
${OPT_INSTALL}
)
endif()
2 changes: 0 additions & 2 deletions modules/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ ELSE(regen_init_plugin_c)
MESSAGE(STATUS "Not regenerating static modules file (unchanged)")
ENDIF(regen_init_plugin_c)

SET_SOURCE_FILES_PROPERTIES(init_plugin.c GENERATED)

SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

IF(BUILD_SHARED_LIBS)
Expand Down