-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GNATCOLL.CPP.Strings: binding to C++ strings
New library providing a wrapper of the C++ ISO/IEC 14882:1998(E) string class. Issue: eng/toolchain/gnat#358 TN: Q505-002
- Loading branch information
1 parent
45a2d40
commit f24b276
Showing
9 changed files
with
5,269 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
------------------------------------------------------------------------------ | ||
-- G N A T C O L L -- | ||
-- -- | ||
-- Copyright (C) 2023, AdaCore -- | ||
-- -- | ||
-- This library is free software; you can redistribute it and/or modify it -- | ||
-- under terms of the GNU General Public License as published by the Free -- | ||
-- Software Foundation; either version 3, or (at your option) any later -- | ||
-- version. This library is distributed in the hope that it will be useful, -- | ||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- -- | ||
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- | ||
-- -- | ||
-- As a special exception under Section 7 of GPL version 3, you are granted -- | ||
-- additional permissions described in the GCC Runtime Library Exception, -- | ||
-- version 3.1, as published by the Free Software Foundation. -- | ||
-- -- | ||
-- You should have received a copy of the GNU General Public License and -- | ||
-- a copy of the GCC Runtime Library Exception along with this program; -- | ||
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- | ||
-- <http://www.gnu.org/licenses/>. -- | ||
-- -- | ||
------------------------------------------------------------------------------ | ||
|
||
-- This package hierarchy provides binding to C++ Standard library functions | ||
|
||
package GNATCOLL.CPP is | ||
end GNATCOLL.CPP; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
------------------------------------------------------------------------------ | ||
-- G N A T C O L L -- | ||
-- -- | ||
-- Copyright (C) 2023, AdaCore -- | ||
-- -- | ||
-- This library is free software; you can redistribute it and/or modify it -- | ||
-- under terms of the GNU General Public License as published by the Free -- | ||
-- Software Foundation; either version 3, or (at your option) any later -- | ||
-- version. This library is distributed in the hope that it will be useful, -- | ||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- -- | ||
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- | ||
-- -- | ||
-- As a special exception under Section 7 of GPL version 3, you are granted -- | ||
-- additional permissions described in the GCC Runtime Library Exception, -- | ||
-- version 3.1, as published by the Free Software Foundation. -- | ||
-- -- | ||
-- You should have received a copy of the GNU General Public License and -- | ||
-- a copy of the GCC Runtime Library Exception along with this program; -- | ||
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- | ||
-- <http://www.gnu.org/licenses/>. -- | ||
-- -- | ||
------------------------------------------------------------------------------ | ||
|
||
with "gnatcoll"; | ||
|
||
library project GnatColl_CPP is | ||
|
||
Version := External ("GNATCOLL_VERSION", "0.0"); | ||
Name := "gnatcoll_cpp"; | ||
|
||
type Build_Type is ("DEBUG", "PROD"); | ||
Build : Build_Type := | ||
External ("GNATCOLL_BUILD_MODE", External ("BUILD", "PROD")); | ||
|
||
type Library_Type_Type is ("relocatable", "static", "static-pic"); | ||
Library_Type : Library_Type_Type := External ("LIBRARY_TYPE", "static"); | ||
|
||
for Source_Dirs use ("."); | ||
for Library_Kind use Library_Type; | ||
for Object_Dir | ||
use "obj/" & Project'Library_Kind; | ||
for Library_Dir | ||
use "lib/" & Project'Library_Kind; | ||
for Library_Name use Name; | ||
|
||
case Library_Type is | ||
when "relocatable" => | ||
for Leading_Library_Options use External_As_List ("LDFLAGS", " "); | ||
for Library_Version use "lib" & Name & Gnatcoll.So_Ext & "." & Version; | ||
when others => | ||
null; | ||
end case; | ||
|
||
for Languages use ("Ada", "C++"); | ||
|
||
package Compiler is | ||
case Build is | ||
when "DEBUG" => | ||
for Switches ("Ada") use | ||
("-g", "-O0", "-gnata", "-gnatVa", "-gnatQ", "-gnaty", "-gnateE", | ||
"-gnatwaCJe", "-fstack-check"); | ||
|
||
when "PROD" => | ||
-- Do not use -gnatwe for production mode | ||
for Switches ("Ada") use ("-O2", "-gnatn", "-gnatwaCJ"); | ||
end case; | ||
|
||
for Switches ("Ada") use Compiler'Switches ("Ada") | ||
& External_As_List ("ADAFLAGS", " "); | ||
for Switches ("C++") use Compiler'Switches ("C++") | ||
& External_As_List ("CFLAGS", " ") | ||
& External_As_List ("CPPFLAGS", " "); | ||
end Compiler; | ||
|
||
package Naming is | ||
for Specification_Suffix ("C++") use ".h"; | ||
for Implementation_Suffix ("C++") use ".cpp"; | ||
end Naming; | ||
|
||
package Binder is | ||
case Build is | ||
when "DEBUG" => | ||
for Switches ("Ada") use ("-E"); | ||
when "PROD" => | ||
null; | ||
end case; | ||
end Binder; | ||
|
||
package Builder is | ||
case Build is | ||
when "DEBUG" => | ||
for Global_Configuration_Pragmas use "../gnat_debug.adc"; | ||
when "PROD" => | ||
null; | ||
end case; | ||
end Builder; | ||
|
||
package Ide is | ||
for VCS_Kind use "Git"; | ||
end Ide; | ||
|
||
end GnatColl_CPP; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/usr/bin/env python | ||
import logging | ||
import os | ||
import sys | ||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||
from setup_support import SetupApp | ||
|
||
|
||
class GNATCollCPP(SetupApp): | ||
name = 'gnatcoll_cpp' | ||
project = 'gnatcoll_cpp.gpr' | ||
description = 'GNATColl CPP bindings' | ||
|
||
def create(self): | ||
super(GNATCollCPP, self).create() | ||
self.build_cmd.add_argument( | ||
'--debug', | ||
help='build project in debug mode', | ||
action="store_true", | ||
default=False) | ||
|
||
def update_config(self, config, args): | ||
logging.info('%-26s %s', | ||
'Libraries kind', ", ".join(config.data['library_types'])) | ||
|
||
# Set library version | ||
with open(os.path.join(config.source_dir, '..', | ||
'version_information'), 'r') as fd: | ||
version = fd.read().strip() | ||
config.set_data('GNATCOLL_VERSION', version, sub='gprbuild') | ||
|
||
# Set build mode | ||
config.set_data('BUILD', 'DEBUG' if args.debug else 'PROD', | ||
sub='gprbuild') | ||
logging.info('%-26s %s', 'Build mode', | ||
config.data['gprbuild']['BUILD']) | ||
|
||
def variants(self, config, cmd): | ||
result = [] | ||
for library_type in config.data['library_types']: | ||
gpr_vars = {'LIBRARY_TYPE': library_type, | ||
'GPR_BUILD': library_type} | ||
if cmd == 'install': | ||
result.append((['--build-name=%s' % library_type, | ||
'--build-var=LIBRARY_TYPE'], | ||
gpr_vars)) | ||
else: | ||
result.append(([], gpr_vars)) | ||
return result | ||
|
||
|
||
if __name__ == '__main__': | ||
app = GNATCollCPP() | ||
sys.exit(app.run()) |
Oops, something went wrong.