ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
_build.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../../ugbc.h"
36
37#include <errno.h>
38#include <sys/stat.h>
39#include <sys/types.h>
40
41/****************************************************************************
42 * CODE SECTION
43 ****************************************************************************/
44
45extern char OUTPUT_FILE_TYPE_AS_STRING[][16];
46
47void target_linkage( Environment * _environment ) {
48
49 Storage * storage = _environment->storage;
50
51 char temporaryPath[MAX_TEMPORARY_STORAGE];
52 strcpy( temporaryPath, _environment->temporaryPath );
53 strcat( temporaryPath, " " );
54 temporaryPath[strlen(temporaryPath)-1] = PATH_SEPARATOR;
55 strcat( temporaryPath, "vz" );
56#ifdef _WIN32
57 mkdir( temporaryPath );
58#else
59 mkdir( temporaryPath, 0777 );
60#endif
61 strcat( temporaryPath, " " );
62 temporaryPath[strlen(temporaryPath)-1] = PATH_SEPARATOR;
63
64 char commandLine[8*MAX_TEMPORARY_STORAGE];
65 char executableName[MAX_TEMPORARY_STORAGE];
66 char binaryName[MAX_TEMPORARY_STORAGE];
67 char diskName[MAX_TEMPORARY_STORAGE];
68 char listingFileName[MAX_TEMPORARY_STORAGE];
69 char binaryName2[MAX_TEMPORARY_STORAGE];
70
72
73 BUILD_SAFE_REMOVE( _environment, _environment->exeFileName );
74
75 BUILD_TOOLCHAIN_Z88DK_GET_EXECUTABLE_Z80ASM( _environment, executableName );
76
77 BUILD_TOOLCHAIN_Z88DK_GET_LISTING_FILE( _environment, listingFileName );
78
79 BUILD_TOOLCHAIN_Z88DK_EXEC( _environment, "vz200", executableName, listingFileName, "z80" );
80
81 char * p;
82
83 if ( _environment->listingFileName ) {
84 strcpy( binaryName, _environment->asmFileName );
85 p = strstr( binaryName, ".asm" );
86 if ( p ) {
87 *(p+1) = 'l';
88 *(p+2) = 'i';
89 *(p+3) = 's';
90 *(p+4) = 0;
91 }
92 TRACE2( " renaming %s to %s", binaryName, _environment->listingFileName );
93 BUILD_SAFE_MOVE( _environment, binaryName, _environment->listingFileName );
94 }
95
96 strcpy( binaryName, _environment->asmFileName );
97 p = strstr( binaryName, ".asm" );
98 if ( p ) {
99 *(p+1) = 'o';
100 *(p+2) = 0;
101 }
102 system_remove_safe( _environment, binaryName );
103
104 strcpy( binaryName, _environment->asmFileName );
105 p = strstr( binaryName, ".asm" );
106 if ( p ) {
107 *(p+1) = 'b';
108 *(p+2) = 'i';
109 *(p+3) = 'n';
110 *(p+4) = 0;
111 }
112
113 strcpy( binaryName2, _environment->exeFileName );
114
115 system_remove_safe( _environment, binaryName2 );
116
117 TRACE2( " renaming %s to %s", binaryName, binaryName2 );
118
119 BUILD_SAFE_MOVE( _environment, binaryName, binaryName2 );
120
121}
122
123void target_cleanup( Environment * _environment ) {
124
125}
int system_remove_safe(Environment *_environment, char *_filename)
void target_linkage(Environment *_environment)
Convert C64's assembly to executable.
Definition _build.c:327
void target_cleanup(Environment *_environment)
Definition _build.c:343
Storage * storage
Definition ugbc.h:2526
char * listingFileName
Definition ugbc.h:2305
char * temporaryPath
Definition ugbc.h:2360
char * asmFileName
Definition ugbc.h:2285
char * exeFileName
Definition ugbc.h:2290
@ OUTPUT_FILE_TYPE_VZ
Definition ugbc.h:273
#define BUILD_CHECK_FILETYPE(_environment, _filetype)
Definition ugbc.h:4743
#define BUILD_SAFE_REMOVE(_environment, filename)
Definition ugbc.h:4748
#define MAX_TEMPORARY_STORAGE
Definition ugbc.h:563
#define PATH_SEPARATOR
Definition ugbc.h:69
#define BUILD_TOOLCHAIN_Z88DK_GET_LISTING_FILE(_environment, listingFileName)
Definition ugbc.h:4810
struct _Environment Environment
Structure of compilation environment.
#define BUILD_TOOLCHAIN_Z88DK_GET_EXECUTABLE_Z80ASM(_environment, executableName)
Definition ugbc.h:4795
struct _Storage Storage
Structure of a single storage.
#define BUILD_SAFE_MOVE(_environment, source, destination)
Definition ugbc.h:4751
#define TRACE2(s, p1, p2)
Definition ugbc.h:88
#define BUILD_TOOLCHAIN_Z88DK_EXEC(_environment, target, executableName, listingFileName, cpu)
Definition ugbc.h:4818
char OUTPUT_FILE_TYPE_AS_STRING[][16]